From e034d37820c5d1cc802eba06c17f736c9def85ea Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 8 Sep 2022 12:31:12 +0200 Subject: [PATCH 01/70] libcross2d: bump --- libcross2d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcross2d b/libcross2d index 9e363c81..2726c770 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit 9e363c81b6c75b26fa30eaaaace64c2f03e56506 +Subproject commit 2726c770efd7a82cbff841cd263df019f63b5934 From 54b6b63cd656b8be79ca62991dcc760b575d2615 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 8 Sep 2022 13:18:51 +0200 Subject: [PATCH 02/70] 3ds: minor cleanup --- libcross2d | 2 +- pgen/data/3ds/icon.png | Bin 0 -> 2718 bytes pnes/sources/3ds/SDL.h | 13 +++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 pgen/data/3ds/icon.png create mode 100644 pnes/sources/3ds/SDL.h diff --git a/libcross2d b/libcross2d index 2726c770..ce9625ab 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit 2726c770efd7a82cbff841cd263df019f63b5934 +Subproject commit ce9625aba5c97c0d08b7e3fea509924dd211ab73 diff --git a/pgen/data/3ds/icon.png b/pgen/data/3ds/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b1670236320a9fef6219c39aa8ffd87feaa4bdb3 GIT binary patch literal 2718 zcmV;P3Ssq$P)EX>4Tx04R}tkv&MmKpe$iQ>9fa4t5Z6$WWauh)QwPDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_7;J6>}?mh0_0YbgZG^=X@&~)2O zCE{WxyDA1=5ke3>h@nqrmN6$uNpu`v_we!cF3PhypZjz4t2v7SK9P8q8KzCVK^)t( z4bJ<-VOEq?;&bA0lP*a7$aTfzH_io@1)do;)2VslFtJ!@W2KE*(bR~ii6g3}Q@)V# zSmnIMSu0mr^Pc>Lp`5<5%ypV0NMI35kRU=q6(y8mBTB1IiiH&I$2<6kUB5&wg=bb;{@U#SB#pQP7X zTI2{A*aj}HTbi;5TgFeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00?$TL_t(&-tCy#Z(P+K$3J(Qxp!83#$!9)?F1Velf(oQ zCxKQV5)xIErcx`^$5uk{(x=g-s(65kRiSNY3P}K^Nn>oscD#%| zi)Zm{_s(7WFlLNvKm>3Q!oRnB&-a}3`<~zL{FWoUc+vIv28+lyT=og<6Zp0hkiXn? z57X2!j1mB<8o}q&0O2db?;(MjUSwtUDx0NcJg*Un1wkMh>7%#%0Rn;6k16I+s})#D zzW>Sio(BnNEq9MVsgz>&*6SFi&Sq&7-7o;qR29>**etD}sjY~j1c2*0=tcq4G8=fk z-oR^qOv|ENUSs&s86uI+y(eHT;TA1=TQ`GZ!d8sJBw*nNoTV-u1jk;#L0`~SWDgN|Q8J`$u-PIXCX>sEnk8-(8p}0hM z*O9#=;CUW~QNXe+01~liQ~7j$6HgF{wX~ATWH9UXkGY+N+dW2Y7qp*6%E~M9LXqtv7ij=A~E?oRK zeSN*)!NS4&esOUJrnk2bMNzglk)$Txwk_6+HbO<9sERxA$<@`pCr~UF z$!%nbwhR##V$MCI;e zV$btfSy?8V%@B*l(X>YLF?5|=K8LZDnLjSoYL#?4wF9r~I{8n*-<4v{Fbvk#k~{vX z{vgMXJwGmh0!{h%x$h+e{&c9YpzCjN+RCRxwFp_j>LD3_4VJ!$jB70y!tz` zxuvhKANaH!6AH#S`zgwQB;iP$vuB?r6pY=`+Fuy~K@jNa8r}6@k^P)|;yEIpq5MY@ ziNrbg#B(UJf7e(~*XSK(;V)nTfyv1y@%sYXSyq%e^Y}Bgcl3YmRoXlHdE)dlNaD5! z`+Wf>C!f6I=0^A;??UBLj^*W>xUNHY&j_*DfiL90`TRP`)fq%lqOWi4Gu`hiC9vPr z?`0TWS)NAM%M6b^1i(N4@n;^K{2m`pU!qV*;q$2+oj8N0g}M3Pixdj$Boh7f_mA`T z+ke65(`auWVC=q!$!#Q=p8gjAqob#Y#SZYn2X9cRackxQ5Uil&8$#kv?BJB1|4pKSrds8FdCn%`^db2yGoF1N<;@NqyO zn^|V&!*|g2GLL-cX$A%l<2W{@(gsr}&U5wszhRm>uf6^PhmSnQ;lq#d`WwF|pI;-n zHpA43^Yr$PvA#YJz|@KJ#Nu73T9B!!AJEp;%lxhPux%5=sPOP3Kc-aLU~cxxmvf=H zxy$4WYxw;dg+hw<_5nmuA`pmd^#@treB%#{jhw=D986Ou5{VNEw_sUyv_P2No>5+T z<+oh_&s%hM4gv7;OTS@x=>~p(0Nb%xUcSNL;C5#wiV__igA|MD&qttMuTiNKFwLDc z%HZG;`uoO7r55Pv8DVzzGMmK=sjZWYh7&w~`e)3|U%~TSVzF+Pmu|AUGDAyCCm_(- zImD@xKjPNHRjSn@!^6j!m^j1I(hYRI%xkZ{z`ggLMB6$P+p#DXGtADuOIO$ME?uRk zfBLKE|F2S`Ue_rW()bjWXf#2*ts9?DrBW&2_Xijro+RGZLon1rI=zUhg$RdZsQwV0 z2Zo47IuIq9(b1FSHpHR|<9QyAW8?P+5G4s+ zuONyNf&f0BM%}35c^;NkM-(MQNy4^F{A!T8QAJgQcz{{2;a7vWu8Ys-M-W5|y@IUx zs2eqcp+@s>nmUT2QZD6Cd@7#jA_xMq?89|kBuS=Tuc633*wR4;n3;K(SgebiH!srB zF@)>dIF3Va@4ZYqwH!=4OVCjb(g3mG+K)R4ugaLZ+$Xxh{ezf(MT4AP54IBxBZf0>KD^ zAYz(2KA+YMv#J_wzH@q>i=z0kZ3_VbNtUr~YiqpWW`2JVQ4kR&sX< Date: Tue, 13 Sep 2022 12:42:07 +0200 Subject: [PATCH 03/70] 3ds: fix npot textures 3ds: fix io paths 3ds: fix pnes compilation --- libcross2d | 2 +- pgen/sources/pgen_io.h | 4 ++++ pnes/data/3ds/icon.png | Bin 0 -> 2718 bytes pnes/sources/3ds/port.c | 13 +++++++++++++ pnes/sources/pnes_io.h | 4 ++++ sscrap | 2 +- ui/c2dui_status_box.cpp | 14 ++++++++++++-- ui/c2dui_ui_help.cpp | 4 ++-- ui/c2dui_ui_menu.cpp | 4 ++-- 9 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 pnes/data/3ds/icon.png diff --git a/libcross2d b/libcross2d index ce9625ab..fa052898 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit ce9625aba5c97c0d08b7e3fea509924dd211ab73 +Subproject commit fa05289806a46cd7e3eea5f8bd88ca8790f1ac6a diff --git a/pgen/sources/pgen_io.h b/pgen/sources/pgen_io.h index dcc84d02..c3981b27 100644 --- a/pgen/sources/pgen_io.h +++ b/pgen/sources/pgen_io.h @@ -23,6 +23,10 @@ namespace c2d { return "/data/pgen/"; } #endif +#elif __3DS__ + std::string getDataPath() override { + return "/3ds/pgen/"; + } #endif }; } diff --git a/pnes/data/3ds/icon.png b/pnes/data/3ds/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b1670236320a9fef6219c39aa8ffd87feaa4bdb3 GIT binary patch literal 2718 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 #include +#include + +pid_t waitpid(pid_t pid, int *status, int options) { + return 0; +} + +void __archive_check_child(int in, int out) { + +} + +int __archive_create_child(const char *cmd, int *child_stdin, int *child_stdout, pid_t *out_child) { + return 0; +} char *dirname(char *path) { char *p; diff --git a/pnes/sources/pnes_io.h b/pnes/sources/pnes_io.h index aa201317..46b8d3f9 100644 --- a/pnes/sources/pnes_io.h +++ b/pnes/sources/pnes_io.h @@ -25,6 +25,10 @@ namespace c2d { return "/data/pnes/"; } #endif +#elif __3DS__ + std::string getDataPath() override { + return "/3ds/pnes/"; + } #endif }; } diff --git a/sscrap b/sscrap index 2e96382c..dea03c83 160000 --- a/sscrap +++ b/sscrap @@ -1 +1 @@ -Subproject commit 2e96382ca9861330e5af20b1a4a9dc45c1b2fa48 +Subproject commit dea03c831e69b4d1209a0fed5541ad500d4c241d diff --git a/ui/c2dui_status_box.cpp b/ui/c2dui_status_box.cpp index 571fa493..0d3a9d25 100644 --- a/ui/c2dui_status_box.cpp +++ b/ui/c2dui_status_box.cpp @@ -7,6 +7,7 @@ UiStatusBox::UiStatusBox(UiMain *m) : SkinnedRectangle(m->getSkin(), {"SKIN_CONFIG", "STATUSBOX"}) { main = m; +#ifndef __3DS__ clock = new C2DClock(); SkinnedRectangle::setCornersRadius(8); @@ -21,40 +22,49 @@ UiStatusBox::UiStatusBox(UiMain *m) tween = new TweenAlpha(0, SkinnedRectangle::getAlpha(), 1.0f); add(tween); - +#endif setVisibility(Visibility::Hidden); } void UiStatusBox::show(const std::string &t) { +#ifndef __3DS__ text->setString(t); text->setPosition(6 * main->getScaling().x, getSize().y / 2); setSize(text->getLocalBounds().width + (12 * main->getScaling().x), getSize().y); clock->restart(); setVisibility(Visibility::Visible, true); +#endif } void UiStatusBox::show(const char *fmt, ...) { +#ifndef __3DS__ char msg[512]; va_list args; va_start(args, fmt); vsnprintf(msg, 512, fmt, args); va_end(args); show(std::string(msg)); +#endif } void UiStatusBox::hide() { +#ifndef __3DS__ clock->restart(); +#endif } void UiStatusBox::onDraw(c2d::Transform &transform, bool draw) { +#ifndef __3DS__ if (isVisible() && clock->getElapsedTime().asSeconds() > 5) { setVisibility(Visibility::Hidden, true); } - +#endif SkinnedRectangle::onDraw(transform, draw); } UiStatusBox::~UiStatusBox() { +#ifndef __3DS__ delete (clock); +#endif } \ No newline at end of file diff --git a/ui/c2dui_ui_help.cpp b/ui/c2dui_ui_help.cpp index a5767d07..90dc52fb 100644 --- a/ui/c2dui_ui_help.cpp +++ b/ui/c2dui_ui_help.cpp @@ -47,8 +47,8 @@ UiHelp::addItem(bool left, c2d::Font *font, const std::vector &b for (const auto &button: buttons) { if (button && button->texture) { auto sprite = new Sprite(button->texture); - float scaling = std::min((getSize().x - 4) / (float) button->texture->getTextureRect().width, - (getSize().y - 4) / (float) button->texture->getTextureRect().height); + float scaling = std::min((getSize().x - 4) / (float) sprite->getSize().x, + (getSize().y - 4) / (float) sprite->getSize().y); sprite->setScale(scaling, scaling); sprite->setOrigin(left ? Origin::Left : Origin::Right); sprite->setPosition(pos); diff --git a/ui/c2dui_ui_menu.cpp b/ui/c2dui_ui_menu.cpp index 0e633801..a4c5ee25 100644 --- a/ui/c2dui_ui_menu.cpp +++ b/ui/c2dui_ui_menu.cpp @@ -60,8 +60,8 @@ class MenuLine : public c2d::RectangleShape { sprite->setVisibility(Visibility::Visible); value->setVisibility(Visibility::Hidden); float scaling = std::min( - getSize().x / (float) sprite->getTextureRect().width, - getSize().y / (float) sprite->getTextureRect().height); + getSize().x / (float) sprite->getSize().x, + getSize().y / (float) sprite->getSize().y); sprite->setScale(scaling, scaling); sprite->setPosition((MenuLine::getSize().x * 0.56f), MenuLine::getSize().y / 2); sprite->setOrigin(Origin::Left); From 13094ed473bfa4ed5daa36e49ddfb12313b692fc Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Wed, 14 Sep 2022 12:07:10 +0200 Subject: [PATCH 04/70] common: minor cleanup --- libcross2d | 2 +- pgen/sources/pgen_ui_emu.cpp | 4 ---- pgen/sources/pgen_ui_emu.h | 2 -- ui/c2dui_romlist.cpp | 4 ++-- ui/c2dui_ui_emu.cpp | 10 ++-------- ui/c2dui_ui_help.cpp | 11 +++++------ 6 files changed, 10 insertions(+), 23 deletions(-) diff --git a/libcross2d b/libcross2d index fa052898..1c186f8e 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit fa05289806a46cd7e3eea5f8bd88ca8790f1ac6a +Subproject commit 1c186f8e9c8cdb201bbb6e00c2334312f5bed459 diff --git a/pgen/sources/pgen_ui_emu.cpp b/pgen/sources/pgen_ui_emu.cpp index f842e828..d10de8c6 100644 --- a/pgen/sources/pgen_ui_emu.cpp +++ b/pgen/sources/pgen_ui_emu.cpp @@ -102,10 +102,6 @@ void PGENUiEmu::stop() { UiEmu::stop(); } -bool PGENUiEmu::onInput(c2d::Input::Player *players) { - return UiEmu::onInput(players); -} - void PGENUiEmu::onUpdate() { if (!isPaused()) { // inputs diff --git a/pgen/sources/pgen_ui_emu.h b/pgen/sources/pgen_ui_emu.h index ad0380f3..ab0bca14 100644 --- a/pgen/sources/pgen_ui_emu.h +++ b/pgen/sources/pgen_ui_emu.h @@ -17,8 +17,6 @@ class PGENUiEmu : public c2dui::UiEmu { void stop() override; - bool onInput(c2d::Input::Player *players) override; - void onUpdate() override; void resizeVideo(bool isGameGear = false); diff --git a/ui/c2dui_romlist.cpp b/ui/c2dui_romlist.cpp index db7d5794..09ef2a1f 100644 --- a/ui/c2dui_romlist.cpp +++ b/ui/c2dui_romlist.cpp @@ -83,7 +83,7 @@ void RomList::build(bool addArcadeSystem, const ss_api::System &system) { ui->getConfig()->getRomPaths().at(FBN_PATH_ARCADE), false, filters, system); setLoadingText("Games: %li / %li", gameList->getAvailableCount(), gameList->games.size()); - printf("RomList::build: games: %li / %li\n", gameList->getAvailableCount(), gameList->games.size()); + printf("RomList::build: games: %zu / %zu\n", gameList->getAvailableCount(), gameList->games.size()); // sort lists std::sort(gameList->systemList.systems.begin(), gameList->systemList.systems.end(), Api::sortSystemByName); @@ -144,7 +144,7 @@ void RomList::build(bool addArcadeSystem, const ss_api::System &system) { gameListFav->games[i].romsPath = game.romsPath; } } - printf("RomList::build: %lu favorites\n", gameListFav->games.size()); + printf("RomList::build: %zu favorites\n", gameListFav->games.size()); float time_spent = ui->getElapsedTime().asSeconds() - time_start; printf("RomList::build(): list built in %f\n", time_spent); diff --git a/ui/c2dui_ui_emu.cpp b/ui/c2dui_ui_emu.cpp index 6deb91db..01c18950 100644 --- a/ui/c2dui_ui_emu.cpp +++ b/ui/c2dui_ui_emu.cpp @@ -20,10 +20,7 @@ UiEmu::UiEmu(UiMain *u) : RectangleShape(u->getSize()) { } void UiEmu::addAudio(c2d::Audio *_audio) { - if (audio != nullptr) { - delete (audio); - } - + delete (audio); audio = _audio; } @@ -33,10 +30,7 @@ void UiEmu::addAudio(int rate, int samples, Audio::C2DAudioCallback cb) { } void UiEmu::addVideo(C2DUIVideo *v) { - if (video) { - delete (video); - } - + delete (video); video = v; video->setShader(ui->getConfig()->get(Option::Id::ROM_SHADER, true)->getIndex()); video->setFilter((Texture::Filter) ui->getConfig()->get(Option::Id::ROM_FILTER, true)->getIndex()); diff --git a/ui/c2dui_ui_help.cpp b/ui/c2dui_ui_help.cpp index 90dc52fb..a93b56e6 100644 --- a/ui/c2dui_ui_help.cpp +++ b/ui/c2dui_ui_help.cpp @@ -38,14 +38,13 @@ UiHelp::UiHelp(UiMain *ui) : SkinnedRectangle(ui->getSkin(), {"MAIN", "HELP"}) { "ROM MENU", {pos - 12, getSize().y / 2}); } -float -UiHelp::addItem(bool left, c2d::Font *font, const std::vector &buttons, - const std::string &name, const c2d::Vector2f &position) { +float UiHelp::addItem(bool left, c2d::Font *font, const std::vector &buttons, + const std::string &name, const c2d::Vector2f &position) { FloatRect bounds; Vector2f pos = position; for (const auto &button: buttons) { - if (button && button->texture) { + if (button && button->texture && button->texture->available) { auto sprite = new Sprite(button->texture); float scaling = std::min((getSize().x - 4) / (float) sprite->getSize().x, (getSize().y - 4) / (float) sprite->getSize().y); @@ -56,11 +55,11 @@ UiHelp::addItem(bool left, c2d::Font *font, const std::vector &b bounds = sprite->getGlobalBounds(); pos.x += left ? bounds.width : -bounds.width; } else { - // TODO - //auto text = new Text("NAVIGATION", (unsigned int) navigationSpriteBounds.height - 10); + // dummy button (TODO) } } + printf("UiHelp::addItem: %s, size: %i\n", name.c_str(), (unsigned int) bounds.height - 12); auto text = new Text(name, (unsigned int) bounds.height - 12, font); text->setOutlineThickness(1); text->setOrigin(left ? Origin::Left : Origin::Right); From 37297b88532a10c21835d13473cf563fa3eaafae Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 15 Sep 2022 08:58:40 +0200 Subject: [PATCH 05/70] 3ds: multiple fixes --- data/3ds/romfs/skins/big/config.cfg | 234 ++++++++++++++++++ data/3ds/romfs/skins/big/default.ttf | Bin 0 -> 79484 bytes data/3ds/romfs/skins/big/no_preview.png | Bin 0 -> 8966 bytes data/common/romfs/skins/default/config.cfg | 2 +- libcross2d | 2 +- pfbneo/CMakeLists.txt | 12 +- pfbneo/data/3ds/icon.png | Bin 0 -> 2718 bytes pfbneo/sources/3ds/SDL.h | 10 + pfbneo/sources/pfba_io.h | 6 + .../romfs/skins/big/config.cfg.override | 61 +++++ pnes/data/common/romfs/skins/big/title.png | Bin 0 -> 3113 bytes pnes/sources/pnes_config.cpp | 9 +- psnes/data/3ds/icon.png | Bin 0 -> 2718 bytes psnes/sources/psnesIo.h | 6 + ui/c2dui_config.cpp | 15 +- 15 files changed, 343 insertions(+), 14 deletions(-) create mode 100644 data/3ds/romfs/skins/big/config.cfg create mode 100644 data/3ds/romfs/skins/big/default.ttf create mode 100644 data/3ds/romfs/skins/big/no_preview.png create mode 100644 pfbneo/data/3ds/icon.png create mode 100644 pfbneo/sources/3ds/SDL.h create mode 100644 pnes/data/common/romfs/skins/big/config.cfg.override create mode 100644 pnes/data/common/romfs/skins/big/title.png create mode 100644 psnes/data/3ds/icon.png diff --git a/data/3ds/romfs/skins/big/config.cfg b/data/3ds/romfs/skins/big/config.cfg new file mode 100644 index 00000000..a98a89c7 --- /dev/null +++ b/data/3ds/romfs/skins/big/config.cfg @@ -0,0 +1,234 @@ +# color: rgba color (0-255) +# outline_color: rgba color (0-255) +# outline_size: outline size in pixels +# rectangle: shape bounds (left, top, width, height) +# origin: shape origin (0 = left, 1 = top left, 2 = top, 3 = top right, 4 = right, 5 = bottom right, 6 = bottom, 7 = bottom left, 8 = center) +# texture = texture path (relative) +# filtering = 0 = point, 1 = linear + +SKIN_CONFIG : +{ + GENERAL : + { + resolution = [ 400.0, 240.0 ]; + m_scaling = [ 1.0, 1.0 ]; + }; + FONT : + { + path = "default.ttf"; + offset = [ 0.0, -2.0 ]; + filtering = 1; + }; + COLORS : + { + color0 = [ 0, 255, 51, 100 ]; // HIGHLIGHT > color + color1 = [ 153, 255, 51, 255 ]; // HIGHLIGHT > outline_color + color2 = [ 50, 50, 50, 255 ]; // MESSAGEBOX > color + color3 = [ 153, 255, 51, 255 ]; // MESSAGEBOX > outline_color + color4 = [ 50, 50, 50, 255 ]; // STATUSBOX > color + color5 = [ 153, 255, 51, 255 ]; // STATUSBOX > outline_color + color6 = [ 70, 70, 70, 255 ]; // MAIN > color + color7 = [ 255, 51, 51, 255 ]; // MAIN > outline_color + color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color + color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color + color10 = [ 40, 40, 40, 255 ]; // MAIN > HELP > color + color11 = [ 255, 51, 51, 255 ]; // MAIN > HELP > outline_color + color12 = [ 40, 40, 40, 255 ]; // MAIN > ROM_LIST > color + color13 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > outline_color + color14 = [ 40, 40, 40, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > color + color15 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color + color16 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > TEXT > color + color17 = [ 255, 51, 51, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing + color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color + color19 = [ 55, 55, 55, 255 ]; // MAIN > ROM_IMAGE > color + color20 = [ 255, 153, 51, 255 ]; // MAIN > ROM_IMAGE > outline_color + color21 = [ 60, 60, 60, 255 ]; // MAIN > ROM_INFOS > color + color22 = [ 153, 255, 51, 255 ]; // MAIN > ROM_INFOS > outline_color + color23 = [ 255, 225, 51, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color + color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color + color25 = [ 255, 153, 51, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color + color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color + color27 = [ 60, 60, 60, 255 ]; // MAIN > ROM_SYNOPSIS > color + color28 = [ 255, 225, 51, 255 ]; // MAIN > ROM_SYNOPSIS > outline_color + color29 = [ 255, 153, 51, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color + color30 = [ 0, 0, 0, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color + color31 = [ 100, 100, 100, 240 ]; // OPTIONS_MENU > color + color32 = [ 220, 0, 0, 255 ]; // OPTIONS_MENU > outline_color + color33 = [ 255, 255, 255, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color + color34 = [ 220, 0, 0, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color + color35 = [ 255, 255, 255, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color + color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color + color37 = [ 100, 100, 100, 230 ]; // STATES_MENU > color + color38 = [ 255, 51, 51, 255 ]; // STATES_MENU > outline_color + color39 = [ 255, 255, 255, 255 ]; // STATES_MENU > TITLE_TEXT > color + color40 = [ 220, 0, 0, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color + color41 = [ 60, 60, 60, 255 ]; // STATES_MENU > STATES_ITEM > color + color42 = [ 255, 153, 51, 255 ]; // STATES_MENU > STATES_ITEM > outline_color + color43 = [ 255, 255, 255, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color + color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color + }; + HIGHLIGHT : + { + color = "color0"; + outline_color = "color1"; + outline_size = 1.0; + rectangle = [ 0.0, 0.0, 194.0, 10.0 ]; + origin = 1; + }; + MESSAGEBOX : + { + color = "color2"; + outline_color = "color3"; + outline_size = 2.0; + rectangle = [ 640.0, 360.0, 640.0, 360.0 ]; // TODO + origin = 8; + }; + STATUSBOX : + { + color = "color4"; + outline_color = "color5"; + outline_size = 2.0; + rectangle = [ 640.0, 714.0, 1246.0, 38.0 ]; // TODO + origin = 6; + }; + MAIN : + { + color = "color6"; + outline_color = "color7"; + outline_size = 1.0; + rectangle = [ 1.0, 1.0, 398.0, 238.0 ]; + origin = 1; + TITLE : + { + texture = "title.png"; + filtering = 0; + color = "color8"; + outline_color = "color9"; + outline_size = 0.0; + rectangle = [ 1.0, 2.0, 115.0, 63.0 ]; + origin = 1; + }; + HELP : + { + color = "color10"; + outline_color = "color11"; + outline_size = 1.0; // TODO + rectangle = [ 3.0, 223.0, 389.0, 13.0 ]; + origin = 1; + }; + ROM_LIST : + { + color = "color12"; + outline_color = "color13"; + outline_size = 1.0; + rectangle = [ 3.0, 68.0, 200.0, 148.0 ]; + origin = 0; + SYSTEM_TEXT : + { + size = 34; + color = "color14"; + outline_color = "color15"; + outline_size = 2.0; + rectangle = [ 159.0, 70.0, 131.0, 11.0 ]; + origin = 5; + }; + TEXT : + { + size = 14; + color = "color16"; + color_missing = "color17"; + outline_color = "color18"; + outline_size = 1.0; + highlight_use_text_color = 1; + }; + }; + ROM_IMAGE : + { + texture = "no_preview.png"; + color = "color19"; + outline_color = "color20"; + outline_size = 1.0; + rectangle = [ 207.0, 3.0, 188.0, 188.0 ]; + origin = 1; + }; + ROM_SYNOPSIS : + { + color = "color27"; + outline_color = "color28"; + outline_size = 2.0; + rectangle = [ 530.0, 453.0, 732.0, 207.0 ]; + origin = 1; + TEXT : + { + size = 22; + color = "color29"; + outline_color = "color30"; + outline_size = 1.0; + rectangle = [ 16.0, 16.0, 710.0, 180.0 ]; + overflow = 1; + origin = 1; + }; + }; + }; + OPTIONS_MENU : + { + color = "color31"; + outline_color = "color32"; + outline_size = 1.0; + rectangle = [ 400.0, 120.0, 200.0, 200.0 ]; + origin = 0; + TITLE_TEXT : + { + size = 50; + color = "color33"; + outline_color = "color34"; + outline_size = 2.0; + rectangle = [ 4.0, -30.0, 130.0, 10.0 ]; + origin = 1; + }; + ITEMS_TEXT : + { + size = 14; + color = "color35"; + outline_color = "color36"; + outline_size = 1.0; + rectangle = [ 0.0, 0.0, 130.0, 16.0 ]; + origin = 1; + }; + }; + STATES_MENU : + { + color = "color37"; + outline_color = "color38"; + outline_size = 2.0; + rectangle = [ 640.0, 720.0, 1000.0, 350.0 ]; + origin = 2; + TITLE_TEXT : + { + size = 30; + color = "color39"; + outline_color = "color40"; + outline_size = 2.0; + rectangle = [ 16.0, 16.0, 1120.0, 26.0 ]; + origin = 1; + }; + STATES_ITEM : + { + color = "color41"; + outline_color = "color42"; + outline_size = 2.0; + rectangle = [ 0.0, 138.0, 220.0, 220.0 ]; + origin = 1; + STATES_TEXT : + { + string = "NO SAVE"; + size = 24; + color = "color43"; + outline_color = "color44"; + outline_size = 1.0; + rectangle = [ 0.0, 0.0, 0.0, 0.0 ]; + origin = 8; + }; + }; + }; +}; diff --git a/data/3ds/romfs/skins/big/default.ttf b/data/3ds/romfs/skins/big/default.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bc53cb755eb3143d5d5f04b5bee6a120e35ea007 GIT binary patch literal 79484 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 YcJlwttgrjX8-JCY?*n9dr;{E37tfD`vj6}9 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/no_preview.png b/data/3ds/romfs/skins/big/no_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4e93e49576e3b0f042fc6b9b077f9fea66293ddf GIT binary patch literal 8966 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 literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/default/config.cfg b/data/common/romfs/skins/default/config.cfg index 4e9705bb..5463893a 100644 --- a/data/common/romfs/skins/default/config.cfg +++ b/data/common/romfs/skins/default/config.cfg @@ -11,7 +11,7 @@ SKIN_CONFIG : GENERAL : { resolution = [ 1280.0, 720.0 ]; - m_scaling = [ 1.0, 1.0 ]; + global_scaling = [ 1.0, 1.0 ]; }; FONT : { diff --git a/libcross2d b/libcross2d index 1c186f8e..fba20864 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit 1c186f8e9c8cdb201bbb6e00c2334312f5bed459 +Subproject commit fba2086413fd27df4406938b4a1226c441fccd19 diff --git a/pfbneo/CMakeLists.txt b/pfbneo/CMakeLists.txt index 73a23622..8afbeb53 100644 --- a/pfbneo/CMakeLists.txt +++ b/pfbneo/CMakeLists.txt @@ -280,17 +280,13 @@ elseif (PLATFORM_3DS) # 3DS ############## list(APPEND INC + sources/3ds ${DEVKITPRO}/libctru/include ${DEVKITPRO}/portlibs/armv6k/include) - list(APPEND FLAGS -DARM11 -D_3DS -D__3DS__ - -DNO_KEYBOARD -D__PFBA_ARM__ -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS + list(APPEND FLAGS -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS -ffunction-sections -fomit-frame-pointer) - list(APPEND LDFLAGS - ${DEVKITPRO}/portlibs/armv6k/lib/libpng.a - ${DEVKITPRO}/portlibs/armv6k/lib/libz.a - ${DEVKITPRO}/libctru/lib/libcitro3d.a - ${DEVKITPRO}/libctru/lib/libctru.a - m) + # TODO: -D__PFBA_ARM__ + list(APPEND LDFLAGS) elseif (PLATFORM_SWITCH) ############## # NX (SWITCH) diff --git a/pfbneo/data/3ds/icon.png b/pfbneo/data/3ds/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b1670236320a9fef6219c39aa8ffd87feaa4bdb3 GIT binary patch literal 2718 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 color + color1 = [ 180, 180, 180, 255 ]; // HIGHLIGHT > outline_color + color2 = [ 48, 110, 255, 255 ]; // MESSAGEBOX > color + color3 = [ 193, 18, 28, 255 ]; // MESSAGEBOX > outline_color + color4 = [ 48, 110, 255, 255 ]; // STATUSBOX > color + color5 = [ 193, 18, 28, 255 ]; // STATUSBOX > outline_color + color6 = [ 138, 137, 136, 255 ]; // MAIN > color + color7 = [ 193, 18, 28, 255 ]; // MAIN > outline_color + color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color + color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color + color10 = [ 180, 180, 180, 255 ]; // MAIN > HELP > color + color11 = [ 193, 18, 28, 255 ]; // MAIN > HELP > outline_color + color12 = [ 0, 10, 50, 255 ]; // MAIN > ROM_LIST > color + color13 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > outline_color + color14 = [ 40, 40, 40, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > color + color15 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color + color16 = [ 180, 180, 180, 255 ]; // MAIN > ROM_LIST > TEXT > color + color17 = [ 220, 18, 28, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing + color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color + color19 = [ 48, 110, 255, 255 ]; // MAIN > ROM_IMAGE > color + color20 = [ 193, 18, 28, 255 ]; // MAIN > ROM_IMAGE > outline_color + color21 = [ 180, 180, 180, 255 ]; // MAIN > ROM_INFOS > color + color22 = [ 48, 110, 255, 255 ]; // MAIN > ROM_INFOS > outline_color + color23 = [ 220, 18, 28, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color + color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color + color25 = [ 247, 186, 11, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color + color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color + color27 = [ 193, 18, 28, 255 ]; // MAIN > ROM_SYNOPSIS > color + color28 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > outline_color + color29 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color + color30 = [ 0, 0, 0, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color + color31 = [ 100, 100, 100, 240 ]; // OPTIONS_MENU > color + color32 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > outline_color + color33 = [ 255, 255, 255, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color + color34 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color + color35 = [ 255, 255, 255, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color + color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color + color37 = [ 100, 100, 100, 230 ]; // STATES_MENU > color + color38 = [ 193, 18, 28, 255 ]; // STATES_MENU > outline_color + color39 = [ 255, 255, 255, 255 ]; // STATES_MENU > TITLE_TEXT > color + color40 = [ 193, 18, 28, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color + color41 = [ 48, 110, 255, 255 ]; // STATES_MENU > STATES_ITEM > color + color42 = [ 180, 180, 180, 255 ]; // STATES_MENU > STATES_ITEM > outline_color + color43 = [ 255, 255, 255, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color + color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color + }; + MAIN : + { + ROM_LIST : + { + TEXT : + { + highlight_use_text_color = 0; + }; + }; + }; +}; diff --git a/pnes/data/common/romfs/skins/big/title.png b/pnes/data/common/romfs/skins/big/title.png new file mode 100644 index 0000000000000000000000000000000000000000..6a85a04b11f37a88752c881bda76512647d11659 GIT binary patch literal 3113 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 d0B~%+u};$aihoCNICxset( + {"SCALING_MODE", {"ASPECT", "INTEGER"}, 0, + Option::Id::ROM_SCALING_MODE, Option::Flags::STRING}); +#else get(Option::Id::ROM_SCALING_MODE)->set( {"SCALING_MODE", {"ASPECT", "INTEGER"}, 1, Option::Id::ROM_SCALING_MODE, Option::Flags::STRING}); - +#endif // "c2dui_romlist" will also reload config, but we need new roms paths reset(); load(); diff --git a/psnes/data/3ds/icon.png b/psnes/data/3ds/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b1670236320a9fef6219c39aa8ffd87feaa4bdb3 GIT binary patch literal 2718 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 skins; // add default skins from romfs skins.emplace_back("default"); + // add skins from romfs dir + auto files = io->getDirList(io->getRomFsPath() + "skins/", true); + for (auto &file: files) { + if (file.type != c2d::Io::Type::Directory || file.name[0] == '.') { + continue; + } + // only append skin name if it + if (std::find(skins.begin(), skins.end(), file.name) == skins.end()) { + skins.emplace_back(file.name); + printf("skin found: %s\n", file.path.c_str()); + } + } // add skins from data dir - auto files = io->getDirList(dataPath + "skins/", true); + files = io->getDirList(dataPath + "skins/", true); for (auto &file: files) { if (file.type != c2d::Io::Type::Directory || file.name[0] == '.') { continue; @@ -55,7 +67,6 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { printf("skin found: %s\n", file.path.c_str()); } } - // set default skin index if (!get(Option::Id::GUI_SKIN)) { int index = 0; From 73a21ece6f6ce1f6fb54b70109ee3115629f16c9 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 15 Sep 2022 10:05:15 +0200 Subject: [PATCH 06/70] 3ds: fix psnes compilation --- cores/snes9x | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/snes9x b/cores/snes9x index eebb288f..5504b515 160000 --- a/cores/snes9x +++ b/cores/snes9x @@ -1 +1 @@ -Subproject commit eebb288faeec04ef8ac223bf77e4b436466c2860 +Subproject commit 5504b515fc960de3d3bdb303376c3fbbcb5eb83a From b1b09153e66bbd9685097640f0b235bfa9bb7268 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 16 Sep 2022 12:49:17 +0200 Subject: [PATCH 07/70] 3ds: multiple fixes... --- data/3ds/romfs/skins/big/config.cfg | 16 ++--- libcross2d | 2 +- .../3ds/romfs/skins/big/config.cfg.override | 61 ++++++++++++++++++ pgen/data/3ds/romfs/skins/big/title.png | Bin 0 -> 2016 bytes .../romfs/skins/big/config.cfg.override | 0 .../{common => 3ds}/romfs/skins/big/title.png | Bin pnes/sources/pnes_config.cpp | 7 +- .../3ds/romfs/skins/big/config.cfg.override | 61 ++++++++++++++++++ psnes/data/3ds/romfs/skins/big/title.png | Bin 0 -> 3410 bytes psnes/sources/psnesIo.h | 4 +- psnes/sources/uiEmu.cpp | 16 ++--- ui/c2dui_config.cpp | 10 ++- 12 files changed, 150 insertions(+), 27 deletions(-) create mode 100644 pgen/data/3ds/romfs/skins/big/config.cfg.override create mode 100644 pgen/data/3ds/romfs/skins/big/title.png rename pnes/data/{common => 3ds}/romfs/skins/big/config.cfg.override (100%) rename pnes/data/{common => 3ds}/romfs/skins/big/title.png (100%) create mode 100644 psnes/data/3ds/romfs/skins/big/config.cfg.override create mode 100644 psnes/data/3ds/romfs/skins/big/title.png diff --git a/data/3ds/romfs/skins/big/config.cfg b/data/3ds/romfs/skins/big/config.cfg index a98a89c7..80ce5a26 100644 --- a/data/3ds/romfs/skins/big/config.cfg +++ b/data/3ds/romfs/skins/big/config.cfg @@ -79,8 +79,8 @@ SKIN_CONFIG : { color = "color2"; outline_color = "color3"; - outline_size = 2.0; - rectangle = [ 640.0, 360.0, 640.0, 360.0 ]; // TODO + outline_size = 1.0; + rectangle = [ 200.0, 120.0, 200.0, 120.0 ]; // TODO origin = 8; }; STATUSBOX : @@ -200,24 +200,24 @@ SKIN_CONFIG : { color = "color37"; outline_color = "color38"; - outline_size = 2.0; - rectangle = [ 640.0, 720.0, 1000.0, 350.0 ]; + outline_size = 1.0; + rectangle = [ 200.0, 240.0, 312.0, 115.0 ]; origin = 2; TITLE_TEXT : { size = 30; color = "color39"; outline_color = "color40"; - outline_size = 2.0; - rectangle = [ 16.0, 16.0, 1120.0, 26.0 ]; + outline_size = 1.0; + rectangle = [ 5.0, 5.0, 350.0, 8.0 ]; origin = 1; }; STATES_ITEM : { color = "color41"; outline_color = "color42"; - outline_size = 2.0; - rectangle = [ 0.0, 138.0, 220.0, 220.0 ]; + outline_size = 1.0; + rectangle = [ 0.0, 46.0, 70.0, 75.0 ]; origin = 1; STATES_TEXT : { diff --git a/libcross2d b/libcross2d index fba20864..6d0388be 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit fba2086413fd27df4406938b4a1226c441fccd19 +Subproject commit 6d0388becf3ef0dbd4c48a94e75b729509360490 diff --git a/pgen/data/3ds/romfs/skins/big/config.cfg.override b/pgen/data/3ds/romfs/skins/big/config.cfg.override new file mode 100644 index 00000000..d743a410 --- /dev/null +++ b/pgen/data/3ds/romfs/skins/big/config.cfg.override @@ -0,0 +1,61 @@ +SKIN_CONFIG : +{ + COLORS : + { + color0 = [ 64, 64, 64, 255 ]; // HIGHLIGHT > color + color1 = [ 193, 18, 28, 255 ]; // HIGHLIGHT > outline_color + color2 = [ 0, 56, 123, 240 ]; // MESSAGEBOX > color + color3 = [ 193, 18, 28, 255 ]; // MESSAGEBOX > outline_color + color4 = [ 0, 56, 123, 240 ]; // STATUSBOX > color + color5 = [ 193, 18, 28, 255 ]; // STATUSBOX > outline_color + color6 = [ 34, 34, 34, 255 ]; // MAIN > color + color7 = [ 193, 18, 28, 255 ]; // MAIN > outline_color + color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color + color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color + color10 = [ 64, 64, 64, 255 ]; // MAIN > HELP > color + color11 = [ 193, 18, 28, 255 ]; // MAIN > HELP > outline_color + color12 = [ 0, 56, 123, 240 ]; // MAIN > ROM_LIST > color + color13 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > outline_color + color14 = [ 0, 56, 123, 240 ]; // MAIN > ROM_LIST > TITLE_TEXT > color + color15 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color + color16 = [ 200, 200, 200, 255 ]; // MAIN > ROM_LIST > TEXT > color + color17 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing + color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color + color19 = [ 0, 114, 67, 255 ]; // MAIN > ROM_IMAGE > color + color20 = [ 247, 186, 11, 255 ]; // MAIN > ROM_IMAGE > outline_color + color21 = [ 0, 56, 123, 240 ]; // MAIN > ROM_INFOS > color + color22 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > outline_color + color23 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color + color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color + color25 = [ 247, 186, 11, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color + color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color + color27 = [ 193, 18, 28, 255 ]; // MAIN > ROM_SYNOPSIS > color + color28 = [ 0, 56, 123, 240 ]; // MAIN > ROM_SYNOPSIS > outline_color + color29 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color + color30 = [ 0, 56, 123, 240 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color + color31 = [ 0, 56, 123, 240 ]; // OPTIONS_MENU > color + color32 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > outline_color + color33 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color + color34 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color + color35 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color + color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color + color37 = [ 0, 56, 123, 220 ]; // STATES_MENU > color + color38 = [ 193, 18, 28, 255 ]; // STATES_MENU > outline_color + color39 = [ 200, 200, 200, 255 ]; // STATES_MENU > TITLE_TEXT > color + color40 = [ 220, 0, 0, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color + color41 = [ 64, 64, 64, 255 ]; // STATES_MENU > STATES_ITEM > color + color42 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > outline_color + color43 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color + color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color + }; + MAIN : + { + ROM_LIST : + { + TEXT : + { + highlight_use_text_color = 0; + }; + }; + }; +}; diff --git a/pgen/data/3ds/romfs/skins/big/title.png b/pgen/data/3ds/romfs/skins/big/title.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea23a9a55489d9054bcde829c7c4ab35cea22eb GIT binary patch literal 2016 zcmbtUeK=Hk8$Jv(VrbGXokC+;?3NWX)R2#1h8g*+lo5)|OiU(Uqrrq>qA5zVw#!E} z62-eBMHUHbh4oGAb|>-^5S&UK&P^W67ypXc{nad#!F zD(_SV06^7|LOKcna#_%OpAsB;X1dh<2?0q#M54PRk%$fr4`Boa(*fXnVXV-K(nQc| zKHYzHw}{S267u{zlU@h;r0NOK~ufzdPkPLi4PzwvVE% z6!v>>n`5v2;V-9;25uW`46_*#b6?fLF2!UOGyJsN&Dtr=0cZ4U_g;90;px7+vuoRx ztYsf;7H>*cb2+VybL93!>|A&6FXPT|8A;-GZ81TzwpuAvJ9P}r#a{ky$9(D3Ep{UJ7*tMr}ZPyF1~u_d3>T@1!4HD&iov6e)cu4^J^U7 zk{_NaT&7Z>{{lbbL?!{NYgb;~{d5S~5=!xk005QkYquPbowEZ15o|{nd&HyysHSfC z^R&1Jf^;!jwD-;sDICjeb3)D z{)TtNayk)1KkeoGG3jURXq|gID?7J-w#B$;KB!tF_I|F1;5t|TwL+%(HNXr_yC<*;@b3L44D9`ssavz9 zB74S%y4lp|aE>+uJ36EBS)_{s0r`j0Zq!-fr;BO}qy3hH+9l|hz7al$SrNr89*gEh zb*loTe1D^yM$BY57&}1mi-~!LDNUeeYy%yvsP<~ke8e#nXv}T=`W^P+8?z840uRDdJcB)FDyu3?lj28Itc|A9aQpso8L-JuwME5W{B0=^J(TScN!$yJ?JEQ4{3mT2)Z#0wh6ufWB@S zBv96MDTE=9&(_*OZXv*PUCeR5V%6>t+V+;z9gTv2S$ z)Ftbnow7mojRwQ<$!1`TWs@Qae)W<=a1I6HIiMsFl(h9MsfcS-1xS2t#RK2q$HS?u zLqdT0Xub1#bTZnX6jwf+QP+lA5nx~o@8b@|j!M$qLL<-3)qtl*7UstrTQoXofN}bp zDUY%q4!I;3WPS3Oncod8cg=rVk;^BqT<6wL<%XSHqRy@47Or|SZ{=H(H(I;LCZpZr z*z}^q8z*b7uQGRvqqQ=@oe%D>%~)d2?nh%0)Y>N!ZiAfgj@dcaBTIe(HxR>ck;AoC zWMoA>?%43#Ix_%6j3SqLKV8J1^!5}~xHzRXXRCTw*On|6JV&h^4#i)6PI%%}9_ksT zKaFW)b-qpw2g@>8;pRvj2z1b*u(4jhrW?v~8BX_Ws(*VO$kd=l&oHe{pujWQ4X2`7 z;?D=)irCj}+sIPaCF#EkD&Z``FhsWjBMjL``eP;VY|w7`Q2oK>Ysw=A{8psJ7OVnc z>nmS4;XQ8hmE=WzfkDQWzWK1dk({9_vm6RXuabTFg;H7XU2Amz%uYzdnR5MO7vSpj z3ntS6U>IY}{5NMffCF=Mset( - {"SCALING_MODE", {"ASPECT", "INTEGER"}, 0, - Option::Id::ROM_SCALING_MODE, Option::Flags::STRING}); -#else get(Option::Id::ROM_SCALING_MODE)->set( {"SCALING_MODE", {"ASPECT", "INTEGER"}, 1, Option::Id::ROM_SCALING_MODE, Option::Flags::STRING}); -#endif + // "c2dui_romlist" will also reload config, but we need new roms paths reset(); load(); diff --git a/psnes/data/3ds/romfs/skins/big/config.cfg.override b/psnes/data/3ds/romfs/skins/big/config.cfg.override new file mode 100644 index 00000000..9f7fb1d5 --- /dev/null +++ b/psnes/data/3ds/romfs/skins/big/config.cfg.override @@ -0,0 +1,61 @@ +SKIN_CONFIG : +{ + COLORS : + { + color0 = [ 0, 114, 67, 255 ]; // HIGHLIGHT > color + color1 = [ 247, 186, 11, 255 ]; // HIGHLIGHT > outline_color + color2 = [ 0, 56, 123, 240 ]; // MESSAGEBOX > color + color3 = [ 193, 18, 28, 255 ]; // MESSAGEBOX > outline_color + color4 = [ 0, 56, 123, 240 ]; // STATUSBOX > color + color5 = [ 193, 18, 28, 255 ]; // STATUSBOX > outline_color + color6 = [ 178, 180, 178, 255 ]; // MAIN > color + color7 = [ 193, 18, 28, 255 ]; // MAIN > outline_color + color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color + color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color + color10 = [ 0, 56, 123, 255 ]; // MAIN > HELP > color + color11 = [ 193, 18, 28, 255 ]; // MAIN > HELP > outline_color + color12 = [ 0, 56, 123, 255 ]; // MAIN > ROM_LIST > color + color13 = [ 247, 186, 11, 255 ]; // MAIN > ROM_LIST > outline_color + color14 = [ 40, 40, 40, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > color + color15 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color + color16 = [ 200, 200, 200, 255 ]; // MAIN > ROM_LIST > TEXT > color + color17 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing + color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color + color19 = [ 0, 114, 67, 255 ]; // MAIN > ROM_IMAGE > color + color20 = [ 247, 186, 11, 255 ]; // MAIN > ROM_IMAGE > outline_color + color21 = [ 0, 114, 67, 255 ]; // MAIN > ROM_INFOS > color + color22 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > outline_color + color23 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color + color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color + color25 = [ 247, 186, 11, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color + color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color + color27 = [ 193, 18, 28, 255 ]; // MAIN > ROM_SYNOPSIS > color + color28 = [ 0, 56, 123, 255 ]; // MAIN > ROM_SYNOPSIS > outline_color + color29 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color + color30 = [ 0, 56, 123, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color + color31 = [ 0, 56, 123, 240 ]; // OPTIONS_MENU > color + color32 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > outline_color + color33 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color + color34 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color + color35 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color + color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color + color37 = [ 0, 56, 123, 220 ]; // STATES_MENU > color + color38 = [ 193, 18, 28, 255 ]; // STATES_MENU > outline_color + color39 = [ 200, 200, 200, 255 ]; // STATES_MENU > TITLE_TEXT > color + color40 = [ 220, 0, 0, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color + color41 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > color + color42 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > outline_color + color43 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color + color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color + }; + MAIN : + { + ROM_LIST : + { + TEXT : + { + highlight_use_text_color = 0; + }; + }; + }; +}; diff --git a/psnes/data/3ds/romfs/skins/big/title.png b/psnes/data/3ds/romfs/skins/big/title.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc12c96468687107924c5925ac57a73dc79901b GIT binary patch literal 3410 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 TjR*eoe;aofPxRwsXMg%Hoq}-% literal 0 HcmV?d00001 diff --git a/psnes/sources/psnesIo.h b/psnes/sources/psnesIo.h index a235acf9..0f54daa3 100644 --- a/psnes/sources/psnesIo.h +++ b/psnes/sources/psnesIo.h @@ -19,11 +19,11 @@ namespace c2d { return "/data/psnes/"; } #elif __3DS__ -#ifndef NDEBUG +//#ifndef NDEBUG std::string getDataPath() override { return "/3ds/psnes/"; } -#endif +//#endif #endif }; } diff --git a/psnes/sources/uiEmu.cpp b/psnes/sources/uiEmu.cpp index 9c65fa11..0633aa91 100644 --- a/psnes/sources/uiEmu.cpp +++ b/psnes/sources/uiEmu.cpp @@ -298,16 +298,16 @@ bool8 S9xInitUpdate() { bool8 S9xDeinitUpdate(int width, int height) { //printf("S9xDeinitUpdate(%i, %i\n", width, height); C2DUIVideo *video = m_ui->getUiEmu()->getVideo(); - auto rect = video->getTextureRect(); - - if (rect.width != width || rect.height != height) { - video->setTextureRect({0, 0, width, height}); - video->setSize((float) width, (float) height); - video->updateScaling(); + if (video) { + auto rect = video->getTextureRect(); + if (rect.width != width || rect.height != height) { + video->setSize((float) width, (float) height); + video->setTextureRect({0, 0, width, height}); + video->updateScaling(); + } + video->unlock(); } - video->unlock(); - return TRUE; } diff --git a/ui/c2dui_config.cpp b/ui/c2dui_config.cpp index 56f108bb..3d69065a 100644 --- a/ui/c2dui_config.cpp +++ b/ui/c2dui_config.cpp @@ -71,8 +71,14 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { if (!get(Option::Id::GUI_SKIN)) { int index = 0; for (size_t i = 0; i < skins.size(); i++) { - if (skins.at(i) == "default") { - index = (int) i; + if (C2D_SCREEN_HEIGHT > 240) { + if (skins.at(i) == "default") { + index = (int) i; + } + } else { + if (skins.at(i) == "big") { + index = (int) i; + } } } append("SKIN", skins, index, Option::Id::GUI_SKIN, Option::Flags::STRING); From 70d8a77d1dfa7a5e9488c43a98dd5480cfa4f653 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 16 Sep 2022 12:51:36 +0200 Subject: [PATCH 08/70] 3ds: fix io --- pgen/sources/pgen_io.h | 2 ++ pnes/sources/pnes_io.h | 2 ++ psnes/sources/psnesIo.h | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pgen/sources/pgen_io.h b/pgen/sources/pgen_io.h index c3981b27..1322fdf7 100644 --- a/pgen/sources/pgen_io.h +++ b/pgen/sources/pgen_io.h @@ -24,9 +24,11 @@ namespace c2d { } #endif #elif __3DS__ +#ifndef NDEBUG std::string getDataPath() override { return "/3ds/pgen/"; } +#endif #endif }; } diff --git a/pnes/sources/pnes_io.h b/pnes/sources/pnes_io.h index 46b8d3f9..a71c92bc 100644 --- a/pnes/sources/pnes_io.h +++ b/pnes/sources/pnes_io.h @@ -26,9 +26,11 @@ namespace c2d { } #endif #elif __3DS__ +#ifndef NDEBUG std::string getDataPath() override { return "/3ds/pnes/"; } +#endif #endif }; } diff --git a/psnes/sources/psnesIo.h b/psnes/sources/psnesIo.h index 0f54daa3..a235acf9 100644 --- a/psnes/sources/psnesIo.h +++ b/psnes/sources/psnesIo.h @@ -19,11 +19,11 @@ namespace c2d { return "/data/psnes/"; } #elif __3DS__ -//#ifndef NDEBUG +#ifndef NDEBUG std::string getDataPath() override { return "/3ds/psnes/"; } -//#endif +#endif #endif }; } From e108914b868ede6d735bb19142a52e18da7a20ae Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Mon, 19 Sep 2022 11:08:38 +0200 Subject: [PATCH 09/70] common: cleanup preview image and video loading code --- ui/c2dui_ui_romlist.cpp | 115 +++++++++----------------------- ui/c2dui_ui_romlist.h | 8 ++- ui/c2dui_ui_romlist_rominfo.cpp | 13 ++-- 3 files changed, 42 insertions(+), 94 deletions(-) diff --git a/ui/c2dui_ui_romlist.cpp b/ui/c2dui_ui_romlist.cpp index f9515d6a..561bc353 100644 --- a/ui/c2dui_ui_romlist.cpp +++ b/ui/c2dui_ui_romlist.cpp @@ -116,98 +116,47 @@ void UIRomList::updateRomList() { } } -Texture *UIRomList::getPreviewTexture(const ss_api::Game &game) { - // load image - C2DTexture *texture = nullptr; - std::string fullPath, mediaPath; - - // if database doesn't contains any media, just use default path - mediaPath = game.getMedia("mixrbv2").url; - if (mediaPath.empty()) { - mediaPath = "media/mixrbv2/" + Utility::removeExt(game.path) + ".png"; +std::string UIRomList::getPreview(const Game &game, UIRomList::PreviewType type) { + std::string mediaType = type == Tex ? "mixrbv2" : "video"; + std::string mediaExt = type == Tex ? ".png" : ".mp4"; + + // try media path from database + std::string path = game.romsPath + game.getMedia(mediaType).url; + printf("getPreview(%s)\n", path.c_str()); + if (ui->getIo()->exist(path)) { + return path; } - fullPath = game.romsPath + mediaPath; - printf("getPreviewTexture(%s)\n", fullPath.c_str()); - texture = new C2DTexture(fullPath); - if (!texture->available) { - delete (texture); - texture = nullptr; - if (game.isClone()) { - Game parentGame = romList->gameList->findGameByPath(game.cloneOf); - if (!parentGame.path.empty()) { - mediaPath = parentGame.getMedia("mixrbv2").url; - if (mediaPath.empty()) { - mediaPath = "media/mixrbv2/" + Utility::removeExt(parentGame.path) + ".png"; - } - fullPath = game.romsPath + mediaPath; - printf("getPreviewTexture(%s)\n", fullPath.c_str()); - texture = new C2DTexture(fullPath); - if (!texture->available) { - delete (texture); - texture = nullptr; - } - } - } else { - // for non arcade game, search for a "screenscraper" game with same name - std::vector clones = romList->gameList->findGamesByName(game); - for (const auto &g: clones) { - mediaPath = g.getMedia("mixrbv2").url; - fullPath = g.romsPath + mediaPath; - texture = new C2DTexture(fullPath); - if (!texture->available) { - delete (texture); - texture = nullptr; - } else { - break; - } - } - } + // try from filename + path = game.romsPath + "media/" + mediaType + "/" + Utility::removeExt(game.path) + mediaExt; + printf("getPreview(%s)\n", path.c_str()); + if (ui->getIo()->exist(path)) { + return path; } - return texture; -} - -std::string UIRomList::getPreviewVideo(const ss_api::Game &game) { - std::string fullPath, mediaPath; - - // if database doesn't contains any media, just use default path - mediaPath = game.getMedia("video").url; - if (mediaPath.empty()) { - mediaPath = "media/video/" + Utility::removeExt(game.path) + ".mp4"; + // for non arcade game, search for a "screenscraper" game with same name + if (!game.isClone()) { + std::vector clones = romList->gameList->findGamesByName(game); + for (const auto &g: clones) { + path = g.romsPath + g.getMedia(mediaType).url; + printf("getPreview(%s)\n", path.c_str()); + if (ui->getIo()->exist(path)) { + return path; + } + } } - fullPath = game.romsPath + mediaPath; - printf("getPreviewVideo(%s)\n", fullPath.c_str()); - if (!ui->getIo()->exist(fullPath)) { - fullPath = ""; - Game parentGame = romList->gameList->findGameByPath(game.cloneOf); - if (!parentGame.path.empty()) { - mediaPath = parentGame.getMedia("video").url; - if (mediaPath.empty()) { - mediaPath = "media/video/" + Utility::removeExt(parentGame.path) + ".mp4"; - } - fullPath = game.romsPath + mediaPath; - printf("getPreviewVideo(%s)\n", fullPath.c_str()); - if (!ui->getIo()->exist(fullPath)) { - fullPath = ""; - } - } else { - // for non arcade game, search for a "screenscraper" game with same name - std::vector clones = romList->gameList->findGamesByName(game); - for (const auto &g: clones) { - mediaPath = g.getMedia("video").url; - fullPath = game.romsPath + mediaPath; - if (!ui->getIo()->exist(fullPath)) { - fullPath = ""; - } else { - break; - } - } + // now try parent image if rom is a clone + if (game.isClone()) { + Game parent = romList->gameList->findGameByPath(game.cloneOf); + path = parent.romsPath + parent.getMedia(mediaType).url; + printf("getPreview(%s)\n", path.c_str()); + if (ui->getIo()->exist(path)) { + return path; } } - return fullPath; + return {}; } void UIRomList::filterRomList() { diff --git a/ui/c2dui_ui_romlist.h b/ui/c2dui_ui_romlist.h index e8e6a6b2..da9ea5b4 100644 --- a/ui/c2dui_ui_romlist.h +++ b/ui/c2dui_ui_romlist.h @@ -12,6 +12,10 @@ namespace c2dui { class UIRomList : public SkinnedRectangle { public: + enum PreviewType { + Tex, + Vid + }; UIRomList(UiMain *ui, RomList *romList, const c2d::Vector2f &size); @@ -29,9 +33,7 @@ namespace c2dui { virtual RectangleShape *getBlur() { return blur; }; - virtual c2d::Texture *getPreviewTexture(const ss_api::Game &game); - - virtual std::string getPreviewVideo(const ss_api::Game &game); + virtual std::string getPreview(const ss_api::Game &game, PreviewType type); virtual void setVideoSnapDelay(int delay); diff --git a/ui/c2dui_ui_romlist_rominfo.cpp b/ui/c2dui_ui_romlist_rominfo.cpp index 6a7722ae..a3ed2470 100644 --- a/ui/c2dui_ui_romlist_rominfo.cpp +++ b/ui/c2dui_ui_romlist_rominfo.cpp @@ -91,7 +91,7 @@ void UIRomInfo::hideText(Text *text) { bool UIRomInfo::loadVideo(const Game &game) { #ifdef __MPV__ int res = -1; - std::string videoPath = uiRomList->getPreviewVideo(game); + std::string videoPath = uiRomList->getPreview(game, UIRomList::PreviewType::Vid); if (!videoPath.empty()) { res = mpv->load(videoPath, Mpv::LoadType::Replace, "loop=yes"); if (res == 0) { @@ -113,14 +113,11 @@ bool UIRomInfo::loadVideo(const Game &game) { } bool UIRomInfo::loadTexture(const Game &game) { - - auto *tex = game.path.empty() ? nullptr : (C2DTexture *) uiRomList->getPreviewTexture(game); + std::string path = game.path.empty() ? "" : uiRomList->getPreview(game, UIRomList::PreviewType::Tex); // set image - if (tex) { - if (texture) { - delete (texture); - } - texture = tex; + if (!path.empty()) { + delete (texture); + texture = new C2DTexture(path); texture->setOrigin(Origin::Center); texture->setPosition(Vector2f(previewBox->getSize().x / 2, previewBox->getSize().y / 2)); float tex_scaling = std::min( From bc548dcd2eaa540006200643a447dfd943478503 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Mon, 19 Sep 2022 14:13:08 +0200 Subject: [PATCH 10/70] 3ds: fix data and skin skins: add/fix big skin --- data/3ds/romfs/skins/big/buttons/0.png | Bin 0 -> 3788 bytes data/3ds/romfs/skins/big/buttons/1.png | Bin 0 -> 3780 bytes data/3ds/romfs/skins/big/buttons/10.png | Bin 0 -> 3306 bytes data/3ds/romfs/skins/big/buttons/100.png | Bin 0 -> 2082 bytes data/3ds/romfs/skins/big/buttons/104.png | Bin 0 -> 2808 bytes data/3ds/romfs/skins/big/buttons/105.png | Bin 0 -> 3066 bytes data/3ds/romfs/skins/big/buttons/11.png | Bin 0 -> 2418 bytes data/3ds/romfs/skins/big/buttons/12.png | Bin 0 -> 2379 bytes data/3ds/romfs/skins/big/buttons/13.png | Bin 0 -> 2408 bytes data/3ds/romfs/skins/big/buttons/14.png | Bin 0 -> 2397 bytes data/3ds/romfs/skins/big/buttons/2.png | Bin 0 -> 3736 bytes data/3ds/romfs/skins/big/buttons/3.png | Bin 0 -> 4011 bytes data/3ds/romfs/skins/big/buttons/4.png | Bin 0 -> 356 bytes data/3ds/romfs/skins/big/buttons/6.png | Bin 0 -> 764 bytes data/3ds/romfs/skins/big/buttons/7.png | Bin 0 -> 3006 bytes data/3ds/romfs/skins/big/buttons/8.png | Bin 0 -> 3314 bytes data/3ds/romfs/skins/big/buttons/9.png | Bin 0 -> 2799 bytes data/common/romfs/skins/big/buttons/0.png | Bin 0 -> 4548 bytes data/common/romfs/skins/big/buttons/1.png | Bin 0 -> 4250 bytes data/common/romfs/skins/big/buttons/10.png | Bin 0 -> 2799 bytes data/common/romfs/skins/big/buttons/100.png | Bin 0 -> 4929 bytes data/common/romfs/skins/big/buttons/104.png | Bin 0 -> 2862 bytes data/common/romfs/skins/big/buttons/105.png | Bin 0 -> 3066 bytes data/common/romfs/skins/big/buttons/11.png | Bin 0 -> 5157 bytes data/common/romfs/skins/big/buttons/12.png | Bin 0 -> 5248 bytes data/common/romfs/skins/big/buttons/13.png | Bin 0 -> 5201 bytes data/common/romfs/skins/big/buttons/14.png | Bin 0 -> 5173 bytes data/common/romfs/skins/big/buttons/2.png | Bin 0 -> 4575 bytes data/common/romfs/skins/big/buttons/3.png | Bin 0 -> 4346 bytes data/common/romfs/skins/big/buttons/4.png | Bin 0 -> 3144 bytes data/common/romfs/skins/big/buttons/6.png | Bin 0 -> 3022 bytes data/common/romfs/skins/big/buttons/7.png | Bin 0 -> 2980 bytes data/common/romfs/skins/big/buttons/8.png | Bin 0 -> 3311 bytes data/common/romfs/skins/big/buttons/9.png | Bin 0 -> 3007 bytes .../romfs/skins/big/config.cfg | 54 ++++------- .../romfs/skins/big/default.ttf | Bin .../romfs/skins/big/no_preview.png | Bin data/ps4/romfs/skins/big/buttons/0.png | Bin 0 -> 3839 bytes data/ps4/romfs/skins/big/buttons/1.png | Bin 0 -> 4559 bytes data/ps4/romfs/skins/big/buttons/10.png | Bin 0 -> 2685 bytes data/ps4/romfs/skins/big/buttons/100.png | Bin 0 -> 3474 bytes data/ps4/romfs/skins/big/buttons/11.png | Bin 0 -> 3655 bytes data/ps4/romfs/skins/big/buttons/12.png | Bin 0 -> 3618 bytes data/ps4/romfs/skins/big/buttons/13.png | Bin 0 -> 3641 bytes data/ps4/romfs/skins/big/buttons/14.png | Bin 0 -> 3706 bytes data/ps4/romfs/skins/big/buttons/15.png | Bin 0 -> 2649 bytes data/ps4/romfs/skins/big/buttons/16.png | Bin 0 -> 2963 bytes data/ps4/romfs/skins/big/buttons/2.png | Bin 0 -> 3646 bytes data/ps4/romfs/skins/big/buttons/3.png | Bin 0 -> 4082 bytes data/ps4/romfs/skins/big/buttons/4.png | Bin 0 -> 3171 bytes data/ps4/romfs/skins/big/buttons/5.png | Bin 0 -> 3073 bytes data/ps4/romfs/skins/big/buttons/6.png | Bin 0 -> 2560 bytes data/ps4/romfs/skins/big/buttons/7.png | Bin 0 -> 3006 bytes data/ps4/romfs/skins/big/buttons/8.png | Bin 0 -> 3314 bytes data/ps4/romfs/skins/big/buttons/9.png | Bin 0 -> 2750 bytes data/switch/romfs/skins/big/buttons/0.png | Bin 0 -> 3788 bytes data/switch/romfs/skins/big/buttons/1.png | Bin 0 -> 3780 bytes data/switch/romfs/skins/big/buttons/10.png | Bin 0 -> 3306 bytes data/switch/romfs/skins/big/buttons/100.png | Bin 0 -> 2082 bytes data/switch/romfs/skins/big/buttons/104.png | Bin 0 -> 2808 bytes data/switch/romfs/skins/big/buttons/105.png | Bin 0 -> 3066 bytes data/switch/romfs/skins/big/buttons/11.png | Bin 0 -> 2418 bytes data/switch/romfs/skins/big/buttons/12.png | Bin 0 -> 2379 bytes data/switch/romfs/skins/big/buttons/13.png | Bin 0 -> 2408 bytes data/switch/romfs/skins/big/buttons/14.png | Bin 0 -> 2397 bytes data/switch/romfs/skins/big/buttons/2.png | Bin 0 -> 3736 bytes data/switch/romfs/skins/big/buttons/3.png | Bin 0 -> 4011 bytes data/switch/romfs/skins/big/buttons/4.png | Bin 0 -> 356 bytes data/switch/romfs/skins/big/buttons/6.png | Bin 0 -> 764 bytes data/switch/romfs/skins/big/buttons/7.png | Bin 0 -> 3006 bytes data/switch/romfs/skins/big/buttons/8.png | Bin 0 -> 3314 bytes data/switch/romfs/skins/big/buttons/9.png | Bin 0 -> 2799 bytes data/vita/romfs/skins/big/buttons/0.png | Bin 0 -> 2443 bytes data/vita/romfs/skins/big/buttons/1.png | Bin 0 -> 2611 bytes data/vita/romfs/skins/big/buttons/10.png | Bin 0 -> 1732 bytes data/vita/romfs/skins/big/buttons/100.png | Bin 0 -> 10711 bytes data/vita/romfs/skins/big/buttons/11.png | Bin 0 -> 2160 bytes data/vita/romfs/skins/big/buttons/12.png | Bin 0 -> 2163 bytes data/vita/romfs/skins/big/buttons/13.png | Bin 0 -> 2167 bytes data/vita/romfs/skins/big/buttons/14.png | Bin 0 -> 2152 bytes data/vita/romfs/skins/big/buttons/2.png | Bin 0 -> 2219 bytes data/vita/romfs/skins/big/buttons/3.png | Bin 0 -> 2444 bytes data/vita/romfs/skins/big/buttons/4.png | Bin 0 -> 2163 bytes data/vita/romfs/skins/big/buttons/6.png | Bin 0 -> 2152 bytes data/vita/romfs/skins/big/buttons/9.png | Bin 0 -> 1819 bytes libcross2d | 2 +- pfbneo/data/3ds/icon.png | Bin 2718 -> 16818 bytes pgen/data/3ds/icon.png | Bin 2718 -> 10895 bytes .../3ds/romfs/skins/big/config.cfg.override | 61 ------------- pgen/data/3ds/romfs/skins/big/title.png | Bin 2016 -> 0 bytes pnes/data/3ds/icon.png | Bin 2718 -> 9266 bytes .../romfs/skins/big/config.cfg.override | 0 .../{3ds => common}/romfs/skins/big/title.png | Bin psnes/data/3ds/icon.png | Bin 2718 -> 11539 bytes .../3ds/romfs/skins/big/config.cfg.override | 61 ------------- psnes/data/3ds/romfs/skins/big/title.png | Bin 3410 -> 0 bytes ui/c2dui_skin.cpp | 8 +- ui/c2dui_ui_help.cpp | 9 +- ui/c2dui_ui_listbox.cpp | 2 +- ui/c2dui_ui_main.cpp | 34 ++----- ui/c2dui_ui_progressbox.cpp | 85 +++++++++--------- ui/c2dui_ui_progressbox.h | 16 ++-- 102 files changed, 84 insertions(+), 248 deletions(-) create mode 100644 data/3ds/romfs/skins/big/buttons/0.png create mode 100644 data/3ds/romfs/skins/big/buttons/1.png create mode 100644 data/3ds/romfs/skins/big/buttons/10.png create mode 100644 data/3ds/romfs/skins/big/buttons/100.png create mode 100644 data/3ds/romfs/skins/big/buttons/104.png create mode 100644 data/3ds/romfs/skins/big/buttons/105.png create mode 100644 data/3ds/romfs/skins/big/buttons/11.png create mode 100644 data/3ds/romfs/skins/big/buttons/12.png create mode 100644 data/3ds/romfs/skins/big/buttons/13.png create mode 100644 data/3ds/romfs/skins/big/buttons/14.png create mode 100644 data/3ds/romfs/skins/big/buttons/2.png create mode 100644 data/3ds/romfs/skins/big/buttons/3.png create mode 100644 data/3ds/romfs/skins/big/buttons/4.png create mode 100644 data/3ds/romfs/skins/big/buttons/6.png create mode 100644 data/3ds/romfs/skins/big/buttons/7.png create mode 100644 data/3ds/romfs/skins/big/buttons/8.png create mode 100644 data/3ds/romfs/skins/big/buttons/9.png create mode 100644 data/common/romfs/skins/big/buttons/0.png create mode 100644 data/common/romfs/skins/big/buttons/1.png create mode 100644 data/common/romfs/skins/big/buttons/10.png create mode 100644 data/common/romfs/skins/big/buttons/100.png create mode 100644 data/common/romfs/skins/big/buttons/104.png create mode 100644 data/common/romfs/skins/big/buttons/105.png create mode 100644 data/common/romfs/skins/big/buttons/11.png create mode 100644 data/common/romfs/skins/big/buttons/12.png create mode 100644 data/common/romfs/skins/big/buttons/13.png create mode 100644 data/common/romfs/skins/big/buttons/14.png create mode 100644 data/common/romfs/skins/big/buttons/2.png create mode 100644 data/common/romfs/skins/big/buttons/3.png create mode 100644 data/common/romfs/skins/big/buttons/4.png create mode 100644 data/common/romfs/skins/big/buttons/6.png create mode 100644 data/common/romfs/skins/big/buttons/7.png create mode 100644 data/common/romfs/skins/big/buttons/8.png create mode 100644 data/common/romfs/skins/big/buttons/9.png rename data/{3ds => common}/romfs/skins/big/config.cfg (86%) rename data/{3ds => common}/romfs/skins/big/default.ttf (100%) rename data/{3ds => common}/romfs/skins/big/no_preview.png (100%) create mode 100644 data/ps4/romfs/skins/big/buttons/0.png create mode 100644 data/ps4/romfs/skins/big/buttons/1.png create mode 100644 data/ps4/romfs/skins/big/buttons/10.png create mode 100644 data/ps4/romfs/skins/big/buttons/100.png create mode 100644 data/ps4/romfs/skins/big/buttons/11.png create mode 100644 data/ps4/romfs/skins/big/buttons/12.png create mode 100644 data/ps4/romfs/skins/big/buttons/13.png create mode 100644 data/ps4/romfs/skins/big/buttons/14.png create mode 100644 data/ps4/romfs/skins/big/buttons/15.png create mode 100644 data/ps4/romfs/skins/big/buttons/16.png create mode 100644 data/ps4/romfs/skins/big/buttons/2.png create mode 100644 data/ps4/romfs/skins/big/buttons/3.png create mode 100644 data/ps4/romfs/skins/big/buttons/4.png create mode 100644 data/ps4/romfs/skins/big/buttons/5.png create mode 100644 data/ps4/romfs/skins/big/buttons/6.png create mode 100644 data/ps4/romfs/skins/big/buttons/7.png create mode 100644 data/ps4/romfs/skins/big/buttons/8.png create mode 100644 data/ps4/romfs/skins/big/buttons/9.png create mode 100644 data/switch/romfs/skins/big/buttons/0.png create mode 100644 data/switch/romfs/skins/big/buttons/1.png create mode 100644 data/switch/romfs/skins/big/buttons/10.png create mode 100644 data/switch/romfs/skins/big/buttons/100.png create mode 100644 data/switch/romfs/skins/big/buttons/104.png create mode 100644 data/switch/romfs/skins/big/buttons/105.png create mode 100644 data/switch/romfs/skins/big/buttons/11.png create mode 100644 data/switch/romfs/skins/big/buttons/12.png create mode 100644 data/switch/romfs/skins/big/buttons/13.png create mode 100644 data/switch/romfs/skins/big/buttons/14.png create mode 100644 data/switch/romfs/skins/big/buttons/2.png create mode 100644 data/switch/romfs/skins/big/buttons/3.png create mode 100644 data/switch/romfs/skins/big/buttons/4.png create mode 100644 data/switch/romfs/skins/big/buttons/6.png create mode 100644 data/switch/romfs/skins/big/buttons/7.png create mode 100644 data/switch/romfs/skins/big/buttons/8.png create mode 100644 data/switch/romfs/skins/big/buttons/9.png create mode 100644 data/vita/romfs/skins/big/buttons/0.png create mode 100644 data/vita/romfs/skins/big/buttons/1.png create mode 100644 data/vita/romfs/skins/big/buttons/10.png create mode 100644 data/vita/romfs/skins/big/buttons/100.png create mode 100644 data/vita/romfs/skins/big/buttons/11.png create mode 100644 data/vita/romfs/skins/big/buttons/12.png create mode 100644 data/vita/romfs/skins/big/buttons/13.png create mode 100644 data/vita/romfs/skins/big/buttons/14.png create mode 100644 data/vita/romfs/skins/big/buttons/2.png create mode 100644 data/vita/romfs/skins/big/buttons/3.png create mode 100644 data/vita/romfs/skins/big/buttons/4.png create mode 100644 data/vita/romfs/skins/big/buttons/6.png create mode 100644 data/vita/romfs/skins/big/buttons/9.png delete mode 100644 pgen/data/3ds/romfs/skins/big/config.cfg.override delete mode 100644 pgen/data/3ds/romfs/skins/big/title.png rename pnes/data/{3ds => common}/romfs/skins/big/config.cfg.override (100%) rename pnes/data/{3ds => common}/romfs/skins/big/title.png (100%) delete mode 100644 psnes/data/3ds/romfs/skins/big/config.cfg.override delete mode 100644 psnes/data/3ds/romfs/skins/big/title.png diff --git a/data/3ds/romfs/skins/big/buttons/0.png b/data/3ds/romfs/skins/big/buttons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7e74380c9ed07ec19189eddc3c2618c9f10019 GIT binary patch literal 3788 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/1.png b/data/3ds/romfs/skins/big/buttons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..df756ef0fe0b1a6a1c277b6106aaaa1b6db36201 GIT binary patch literal 3780 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/100.png b/data/3ds/romfs/skins/big/buttons/100.png new file mode 100644 index 0000000000000000000000000000000000000000..12f01eb3f52a3fd5ecfe5a6dda85aeb7f4562365 GIT binary patch literal 2082 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 D3j=lN literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/105.png b/data/3ds/romfs/skins/big/buttons/105.png new file mode 100644 index 0000000000000000000000000000000000000000..6aef3cb37574ecc2440454fc3881018c353ad933 GIT binary patch literal 3066 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 IM6N<$f|`2id;kCd literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/11.png b/data/3ds/romfs/skins/big/buttons/11.png new file mode 100644 index 0000000000000000000000000000000000000000..700a8ba7577f641049d71c37275e3b9e104cc1cf GIT binary patch literal 2418 zcmV-&361uNP) zO-LKv8pr=XB0G1jFfcY!UQU`T}V^x{uT<|zI}HWH@A0pm%f{VtGD2$ch$Hp zl-qY#uwX83tXNPN!fh6b)T9B;hlwUJlbLfDHIhswnvZiblXiX}IA>&5c&GIKEiU~Fs*%gf8~dc9EFrIa%5Vz-0tf+&jOQ4|H$ ze@jbC-0dzcEkSKpmgN9D#5W%)WyQIwAJWsUBFD2f8Lhg1t>v9K$m z#bUV@MC(E@Jp{LV2v1B8(SU^*pFe*F0NlTSzw5SHqq`uoEZ^8#Nt4q)2a#&wqzx8}An?~pc>n=z;9&&tqtmz#U*4EZ=e0+Rs zKBk9g(2jT9Bt|R87%_(QNrGqLCmR>T67oWw#h|an3IbQFg>Ie zLkRLK+HQpIg0PreY=@o?>XVa`GlUR7AtV5R$zp&jA^dt(goa)J)YQ}_!}9D=N<);= zz3<<@A2oBrt%6KUOgs`raRor2!@|{}_Z6vOe;90kXMhm$k`My7+Z~c+c_ooZ+_;wb z#(|;B<$5cMVu*1ee^mmaD27}v*V~&8YAA@y<$6m9dBMC`zc_@D7dMHbDTv$c{!K42 z?%cTppU-!_ZM9mN0D>UEZnraC38F@p zWxRRw2G5>7!}$0(Y&ILSylplca=9E%PEPRt{d=69ond&G*CQxExm-p*pVu7kP)c6{ zsGF9qtM$pr$r(WqqUv<3)ylQ-S}ZIqU~zE~_wL<;$K&ZJuV^%iFJHc3YikR;ySr=( z*d&=u2BlJ|E?rR+kGl6&C&*Q=DpYe2A#ggKZLb_`hvDI23=R%nZ;y?QVPRnbI>OP>5l&7{u)Dj9)6>)I{n>05nM{WJZ>XRs3X;iWU9V1- z<$$`^)l}PKu~_QFAcQb&->Yp63=GueeR_I|j~_oWu`xI}i2nY5c&Hzq=OifL}>-E+>3DxWL_4VQI-Mg5YnnE}nZfdDft1uO0baWJRb8{FP z8e*BP;jr87@cDf3csw{fJVYv$VwN`(L2Nb~d_Eu7e!USH8XCgGhYyiVCb7T2k3yl) zah^LNfPrQ&n$+N%jN4p=kyZ&C?@0ISssLJ0c%`?=g6uBKEfp;#<}Qi@Wk#C#=uGZ(E^ zT{jifB}sy!C^Z5!bAPy1s{8Z<0|OWt8DVY%0MhBS<^!X=P!y%<`l`Fc3xz^R>%jB# z^Ug}uBDq|Si_P=%^R9|fv8jbtUDtU?I-NeV*=!#OAy2E*i^U=oMd3E3P6(-+a!I99 z=BuV17@H?N+Yc^k$(huo$y6z3zjecnmKi(`|L#b5a9?<*x`f8f0 zTrS6~=~8<}qXleTBB+(98I|Ml_+OM#%@cSdNm5OF%d*0%^O7V z-K2Ot{<~hHbn6K!J-8C%_eT3~?6+QtvVtEkuQ%z845f7CCNY2}y1nsu{Ev~5k=J&+ z{VAn1KnU@$D&ZA=@cRlvt7HIZzG1mtD5X(CNGPArYX)&OO?6+=>GWATonD8=^7&42 zyWN{G&J$XDu~_V}o&_-HvJ8ePh`}%gF&L&G2E!D@VCep8jdpnO;K8knCz8n|wzs#t zR3ditq=$U{`jyEsMx-YNNu^RqBoYnxClU$nt3!CvlY#)i;o)Ih`;1P{3Q{N(5Q#+U z(j$=w^VNjiq-O;Ie#D9Dsd`D0dNy`c=xIU9<#LUe@O-kVTlBOb01ys`ki zhxIN_$MoblM9t42M1`M15FXF^=|#^sSw9=5AO^$mP1fb*CGz=v$IDg~MZx9eC8JXD zLw7+ar5W|x>(rkfs(#lMD~#}YBQ11qvM8k?by~4lbr2Hi1)hX8=f<@%3$#eKK9ZFy%m(LIJ#C=?1WD5YHwszwq6 z0N6Ir9Z)P5FLSxvzXt{eKnU>z=;vwgYKiB|cs%|GPdlw*m?lfj#KgoSUU`e6n2E(= k`@HfuF)=YQG0}tn1NSQWFE(xm*Z=?k07*qoM6N<$f&ny(4*&oF literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/12.png b/data/3ds/romfs/skins/big/buttons/12.png new file mode 100644 index 0000000000000000000000000000000000000000..37f6d5b11138b6c6bb6c89ce6bc473523215e6fb GIT binary patch literal 2379 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/13.png b/data/3ds/romfs/skins/big/buttons/13.png new file mode 100644 index 0000000000000000000000000000000000000000..8efd7a403545b86e491ef32ebef806f36d2dc5b2 GIT binary patch literal 2408 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 ag8UEvgmg}>CL)CZ0000 z%}*2E9>>3D`T{Ku_C*7<5X*ulU?L4^Ua&L?f=e8xvjW6E{9Pch8d$*ZM5o zC@$O)>D9!b(FD2x0~olbG&N#dI?$HB%()9Fm$uVV+A}>fIG+u}nVIwZb-r_6=A7Tm z0SpWb3=9nFgYb5s8cwJ4cuPym5X(Hbx3_0wvDgO7JXxYSK{`7-FAIV&P6)XUz@d_v zIHhz_mgVP>NaQ~%*{BOm3F7s7{{nEY$!7mvTU)!|WSbQ+@phnq$K!cM2>CY$)5D@D z`Xotu&B1mVnh?a}@mwQ>JmF=Z5HfV^*s=KL=H^FUKJ59z+W`RZcswhF5TDXMK@eav zvAJ*Z`8;GU`VrP**7?1v8@{#%O!2ZjN4c6MGinM{uXjMV!p z4~xU$fYoXR0JOBUFdN1F@#6=!x3>WRnM?-pc)aYG(hI)-uTomAe*pvtA&=j`e_u70 zxN4Q<@pzt@Or`*uD8^BR5HcbNLSSTM0VvvTl>K>GEEcr4w=>K8kc^LvjNDS%q1dQXO7AJ%L4qK_ZnvvCyj_~N zD2mMT7DW+~Bmn^W`}=YK{(XG=_D%8F{lCAkt&~=6|M&0TF*P-XSS+Sw;vRs1%IuaV zbai!|5(HtjG~H^o!r^Fc9GNJJa5~w>KgVJ*NRos*ckbZw<;zU-uEf))Pcb()x7WxQ z5Cp;Z_U+rE-d9j`y}$z(t&-TU8ex1*=02g}RL2cBD3 zW6;*t2B*_mcdRXM&YnFBtJR8=Cr_$oBauibKIa@nU01ZNtxdOLoH%i!DS;66mT-Mu z)do0q>J)Dms`A?jqV+H#)dew|%{X)BjM`>uroX?xuJax|cz{GA!PuK}R1?H(Hlwev z4_B^SK~GPQT4tKYt5>fuIy#Dpi3wGOQALpM?rvPVbP0aHztX#W+-M}+RFWi2OibX~ zwQG3!@+CvB{tr_@TrL+bUc89G!NI1yC&-JnwKY6^_z+jGUd6|cY+r3>B8bgq!|?Dh zE?l^P8#fRNg_z{YL=d;z&2!|GI|~a7`1I)$lf0M=+lE3R zL?RLN_V!kcxjl-AqKNVFaooCfi`fmyY#cq8%VBA0387F3eSLjLqGwf&v9U4Sy?Ynk z-Q7&{Wj?WyN~I7C2C=%jih+RvCa*NJWPX0Wp`O;cbLa5r(WAPbXAVNOnWjV{fti^Z zxLhs_4i2hirfGP+UOaj71n1A6SJjT{!Pe1e6w}kwYMZHN=UPQ!*4g1_4DUX z-Y!(-w-aQ3exA1rRjEr5rEg8?h4uCIrj(LgE?3uiWo?Kc2nR+o#N%;nZEZ1~q!I)H zR;v|+5VW?osyc=H`SWLtj*b>ZF|wY@t?{NUyVf-|>e*}-vMd(~kj-XmcCJ=Zsnp)K z8WAT2-n@B()2C0XlD87cWD<*ui#6TAWk;k^sesafo12@Bdv*vUNm9k;=H@15XJ?z* zmb`fJLNR?eOt*-#5)zBWHf%QA*_n46nZ3SFI?nwl#6!gi%!`W(RZ(!@+A zqk4nh+S*z)E+k13v#P5QwFvA85)1~hxVTt!jEd3krFNbx`KVZ_g~Q?3lv2eL)Fz!y z7qw3;Z-D)IWwY5bF`CHp>FH_3ub)HrUjS4&u1Om4!?X24D?~3vm zz~Ljl3`&VpN*`Af1E`_f8xDv6bUK}X+wJ!2l+uw(U!ZP)A*iLpyJ1&4xmuQJxO` zc4Jvu#}Gtg7=maFLlBK&2%<4``Ms>+;o$>=Cw~3T}~-pEs|DZUsrDQdn78DNA2jSt*)%)El}L1lVaO z_7Bx_9#Ut5t_8{Eaz&+NWo4!AXb-KRYe4{DX=w?`WD?0_5=%=zY*E~d_l+LD7sq5)-7%i^Lf=oi9{k*S1B+sFfcGM&>Q~)%q#wXn*ey( P00000NkvXXu0mjfbmokO literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/2.png b/data/3ds/romfs/skins/big/buttons/2.png new file mode 100644 index 0000000000000000000000000000000000000000..46ac2160d8df6dfe7a3283935cf3daca3a8cbed8 GIT binary patch literal 3736 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/3.png b/data/3ds/romfs/skins/big/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf86ba773378da3d7cfc69d2bc9ba155058929b GIT binary patch literal 4011 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 AQ~&?~ literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/4.png b/data/3ds/romfs/skins/big/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..d32608e165c263de3d42c0ca69d627a528c61c17 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^DImaSW-L^Y+%p+(Ql`4G(u) z2$eKm$~(lNDWRdf!O@6mb;{%=Ul=Yt;yAh1nCa8gMK%w9|N5TubNbym!AwA75a7Z6 zr;`?bt@^tqMlZhj-0nG_m%Y=C-K)6ti>2@7e-$=$XJqxbE|uPmKKFBP%C|nA#};{h z%P)VQv#@=V_R~4#s>S7LTO)Mhp7DvYdTOradcI?U2}k{tjn@{vEsM^+8v5$D-Q4rf zsb(bvqLcfJ@2R$xeo4=;OtC=VC{UbM1U*q4FQ`v5+ z2I}3E=WAcT)7jPj)Y2(Ix3`_YY?ABsJU{ZXiL)mU!fQa*gSx*AcR~y|x+X3w21$6j L`njxgN@xNAN;Z(U literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/6.png b/data/3ds/romfs/skins/big/buttons/6.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b0dc48740bd29c729e36b04ec0b4cc176ca570 GIT binary patch literal 764 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 u literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/9.png b/data/3ds/romfs/skins/big/buttons/9.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfa3b92d2648caa02d1ad8cc0f90c76baf877fe GIT binary patch literal 2799 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 literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/0.png b/data/common/romfs/skins/big/buttons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..cd716d1adee46c185b041b37ab69c9ed0f57d208 GIT binary patch literal 4548 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 literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/104.png b/data/common/romfs/skins/big/buttons/104.png new file mode 100644 index 0000000000000000000000000000000000000000..84fc6f8947be4ceeed16fe4c90b305160334924f GIT binary patch literal 2862 zcmV+}3(@q6P);Km_7^P4F`5JW3pP?NT%rNr zRzzA>f?KdXC+8B$m)Nl5f-S9RH6zk07; zRlNdSxNzaZg$oxhT)1%I!o?2_VpYY_XmlFDPgd2>8-$QtB9Zu`@9p4O+1%XR(8a~Y zB7g+|V?67&5jg-E02x9^Dw$0FZs)_f5fX_+o&k7;Z%8W);sn4tA!Nl4a<~u@i9~+G zl~#Q3$N^YNrBbU_J-{>}kx1lU02Vp4JR*H2SkF%PGD4fj|JG zqoZaXVHC*6Dc!I+sX{lOyO22 zc4KI02p*58?Ov@`>-ghX4MGS+QH0m)y_N-oK?s7tWKR@Qe*N`VEt|3gfO+7^q#@97 zb(J@U_NKbMsdhk?Wz_3+TwGkV$<26v!C(;c^YdD_#-h>a-&pJAMu-CXjbnKOt%5Ae zZPx<>1E%Vmot@R}`ea#Fd7nnXN{BA1)oR-{A(ln>9f4RZrX^-3gw=+qTwVpWTCMH6 z8zH;9yEr>L0{{#U4`X!Nka%BIod$Bz9Ef9qs{dtgs2Q^ub7&eYP;^#)eQ~~ z>b1M=nl;8nLuX7A0nl?Og^7@4GWmNX5^0m2pPxgLBm{#&)M~Xhm(mJC4h|052%+!W z31tk%17^Ie94%0^q*puQ;!kiTMCk&YY)709OEkmo4^!3=W+R=J^nX zxam*`tsS(Ta|*akP|>JXt8L+JBa=aAXJ^-gy;kVOw|W7srB1bT+&g!rUv}CT{!ug} zg{zp&H424-X0T1qjy!nq0QGvk<3qG!Q?2FnVppA>@3a?2fn{BmmZzmPmCL%=px1IV zA>CdA4#=<+vdkZ)J*|F&UU4t;yK<2QR@#qDCZnkx0M_5Vd)NDp(k8fjS@iz&euB0i zr>Cb}>dj`eh{xla_Xr`THh!9&4^fRn6hfS^(xkNwjYfluhHPzZY3&D5@XGAAXv-$3 z=NF^zCZtlSFxR!Qv4KP)(J70= z2_fXE8QY!)3dW zaROk`%6yA}IYLxp5M_Z}zl=Jq9gRlAuy>Wu=XFCN0CIvLMC{1xYvz}W&;n(0s$WK( z)()e|$|Om`^768t0ndn{IAd3mWhO%A=H@h$Vd+gy+0kWryeYDjSc-^;Yh4 z_oBLiTLQDzsarbIYc(NC`lVJJ9v&Ks?55Lcz0vmxA!NZ$G641jW@EIhQ#x3y3GsTp zZSx+DM#Iov6-knG?FJ#_sa2j-CvZ#8)SCFR6;_ks@px3)Q7je>*^Un35Ys_IRavv8=(NjgwL$m!d~MfC_R(%Al}gy$+|;_oB}m8$Rzg%Ruc9Her(-32KA&oec7K20 zP}z-*4NW;AWYKQB(F*PZ2AUA7G(@YbIyg8mya?|7`}bPn^<*;nU-PYF2RB0OUP4ND zRgxqbc5}D3wlw8}AoTrE0aij%v_LO`nH5{22L=XIUX{_VN|Gc!+p*$=6Lwe$QLXG& z7L3td25sccLTdoHzrSyIHAy<1*7U4IQS7^R0PG3OQnWj}v$Jy@Rc%dRrVQHX6s;`q zcswc_RjE{Zn(s&?5?bP=ej4&tFlk70z@*X=WyDMWK=icUzuzmg>_(wbFzm(U^Lah(aD?qpU?%yDYW>mC(Gk+= zH0t%b>P;ksAP@+^=kpo1D})euJRSrB0hQe-7K?^mTxG?GmhBJ(VaZS>Hi6mV=5o1% zv9YlTs4z-CpU3R%EWUpI3cug43Z)2w08td%<}Q>qxC#NHD8lFS!Rz%x6h)P0mCNOx zCZ68Bd82n)&PpU z{}iJ1y0=QDg3q5n8*bz3>MA~b_@H&`L=?qe_V)H1wH?i8Z$u74$S;XR;(w+ZWC2VM62`~J z-^;SR0H93`3WWj+g#zx~yNAomOB^2`qg*b-&32lO1vsCo#v443UhR0mWFQbgEEYp77PI8UwoE32L?Y4cs5?iK0dPK?xTz^i z=#uw*dU_fY6BC%6oMhf4DoGNyx3`fQ7V;sNhf&HTzlKsu)0xLlAW@7tlkp(e@1Rf5QGIMjl{db(sZHCEep!|>UJLM zodNL5>Q#nTz?S^2O^sQ=6*0O?P)#C(t8>q7Ka`#)Y)`1$)S9QbTKO1(In7ze)&7k2 zek|Fs0*=UV9F0bQR{ob|c?O+H$`L{`-wOdQT)1%I!i5VLF6_Yn0de;iHsakgR{#J2 M07*qoM6N<$f(7bmng9R* literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/105.png b/data/common/romfs/skins/big/buttons/105.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea785c7d5cf2fd51de9a8790c401d93f0de67e9 GIT binary patch literal 3066 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 IM6N<$f`1Opv;Y7A literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/11.png b/data/common/romfs/skins/big/buttons/11.png new file mode 100644 index 0000000000000000000000000000000000000000..8939669d6cc99301cd70e851edd2badb618d8e2a GIT binary patch literal 5157 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 literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/14.png b/data/common/romfs/skins/big/buttons/14.png new file mode 100644 index 0000000000000000000000000000000000000000..d099719f1917f1fa2508364dfd7042bd4bcc1a5e GIT binary patch literal 5173 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 JPDHLkV1gh9uC)LF literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/3.png b/data/common/romfs/skins/big/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..e32b04a323a5d2bb031cd9174b9655ec6f7d876e GIT binary patch literal 4346 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 literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/4.png b/data/common/romfs/skins/big/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..900705b172733f225e5fd463e3b5d91443a68c5f GIT binary patch literal 3144 zcmaJ^`9IX_7oW1#WXU8q+i*3mFNKmr(ZV+X+c z|M#5Y1$5W~84CjO3t@~6u~7vZ1-&>4vpptbX1er#Q-z)1i>xd;c?m?@ z{`92$tDUKImu=+m;-x+Ng!npQbf{{ay*^5>9Jjt;Vea(BPH$J&ecYuyifHoOmNbHFv2vmS*Yvk&;6RYZz_0zq z4BC-@u!W3wEvFXL$s1;@VjUl^fAI6?d>G2NVM0|^bq)5hv?2~i!hj8Y~3^Il$Fxp{f7R#)MYf=ogx;ZF>8_!Rd^S9kYHxq@0A z!o_}30@f%BT`>ZG-`>sGe5Thx}v7e&DHlZ_$Kr0eEzfiq<#|J1-28T$)o z3bZ5sx#nH8a<$Q2qI#VyS7?LG+3ZP^*xzj5dhtus!!}M6cJ}E9P96*sv4f)YKd9|I z0GF1QR_<x#c^5b*v6E{OS1f zu61ykpEb|33tcLnEya)rGofa8?;@@KaP08&czFAAn*Q;jqg<{X{GR0#Wrauj^LT;- zuG4|TmJ%1w=h{x!*_>{T$So*v#Oig0JJ%EI1_dn^f?R# zNZ87N6#f<+hI#Zc2(^qC8)JA@Z%SY8N0uWt73-#u6%(PY9|b6An0=D2aAU#~&Il zAa2sdEpMB6*H=#OwB+T9A=3JmNi(6;1&eYBaOKXA*gh~9oUT0I3z;11!eJuxY%w<9At z>R+qWjT~hNjQCUFz-Mz?@%bq$^S3Y4bjlr0|A_5OVB)M_Xpn~2%6g>m63*MslljF8 znGUoia#DL+8{8)ch^k5flbzYOyvOEp&+=3@yUv&R%7C3+DTgqd7>h=vTELLuCn~__ zO}-7%6#j%^9B9e`9tu;ChfQPWl0Bfgxw$eN(Nq)7Z;B$|Na?)*N4Q9))gSfs^$E-j zY5nFv=f@%HdA{|o=B~4k&rk0VizdF3`Id@2%2VhsRCC_<_g{DSxYi)1MG=ULi`$OU z89|5qe(Iza5_tkdwS8)e!{PdOoff{KoSmJwx98EL$Gm)eYFb*R1RotJ^Mn2|fAQf$ z+`$^PQYXQHsD7Q<)3ZHrW#pyUTfZ!aHD@}x;GJc>2!h9OM4qrBjOLT+3ZMQVqo5CQ!&-eCX$g0F!ly^L`xQ6IHNF%j~&kBcAX`P&!!W_=dLJ2=NkTbFK zVY%Si>gub3fz)eW`bWFxufeN~g&?{1w0H8nM9d|&#GCmRr-XKL`8gO-u;k&)zkUdq4O6kaxAcbUUT z8yh!g)R(3^VxH*8+c`VR+Z0q#YQ?;RgzSfAW~?{+uQgoD4?|h?(CX{eAdI%QO1kng z?v|MuU##9!3#rbdy(xjye+2~ayzge9M z^9cI5Z&@S8MvL;c)GWh1DmGS9a(vo59f)ChIRFBMLVIYA)O-Zp-n)VY;ZB$iY;XfD z7kvXL$1f_%l}w0>lcHhq!$5ac(xJNG=BYG)_0z@EmZqkr6*}$h?bw!y#v@PVBm)_P z*P+cGeeCehF9)I7{nvV(-mcwV&wsfCUAoiWJGU;uXl+eNOA~OCa{Ak}v}V~^sC;GK z#5&fe!oXAcx7NxLwpIwFdk5%&CxhVC@ZMGF z0Ty9mHPO_hwSG*YPyntBTE{b)%q$yf${_mLStZfFh=w}ilN$jO8+U>Q>pD6F3}U)w zr>07kwRc`%&@~n90;*WKS&(SK9g69nR z1qFc?1kV5*!IZJz3-NgzWrHJ^GkhraTw zuW;r~IBHCRbU-0wKEL`4tuCF{*`mLeZ``<%shDMM_Zo%Yfu&1olYn_DX#?4DwMbI> zc{7;k*B0lInwt0jVy0)+!5^B#Aj!tE#uuCbSh#a00FuI9xrCc(Gm$L1m2*=TcM0#| zoXp~i)`fxdJWzR7**u6=H=0wcsQb0*UVqsG?@b?YQa7vvV7ypw3mvGCTFmg820$O- zkdwCTV-^bxNx6rJ_wkXoDL@%kyN&Ez=5RQRi9&kC(FZ_&0|nY>v2!e~tmeF(0HTph zew<}%()bp~vE6z)6dB+x3cl|`u!cS9yBZTC0g$n1DoX0?gGWI#9NTb#fl2PU3n-g$?WkN;O8*GaTS-)5__Am!?M{#4l)Ix0IgV;*BH5}! zwiu}tvm;y*Y_NNOt)cR+PSiGW$6OJ69>h(Ki4946H&XMqyj(8WU~*b5(&=ovX`HAJY4;Ddo z4^2JG3~&2FK#+}Ovx>1!GH1I+=`Li93YfI5;xxfVaH2anGL%Q3ZfJS7ge6R(nBR2( z2xC1gg(PTL3(cl=$>|g@>2m^aq)6w{qT4(Xhu?0s2t|?=BD!V38foa zQ_rqkbbyQ0b#|u9+rkAhfJFn>`NQ<9$Y|A=J$Lbm1mn_==bNYExIu2p=S+lwgaKe< zZF^U~f0~>$dS*xL^>+}sUEMPrNeieI$JhI(+FZ)*p-dtUrhv2N}4iR@(rN!Qr7!q>;s| z^M+@CjhVak6Wr095J7_p#mj1H&+z_jPUe3+I(6R&kbLDRv6YZCF^l{n2Nyl2Mp8FN z;UCk}w!Vp!bA*1w`&8BRwZ>6z4GrRJwA))KvOPK6|#ccvIBz>_(v7aDM zXC=g((EqjnS4_R@u0^&+%Ght|UE!XCzN)8w9x03d-+dd{#l88Dxjd)ixsz6(kboZo N2xDSnTw~-*`VZNt{51do literal 0 HcmV?d00001 diff --git a/data/common/romfs/skins/big/buttons/6.png b/data/common/romfs/skins/big/buttons/6.png new file mode 100644 index 0000000000000000000000000000000000000000..7a10fcdbc0a5ee4e50cf0ea19e9bf2c10010892b GIT binary patch literal 3022 zcmZ`*c|6nqAD<4^8j>Sw}Gt98q9EC9DTaLzxkX)Gzxv55C zjzpBqQQzgrnM7aV_xV14e}5m3*ZcMQ=lyuU-ml~Ne7%xwZLCBghan&kNECy%!~)jq z-vbr~bnurc#l3<>13zzy&15@h>k(yiI6!F6SddulK zRA}5Wfw8i6JtmvDPg`4io01_7%QmN-nP6)1@^&%JJi%=;${-R)D=O68eX5QtMe$A8 zptbTiTGvEg9)0ml*zCIOxAKmTj-3zb4WxvPt!*L9eYQ}&W00I^U-Jk5N55A(kEYjp zm0eUa?%xr8c@;F;^Zw`BT7G4vIH~RktTVr@tu41~8yjz~Byg5GMVeDWc+B9vWLJm6ers0KBJLWBRz+0q=5+ zO7(&E#B%J^6uAV!GmiaRI1a1 z@mWeiZLPFTv7`*6C`Z!75uoU zXs^z-R{MTwT7nbLL6N7Y+iViC2xH?L%%99IE*j21 z4{d;v8(^v!&CO#rnlg;NfH)r4Fu%=>TU;a&0|PZeuCnoF28TP+k6q5FFCd1|lS{i9 zg_>z7lD~fndT?-X_XFO!cFg^Fz^9j9cA|r@t?x>!B6!9k05KZ3~1 zD;c_G4Ti`4!}gOBQYg7+FK4|qzCY>xM?)dU9z$KtiE+WiFj#>S~#U6{aOxxn~* z^FPr$AOl81blXmvwHAZT)>cka#k}>>b1;tf^zf2sY-~)5wmQL8rr8Zc5+V0gldsQgV=n^&*QF2y{SIE_RqKD*W7q2!G5Q!P7xJU~DFoGMm4L}&)mDPFbv7IL}#7k?{Re@nae?ruo*=ADNbqYL3sQBijy5t?kd z%XG_rOMAv>srgpjc;v->#aN9$%Up2~MBO7Ya@1gHb-I6Lwcqsn7r8{C&X7r@m|Nvl z-Tngj@EQ@wCt_CYwuSDjaQS32$~Ig9Ywnu#B8({-sB#ay$ZztY>ZEsFClL1b_V&)q z&kt3s51Auj>OZWMC8)*D@>=;L9v#~aeTh(L(>=q6%~~O=Ok>3)897L)fM9dmi+eJ=2}w2!fKzHUvScr zp@fI;f`bv+)|x>p)js_Ppu!=)=091OxR}5g=D8+O=YL8crT>&bp->TnNjbD=KfMD)(qddRmPIc{X`8G6dqN;ip+DkmsV#gym0lSrGoz~G&2`ZG3r z7rZ8eaY$!)i@1i34tZ)b)E$h3rRc?)2V^su$or8)6`mA|eS`MCTF0U4?-Z2l&Moy@p5-qc43!EMg)|izh7i1l1N4Sqe00>=wXlI|%*NN%)WEitzE3(? zI|c>mG&VI!$0cyx|3n~EU# zPbC0=sy)|A`=j`ShPsgv=4y8VyaqN?sTSw8I@Pwv0!N>4j8eY4El{V zMTi?28U5=U=$3b*qYyi(duY`RN^MR#)z}7lX@b7)%1!h*qwLr|W&`#iN)Ou=kqb+9VOn7)WNGdS{2z@G; zY5V5gJKNsv*15W^JEz7GkJO@C+zPI+Uu0$s=jmnl2E1|`W?*lHMM*sIvrtdN{ckGjuc6`lbB zjE^q|nVKN5Kb^+wwE$OkoK-waK?Bnbt=={0>{u=>cKfR>w>3S9JM~UOCENNS3s(SF zJ^=Quo)bHht=aBh+gBK@dU1*sgx;BS((*>meL=FPOeW=rv) z0QcmKku!f7@92O=K7;`Dpk{NSN{f-3tKhL>dq))`I<4G}NG<&urk8E0C8J{f;r;uA zBz|MjrAXHU@iE`K+4iUVS1;$29j1_C)z#JQPwoT+OX$>5s^ z@NP|oZ?Z60Drlows!u@PSR1*fi$s=CZQpWITUtzj1`UQq%=IOCRpXvjR!Sb1IP0FY z30ykzs31odl>)NQ{|l}97VxzxA$u{)yOlmp$;2 z&+qv4%h02W*=HK)=eO?^Y3$t%y#j>9pEO){E$kl}`0TXE?~X&)WE-q@`99?4o@Xw6 zdTu9LND7 zT+8{nb48w`W?` zO>)~t7RUdM4}t_K5)eq2T@{sCajLSjbc1M_oqYoQdm-A^&LdbtPpYvhB7;7=ceq;RjjWO0*_kG=KIEqq=!3z$elw$Da4x*G| z6vYyvlwuUk0-}^+tco0>lwz!!6j4es)wg>pIQGjiVvHRF0HxF%jYeyk#41z} zUDsQJAnX%D_WVtI{^xFy*X03YEEEgCF=Oo5b=~99X!Neg>v9*w7vUu#F#^W(4r2v4-%S!+Nr4-}wc-hmNjIrMN z`T0MWJ;73f7>4nR5OS2K!&MXos;Y($w%Kf=Uav!vq-8F>GA=GI0NjdZSr#nIT0|(* zah#XS^fwC$;@65^R^Ol~3YyI(wzs#jy}g}!PC*bL2m%Np;s3#BQ4|*`UM?78@H}tk zv*&qJ|0i*AaecmTxULJ&^WeHJT-Qz9$F^+@heKRkTwpjH&O24F-|zpB_qw?SnJ0#>>*#j7 zs8*{p#{>^P5aK>VDGkM8jLm#++cr*5Ptou9lMc@iYLAduK%p(wnQaU5fU@*Y%zyF?8t8z78xdiESI)5Q%&OU$se5PrVBx%Y@ zdI;Ry+=P}|fMr>D|Nebk6q8cAHyjQx($1IJkQ;{a3NbOBJ$p7KhAhiyHk*mf)|XDT zTE*7Z7HYLxxUF8V;Cy07X$|I&lD)OeW!HS(d|2{Y!)p0#OuEsZ^#~gvn$w(~-AYt(iVm6vb}Z z`BR@-#7hg{*0M@sJRXPc2;jD+$g&JYQ6S4QL{Xf1d+rN?0For3QmKSOMDJ%ZnZUBF z#Nz|EP~?26Zl=^mpAgcG{-5SovMdXe$pp1pZR*X5H)D*k&{PaY$I)%;f)EmV38G$u zG+fukcsz#VICJ-@*X!}I$v%L&zOGb37-QW<-fYKl;5ZIMQAD*`O*DbiZaC`F2n6CO zR`h!FK4;;19vsKPWHLz=B4A#tGLNhpVlH$xAJ=t5hny_Sp#>((a_VuL*zZK$CzHu! zX3UYrJh#g{vTBGKts&8VA}>L$2?+WVLP#i7;NMy&!9#alH!QE`d8y9EJjDB!td~4X zkmINzgTVll(mRbeqHj!8sAyjkb-VC12%---a2^Jqi|WJTzAex5-lpxJd8cu=$yZ-} zg`J(9#x5?qtTe!_QxN8%=IPlBCv*W!CXdMhGD!QgdF4v9qo3zsdFk>tWuDqaYPb~u{Vsd-ltEWe!lB9x%9w(L4Nk* zwq64`nAe<{rU}ck(Cv0N)&QWC!Zgi!5hMU^J8MG78^>{8^Nf_|`b7Np@<#wa`jILJ zjIoz-ae^ED=9_PLUY;8nV)Q)Ed&8qPBvIHa>YI7L0{B7Gv|U-2dx%U2_xt@^k&UZn zFc>6>v9PtYEGu!bjz*(*l+u01*qi9~Jni$UiI>Umr1w`L2CyPQfZOKGb=?DhpakI7 zoj({1R#k*d27|%Wn8J5=94u+c1n*{(=?mg6!_5F1Y}(^qk3oAN{W3){9*@h1U?nFkW>! zoxcP@=%D~HRskX8u+!=MMj%_ zh+!Bn{E(sj_;>ed;Z9On2_gHEB)v5Z<3$nIy000_|20YKh_4V~s6g(kBBZRy$4CCO_r%(S`sz7t#D#$!BYPDLpY&g#%mo)zT z^UpgSzbHY5qU-BxTwh;LeJ2P)&oB(|6op%prR#c&5ONgVMhHQp(U@ApeP5~7YG^bX zGtC$wA{ zG0Z2vFlL#yy(sdm5R)WnX5C=?-tPhzLHv-Puyznaa>w?L$77tFoUBzC+qUuk{rlWY z_NvwDRMSNW(c10ycRb2c$Vfdc3sBN`r>CblJ3GV9&JJ{4Us<5GZQD3IJ43(UpIMw4 zWHp+HD2j!=L@N&+6h#rWT5ZN+aa|XtX~Hy3=(>)2z0N&Q8@LT*7z_rmEGso&deP;~ zyx<}TrF0a1o3h@VTCE1p^X4`Y!{HFa;Si^%r%)6Hx~@Z#Bs7~%D2kH11_cQ(FE1}a zDaCL&%+)N_YPHNXQ}KJGlyaGW=QeC^x7)*LKT@yPGjGaq99Wih=cUKI2x@PZWfv|6o9F@lkMl=!{h z1#UG&)3m3uESu47q9|f(Yb$qBfMC&n@VBU%6C}q8a$V(p89dL!=g*&K3;@S*y1XLb zxxJRQZC|LWil{@8F$TwRa;Iww5@uE^6;!KLR4SD)6HoB{q9RF>1VIp>C<-c-3RG2v zs;XgDpG97ltE;OSF&Ja72ZI5(NOke((o|mI{p%k!r;NEbL$K#*t z^?Dbv$tcHhLJKFFEO}E2tiY?QtEmKS5x9#16!>!$olfT;01|yX(X4EhN@eYdX97IW z!(=iEv%{t2KUp|qbzTa6O_LVt%oM;M5i5$amR!F<5}KQv8#s=Wm4v47g*z*0Hw?pg zAqc_|a!ln09c_?bi?=|51xG1`=XrVEAExJdhea)8i?Y&&+;_koF8V7wLF%Tg1ZeXJ zOy~tIG}HeHq$A!x+LFfFde$Ptg6_z%=XpoGr)KlAc2h^wv|UjY_tq@VvFCY5tN4wn zEY>ba9Di1f?=e@RJ6Nl8h` a1LA)xs0;S4nBmX>0000 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 $;c1~y2r*O!C%U;cCxfat7cN` zef+`RA%@;LyqvR-Hn!>7C8N5=Tb_EJEmx&W@eP+7&-6EA9T-AWtk)w; zlr@HZS3&j{C(7sF>ipT?yx;NTy~)Q%53J`j$*}^6;Kat)qoW@-7Dk>dWuP-wyuR7( zm#zQFcMeY-A8NBjmg^W-eBD^MxVyd5kjcpR={CR1=1hi&86M`v)M*DnOd#C|zZ|8V z{(d0@0`X<&M9EbmQP#4{>fqR4t%ZDV zN3A@^29B^f&(P2i>*d94U+)y1o3!M;oa3aL3g+_r5pkB@5-WWrDk4wX(=fHkm|Fi@ z4==AX^f_X$iv-Gsl<^$=ah&Lw(aeqIWswg2+r^p-PRC3pim24y-QAZ~A{KGGJnOGp zpFa6jbroxvLZ+ssPAark;|P0eYxTO}fz9sM!_T~9l7&5JFHXGIOnEGJbE9^CHZK!DX^&m&2l?<^R)@VhJYLMkCjz z!uijF0+MF>^_n-{*`!4I5wddQCP3B_x~EX7$KZ zPuMm`#n!ph3x=&*G23OwB|(U!Ai3jaFW3XVr#%#0+h_WlZoD;(-)VYletY6%`uv^s zR0jcPnFVd!BNAU3Nc}S8hG(nlwmqrJacLD5>NYt>Ul!YRuauunT$E*fJk^h2Z6pSN zYV@BrYXbQU6fDM%dDAvzLG!$+Y2VkSw`K=s&Z1A`YvcDdMm8+QW+Sgv=~9>3M={#N zeg;?%4=at_SL5S3ts(j%aiSL0vN+w>?yw_W)B4}@l1T&yIfc^ripx9dl%{5 z{vg3RHOxm>H1xYPo^T}4ah`eEVlQdEb0?FIkwFi&7b_3hXqUV_n8AK)63VaA5z84; z13eobmjV}HGmzwGaGq!@9<~0S$TeNMh;|BTEsoc)@-FY1LV1_!z#HM(1@`^V)wIS> zt?BCwFBq)Nv@cct;F?~A-zt~h50dlpWWmC`T>z8Sw)uACA;=RkKh|1tsq6iG zE{5m*f&_?4dvlikN3l7|5r9iZ;N-WfkBOuL5C^H@Vls`9qHGrGQb~t zo-!2Fb5y94%~vFVoNkF+b#LRW&_B05W@=|I|Cm6DWDBoaM(II#*J5M$l)N~B2Nz~$ z(e{`+sH&g#U}Qo=vC6$u{ORNrMM3=iJhV|PTL38$lJcy4+FMpj0ca5s7L&WoSK8=-Q<0W5pMkzg~l)jK8>8#)He^po^3&z$Fa&U0)F903`IG&MEI4Gs( z0M3FSINi2hv=xN(dcAv+Bs~T21VC%U*^eltCzR6Di;Ig_8_qk18zrRI>)j)SoDf1D z=lPwYC?F)g=#)};o|m^sCqWRL+$1qKLdcAWXM~U^i=I_g6{S)Ms;WX!6iAYkE3Y63 z;CUXV(-|iUq-RJOnktnF%H=Z3p};5ZH($AN9z zX^)L4rB4Qf!GEr$5Oc6GLT0_85(iMhH1PJp5MxCrIcOk|d#8twPhZ)OTo_hEk~%{VkPBsn5Hv3)gjFSr#nI zg6q1e&s&y-$z(E*n33=Mk2fKat(}mAgM(iu%@u?YRI63&?d>K0u2d?aR;!`Y>7ZV( zuUrn#^I#YT#^W)@<1u{SPkhcaO-v>eP)d_-Kk4`Tzgf93DOejJ?RLAlx3~8k35z*Z zRncrV6Njcwr&AaSX?XkgEr!D(48w@s3xWXS@pzs9aMJJhf4;7At%Z7d)~&Yj48--qw}@H`Je5X}9;L&&lWNs^!_3S?P^EX#?{nWl-$ z%S(*Mk{w=itOJXgA93CG22|~{xgrL=GK~+`m*;=iJqobol zB0SH7>$-3pXYQn%6_O;OTrQ(jDnU_{*nM5s@%r`a*jzK6PB9vdl1OKBq=jbTb4qeQUJ~=jXti1#8MRss4<9~6tyYV!g(9e~>u_Cn-lSRxD5aQAr_nk@ zmgQ*WU$56utJPo_M)X01y~}l7v8O(6G#cl+t{0}PEUbsjMB7vD<%FQq>2PFpyIu5p zJ?^*D=@f=xtUN3&3rUhttJS#S)bl*Ne*K!8TYTTga5#*8EWYm_7bOxGLP)pU{Y;kS zGw#I+bH>rp5$@c%6Q#pmVOdrY#aJ1dro|SfuU@^va5#+8bLNy$5CoqTv3Oj0N!)I? zo3boF7q5$Cbi3Uc8Q0g>TSEr$esOqxea-dMd-v{fL#wK)N%LNd5E5&HWw7!ba_7#S z-vjtQd#zrtb5c{M)4|=lccZlDc^Hq!H#S72fl>;`aiFSd)Ki+xCUjkoCiPIHW+gI0 zNVm~wv~*qn!z%f&L`bjK`xznR3-(&2QsKU+TCIkUKKdw1`@WCs>+7{n+C{*1U6e{C zNRk9elF(|kI8szqjn+jBKCRd5FLYi1^RoFaJ!G}p?dD8t8$nSNjtouH@ZiCNC>;a= zbY0(iGJy9zMc4JH7b}W_qobpkw3x7_Iawv&rF%%H)Ah(HwU0+J-T8fa_mg^~dty-;e3$1Rq zi%zE#r47T#v^lhGpp+sAf=IhusZ`+mK1|aDfT+i?bt8m)qA1F*Y}UYp0L+ywHhb8 z9~~V<|Fd7yZH8%@(Qq5iCn3UxB@05x(_XK4FK<4%2@!jTBuQNF=yW>V9!HXTI}K{J zgX)KmpjJDJA6@~=%2Xl1b(5Rq%8KHK9s2eb26uh%(3KK}UQXd<_5 z807&b zAgLN2{phC=8DT!1hyR%Q9c-P%UQ#ZXV{=Kj+x;w88S^}h_ZEd*0oZQ3zrP>-Z`*dR zl{ni-A+*lj!bl0p&^mWx_vBLc_lNqo5Nw@8tuU9bBt6Mh&O8r`25oHSrBaF8cFn7! z8vf-=_-=giFM^abGJMy>@GoEHdLLUiace;&B(D)*WQMZpE^NT3~=S7xue;p`>IX!+zIa zuB=QQ*}4PqwwY&(mW0fN5JHaGG}}95S>}eTRaWFhk+M!Q0KSf*IzD08I?npu%!E)% z@3U!EXT^%WzVENBR$rBrb&~-gX8FQOTL}uswe*ntY?|$sY+;JhS1n7*CddfE)|LGz z6Naq&S>Kt75OGoxzW`RRQ=~RGFDaWO1K{f_n!<{0lyzcXR=LQfSwfcZ$w)<3QZ`Kn zz}Ho@HD2VuG7p&u5v7E*99h2 z))A5>O@$~@OT1~^Dnhc55#qLzl2yt&XVc0_Q(9kOXs*t&|YaAF%}jX;#A^*DyvF_Qf{ zikd@~)lF@ZlzBZwoIhsKhcY40e#jY{W;12&m6nM|5-Ze-io#8hB1sarm(I39!WP7f z%Sb=}Bs0*I@l7oqy$qeNr5A{2#-NXcWl2=KduqtS?yutbX+vCS4Cuc6#r zLIB|E>MHubQmN$HHCq=MA<{_6W4TBO;rw9OIs=I&Q0pT^j9Ne`<-|S1Frx8OlBC2) z3G*OYF0Mm`o~^H*d7S%!@B5LRlB%k3 z94FJZZZNg**Z=z;&|nJV+yBR_|31xaQJ4jut;h25ZGG_%5w|}RW2216W3H~0(%$)+q@V27SXhb5t=!ziDp#TsB!Tr3!1agZ)Gl}7h zy(T*4^!wipGo?}~*U+`C&@?R~BMiI2LTrO&gJ>?RTztl+Jz z@v3eE6h+~N<;%-UZm2R%GqxC{ls;P~ucZh{>LruOgwt?dUS4uTRlQ!{Sa8cCAxRQ9 zZ;VDGPO|cSKjtO2N{HE2T8Q&94IS-SeDlpWTsVq)y}q;o*-d~D!hJ}lX~u@Cgg^)* z%d(d8zy($a9H8s^x3dO54zKyX4?;*Z)`lc~@WBTF-hXYXs>1WUt&ipqen8=h-19uV zeEE_anoQG7a!mT-&6_v*Jb)Oi{J9<+9Q?0nmDg^!IR#^<)4{!a-+2g!k$|=}s)H=c zXfzs8&j`s7RqXHHy%T?W*6;WKX_dTJ9@LXue@CMcw?Q);4)OKZUq@e;BuQvA8e2Kh ztE$S8VVY))j35YNA})ZDX_~p**OIVui|D%kZKKgRhu{$Ex-RG5T}P|cf+R^G zghWcnZ3(%tx3`B{trnFzB!iWxLNXG3U_O2G=FQ3h%nJELbzT2TT)_uH5F^F&ycj8} zszO!OBrWO25JoX#6`~;-?64Y=F((-2N^!D66e{v$4G&u?m2h}?7;^Z^9F$6>XwL9`KN^Es89zLl zf)Iir2-ZeS7!IUbt;T#?27>`EE-tvdQ)2g?4hDmt6j`>y7X`DZ)-OaiuCzeP-EKEA zw7BcKux-1rIVL;;BWa6yi9pKF2ZO_bjfNTr-s^;t8h?L(AN%|Ji5pw&p)8>f z{36HFFf?B{N6p*kcN_=(em^nPxUTDo0T6CosBs{jl(b;{&1Mt(`}=DT#y=X3FdPmO ziAW2^zfLlMH6K?oBjq$HyhN7cD)#sHV*zbefoYmB3XKR;xvax-2rt^E@v)$i*-W7>1F0sEgw`m`o<~oK`n>{L#iV zecf*NGf9$8=lN`_s)|abvhbvxqG4H9s^CB=eL*RGys0CPHm18U4C9reD5t8bRseh| z-VYa&;n5Ufu;O*V_kCEF1;a4X!bpuMrT=bO))!Y-SKqFsAPKk;UHIYQ;SVXLr;A*L z!}UVAK3N6fk$IM7WeNRp2H@#U9MO8Cn-jBRR!_2qo(S!Rvzn?-r_)#{r8H1VUj#w$ z^d^sE-HP3!+5GZknV^wHfKqz8E$8BH1tB5Y?RK+LsXQTsJYCnp#35#9KBkl&qkxm6!xN$jA!k7loNdEF#7Wp%LPUfI+sm?iUyR)~4}_3& z-}lcQ$9b_$y&;&0yHv3A%2P{#8 literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/1.png b/data/ps4/romfs/skins/big/buttons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..10dd9b035193f455ab7439eed3f01b69a392afe2 GIT binary patch literal 4559 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 literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/10.png b/data/ps4/romfs/skins/big/buttons/10.png new file mode 100644 index 0000000000000000000000000000000000000000..b296a5ed6609795d7adc487dad77b8947d7407d5 GIT binary patch literal 2685 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 A7XSbN literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/11.png b/data/ps4/romfs/skins/big/buttons/11.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc87051e6205568f2b3e7a19275c9c6e2e9707b GIT binary patch literal 3655 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 Z{{x4QCvM-0NZ|kg002ovPDHLkV1nP)8UO$Q literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/12.png b/data/ps4/romfs/skins/big/buttons/12.png new file mode 100644 index 0000000000000000000000000000000000000000..dddcc0d479f410730f8b7c96cbf69278eb997c54 GIT binary patch literal 3618 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 literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/13.png b/data/ps4/romfs/skins/big/buttons/13.png new file mode 100644 index 0000000000000000000000000000000000000000..78beb6350ce0550f0d28dfd1c59ab6b6d6db1e64 GIT binary patch literal 3641 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 JPDHLkV1mmBmW%)Z literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/2.png b/data/ps4/romfs/skins/big/buttons/2.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad12864be4efec5792fbe05b658324641503adb GIT binary patch literal 3646 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 QyZ`_I07*qoM6N<$f}2g-WdHyG literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/3.png b/data/ps4/romfs/skins/big/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..9dcdbba8bc0a01bd8dc75dc4aa4b8a3f456c98a1 GIT binary patch literal 4082 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 iGW>s`4CrPU#}hE4`)uck+r}QCQh5H}NsjyN2 literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/4.png b/data/ps4/romfs/skins/big/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..21820ed4a3080e19f62ccd03e6c99930cc750d70 GIT binary patch literal 3171 zcmbtXdpOhW8~@6oC5H`pry;ahXeh}cyiCa{^3Exz)aFp{9JZW7{NymDCPGYPGrf%_ z(i}5q6~j!1Im?e|ltX$+{r3LxyRP5=zt45u&wW4Fb6@v$AD;Vut|!CgqOG*#VMzc0 zr0p))xC%Mu9|B1T*YLSqGyq6x+u2y5V~PY%5;BisReD&gpz^pTTy$Ms`D9e!Bu-XJ zL<(#JzSe$BEJckd`QD)u)s_zh%iQOLPn3c)tj;RDfy&{v6G2b~c{{j)s%@W=+`9~u z-_`2gV1gR;q8+x!6AGdNRey~#ElxdY`5fw>W?X_HY&2Usvo@O9eH&(K|Hab{7naUT z$k3J&K@;4$UyzGdLlJb|#euwE_EIP6eyy6Op)fhK1H{Yv5 zF0ex4wJw-G`6-ul=YBiZ>pVgsS+_R}J9g?pNTI%y`~qI7Jj6&R)We9px0R(C+GVF)fY$`5 zPk82~E-YX@^A=>*KYUp@Xr-<5oErXuA|WB6Z)hmi?de+>Y8zIZ1G6bWI=l^YsaD+M0P;&Dbt=Ny|=-!ug9D)HxsF=;-(-J+q)d zNmo~Qc!G(edg|Vi_UCQK$$MEUZWixR?hwHlHp*8WFJ272ECoD%{J8bwM-1CnaNH(x zd;WHvZPnPgW5YRZhY4SbKU~fVp+Ilw>F&<5r=8`J%MWzuyCCy#IQVF+7ZKWL_3deL z?j9Z@mG|1As0JTJYS-0jPot87ZCvu&wlbcyl!a9iX7qHl;o+{~VYDv=-;kM`o0}FV z<&_7KNmps#*E&3`U{7{+eelXG8V*ea5#%W1~Zleg?FwIXfT!e#a5ND`H@fAseD!jPEQ z*fDeG;ROMb?_1|Lqa?_w8ss0AN^(FDOgH}IF zKw@8&{-tJd6x%p#i~B3DfCTQSTeeD4Rg-2L;pIj>nbGG zy6vH+f@A;&Q}#mMIUD|uu=?XlsZ02#MRlL#*zL;_%iG$$5n6fn$87Zqii;VrX<>is zDx!>)ztxVmLWNwot02F1;&yIs-elvv^764yTef7L4s-{dEa+2MJgc+wt|oJKcD67s zI2c5yoBl9DmAWLAhdlV;R_gMXd=YVo%jIe@(W8n>Dp;hl)2au6pA z9QnK1%ismSYNfQ<$W`+JsKYj&=rt`a(u@lfS?LaFzST843O#RYYc4JIxIE)(HIYU; zri(<5(0u*;LNSTeYs?y;1hmhP$>Cpk#2&PfnjT%>VrTpvZ}AJStLV^y4eG4Xg{Fyg zkCw}R&$mCOASqrYtp+If1-{x2)t*PrkX2o21(SYu*)MT?Ci4hYsN11`_<)F5R2-k0 zYk<`dPDtsvOsto_)2rMqiRlcH?`ZJTz@BY2(=hE%2#8?)-V?twEr-hNg>zMLguP0u zd+esTvYXjccllZ9T$~jh-IukN+#4JSQ|{d96u<~`?3ihghASi}=w5L8l%9r|m{_fY zH!6>U$gwFKWtvOQlm$T7gh3Xs;wMe-9vKIddIlcBKcO645Pv4F0E=( z^a%X}6%H3RYjAwa-UWPOc=~htEtBT^kgACOMZi&>bFi@7+~fG7t<7dv6wDo&Z`lrQ za>*{!5=kNy^CI^;p8R=-g5b$q|i>Ov6-ge3z%FE3|A>CQklKd1BLDL?`N!|#U3gn& zv#w+UBSup!3aEcXxP6a;@K|d6`9bk3Orz}iE}|5MyOJpob#lV&3eV!D*P5 z5N<;tdrsV1a;ITra*B0nx(HF)~|kOWL8^x6om=9`Hb?hoOkD0s2;vr zyGf#p+lQdjPUH~9sv#yUr8uHaXbr7Gr%!d8Btnwrb7}Lmn;H*|MOy{dY0k@yKb@-8 z0ewr$UyY0v4={%%zBc(n8w3yt1TGWDYcz-4ughWhHgY61ZXIe()b0l@HZM?j1pGP@ zzP~F!G%RDbuzc@4Z!2f@ri_))(K45e(_F)CL!C#2pGh-kwF(@IxpYcybJu}yXtR)U znm0~O!(dAA9KB2r{JUj)D$c?4h-Ss7Bf=-BFo2jp zL)g2!eGr|WpU;n>MS$8(oY7SoOZVNy``K)^{6o!{E^`VkBlrwNAn`@oxMZq@va&Pa zo%;&XI4l7q;rMZ>c%-}AR!d;)BEG@grZ%0}Nn&Z5Ec)lbKM^Si=O%7_9PxX@%otlz zGzoK3X|bpxnP=Vc_SZF~RrFD0lvI} z4~Bx>Mn>3A*4g0S&y1@HU6v&-d3GsD4C0eZ3JSc24Fv{H+$cFtPsUQL`u9Ks1`6Cg z>X1x$%M=_j(jgL%X{^&`W^sKwQ|;~TpM_M(qf@vyE2K5%2F0)ZcCAv7zb7my)d!jA zfk?#ceiKmL>QGq)1qIP+XV=vzRXTUqjeT}=(b|zrI$h8Dv8?f;C9ckOvg|k9+Xei9 z=wAsgJtnMImxRG2Rv_L-Qc84te>loL15c+nsD;@lRe+9u~HZrD1LQ%J@^v0itjPq@3>n_#P>D!|9 z70drFDmgeK1G);t^y+8scHJyq7Ir})V$4~PJOFm* LF4{1xuO$BmDdzuS literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/5.png b/data/ps4/romfs/skins/big/buttons/5.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1c4abaedd8241839b7a217a64558bf0ceddc8c GIT binary patch literal 3073 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 literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/6.png b/data/ps4/romfs/skins/big/buttons/6.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8e730351ca5e403eaac02d6710cd5da18c4925 GIT binary patch literal 2560 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 u literal 0 HcmV?d00001 diff --git a/data/ps4/romfs/skins/big/buttons/9.png b/data/ps4/romfs/skins/big/buttons/9.png new file mode 100644 index 0000000000000000000000000000000000000000..6be5fcb98c0fe74307d30820691bb38a884d2f4e GIT binary patch literal 2750 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 literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/0.png b/data/switch/romfs/skins/big/buttons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7e74380c9ed07ec19189eddc3c2618c9f10019 GIT binary patch literal 3788 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 literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/1.png b/data/switch/romfs/skins/big/buttons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..df756ef0fe0b1a6a1c277b6106aaaa1b6db36201 GIT binary patch literal 3780 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 literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/100.png b/data/switch/romfs/skins/big/buttons/100.png new file mode 100644 index 0000000000000000000000000000000000000000..12f01eb3f52a3fd5ecfe5a6dda85aeb7f4562365 GIT binary patch literal 2082 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 D3j=lN literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/105.png b/data/switch/romfs/skins/big/buttons/105.png new file mode 100644 index 0000000000000000000000000000000000000000..6aef3cb37574ecc2440454fc3881018c353ad933 GIT binary patch literal 3066 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 IM6N<$f|`2id;kCd literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/11.png b/data/switch/romfs/skins/big/buttons/11.png new file mode 100644 index 0000000000000000000000000000000000000000..700a8ba7577f641049d71c37275e3b9e104cc1cf GIT binary patch literal 2418 zcmV-&361uNP) zO-LKv8pr=XB0G1jFfcY!UQU`T}V^x{uT<|zI}HWH@A0pm%f{VtGD2$ch$Hp zl-qY#uwX83tXNPN!fh6b)T9B;hlwUJlbLfDHIhswnvZiblXiX}IA>&5c&GIKEiU~Fs*%gf8~dc9EFrIa%5Vz-0tf+&jOQ4|H$ ze@jbC-0dzcEkSKpmgN9D#5W%)WyQIwAJWsUBFD2f8Lhg1t>v9K$m z#bUV@MC(E@Jp{LV2v1B8(SU^*pFe*F0NlTSzw5SHqq`uoEZ^8#Nt4q)2a#&wqzx8}An?~pc>n=z;9&&tqtmz#U*4EZ=e0+Rs zKBk9g(2jT9Bt|R87%_(QNrGqLCmR>T67oWw#h|an3IbQFg>Ie zLkRLK+HQpIg0PreY=@o?>XVa`GlUR7AtV5R$zp&jA^dt(goa)J)YQ}_!}9D=N<);= zz3<<@A2oBrt%6KUOgs`raRor2!@|{}_Z6vOe;90kXMhm$k`My7+Z~c+c_ooZ+_;wb z#(|;B<$5cMVu*1ee^mmaD27}v*V~&8YAA@y<$6m9dBMC`zc_@D7dMHbDTv$c{!K42 z?%cTppU-!_ZM9mN0D>UEZnraC38F@p zWxRRw2G5>7!}$0(Y&ILSylplca=9E%PEPRt{d=69ond&G*CQxExm-p*pVu7kP)c6{ zsGF9qtM$pr$r(WqqUv<3)ylQ-S}ZIqU~zE~_wL<;$K&ZJuV^%iFJHc3YikR;ySr=( z*d&=u2BlJ|E?rR+kGl6&C&*Q=DpYe2A#ggKZLb_`hvDI23=R%nZ;y?QVPRnbI>OP>5l&7{u)Dj9)6>)I{n>05nM{WJZ>XRs3X;iWU9V1- z<$$`^)l}PKu~_QFAcQb&->Yp63=GueeR_I|j~_oWu`xI}i2nY5c&Hzq=OifL}>-E+>3DxWL_4VQI-Mg5YnnE}nZfdDft1uO0baWJRb8{FP z8e*BP;jr87@cDf3csw{fJVYv$VwN`(L2Nb~d_Eu7e!USH8XCgGhYyiVCb7T2k3yl) zah^LNfPrQ&n$+N%jN4p=kyZ&C?@0ISssLJ0c%`?=g6uBKEfp;#<}Qi@Wk#C#=uGZ(E^ zT{jifB}sy!C^Z5!bAPy1s{8Z<0|OWt8DVY%0MhBS<^!X=P!y%<`l`Fc3xz^R>%jB# z^Ug}uBDq|Si_P=%^R9|fv8jbtUDtU?I-NeV*=!#OAy2E*i^U=oMd3E3P6(-+a!I99 z=BuV17@H?N+Yc^k$(huo$y6z3zjecnmKi(`|L#b5a9?<*x`f8f0 zTrS6~=~8<}qXleTBB+(98I|Ml_+OM#%@cSdNm5OF%d*0%^O7V z-K2Ot{<~hHbn6K!J-8C%_eT3~?6+QtvVtEkuQ%z845f7CCNY2}y1nsu{Ev~5k=J&+ z{VAn1KnU@$D&ZA=@cRlvt7HIZzG1mtD5X(CNGPArYX)&OO?6+=>GWATonD8=^7&42 zyWN{G&J$XDu~_V}o&_-HvJ8ePh`}%gF&L&G2E!D@VCep8jdpnO;K8knCz8n|wzs#t zR3ditq=$U{`jyEsMx-YNNu^RqBoYnxClU$nt3!CvlY#)i;o)Ih`;1P{3Q{N(5Q#+U z(j$=w^VNjiq-O;Ie#D9Dsd`D0dNy`c=xIU9<#LUe@O-kVTlBOb01ys`ki zhxIN_$MoblM9t42M1`M15FXF^=|#^sSw9=5AO^$mP1fb*CGz=v$IDg~MZx9eC8JXD zLw7+ar5W|x>(rkfs(#lMD~#}YBQ11qvM8k?by~4lbr2Hi1)hX8=f<@%3$#eKK9ZFy%m(LIJ#C=?1WD5YHwszwq6 z0N6Ir9Z)P5FLSxvzXt{eKnU>z=;vwgYKiB|cs%|GPdlw*m?lfj#KgoSUU`e6n2E(= k`@HfuF)=YQG0}tn1NSQWFE(xm*Z=?k07*qoM6N<$f&ny(4*&oF literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/12.png b/data/switch/romfs/skins/big/buttons/12.png new file mode 100644 index 0000000000000000000000000000000000000000..37f6d5b11138b6c6bb6c89ce6bc473523215e6fb GIT binary patch literal 2379 zcmV-R3AFZ!P) zO;6ie8pr>~c2eThAum*`IInO!A zk8Qxl#>U3RrauU42ioED`G#-YxG_bu%(JtzO<9(|(kzoEmJ=ix49;>Kmn4Kd1mHEu zOit6ZRaI4=A08gQHpoU_SW1v^IQ$!cpG`LV`@zA%zfHE;5}vgKmxMy06++0r7?}R6 zBuUXiq3{O-+f7(PkWeV}H$up-tn3p)rf%N6nfvzb+kaX4Q1yki0{{>Tg?0%cQN3dv z$ARbRoHyli8LFzbI-EN=IPg(1bOo3TQfVEljr*NWCnQOtCdMV@av6m}0q5uEO~*7% zdzi^&n08$pOXC%qhP4id175F}x)=b!^E|v>FB}d>SH75yB?S>h(Qu7{F z%M`pa4l8t7Z4m@|=M2rVjKcDQ{AgSYLHvF{{C+=cH>hwe1c}Gvh{xls-Jrt23o<%7 zia;QMKp=q8(NWg!T$zCvWMX1M_wPYvpaqFWqjeKJQ4|r4M%g(;fq@l75Cq-05s$|Q zVtCt%ffZzYd|Y=u%HeQee0-dNM|2oSL0m3Z+fh|K9*4{2GSMS?45T2jSd7YdtjIui zw%gm=*xue|?S>%?WDB{@*n(ILTM&z33t};BK`chsqpaJvZ~ukkxH(PJ=31rf^a=Cp z*fmUr!{Ierg=w0$M+ix&s+#)z`Sbs}`AtVbg2CV{&-2Rw<^cU`(botsD*q=9Ds`3Q zI1b@(I8`o}mpkPWx9zgR;qY%f&!=cQ`2#b@^L(n3zuc0Rf`me$6_}s+4B*^r8c-+uDV4-r_)KT?Ao%NPG_rRIm01@B!j`=tllx*7*dHDO>i6s zQ4|eZ-X?@JRgxr0)XJA6357zTy6yA%bW=)cadB}0MNxF~i7R#dpmBdw-{AB4hDA}# zHSTvho$z|i%_EZ}2|gd){AXE~>qIewTrQ_8yrL-H#=E(ix-7k0$Os|ucsx{{?1b0r zr7i~Wy;YcfVtG6s-MFY%*Io5Jf*>@daS}qP_V2Z}BuO%)>`Ocz4~B+@P$(2|adAPt z{PXj3Xqr~t<~R<5AfQw#b^L8#!NBcy!{_t$ooj0aoK7c|6xCMb^LgZQO+9}{`l?a4 z+da@?m_ffS+^$uNVGCk03>QQY1WZm&8g0gKCMPFNNiQkRre@UgKm z1cO2B?(SlDch`{78DNkgkw^rwSj?1L)6B%-a3CI!BNB-qolawaf1kPys)G3aeoRbE zV0d_#X0et-6h$Nw2}Gk&?Ck8|`1qJw*;E8^xm-vj5{8cJt;q23Fz(&Ehio>Bt*tE- zi^VIKNhPQU0s+&PR;+}_qQ zY>ZaXmgLi?Pe`ZJRJy5JsE@LW#Ui%1x3Rakhlz=aYZq6t*(`Q;c975K4JqHSc}PB= z$J@7W;rIKINFWE4Y!>69d$H!P(qn262472_Rdo9ai*n(J$z63Ec zG2pt;?=ZNp7?R87aB^}&^&%C=ad0}FAcSCOXvok@xWM<5>h$y!nx^6W{Jh&t6ErC zKqix+Qg*MD%jG$}OnBX>e0X^HTGOjKqmoubANxoY2;%jmUy%Vt2?F|?HV=o z?FHt7=six{41owCmdsCPE(pu}39Wc9qa_4kRWXe%#O|`tTq%HgT~?zVE3_Eqg7niu zo;-PickkY{{m$LHck%M&%eLRKVhdp&)p(u<$8mL^P6910Ep;rn(|0a|dhN%E_m%Vt zb3ra!NbRQ+Gcz-opPz4ee13i&Gcz-W*fttV2-0|_cEi)BPy0GnORp`{444aYSrNUS zsgXzoi;Ig*`xh4%5s5@P{$9_f73L+(J?OWE0N>+8?UNoPN$M)TTw=En9j?-kdpsT_ zlga9KGMVh@GP4~+bm(W4Rm;-S62jpy!r^dFt;4FLEavkN;OY~yUW908*9!9x=7P{z zTzvHCQO|a*62u!}E{MIjSdS$Hu@@Kr4|72}EiRs&ok3BQD|auds^aYItj>nLxTu3( z#nh&K>TT2D=;%mKWah~n%%d8|ajC|+!20^S;da;8*Y)NgDZ>qSzzTw_HqHmq=`>bW zR-h;fb$g1UU}a?m>2z9e9+IMNut(T;ngH(KzrPD0+PMGnb$B$%X0ymVAXE|pnPZ6-0swP!b1MLnjLfg5QmMZ)vRw!B z7;;G}mHH=u=L}453WAViU{@FRt7$dt?d|;$jYjuiPI_q$z^|!P>K`9Jemv{=ZIiG} xm(|FF2M-c3P?WW`wYG05u(7eRv9TF6{sc@ruBKk`h#LR^002ovPDHLkV1h|hjq?Bi literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/13.png b/data/switch/romfs/skins/big/buttons/13.png new file mode 100644 index 0000000000000000000000000000000000000000..8efd7a403545b86e491ef32ebef806f36d2dc5b2 GIT binary patch literal 2408 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 ag8UEvgmg}>CL)CZ0000 z%}*2E9>>3D`T{Ku_C*7<5X*ulU?L4^Ua&L?f=e8xvjW6E{9Pch8d$*ZM5o zC@$O)>D9!b(FD2x0~olbG&N#dI?$HB%()9Fm$uVV+A}>fIG+u}nVIwZb-r_6=A7Tm z0SpWb3=9nFgYb5s8cwJ4cuPym5X(Hbx3_0wvDgO7JXxYSK{`7-FAIV&P6)XUz@d_v zIHhz_mgVP>NaQ~%*{BOm3F7s7{{nEY$!7mvTU)!|WSbQ+@phnq$K!cM2>CY$)5D@D z`Xotu&B1mVnh?a}@mwQ>JmF=Z5HfV^*s=KL=H^FUKJ59z+W`RZcswhF5TDXMK@eav zvAJ*Z`8;GU`VrP**7?1v8@{#%O!2ZjN4c6MGinM{uXjMV!p z4~xU$fYoXR0JOBUFdN1F@#6=!x3>WRnM?-pc)aYG(hI)-uTomAe*pvtA&=j`e_u70 zxN4Q<@pzt@Or`*uD8^BR5HcbNLSSTM0VvvTl>K>GEEcr4w=>K8kc^LvjNDS%q1dQXO7AJ%L4qK_ZnvvCyj_~N zD2mMT7DW+~Bmn^W`}=YK{(XG=_D%8F{lCAkt&~=6|M&0TF*P-XSS+Sw;vRs1%IuaV zbai!|5(HtjG~H^o!r^Fc9GNJJa5~w>KgVJ*NRos*ckbZw<;zU-uEf))Pcb()x7WxQ z5Cp;Z_U+rE-d9j`y}$z(t&-TU8ex1*=02g}RL2cBD3 zW6;*t2B*_mcdRXM&YnFBtJR8=Cr_$oBauibKIa@nU01ZNtxdOLoH%i!DS;66mT-Mu z)do0q>J)Dms`A?jqV+H#)dew|%{X)BjM`>uroX?xuJax|cz{GA!PuK}R1?H(Hlwev z4_B^SK~GPQT4tKYt5>fuIy#Dpi3wGOQALpM?rvPVbP0aHztX#W+-M}+RFWi2OibX~ zwQG3!@+CvB{tr_@TrL+bUc89G!NI1yC&-JnwKY6^_z+jGUd6|cY+r3>B8bgq!|?Dh zE?l^P8#fRNg_z{YL=d;z&2!|GI|~a7`1I)$lf0M=+lE3R zL?RLN_V!kcxjl-AqKNVFaooCfi`fmyY#cq8%VBA0387F3eSLjLqGwf&v9U4Sy?Ynk z-Q7&{Wj?WyN~I7C2C=%jih+RvCa*NJWPX0Wp`O;cbLa5r(WAPbXAVNOnWjV{fti^Z zxLhs_4i2hirfGP+UOaj71n1A6SJjT{!Pe1e6w}kwYMZHN=UPQ!*4g1_4DUX z-Y!(-w-aQ3exA1rRjEr5rEg8?h4uCIrj(LgE?3uiWo?Kc2nR+o#N%;nZEZ1~q!I)H zR;v|+5VW?osyc=H`SWLtj*b>ZF|wY@t?{NUyVf-|>e*}-vMd(~kj-XmcCJ=Zsnp)K z8WAT2-n@B()2C0XlD87cWD<*ui#6TAWk;k^sesafo12@Bdv*vUNm9k;=H@15XJ?z* zmb`fJLNR?eOt*-#5)zBWHf%QA*_n46nZ3SFI?nwl#6!gi%!`W(RZ(!@+A zqk4nh+S*z)E+k13v#P5QwFvA85)1~hxVTt!jEd3krFNbx`KVZ_g~Q?3lv2eL)Fz!y z7qw3;Z-D)IWwY5bF`CHp>FH_3ub)HrUjS4&u1Om4!?X24D?~3vm zz~Ljl3`&VpN*`Af1E`_f8xDv6bUK}X+wJ!2l+uw(U!ZP)A*iLpyJ1&4xmuQJxO` zc4Jvu#}Gtg7=maFLlBK&2%<4``Ms>+;o$>=Cw~3T}~-pEs|DZUsrDQdn78DNA2jSt*)%)El}L1lVaO z_7Bx_9#Ut5t_8{Eaz&+NWo4!AXb-KRYe4{DX=w?`WD?0_5=%=zY*E~d_l+LD7sq5)-7%i^Lf=oi9{k*S1B+sFfcGM&>Q~)%q#wXn*ey( P00000NkvXXu0mjfbmokO literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/2.png b/data/switch/romfs/skins/big/buttons/2.png new file mode 100644 index 0000000000000000000000000000000000000000..46ac2160d8df6dfe7a3283935cf3daca3a8cbed8 GIT binary patch literal 3736 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 literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/3.png b/data/switch/romfs/skins/big/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf86ba773378da3d7cfc69d2bc9ba155058929b GIT binary patch literal 4011 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 AQ~&?~ literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/4.png b/data/switch/romfs/skins/big/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..d32608e165c263de3d42c0ca69d627a528c61c17 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^DImaSW-L^Y+%p+(Ql`4G(u) z2$eKm$~(lNDWRdf!O@6mb;{%=Ul=Yt;yAh1nCa8gMK%w9|N5TubNbym!AwA75a7Z6 zr;`?bt@^tqMlZhj-0nG_m%Y=C-K)6ti>2@7e-$=$XJqxbE|uPmKKFBP%C|nA#};{h z%P)VQv#@=V_R~4#s>S7LTO)Mhp7DvYdTOradcI?U2}k{tjn@{vEsM^+8v5$D-Q4rf zsb(bvqLcfJ@2R$xeo4=;OtC=VC{UbM1U*q4FQ`v5+ z2I}3E=WAcT)7jPj)Y2(Ix3`_YY?ABsJU{ZXiL)mU!fQa*gSx*AcR~y|x+X3w21$6j L`njxgN@xNAN;Z(U literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/6.png b/data/switch/romfs/skins/big/buttons/6.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b0dc48740bd29c729e36b04ec0b4cc176ca570 GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^DIm0U3q<-hSUTlR_#)!z`CR0gw}^*_h{rKav84{XJ#FS0 z_8!A({e5j|x7)&9@Yg-=9arC$*>^6MFh6DCo>$;_$z*F) z_bRC!3jKVaB#TyG%{p0Np<|M~F(M+WH+qlL0Rs*RHpasW2@)(k%?*hH20Tn{jyMGu zhwn&~urrnFT^W>Bb~h~8^KPDbvB5V5CHqY}v)6~MUSG*?w#%vJ{`}0f&qMnj1}G>A zFTLU|(dG{n=UOyn)=Zi22~9vh%=xZxIo)Gr_42H(Qb&4>4%lC5R+tdCKD^>wf`P#O z@49PF=w|=kbnNlQwSj&nvwbCd-OfGJpYClb*Wdd5K)hl<9w#C^v+dc|bFVI1 zEwp{j-MsLMV_91_Z4mnI(=4-Q-69sfyx{+jD&yYWKWTEpM@wR9%4ZeNx@Wd0UPw+- zIXPXUYhP;QHFL{<`BQ?z-G#PnJ+(m3wu4|MAWL#4G3e9shQs zJlAaY`=xW=*oQt^_|Jo=zz6$G>*L=EmtQ_fxi7xRi^cQum6QAQUG}6lHgYFzntoE? ziJ96Ch3jvP*KKE%eNvh)DRV- zOLE)B7KZ-@KoTS&sTqJN4V0Jz4dhfR)()a!X7&!Otl%mui0=+`S8#cEpsXOy3Zi6? z%79g&QyQ>hID#pN1c?Uv4g|m;2ofOKe8|C9r4k9^(ZJu&)8{mRf`WpAf`WpA0`ZV- zCtx0&^CtjWf=}BeguD@a&VL4+^8?QL&s-cobIuR8eP53nfua;*h(drUg&3k)L6ky_ zb+Lpfg&6B*0Z|GuHbo9m3Nbd#98n4}wnd64g&5l=CQ2d3t`LY)h*3~bP*6}%usdvJ zf~wJI9LTbK3IK$VQ_eXJemYC+dP)eP5De%1b@0&wa2=$>;+$Ut0As9cS=Lr2vDPX` zqtQ5!B-tMV$Yq`eS5;MLnif4+N+~o=gQ6(QTzX@K0@=1b@t2dX>$)$NX>S%1Bq$Z_ zthPZ_RZvP{7zPZ(n0wCgcnr_;;QKxRz;#`4&ZEzwA%sMkfe?aHsRZDmG)j^beNV%( zEI5t>+qPj@Rvv*a-oAbNpM}!5$j;4X^S=Pj(|*%54U|$G9v;rDW(I=+#^W&z5>T6o+6zcW*YXB2Z{;RLP!v6mL z#D0Up0Po+we-u^HD)_z+*L5)*4ky|n0I1b!_~esM@Yi2|C7;1brBZ1-jx(BfZYk^H zx~{)OVr+48ax&3QR4Nr592|VKC1M_oG3@Q_pqJ%6s7lr}ZDyCZ-|wd$Pbr<~3J1^h zhgsLl5~LOXKF_Yy@AokpjZm-GCwd)mae#+z@o+edZe%zdPS}^WMZI2!s;a0~t5N#1 z>}a0n;qLAZqtWb+Q_4Bc0L-*?%@u@m-XbLbV16_jVKf>+Q54i_wW!3zk!3kbWHPa# zDZ=x-NFb4=Dn4!qt5{iQo@3%dNs<&*C$cO@pGAu0 zc^*8^oBGTci!98dN!qr2-+w)C|I7xW*=+uS*hszAYN6F?&D_7>12;D}=yW<0+Zbc? z_V)JutYb2>9_PFr|31f}SrEgv?I|$;wC9NdIjM zdc7Wg{q@(0ZJcw<^Sp1ejElMYw3O0kilV$uPT5jQadL8!Iv4U!#Bm&SI-S(XD%W*S z^GxaH9%RfC1$gML9vvOQFpQm_D_;kuX`ZCp3gu3 zd}8ha0N%WLgTY`R>>9JkIfo7a;GAE2p7$!N5l^zTU)G||aYsi-Xti1^S7}e5KAq}J z{Px>#xVyVs>AbUGjG^1@;^yWi&+c8$`4waAa#`PCA)br6u0JP)oab>JJw85OX(DTr zf~1Wj(%_t5an9TC-o2Y?#m$S57C1=A4}ss-D*)%SsGqV4CK{m?AKDoG;pSU4@NKLIgL~j&EDR z^`aJjPDzb#>U(zH)j9Vb^T=!up(TLFTVI9bDt&W zOwI`*kY$A&kQrj?$AG4yMR$(oI=(_$qa2YyF{SZg;D~ zIF5ts>+9Shd#b8VR9%D+Y8b}XBGR&!k$PGz_q^XiSIt(d1;a2l=BVvB4sLF4(ChW4 zGDLDwnIy6-uO$<0+;uPvLr(TsLT|xNrxQ77i+0oo9!jKXn$iDRB&(%OAw&?ym=(`W zSvjX#tw!zr>$c+RpvW&gGz1(r;Veo$V ze_bUfTzyoQ<>-GNeBa02-QAQK#&zA6C=YmH+0t>G_qAFLaf2e~9Ior4R4U~XCBC|Y zs;VfL%aCO`8qY|Qw6I9w!UL5`1?6%XwOS3eT5aJKBs|Z9ZQD~~aL!--{rBI(JmH0# zUT3XdTC3F_ZQP;bII}|L7Fq%}55g<%!C>%1ypImv|&;xOD-D{np@=>xfLdtQJ6w*tLCmW z_nnbRj!2lq0x|L6Zc@Av&a&-e0Pp6C63-uIhw{;a)}grWoh0Fc5s*g6Yl zpI<{vL?DA_bFlybuo+{E#NIAirm}C&x+o@n(G=Ipsz+-&!-^g|l4r0q&Y)Zu>ubyE z6RPgxVqJ%MkOd1b^|Ek0tX561gQ1bu6Zx}8T7s~Z6KVh3R`9h4ZR@3%nvbGfWw zu)Td`*nY=GjOdg9C$&3$3`wvk?bh!$=KR3cge+Fk#%_R(&SzTAzRd<#)Nx^jQMZK5 zE`ugQ$PeRx$xzV?5{4hqBEKYCqEz;3V5;mdSpX5NFwhBtGZWfsj_N%zopLmA+5cIZ z-mlL+Tou{g!J>ba27pl+P#XQ`aLB*!HBtA|ik{{aHyfM=@JXgdjtiy$H_GU!5mEPn zTYy~omAchaz)&YK)0^2DlVi(a#U@9fv<^4Gpbm}CAeICa{NS1m6}GC?iVcaY|Kg3o zJB7DTKLB$Qbstq#ec_WcJcJ(-$R*sSyjsAr#d2#&gG){Ha=UCUWsD*Tf%o{KY zEG!lW0Avx!>QVqiM!XgV{{WKW4S@rN08f_8V65K&Hwr`m^)ShnT3>d@UpmXrt9CM9 zDEP>f58r50ODL*X2tJIwtA*K5&m|~4(z?fOf<2pp6x+1a4(-v(0}AFhV0&!GxTe>o z*&j>6!>G^)OeV8A zHjYpJy0T*RNl`kPfPX&f4@M84%hnPviQVzrdT-2xryS+kA|Xj+h3Gn{gnP}$NkemU zbFlECsHiB+xTTpa8u{8iQ48bs*gEK$$pBEMBkw|&ga&Kf3YFc_RCuKldu%7CSAq%O znvOqmzHW@qiL;%o*2GgvdU#6a<{L1&>eQ~r-#(|-s=p@x9(zBsJ!5Gp0GQ0QAIrO6 zdY?*F`LOi88D#0NrNcTUjQpl21b9miRC>!1zxG1ykggs8M)mx+1(f7{z7o63ZMznB zx%YP5K{c>8Y%Pl9_$0EV_k>Z20OzBWo~E%fWohYOvNw8DvO3 ztDZVL`CJnU3O0uoJ8ADHI%#K{{^T&gXz4h$C(e~yymR!jaYlM!p_0=xmgre&va*ny z|5B=4g7YVBtv#PuGwM|{Y8)4Vt;W6S5%$J^H1KJvFV=a-AbLKr2*3qTO`mRnvFs?J z3K`t3F@+Ney;VKK<%*okIwtZgI$Yp`GN^OI0+F%d+Y%xy`KC3>dh&&G?>z!ukjNto zw|L3dMk{Tcr4~d294ObjqaN9n4KItEf)c=RAXk#7@Pm;;oahMiHZI)ui%`i)kjlaw zAwN>%Bav8KA^{(9iYi+2_{n)7bBis`qVF$Rbkm7S45C3B1IB8E^UwUl;2{R_lWQp| zwlBwbRqo|Swtlv2{d^@dy0hdzk(M4F9)HvDl;fVBo^L#VP`m6ioj-|pWH#J5Cj34u z1_=aE5r%hVd(g%FA%&!EnY%#-7jSaQy?PLNNz%gR&#i@LCG#98t$;Y;sjVP?G2M@V zj~xh^#NY0Bp%9c+RqbjMcjXL$Lh|zR4U0Ncg`^}~8GC|R`Avx{lH zTx{ik~2 zBP=YOsGe9U0bYe36S%rI*Prb$V^<~}yT8rH@+0?l!Y1b$xro7P3;#c51C+{Im~E?v zqK~uIN1Q7^AiYeRzN|i54@|oThrn)41%2u0?*08v+Vz*FdHSgu13Y>VB26bE2cnxv zq0^<0R#*60yHmoPbYkS3&W%|4&aAJW;(Vo6^h@UTFPCSUsEgFABLUMpJ3H;fi4!Zf z;%`fseQj$+-(AqS(Pq=cfE5Hj?B7Uv;})@*D{dzqhl`FK(6H5`ebV{9Bu_hAyiEE% z^2-o&QQCjfz_UM3kVyyl8^(o_CdGvD#C@SA71QIR1;O~=8tyAyk+b;aE28=cE+UZhEXIu0FgOmWDWralgau2+?kYDeWg}5EXE+(i;M!3|7;^~%y){- ztUWp0+}75`W=jq5PFWr7ZZr>thlju2h_0AfH73i(^aUC-z2I&RUj&5mTj?nS3)_^F zqkVn(XDjlF^&!Z2ph>c{>tChHEUXflxgU0ndiiAweKW5~M`Ruf)E7 z^tHQQXh%X;9{c)6gh^Xa&5JW&0l=P2U8m~WMqTEMkF0KL>b0BR`bJFhHcKsy&XYYH zCjU|6m%8~Dph~j!rQ>btk}UreXsTqxLyT>1F8Jo(g4Ze7r!;37&P^pZ#h_0Vt)Sfu zf!Y0JK|HQ+B9ZQK4F`J-6tOKWkk6N-KzT$YJpkhZWUr=MgKn z`dwYLO^{Gps1<(H|1?KOUl|fw5`M?wsQP^OIT3NspO^d4;4xlrok~L1hmQ7^+Ommd z5)Q(I2gk-1oB5mrCp1?)0Bh)`uA@~6c$SmpAXfT&KEG<5)c6!S(4+iXifL0f_MoUW z!6a9lN&o7uTAE(?r5!%^?S3~MCP2yQ+1Ymy?*~~I%dY2JQ{^WLUf(j8*DVP5W_kGj6l} zV5!P7>zgX4mUtE+1>`5m7Wd6^L< zK%m(T#)SZr5!prX|fye z5mG-AXnY`|#_8eeKiDxBCPr};j`W7W3)#D$8P|STpNOqck8hu$^UoF~VU zgbL2gEN^j%?K$=0>`y`w#vGE7V!AJoS)|eJTst;=Q@N2N2G#2%K5lETcYYtH%;&Yd z`zJ2&m3o9!uz~Adu1b=(jLASIQwddvKrOXc-@8??naSvCcwHQJl!R0;jZo$rtaZCr4~cq0TMyvLBVIKjShTL+IDr=ZqkR#%@J|7Go(n( u literal 0 HcmV?d00001 diff --git a/data/switch/romfs/skins/big/buttons/9.png b/data/switch/romfs/skins/big/buttons/9.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfa3b92d2648caa02d1ad8cc0f90c76baf877fe GIT binary patch literal 2799 zcmZuzc{tST7k4SU?u5o_u;mNCtQ>|~viX-tvCon|JaxH0ynWcg8c z*|TKLT7!m$Nuwc46OEKYzq$Y4^E~Igf1LB2bKdj3@8@$8(N1S&Bo!rvgoI@5Y^^YY z^U}X6E-J7Q96DA=NV3t+3Wbfz`^r8@ z7G>g2jV9Z%EoVl<^E4oV#`TKP0$r3b@V@`_qih-WGV5gM$uPzF{htb`mWL#aEQR*z z)@@X(d**2GnU?+9G?}xs`415uY(14~#J#qy#U$~Qim(#UXrYuB9#hR%B%q3vRN8l< zLRU73^YPm%^Y^*R9&=v1Y6)gJ@jKU*z~?Sy?q&lCa;(Ovbn8%xneYIZMoHZ zKU!ox3xsh$@7f9^D3)wS=iFx>MmbFEfGtPsDJ32#ETb{wKKSGO{5%mDM8vNsYWwK` z3Hq$Yr=baTwdAbQZCAind-)g5&k~1Q49!oqaQs;2aJOD^$>wMs+|$$3A<-Za#7V~d{H9h|iy)^DbH7kQ z11?_YYu$SH_HKXty<_k=os7|Zp+P}DPTxyy`21W7qe(CLU&YO269T!SLQh(x&;KA5 z@H-wW^<*mS@tcr+b5(}9qdsX3ZAK_b>Pt3{$3w&)?J1ZrkSPuIkBf^lRJn&rg#ih) zE3A~XWQ{OIm3!yPu{VoC-&sgN-&4%K&v%R5+U909iSSDiyv(>74a!Gii)SHX%VXBa zH5@7?CKiX0=ekep3n~jz#>B+n<}M~E=z9Aim7Tog00UUbSpw@~wyHN}7k*h24-wU* z+gAXvBw-xxpJ8sz^XL14!CAYm5QCQ?2IK`~gqK1d|Mk+T`~%)EZW##jB_ zU)h&x6hKJ8V8BeQ<3vPcWcpAfX@`o>5p|q+1RI*Yfn17EUb-O8Bn89B`npCsY&QaPo5!ND2~e$}c!Qkk7p1ET^caG~w*MZFA7+ZN9~ zNlTT7s?Io^@{uDtr(+l-6&8zyp4#TijhWDTprUvFP#&<`$<7GuCVA=g>p`T$S?TEe ztS!dA6Y`QV;s+N#^xTyiEr|3=+1V4^%2!YPCu5PZ9O=t4f)4{tEXPS3Y=+w4v?EH5 zR<#=SW8KeR;n0*CatR_W`sw>GqFA6sG9uDcMXz5t(=MYAvu`8ly#5~XAVM5E&0^(h zQC3@<-hy!A1B5QfnYKBnDPamInDE}tEA?8-j>4>ZN~xPwvZv17nD0Dl5~5L@)d-~| zOol(564dshDXmCCR~oM{IUQMH%ACq`Q@cz<$DSu=Q)Cls+uEeOm}d%Wubip_RbE(q zs|YTBkgFV%N%R(rZ${iro`nDVXEyGdSFA+YQ~#7jHr+-qprTLm5#K zw0$=uH}QW@=35H%0b7+W_xhO~=QSI(hdHWj;KN9>OF7nmy!86@>yK7%`l1I+&Q>#X zl`I-AYNPGb5?&ty@??RPjKF-ICt1)0tmoVA?(U_eB7+^~y*{-E4~le`KtN4fo08(J z%-u7$eyl?$HFb1!{5|ftekHE7@G)|PeB^1Fl_VBG$3+wB8*OVxr+0HnN*Vd!; zNwpp;*W3QdG^c=Mgf#N_KTWN(F8QJCOBiytYK(F7U+}NZk1I5J?>movDtg(UR10zu z3w5TLF6~@8Z}o5FC6Q?J!jyJ2(ph@AuDCmU0r@DMv$CSeSQ3Xii9<>Dp+yet3OCzS zO!=l2SjdKi^Yf1wBgDpPlPoGPNM&Yb61^s-6)B*BVfb%{H0nMV`M|$+FT%mcxcV=9 zBb3FMOr}18x`2%Owt@>Wd2m*tOQK}6tVLx;PgaU^sMhS8kFg_>*OpY&3%-M(@%eo8 zQ^=o;#w!*cT&$rZxHk1LqR34Qx{v19D;wZM6^oEFKHWA9B-_CgTmw#7r_b7;H&xX8 z`}+FY4`cI*-fda|y{Ba*FfjS89bTBH@uB{$Eh7WR+?I}bNaAXt5q(=CSb}{${>0bq z^&w|#m*R78Dt4@p0JhKl{Stt^=2<17oN~s^b z6tsDO=z0=G>-jMGY>1H8)s+Im{KEDM$x5%(#p{g(zUuv|@c>qWs#?jyv^GR8|Mf8P zost9&7hKw!$1l&OFCZBws+!E!mIAk~%DKCx)-dv5ZwVyQ@#hD|qCeRbq|nvLSdBOd zE#K7rSTwhr~NatCr{X-vmbysY0nR+9?v{Ps_rXRt-OF=>}b-}o$B%A zDc0`aU=*LX(w-@lcLLMp0H=kmrGR6JRD&G_a{s}&c0^G7>R`%hYqqKcJ9~x?!tUqz z962n9<+Rw{X=zfq%I) z8D*M3_NBF|aN9NZRQ}k=Vf8ff$WyEa1%89?EyO-})R}M$AaO1PsO;M1AWlt&jP zfILnq8_yLnt+C{C1oUxR-?9FK?vY37V{18I%kY8jR#2(ivP z^P@CqPH)1Sg5fVM9t~%#NkHj1aCNlSfpO&0A^T-!wNK|>;GDmZlqBP_Q5;>nL_pe< z4u$kH|KO}j9bCl;oYrtU=H{fp`K}>np6Z;gFZ~21zP<3#aDWirWGLq6{x(@l-C9ZH z)m6NE-oxPJSgeOMC-tIJKIUir<-cp@!q26-WCYqR$U&{lD$VDtG1}Kaz-j6@=?`PW zwzML*3~HvX&k&>2i`8hcEFWI6v~{y;wR6v1A)?-@xBblKuGXme zoFT@-HXE_U$PK!%`@O2VdgDWn*z!=dYxxhace^ckIQJ61fBGuT4@-7ZqYGdj8}oww z?iiO;-vF4{FaOB~ykOqNg(3Ie4Gdz&ZwDvunvGy6pt8m*aYPb{p7^15v**X*fbkay zE+SrKwz;hHAP|<$@cFrWyRP0t|Kxv5(MH@dw&TmU8*mxHA}eHP?POI2_>%t*eFatT literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/0.png b/data/vita/romfs/skins/big/buttons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..37b4826553e5b827fd91455f91bbf9cc62e05de9 GIT binary patch literal 2443 zcmV;633T>}P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh0}BZT9j4`9J^%m+lSxEDRA}Dq*NJ3o1g;2gC~qA>aiNjSy7gfd?es5Q0buBzUOQ zmr6Vo36V{tCQTwJP|*a1KsK%&;x=v9`Lp)e-u3+1d+*`l-d)ek&aBrJs4qEJ8qLl< z=lA=b@9)p~o!|1_cyIiONBChDJ>o5C7TY5~-H>1W{|2yv*a(Xrh#v~~IquNN%MF*} zh489#@p{NPIG6(hIH8an_J}in%8$n-b9+`sgK*vJzV2Bs72V7m|91dRh)4X4UvWBi zszpJN>@JQMQnyMemj0fi=ZKs$s`l=O1WHayMnP5p7z)A zg>XyH*cZTxG9<_Su3wEuNi{WV)rn*bLa7jI7(+t^!uS2Hzp=i*M}+;<U#8ln8WC*n_pq+!v#RLc>^9IL zlYuL`a)qA0DEx=t^x`ZQ(wXW%<DrX6Z7G;h&Cg|ICJI6+-b7NE6 z&`>H@Ho}Mfn>QytVIrYL;fUXf#}aLs1xEz~`E99J&&~~`j+vKfOT>Hpmc=+Ra}NM# z;$t*5H5}D2G!$#~aU|nUA0sD%XlSVAs7zB6@n`*{{Q#^8@AGTsQ}YrX3-U4bWU~6( zboDePV-RwSIui3zI(|KLR%ZFY2~l{=u;e3C0j$8ivLKUciM#GM3Sq;l z*LGQGE0x;2yMN89jVY@NQA;WlX!<~{ZPE!XI9?sBiN?fnJIcZ;9+WyM`WntUS(Cr& z%G7jSWyMNz!Ep<=rUN*vF1WH82`7jyTNOMYbxMYhNJZzYx;*2wh~jQ3hr_b~v@NN_ zCsWQyHx&y{iasdyu^QBCGk1RzK-e+Pl94M-vPb&tKSzGOY}I*cmFKOxyzl(kKP0!D zK11X{Z#N2h2Dhy^hAwuQa!QSbh2op!3gyKL1tRcbmrgM~z>%h?F)v7hV(a1qYij&h}befgX` zau!F@&XaZEUGZdnMx1ok;zS0Cf>h8~RxAv?9{kT#26)-^QjVT{%sQ2*c75VSYrBEB z6O?PUFPs?-^4b8IT#w2RHoY>=&gl5>uud-O8%W10)+lj$B zkr?QURdw-(|C$ZpnrGRTD_lck%m{5KG_mHXiL_I(@RT()++%)sRTMOEO(C}pUw3s> z<;W&G6w>hXu^BWKmg<^dM^Pa$@4RQGB;A0X?`g`t;A$L_FJnfflT%2hFaotx8 zOFdE7md1z~f>PIT->cbBcSL>Al-bl3^_28{DUPY10B}*@AHp}IfuU`08=4y_#7Fx= zW`IbH*27JG@5l`eMB!P_Os=1}nswxx$@Oq1&X<~UrKP$yhzB}sZki)#Xeq7RQrc7q zmwYk4noL~HCIECD;dMuyj-rMk+M4xU?_dzB>wCkz!rQJY-7usKf8ooayf`s?&+WMD zP!YZzJ{ngFL8d3yt}a%!=v%8#%$c)o-BnRfPZYlDk8EDtGk;2d;4obm!YAS#xhOM` zYiUWwZhq5MtEq1qSa)4?qf-Ab9*^JskP8O^(A81C8GaBx8JBZW!$4m{t17EUQd1aH zO(HdCPH^2NH$+=im*^G0=cV9VQ(#Z+5p^9F&ih_C9hVEGRBlUA-*(d7jCObMOP;#uf{jS!|`w~mk4^cY)fS|jK;`QL5q4eykk>oXsb$D zFZ+V$XLkx`_6fT>l5_Dt!+q{4Z7U^8J=gRNm4Z~V+cC=ZTy@#Iw&Zd*+)z-2ulWQ2 zykDd87Oh&r{eIss#*W&)sZc8)Z`GD{!BH6OT6x-onJ>lti<2$#Ie}LTbfOA%k`z62NV{uX4s!zw3#@*H>Vbe?g&R3T& z_2T(kNsyIXW;hIy5&cFfckWFlyPEr~m)} zC3HntbYx+4WjbwdWNBu305UK!G%YYPEiyM$GB7$YI65^pD=;uRFfh}7r8fWo002ov JPDHLkV1l{hjG+Jk literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/1.png b/data/vita/romfs/skins/big/buttons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..18a85f03fb29cc64ffc609e195ae9487fe5aaec1 GIT binary patch literal 2611 zcmV-33e5G1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 VFfh}7r8fWo002ovPDHLkV1iSb->m=u literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/10.png b/data/vita/romfs/skins/big/buttons/10.png new file mode 100644 index 0000000000000000000000000000000000000000..1f44b2c48659433c1a7e12d99e40cc469c8dc475 GIT binary patch literal 1732 zcmV;#20QtQP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh0}BZT9j4`9J^%m(%t=H+RA}Dq*G-IFWf=$X-+Rxw z_fGFjXYR~ETfuhPDj>835eX(5Oo${T1V19ixY3m{7?eOeaiI%01{0=*1QTOi7&j!;oZH)(e$KRlF6O_uHz((L-sk`PpO146 zYgoe?*06>({Erbnjv&JnVp%Z+Vip^*9Y#7Mw6H^3}p0{B4yA42wY_^u-MZmUtd9(aOY{%_a(kByI@zhi}FQ zLVrY1vR+k}qMKD@=DlVTe%AU$vQhOG|%yn^9WKERozlVsm*q(3Tn=1 zp`zOi12%>$6Bs7g6u;;Dwi6ZgSf{MGgh1WAx?20Hpk$r0ib7kIUOQ}6l$mnET$^B* z84CJcsRwq+dcs3~9KH~X1YK^>E4jd`q+67At_y8)v0e8&R29^Wo6u+r6%-+H<7Ej9 zlejZJ;p?jTQB{M=9g&y!Kv<%PPWV2z+o~jU#+X^LQ>R2p6oSen2@H$kM&I$na7#o% zk3l`1uvhEbobdU&k2|Tk%&(;;&~*F~1cs@E2jk=J52Yw58`QUoeU;~ahasgUbze?9 zQ_oFjE+FufR)}|cEPOlkM^UP3K-a2*Cx+aiUr_U*i3@Vi(R3DJE{-iDu!{}FZ+Xm) zT=;H-dM>K&mBUwkrd{_bW9rI+#zmHA)euL`#d8Fn(r5NQKlM;3MwAWcZ_n{cc2yKr zY;lVL)Qp?bXGqy`^k3_+t1~xGRcEs;bI@C|ogo?EIH(bel~Q znQ13vwkTVW<^$J3z`PG-LeoE!#YRpbQQ2<9T~WaeJ|&o0GTE0$kVsT)bdya=qO&HP zQnx|Hd(PUfwJiJ0hYmR{@SfMA=cN2Zmc$>0`=X*-ZPTS`@S=rtDI|LJ>enSf-K23f zQP2`~smh$`1P|sN@vg;O)mO8(0#aHGc`z#Yv|A;D+YGF#`7#TpO`4ajkNjSkuK;e%+#v~BuL8*|8MQ4pu&3-&G? zEoRTPEz=PT$w_O|@cNJSj~<(MiXg@^7Pg?&9lynf*B|q@L?ors%evL|^Bq z>wi;iscULF=#W!+?q}i)@p*5b{~}mQ;AXlmnAqz>)4NW4$1#hL#eW%z`@-VLMV4vc zlakmTrRzst#D)(Xc1k8N7hmwqP4DdY`%BoTC<-M1l~06x)h;+{)B=L|roG{1vrk>d zBVF09UnzpjNrz43b)Snb8_5n{SodWFg4n`}R_|(Zm&JqjcsZNx_46zEr5M+uwq$Ex zTkb6r?c8zJi}n=XYR0`+@k=AKX7wzdd%eCUG)*~bTn#}yU~kxG`so#TrjfaD#3!20 zs;+1OFGVKPaLSmIx$w-#m%_6{2adX0?rj3Z>2Sc8GViZCeBGQm(-zt<+_B{!e(RMu z^Z1I-NTalty`dS?QKQ$UKM3`B$cujG#K`LW*v)9qyW1@a(lH2fq$SO3Go?8!2Y7nKc@%5TCz>&}&%3 z8rHCeHT<98KSK5{%cg5205UK#GA%GOEio}vFgZFf zGCDLjD=;uRFfeM_nWz8&03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOGA%MUR5CC+FgQ9j aI4dwPIxsMULf&cs0000}2AiJGdSF8W*U z=ETQEU(1m$^8f%jhmXE7N*Cq{bar*JLE0mLC~s#35aETi0RX(FhcZkOSH%+*uU(!= zgoIAUg&Gt(f%|hylv`|Vto4o5jRG}Zhb57Q04<}-8NVH0|Jr1czo6~P2=@yKlPOw9Mf#@W;gPm9@ncK4?nm)ktbh;H5x^_@LT!2@ZJ3<{@r&IMk1$^=S$k|6XZ zHj{0#GEYkkLB4l8FQy~i+hA7tKz#Yj?<&axi$%j`eE{>qZdM^?HFr{%3C9hU2VeHu z$OLUN0I2r1daa`lzgc8Z?@o0NxYO*^!TV&hgZb3lNX!=XT4)>E*cn3HeiYfdY43eK zQJ|cACp3M&fFD~Cq zT+Y~~d8;!I_S?;x4*24O#MSm0SXvAESCm+Qd7!f`1OJ$`q|Ma^qt^G&P>?~+4SrDE z(%aWpDY4h5KO;8+_FhEqv7T-F_zr(?za|-xc=Hn^b<(=fu{TXQ^U=t8ovkQ8=A5vQ zmDyw4Xq&yUQ{p(|{6~zTnZ!X%q9?sXoPF8`?6tJSVH?W4xkG#U$XK|tgy_k-)HX%U zk6&ZAI_Ee3yv{vG93~9ods~U6%4+BErgT(1N+XjIbqlol(kUTSzw#;}w&+%W^K;*f zahljHm!*gdqgs>5+CfJ5QPlasiYZ5p_fMMJiA|^Ou3xn~tjK(08z!a%stoORZHvb~ zWYaztyw$#fG^y$WOI6e#yW;-b3GV9o<7^! z^jQJztd>Ug&?9Bop^?rLsJP%sWkS^IDm>Bg{6uBrx)%OaCXp5%9;caM0F_P3jVzQd zi+gQSmiq>K)^1&<#mC}sQjSodjaK^SJJqkB?HU_|rlcb_3weg=d&j1|tri-j?~rIR z7uj7*DQ$2pR#pr+ZMYw+!lL0?wAifPRnPUBa#lA#(o3GaGaZdWWJiov090*RlJbkQ zlK48m45-rbkKyibc<{=*9DQXESV!8NjtQ)$k1w#yvAPpqjSuqMZA#ROZ^|L+mnD`n zOdIZ}q>O)rzVHV4wF<=7#57vJWH}KrBoGeTSqo~YxI<0k5uRLUOgcZ_c+58JAtNoA zn3wY=j&TB02T|}Q%2?RHC;85DuL7xwU|xd1(|b^J9?!=o-k&j-rUt-K_`%>umQQf4 zu<|oJ4gy8YG6lCg)UjBj*7XR}>rR?95rw21+s|57gp>0(c`#QdFkc? z$?DH=r>i?mOZ__x+wvGMo!=Mv^=MGjU(68imfvE_3?JS{wkJA=9@b`Ei>cHC$FTyR zC%vEuCVJsj=G)jY&qI8VE83iYUW9D7c~Z>n)awTVE@%QX5 zl6j7qBl+2^w7)qU!@hV0F(2(rhdtO572(eimh_lk{+q(6e4vdRSN;7^d+UANzSrg+_|cSM>JuFTT> z4C3|&1Vb&!t;jb`Ll1jSD(%(9T2=`?R?IlIuE;$oU=?l;_(is`Jogv7LYno`Zc}p= zF#yKuR^`8x6p8rA9lJlbYlc{FIU*?lQ3gH~;x4p_x3^ctrtk39*Aq9n-6HlN-lp+? zoa}c0`CihO(yzn|#tj#0S%*)L+-W5CSBP7?u71d*w+goIYoh=hn?Y2V|+E{q9%7qdirYrki@HjQKP>N|pe%aZ_Dy)8WzM~t0? zA91LN${mVc#C;&vz#ypVekS@h@|)B%AAv=RHm92R*2RZPBli1B#PHC> zMX#238_BU_Q#NYD#^WzlaUGo1V8iI5h6K&^YRp`S*&ct&ZtTmk; zu2OR3?<4EmLVn&(zL;%beu<~u}Bre zQ!HKlS2fh^n;P6I9g;TB#JGdP82%gVluYq!&Cc3?Z2-ulMbJxLzj+W=g~iF~Cd5 zPU_NcPo;MK=s`Ju-ymOnJIpo~ltJWcUvIcf665Dc9{ymQFys|R0yAv2>`j=}ejH|y zaXVNNHg2u6bp2>}5f{{JpeqZ7soJ+4n;FKK6n8a>DW=7es>I&+zJJJ4LytG8)_hg? z!jf4|VUnvPv!V2SCTr=TYY>l+fHHN4Bn~1XUt>p`CEoU9ZH(Oixwp1 z_R%BF?xirI*8|RrriwIu@dojEL8auKBs{QZ8zIf&s#h&k45oBc5i!m*-b1bQRtCG@ zNtw-Gt|7Tuc#e8hyk?8`O_>bQsMBraGFNNMi}b8SsvKc1Is# z@*`%Ad1pgRAAaMGTnx~B4i{rlLTlGCeJg0t&Tkrir z@VqN?c27%)bzPw`izVr0yVM~1@f*9iTq~;2f7w7(T#-X1Fa=n$sBGc!&@1>(+`Th}6 zf$L+`<}|1x!{jJ$a<^aKfSR&bg1UP1=$rVEzpEQ}N}c(fw~j@NlYW-sY_+aEExFE1 z7miLnQ3&1~J@ZGkwKfB%o$v42LZr7h5i<;gwqzws9z+|j`4@lz28^Hd0jZ5#E;xnk z!;I5du9a!Y@9!zjB%^ltPhQIiN=Yuu@x4EMM&_+RKu4b4-b{ZR_s7pKcIDb&N@@}z z>P~8-%?DfXHhdyeJeppW{=q`7Hx(&u-Zc6GS%e3+R5N+x0l}-CQDT^^Yhh)3A)-9H zJ_Il0_)2hkgDtX6!=hf1Ja2^Z@*2~`_wEwcm8wqBb#J!ou}w9ai_Ks%%45|zcpf?K zh$S1hK1+!v58Mg&8y+PQv!-R>9YPS`$l#_Qr+rN!DU8%ryvqt>Z`3^vAU(Vfs^AR2 zR~=Z+j8*xbM(_^f35)tE{Kd?@ABd&z{AqwOQ@0juI>VQ3OuN$h@P%m}O#dFC-XylO z5AhRZ*(h#0u`1&-xw40!6-_%|LT+`&OU~%p_IB`2_vkPI_{+xA7cxHym5Ut;MVF9D z4KO;Cy$%WP0Wuo^t0Sv)$awCgvSZJ#JW?;84}^UpW@;-cDj(H^zK*KJo{cW3*>(|F z_M)e|-B+W70N-(zK+ZUkhB7^cTg61$epjU69KE9(JxO*~%%xF3GU?dn$$cGpBIk}l zx7IwHXt5uZeEzn+t_}k$@BF7LPunkq-%aGx>{s4Zs3-MK#f=DWDjR&8O9!+`g)I0I zefq3?fNy^%uhhd*+u$ydNAvavAu6?t_lj z*$I_^0L4cHi68p-+bli|oU#UM^b!0toe~%a!zjvdZAjhMvMReRcAm)k^R7S=#b`=2 zzvexcckmssSB?+<$fX&wea7i9@i1=pe&-2dj4mFdSWtJd_o%9CZaD7YbwGo+m$6J) zeK94Tj|-7==XB9(2(q(XBUNhc$~G6&v!*|CVe|H^EVCume6|Wl&zSx}1*A)xaMiOe zYy=pId?CMLV)lczkC^z|8`57Fr*4&{bX+SGG#1Q+j>c~*u6%=vp3{@eIqIj`3H{)m%&Y+nqtr({bNm44I2fcE2j8Vh&1mnhtFb z;f?8yF9w5E6%tvi`@R8$xLO|yrEj+r7xN%YQU|jAG)8es^mG^ z*ZIo5Aqv=DD@WUYH?@RgAU7vxH^%8vRQYybOWir#V*IM%`8cb}$w*UA;8sLy&CHVA zN{ONd^$Z&++d2MdXrco!{|Bdwf*>Zt*B;PG+b3^P{-TqpMN6L=|C$r!ZzDPD2Af`; z<1RJg8ujsh2(^{G$sGUbbQ1eUw*3Q~uVyC=Dix+5o%NI^UM z<8r3x?e%>2%Hkxm2zw0r#Neq`f>yp)(GE3$mLVM)6E?{G&rtl#&3T^PR&ECs1(u~$ z%12gV$jhO)zDc&x0h!D z0E{rCf`X2kg2KP{C(zAg`6o!L_Q)~ySv+hkNFlW$cX_Xq%^&ql{0Yr79kwroRg&pu z=WI}wk+@6+9(*jm&2Q$amZ9B$4@(BjD#Bsi7cxv zr={mn$nNm^dt^KQ8)!f2-S#pStvo1(Ul{`Q18A&pXL#smTSvYi?+wU^8 z+JZezzM2H=`tcFNPLIEX`8;#QkM*wB3O2qpmXXh( zMH$vuZsCNf=@x#JBNp9+faVmIpl47pw}L3bi10HpEn(LMgTEf>w@w@%!}j^i3vqvd z&=-RrxZ>j2%FmM9*AIUFJf8n0J+`%jciQRdA%PLoBGLOr#+n+Ea3=>rn6;A? zLeR^>8LbQeKuXrj83wmQpnz5gTco2j`%Y^oI}m9t&2A*33D$I0Ks-jO`nV$We6;l8 zK6Y>kYj#-~LMbmvG=KvF1p|6H*gLvOdP%eY#+5|h-xPz`fxk^qcGB#|nmRxQCszaz zDhL$>3n+OZJ%re02!T?r);5y5ipqaNpnplTKSrUPB|#uhPftNlVL>NXTM$G-LIMO9 z0tpETpe+R4yd6<6F9An4jvI(SFccAPa96aPkxq`l8%&s$lRHY9ogG~d{8xMq&YGHk z!8^MB$pV@WkQdAu1Q7&-92`J@_i#fgd7wf54CsILaMMR`yMc5OZcgs5aDX_6P^GsT;ag$bU4cqNb_ym&XkSwnzu(-(G04|HBf6wD~t# z{}J0w&F^&n9thg~FWmpI{#Wk5jnP(`nv#l6aQB<=)D)%JZ`zl%c7h|VC4b*qK_J#} zs0361E(Em}fI=W}0T=>`5U_$mpu*M?2q94fRO$_DKq&8~rTbocsqg+9^&p@)Lqun7@`iU~u-#Ka(AsDvowkC=bs z86sTW&`P|)gn$KwpugR3x|^X=oD3?8`{GAM)7}YUJv2&$FDzzfIaee6%hDawvsUTAC0)dJP_8u8$$d2Q3Zbt zbF@XE$M>It`d2yff9Wi!kc5PgFw{x_E^37kfFeX-0^%YzFaektL|9B%NL&bN^#^T# zp}RTRpgdu&hhpvC<`mY%HuZ;gu*FSXqR}B1D#{a16{~KL||9;^?IHI3|JkhT+1R=onVyWjNv$p|Rf$BJ zsZ0ssk%NHF9fI8ikkEI$$C=6i{C3*}f2kx_R_zIQpDp}PP)%%ShA!eD%Aj0~Qot#; zoJa3A3E&nW2g?h45hut15IEsJceO}>HpJSs1y}%d-o2_KScC-CpdL;1pLKL&Q!kzX z*5Bc?w70MO_{O=bQ32%;nM(MXbE^Y5mcEqf zkt?|@oD}Nvt{!+x`5xOZ!GkIV=D(8k1Z|SW zSr_oIXJ{PH-7UMlNNz;0lPoMn{7FSwZgO*Ec-YFrqiKYR)J;w0Xwj-J>VBFa1_1R) zrONPb;)ysV$*vR`5fRb*HCOauY;3%%u&8pc>+({nxTFL|k4xOsb$AF}-`J2Pr2>X6 zejh9Ghs-x^D|iN}$ODR~k9@8|zvD5L6ZEd^CFsWXSp{b;8dKyUGe1>a``a4TOkA0n zCvtL9K2@c}XH(^*l);Ey$(yo|P_XWpuw?i&e2l&+$btFX=yVBLYpZ7|N zk2nVxC>+`AyK==p;eMq)QqLb%5T(zDqh3ZfSl|(o^>-9wl_60o;_NoW&Kn`bKrU}dkNc$2l+z2H2s4{WYQo?ea8StFgoV+tbxu%Y z3{7?E#OBrBCkJsS3VqxWo zB&U4s7{A)HNED9Amom^HlB`SkXyUWIsJB4oCd>n8m?71xBxz)Wtk9~S|D~BANAAdl zR&1~cF;<2K*KR9}{u@dXeI$rFWfs?nw5{GR8V&xKL>^*QM}N$An-;(s8#Lx8`pz*g z`F!cgCtYfs5TM)x>f}KLpzHX!2?WFC%+|u=e2ca5R@kb0QA9JefF~f4W`N?H_I``v z1L7nPNjU)9s-8@5uN7qBL#?&Vq!2OI2W!d@ATU8SPq!?HJjAE{XQ*wUa0ao5r{~2n z6E<3?tF98sgKGe<_4~>xbNrlqkZRdkmJ3>74jg3vbDkpm`#?}!1 z`ue)_=2w9%aTlvn!?0QcsojxN5|a)Vo4w1kgV){%T*FxsRBHOkT-1a(g=61?Ijw~l z&~m23(Kk>MOuNN%2CmgD3%e!eXzA!!t?iq^5at>=;)PiV)7@w<;~!KoDNe@a?6uD} z@(!^0#VA7 z1bX$mD2Hq?vovh;P>PC)VRY57_i&F}@F$O&m@b3YiclEEhpw|G^U2g51 zumYaEWOmwUn4R67Jc6+J;7m&s+WM)j4j;^|DK?T*8M&b9&75MSwvQ}jF$Uh}5a%JZ zsC3Jyr?)+u-ONPSgc=kI=r^*oP zD$H31Yw_V$_ARN$FN^`Zjn$ji&o~$T4d0j<@)RuqPDwgzIMsM)qZKy2zly>+(~F-z zX=HScVLI)kkPk4bG8`g%BJ|}kG|NozgbvUE2zV)Ax$bTq$nFh7@~AbEMd-M7}^ z7JB+cAF(Tz-ri@br0UEc*m%dFE*rzlC`o4H)bPH(zJ#He>pN86l!&GLPRR>+aHow~ zNif35rMz|*Rkb4g$+5wK&dL4OWZ?joJoL2IFY)8GpZ?v;NvbZRFnjU31;ekU`CD~B z^dm%NRTW#>AP#<%dYG|rDs#=ZUGtCuGxY+;p#730%&K;Rb}s@>z<64|%&CcR@= sf`Jk3>sz?004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh0}BZT9j4`9J^%m*cu7P-RA}DK*~@QScNGWl&+pD1 z&x{|59oI^U-PUc>RA~_`p$Li6B7_8s02?Z?g$)u5Hf&h3;V)o;#0n}_NC;6_5NHvo z>I<46C~b(6v}qo7;yAJ6dEWbDaqo=BiJgq?rsa6$nS0Ood(Q7Xf5XQtVP}tjK~jwq z>gvXB`KqI(6>jF;m+l3Dr(wqDJ?sIGx!)(uh@13WbI~QIyyuL+y2gtmX--F``h*|* zqWy6@%2OVM5MB3YKl1O<)Q(QztB%D$E|Cbgxh{%wxg?kl$GrUE6PS)6n6%)a88uVV z0g0$*RogX}owp{2Fg>c;(Fq{;nD3Y{E)^sa5kW2&^)#*dnKyP6**hQ*WP*l+#$ft~9@(}1d+k2BW0}4^1sv_vP=(>RR z!zU*fMR$P?5w(|>PwDUR1;;ol<;lu_@!6nShuXV9)9EWHXe?a{mGkW3j&Kw`MG0v z4#=osR#jB>tgm}Wy)48@X?+17bS!J$y)qp4oTalWO!HYku>Wq698^^#GUv1%v`<=2 zN9`f_p0?I)t!fL$H@xKBiu4hgaKu~@N?S{=C+fL@hKjB~y5U=nsEgX(@%#Y3WlaY` zW!nJj%7r;c;$I$-=0fVIl+=C=>1`*`v+kOrK}8;b$$F*g{w4qE$rU zXxwKx4K&OXBqqygXE^i%8V-q;v_%~^L=6?W*Yxm@+pHgRz=A2oq%iD*AhFLSL1aEO zNTbj&4^=5L?OTSes;Y4dloZ;aA(eT(d}g!t2RvX3J)K*0)l`K3ADQ49nRT%`_ z#w$^Vv~bhF3#(-;1jSIk+4??wOIFyrDUT|B0(GPMS^x|eQL^#DP%*XD5`kU zjN|@O_Ku25aWJWaMK|1(_(j}KZ0h#Il1K&xzMz*6zUgm_vD}z8o*FkXXkIqHOAGKz zGSyrrE7fHF?wV&z3=}5nQmnh~re+!KW7b7gwK6oh zmx?spoGT^dX;&T99>7=8biwifeq38yR5Om2sN;%YK|>WSIdX407 z`(+jA!?y;8w9qKMP*CW5p<4!ZA3jl38U^47q=9ws+fPpyiN+=`72MZ{;KwwywGoU_ z_6S>gA>Cqc>h=k|Z#_t&*mRyKv#O)N>1}L(aT9#4v_1-ICQTX>L@g~1HA)KayE&v` zLtodbtnl&q*o@M^s#D?1QD)8gEf(zPhLsY&Zd|jpzGlV*YL-jO!yp{nmUK;RF_Cqx z^<(W+SS1bePB>K@$#vJa%>AN21U2JYW!b4YVBVzQCYH5Ct&&1P=c;SAmhuQr#ZDqU zW0AKkg}J=!bKA+7am_);n=x++Oqds4(G@jCeNVP40)?H2JykZBm%YxW z@pE+9^&L^}ZL8+YS@rf{D*A{#P{@koW^mlf9&X9@cu)8u-u<{PDv92-mkX*r5D4W? zl$HPO_}8z!5~!)lhnh~ZYZ5yq(2|uK-tE%Wx%UK`E}AM=%zh5%dNP?+H}5rpt`%#l zQfavxQ^Z0~Pgk!$?c4(b-C|Ac=xSo~4|n}ST$JW0bVpS?LOX_O+Tp0NFcvC(sCdh~ ztDx0!C7kqA=T}D3JYwK3N<(kKqaO1apYo82@;;+4nVy@@Iq4OroKDa8;@J05UK# zGA%GOEio}vFgZFfGCDLjD=;uRFfeM_nWz8&03~!qSaf7zbY(hiZ)9m^c>ppnF*GeO mGA%MUR5CC+FgQ9jHY+eNIxsNPeWf=50000004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh0}BZT9j4`9J^%m*dr3q=RA}DC+0AcUXB7tU-+Skd zJu|lBI3H~jC#}<_X_KNkDMg4sf(2rUgjljdV!;Bj00|bXP!|+b zf%>INv=T(%grqcS(>QS)$M%e8=H8dZy)zy=b~Coq@XluJnR}k+e4qCW|K}67_w^a7 z#?;h|Z1||HrDa*?;wM312Bv(`F-JY>0f$V9>*U<NFVs`>|YJo!M2Rx4j zSGHTx?~Vl;o-u9OGa9?Fz%B?Jcfg!E2OQr8fgNT6!6m;h-?avU@tzO}g6PIT9q9e< z9uO!%sxo=se^H{USCF=MhKhk1#vOy)lD43#Ch1pzL`_xDa!X!3a?JS5Py{MN!SC@y z-%};($kbFN5}AmkEYB-0yQYJ{aU7j&p%ySNJVZq!Zz7ZR}2S(iIh&no2 zsHvjqk~ynuak1hL&TnDiXx=OSez71h!-QXY@#EqlqAKW!f>8%eYlyn^wJ+dZS=24*{g95GSG!JrL-QF~l1s^)a4lSZL#8l~~GfmG_HU24KnT<^ndn9UsQ)@I6DYXHq*0Lip zMH;p!$J3rw^Irs+R%wL?1=n=Ta2&IWQLR$@QB$VZX`icm+T&hzbu*Akkl=nP$$$kC zr+m{BDt+czsn5766H>j&c*2BESpi3lnOvuRp>x$|e9PngyF{gTrAggibi;LtU&QU0 z#(+D5!8te?Xv4*|ES47Swc{waz7#i%3F~eW3JOwOk*Ve~St%y-wgt}(kV@24(6nGl zy9~FQilCv}&xj?fMx|<2<>jD~`;S*#5ETZ`WJS}?Tq)9UeXfAqzb!Z>x7P2Aj(5GE z>l12HB%)g-g?Uwnji_Q(j#Y0sYhkn26t#;qTxn7#K02=IgJ@|lBgOb9E zD>!7dPhr8Er7e1<&wBBZTPj>|wYX<>OBbZ;3{p`owO{LaYud-sm1`85uF$tar&OT_ zU$~&W)^%Mi(s0FPlWPR(>#S68-%NXg<2Wa7pzu-O3b*&yAny^lY$Zsd*mSA5<1gu0 z-^Yu;RyNh1lg>C(v~{V5iL#fhxZ*>tO(%hl<#LpBDK?`taLa7?a+F!r-QsQW-Qe%R}z7<-=HwnGAcOK!Spvs3hkutEEmoYoLb zdC9Mxm6wiKEW@!=2J!8ubir(FCn^i3nDjyzi?S_V#i%_x0DsC$p42F_V4rD=J`hz@ zB)al4+BbhifjPej=P#D>-u8~?w;m#+P!`)Y_|qEwiZ|wz6mQC9~kAL3@TU~;+r+I^=+PGlbP{nGaZ zd?-hjM51c1LuOr*NPhR>4@Pg@8GgvS;d>tYsQxa|LC5;W?-kgBOePrhfXO0VFPvT) z27U(%ibCh^Kz;93w>XSHZ#%o#k}dac!V--gZ^?GCq24hpzS~O`vO0Fd;2Fe{phMxy+))+kQv5s{|^}`MC!jaln|7 zf!~Zemdv~4f{VlSw;d7aM8UFm{X<2fzHWMMTT)mh1N5Z4wbMbU|$XL10=$%a0a(pkm>y0=Y&Zn1#jfHKd@6*)n zjrDNAjDrI~Fy~^t7Md0`|FS)i|L^lZhVm|GeS1x@0000bbVXQnWMOn=I%9HWVRU5x zGB7eSEif}JF)>syIXW;hIy5&cFfckWFlyPEr~m)}C3HntbYx+4WjbwdWNBu305UK! pG%YYPEiyM$GB7$YI65^pD=;uRFfh}7r8fWo002ovPDHLkV1oW^2b%x@ literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/13.png b/data/vita/romfs/skins/big/buttons/13.png new file mode 100644 index 0000000000000000000000000000000000000000..45b612df3d0c0d1f1cc78567080febd766319992 GIT binary patch literal 2167 zcmV--2#EKIP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/14.png b/data/vita/romfs/skins/big/buttons/14.png new file mode 100644 index 0000000000000000000000000000000000000000..6aecd8410ab4feb313248bc3422f9feff38ebb1b GIT binary patch literal 2152 zcmV-u2$%PXP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/3.png b/data/vita/romfs/skins/big/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8041cacaca58d7ac86dfd07e1ca1dcfb65f5accc GIT binary patch literal 2444 zcmV;733K*|P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh0}BZT9j4`9J^%m+lu1NERA}Dq*x zHQo+6yNB5&z+r`CuhX9LbB@FXjcqfdUbyWI&w9rBVkPr~|2u%g;*!t#b&to^a8eK? zo0Fqb6vd&+8~)8#{EL;{_~EVqZLuDn@;mWKO@f+CCX;L#SIXsbgCWLx_=dlZ&xN~2 z#*P4OWk?SBUB40cld7v%rW45+La7idjK01C;cb8GZ!GT|5n(6u_>@16pOz*XnleGE zX+~Xb#0wi{JGx3yuB)e{2><90eSar}bXvz@wNQTE)A3A5YUa&IH7&W{l0`FW(#j8s zRNb6;3+5$C)MZLBiO0eTulr%k%Ds7@4ZrBG;sZg`j8t7qOTGHNg{T}Ep9s>*Cp|Z< z$Q3%eqVOMn+qr38NT-_rv_Fpz2D4^m797-)8tCiG6`OHCY^72mSDPeA{?eG!*>eem+_6YZT zI({Z-nv*%;K8fB&Yzrg%e{>Z$Forv#ZeG-ti3;%}VUKUMdMkGaXbUx8j=v=|%*pJx z4_yOs#Po*LB+9XGHy}!xS-GB?LJ>R^-gUMWS9S(CEDE3XC+0KrGE43kbPcw}Ys8W# z9d=!JOK+&o#=2R3eW_eo3lIB_H@8N@7J!zpI*{`OrFHSHYwH-(Buyz#<;|Nh-U( zx;o-7`Pr@G#sJ#FKEG)uH6zh7C!cD5)@gHK&S|q#5pwfd5;Ia-z7SgNX#j^se#R$< z=UCld^v8~yQGg?kRz{%XwDf; z+;9U;XUt9X0l8e$qM#uWmpnNhcjGaz$Ip{Vr52g${@}PnqJifU* z@C#bg0Un8m$t0TUimC43cEs)aWj>}-e~}{7KSbhQvjlxGg?^n zqCvGl!N7}F(Q-y@;=DL?|8T~F*~tLgmON}z({@Y{z3iQl-ryZCi-Kd?+t9bg(byNs zj=fu?>9hsha85o3kUQrF7M#}HLBn?KqX1E9^LYKyr_H~QI)cJ^*S0CT=DY$&9Gx(8 z?6Vy09tBvpLTQ+GZcjeuoH8T0>cWKUw{*c(!HiR*F;?{kd8HXE)+YmW+#U{z+W;ay zrY#yc>*fSk1~;8G5Vd`5iw}kXaRcC{wP_w$9)?mvK`f2r% zf2M9t%a{F~eyJl`v96{jh{EPme79{lt1h! zHHC21m*XqR&QG%yOT1yf$D^pGk6HEVt+zXb;q$#_M&X)UN_X@r!(aGnD6ec8z3p|p zVowoX3m=c|LXhdm%?=+{mFl~jPc$?PEW0J@=!nAC{E@XQ+s03*5A0>drSQpkUoOh@ zs>3%Ktp!dot#W-`&$8R1J45r|_NDm4<1Xz6U`0#$W_TxjDlX=tnx3wj<}j@u3CQt6 z1&LHcLvY(wcSP&MD$xbM=X`K>0`|lj(Tcso>)r~F$HhV^m0MR-Z{}>IM!Er#NYykn zqjqL;g;5)6L$s*lJ=d)%^{wk8 zyyT0%HN8?ewNALAC3!XeXE^G^rGZkS)Um3ouN0(`&5BX36V;vqjX7FbKc+k z+TztteEqK4cX__H3GoBrr+wZNamoCYgJ3P(@SJ~$-wjvAE4$KsZ~w9h8V>rnlaBg; z`H{{wS6y<>OP2L^Yy2JoHsrK7H5+kn705UK#GA%GOEio}vFgZFfGCDLjD=;uRFfeM_nWz8& z03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOGA%MUR5CC+FgQ9jHY+eNIxsNPeWf=50000< KMNUMnLSTY9grwX6 literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/4.png b/data/vita/romfs/skins/big/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..13faac003605db9b85206cc1426cbdf6a19760d5 GIT binary patch literal 2163 zcmV-(2#oiMP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/data/vita/romfs/skins/big/buttons/6.png b/data/vita/romfs/skins/big/buttons/6.png new file mode 100644 index 0000000000000000000000000000000000000000..744291f326f32873ca7f4820df96484ce015718d GIT binary patch literal 2152 zcmV-u2$%PXP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 JPDHLkV1lZfMxOux literal 0 HcmV?d00001 diff --git a/libcross2d b/libcross2d index 6d0388be..6855a536 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit 6d0388becf3ef0dbd4c48a94e75b729509360490 +Subproject commit 6855a53666f2bb61cf2949e94c34cc7b1ae005ad diff --git a/pfbneo/data/3ds/icon.png b/pfbneo/data/3ds/icon.png index b1670236320a9fef6219c39aa8ffd87feaa4bdb3..5da449278cfedb07e9f4aebc73843ea31c2ae92c 100644 GIT binary patch literal 16818 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 LYb#YMScUz6HhP)* literal 2718 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 iupLiepTM`8!2baG8u$}R!x{nr0000 color - color1 = [ 193, 18, 28, 255 ]; // HIGHLIGHT > outline_color - color2 = [ 0, 56, 123, 240 ]; // MESSAGEBOX > color - color3 = [ 193, 18, 28, 255 ]; // MESSAGEBOX > outline_color - color4 = [ 0, 56, 123, 240 ]; // STATUSBOX > color - color5 = [ 193, 18, 28, 255 ]; // STATUSBOX > outline_color - color6 = [ 34, 34, 34, 255 ]; // MAIN > color - color7 = [ 193, 18, 28, 255 ]; // MAIN > outline_color - color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color - color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color - color10 = [ 64, 64, 64, 255 ]; // MAIN > HELP > color - color11 = [ 193, 18, 28, 255 ]; // MAIN > HELP > outline_color - color12 = [ 0, 56, 123, 240 ]; // MAIN > ROM_LIST > color - color13 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > outline_color - color14 = [ 0, 56, 123, 240 ]; // MAIN > ROM_LIST > TITLE_TEXT > color - color15 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color - color16 = [ 200, 200, 200, 255 ]; // MAIN > ROM_LIST > TEXT > color - color17 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing - color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color - color19 = [ 0, 114, 67, 255 ]; // MAIN > ROM_IMAGE > color - color20 = [ 247, 186, 11, 255 ]; // MAIN > ROM_IMAGE > outline_color - color21 = [ 0, 56, 123, 240 ]; // MAIN > ROM_INFOS > color - color22 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > outline_color - color23 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color - color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color - color25 = [ 247, 186, 11, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color - color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color - color27 = [ 193, 18, 28, 255 ]; // MAIN > ROM_SYNOPSIS > color - color28 = [ 0, 56, 123, 240 ]; // MAIN > ROM_SYNOPSIS > outline_color - color29 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color - color30 = [ 0, 56, 123, 240 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color - color31 = [ 0, 56, 123, 240 ]; // OPTIONS_MENU > color - color32 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > outline_color - color33 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color - color34 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color - color35 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color - color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color - color37 = [ 0, 56, 123, 220 ]; // STATES_MENU > color - color38 = [ 193, 18, 28, 255 ]; // STATES_MENU > outline_color - color39 = [ 200, 200, 200, 255 ]; // STATES_MENU > TITLE_TEXT > color - color40 = [ 220, 0, 0, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color - color41 = [ 64, 64, 64, 255 ]; // STATES_MENU > STATES_ITEM > color - color42 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > outline_color - color43 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color - color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color - }; - MAIN : - { - ROM_LIST : - { - TEXT : - { - highlight_use_text_color = 0; - }; - }; - }; -}; diff --git a/pgen/data/3ds/romfs/skins/big/title.png b/pgen/data/3ds/romfs/skins/big/title.png deleted file mode 100644 index 3ea23a9a55489d9054bcde829c7c4ab35cea22eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2016 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 L8>p45*oFTOS=6u! delta 2676 zcmV-)3XAo!NS+mtBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ>9fa4t5Z6 z$WWauh)QwPDionYs1;guFuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JW zDYS_7;J6>}?mh0_0YbgZG^=X@&~)2OCE{WxyDA1=5ke3>h<~9^W|lE0NlA1ZU-$6w z^)AY@I-mP<^s70G0X~sv<=St#9>yHRpN8vag#1c{K$31<2TL)mj#{~ zHq)tj;xMsTXk(>~S<%#pr->t~rc=I<@mS@&#aSy?S@WL!g`u3jvdndwBS>HoOOPN! zK@}yGVIxYbPJfDp6z#`5_=jD;L@tF~B`|Uj(dX-`!gIsYx#>6bHIr9Oq*c z27Cc9mhX+o4I#Zd&Xls-t7b%8Jx z`!HsVYd{2W5W>H=d(Zcr^ZTCP@BEe{ym-;|_y&u}H-B9A3G5U2wiA%Q+;k7q)G>?_ z0IC|n=hFb;E5h#~ftp@qW%VkXrDZ&?5s3vsAR6hTxBCGCf!2>H=25E^SV_MB$@rcJ z31}^Mk3gxEV)oYS7^copJL00n;)Yc)i}hYko}2 zqFi2M_(>Si%9IMw&N~JQLi3FbK?wDs72J7iG;PQ(f z=1~NTU%%Mi#Lq2U;P8FtQ50=&FL5S2i)mI#XR|o2OKUj9$%%1JPK?tM3Q#KMnV+A- zb)DuM*L9otwvfw_LmP}Grs<2;n|RZ#kjc*Oy?+G?#U*sZz_M-pio&BOCebt%*L4vk zg|)RL^?IFhxlA`~SWDgN|Q8J`$u-PIXCX>sEnk8-(8p}0hM*O9#= z;CUW~QNXe+01~liQ~7j$6HgF{wX~ATWH9UXkGY+N+dW2YF!){8bmMWCpPJMhWX)x9TBEEdUa zWQn&W7#tWNnM_ivRRIVDf^>Ix6K!eTH7^>8H1R*L9Yjz;3LD3_4VJ!$jB70y!tz` zxuvhKANaH!6AH#S`zgwQB;iP$vuB?r6pY=`+Fuy~K@jNa8r}6@k^P)|;yEIpq5MY@ ziNrbg#B(UJf7e(~*XSK(;V)nTfyv1y@%sYXSyq%e^Y}Bgcl3YmRoXlHd4J;cGf3jL z2m5^iCMTb~2o4Bq+ch3m1*nuzPzxn(+$<-M|QKGMJ>@(f(DNa6FT9Gy6WriHor--{Fq>m(BW^!JbR z_S=8K=hJ9!A7JdhhskXunSY-C7XYK9r-;Q4@WBUfP^skU=onyd@Cfg{_bRq+GBh+n zI2`Bt^|x>wo1+t_5e1P;m;Q>Tg^9(w7#%x>B*~v`0mGl0X6D0p(DgEpeCKHf1`p#nHl@-AQzy=I_5HtLnmVt&{sM=OJb%XF!;kU$8^0%? zUn99T!_~p(0Nb%xUcSNL;C5#wiV__igA|MD&qttMuTiNK zFwLDc%HZG;`uoO7r55Pv8DVzzGMmK=sjZWYh7&w~`e)3|U%~TSVzF+Pmu|AUGDAyC zCm_(-ImD@xKjPNHRjSn@!^6j!m^j1I(hYRI%xkZ{z`ggLM1R{l6x*>V7BkGwzDrlv z@Gf1Yr+@mZ=l`!#qh8l37Si|>m1s0UysaCbPo+{R;P(d@9-buL)~HfK?)q1f^1zhmLqwH!=4OVCjb(g3m4Eh*epD^A?LwxhmUdM zk|bl+bppW%f*@j=IzFG)46~{lY`$}Po{OURv26=W20 iupLiepTM`8!2baG8u$}R!x{nr0000TyuUzo^< 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 E0}-zgcK`qY delta 2686 zcmV-^3W4>LTAme<8Gi-<00374`G)`i0fcEoLr_UWLm+T+Z)Rz1WdHyuk$sUpNW(xJ z#a~mURVxm55OK&*oh*n-anvdlp+cw?T6HkF^b49aBq=VAf@{ISkHxBki?gl{u7V)= z0pjN7r060g{x2!Ci1pyOAMfrx?%n}Hz05SLYXZ=8+e{_mVt*#PDh6H=LJ&QOp-*O( zF(*k$bR1vz@bUF7%CkD3`*ZZGIg0^4k$9FFrcJy-9NV-F&ilk+R+LrZbK-H6E=c^y zb;aX1&IOkRo*6dNsd?fsu~=whrHxt9)QG2vBdVrTzL4=)<-EmND_2?bp8SQOoW8Qm zb($kcU=d4@Ab&zZ6(y8mBTB1IiiH&I$2<6kUB5&wg=bb;{@U#SB#pQP7XTI2{A*aj}HTbi;5TgF$%J=5&( z2Uo0eoG%WEZ~y=R24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007 zbV*G`2jvV13ML^4IrGz#k0&R82zE(CK~!ko?U>nbT-6=NKX;qCcUF7GV>{mM1REQZ z!~_#3fmR?A5>=F@QY+NQRzmR7r>d{z59m`Ls#2+MttwTjcz}vkp>1diNdTouV{FHE zyo^1IXYp+J&RzR3W{hh<1aJ_-zqfnO_nh7%#%0Rn;6k16I+ zs})#DzW>Sio(BnNEq9MVsgz>&*6SFi&Sq&7-7o;qR29>**etD}sjY~j1c2*0=tcq4 zG8=fk-oR^qOv|ENUSs%w&>13;&b=pKSvqqI7pT_Ctf$jBuG<`|*G)>LGM$M8p6BkE zXBY-CShorT*yMs4IIxk8zj z|NbG>%{-@nVqr^vdD=57X04846!1I`K@j%J0v?uaAxVwPxmm7aS{Av@3U$-MbsZ|z zN@HPpdud6M5HbtsD~q(`lN_vMkvx;>4_pFqhkVjccS6RpEx@~@uzJTXq}OU_nuaKf zl&Uo@T>LkEeZAnp!omWTY7I$}2!$ifIhv*+<#M!L`6I!9a*^jFi#VGFetB)2n?j<2 zABv#YYI}bNve^s+gM-9dTUlI~XET>&esOUJrnk2bMNzglk)$Txwk_6+HbO<9sERxA z$<@`pCr~UF$!%nbwpJ;Q!QYi) z&M*wt){;B^ss13xk3B_uM?Z?9ZiUf0napjjU4L_b7yfImMt4dg-p{$S&k~Nrca8P+ z-^a+v6tBGcJF>Z@udg5Yv>X!(#yI;a%6}x`NSw20pCuHG-O<`#8392M=;<2W^i~Wu0wav2(j3KFXX@Z{5r|i8AMT{ zuW#%#-R~ackxQ5Uil&8$#kv?BJB1|4pKSrds8FdCn%`^d zb2yGoF1N<;@NqyOn^|V&!*|g2GLL-cX$A%l<2W{@(gsr}&U5wszhRm>uf6^PhmSme z#^J+{@%kITC!b#I7^ zBR{58+F)+>%9nGYxw*^a3v2lO8ihiN_VxipQ6dnCZ1o3O-hAT^jE$VabsS7nClZMh z3b$Zcb+ka3-kwojdF8iU|Ib@=b`Al5@bXK)VR`8Wet!Vlu~=Td!QkL_XC{gg9UX%d zi|NltpkA+0sT45Hoi)nf;1T-!#!00X=;;|@cJ?xx#SE#flZ=KFJbwCT%*|iH^IT%F zZkCsBvbr)uOG_sp(Ahb}sgpnA*1}b))gr^g$C;Qo!_v|XbiK@LufD*&_nt(5+d356 zu_zWZ%+9_`SJ&_^U8Sdg`m5*vuTrC4*C`g#_!O0BG(o(r8=p_5QYql~2N)inB;M9T zFw{aiy@;xX2!~^+{t%r9hKNQw5G9$>(Uasik~p@-u?NqgC_b{;6-uQnM~|K%5QvaU z&10Gdng3DY$2T$f0Hv<(4~N;%KLL&xaqIpHR|<9QyAW8?P+5G4s+uONyNf&f0BM%}35c^;NkM-(MQNy4^F{A!T8QAJgQcz{{2 z;a7vWu8Ys-M-W5|y@IUxs2eqcp+@s>nmUT2QZD6Cd@7#jA_xMq?89|`T_j1SUaz6Z zKG@Ph2AG+7msqTen>R1g(J_SU+Bl9wZ|}WKPhaBr)KmDS086*8V;B{p(RTU=#<_Ow z0tXL1z}i~lqIY%(A16N?={l4KOcPfJS&?d=2j{ed0kmL!>h zfx|d<<3*!VDKt-B*eV|kqe`)`y;nFK$F}Q8lFa62hK-G7d_I+b_Ktp3Ewt@Irm5q( zE`lh62af9?2m+EMW7c&7!3csNVwyTWpVkbssv2y*b9$bOqWH0G3jqO1ma%PXYrNrR zet!^A5D_J*L0*(`J%?bhL8Mk|Jo?&}iO;9vx(>49!*g9kNyfHJBw0oj8=ah@`1ebR seFFOg_6h70*e9?ZPhg+Gx0=BJ0QnmD6H3Dx0ssI207*qoM6N<$f&vdAg8%>k diff --git a/psnes/data/3ds/romfs/skins/big/config.cfg.override b/psnes/data/3ds/romfs/skins/big/config.cfg.override deleted file mode 100644 index 9f7fb1d5..00000000 --- a/psnes/data/3ds/romfs/skins/big/config.cfg.override +++ /dev/null @@ -1,61 +0,0 @@ -SKIN_CONFIG : -{ - COLORS : - { - color0 = [ 0, 114, 67, 255 ]; // HIGHLIGHT > color - color1 = [ 247, 186, 11, 255 ]; // HIGHLIGHT > outline_color - color2 = [ 0, 56, 123, 240 ]; // MESSAGEBOX > color - color3 = [ 193, 18, 28, 255 ]; // MESSAGEBOX > outline_color - color4 = [ 0, 56, 123, 240 ]; // STATUSBOX > color - color5 = [ 193, 18, 28, 255 ]; // STATUSBOX > outline_color - color6 = [ 178, 180, 178, 255 ]; // MAIN > color - color7 = [ 193, 18, 28, 255 ]; // MAIN > outline_color - color8 = [ 255, 255, 255, 255 ]; // MAIN > TITLE > color - color9 = [ 0, 0, 0, 255 ]; // MAIN > TITLE > outline_color - color10 = [ 0, 56, 123, 255 ]; // MAIN > HELP > color - color11 = [ 193, 18, 28, 255 ]; // MAIN > HELP > outline_color - color12 = [ 0, 56, 123, 255 ]; // MAIN > ROM_LIST > color - color13 = [ 247, 186, 11, 255 ]; // MAIN > ROM_LIST > outline_color - color14 = [ 40, 40, 40, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > color - color15 = [ 153, 255, 51, 255 ]; // MAIN > ROM_LIST > TITLE_TEXT > outline_color - color16 = [ 200, 200, 200, 255 ]; // MAIN > ROM_LIST > TEXT > color - color17 = [ 193, 18, 28, 255 ]; // MAIN > ROM_LIST > TEXT > color_missing - color18 = [ 0, 0, 0, 255 ]; // MAIN > ROM_LIST > TEXT > outline_color - color19 = [ 0, 114, 67, 255 ]; // MAIN > ROM_IMAGE > color - color20 = [ 247, 186, 11, 255 ]; // MAIN > ROM_IMAGE > outline_color - color21 = [ 0, 114, 67, 255 ]; // MAIN > ROM_INFOS > color - color22 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > outline_color - color23 = [ 193, 18, 28, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > color - color24 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_1 > outline_color - color25 = [ 247, 186, 11, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > color - color26 = [ 0, 0, 0, 255 ]; // MAIN > ROM_INFOS > TEXT_2 > outline_color - color27 = [ 193, 18, 28, 255 ]; // MAIN > ROM_SYNOPSIS > color - color28 = [ 0, 56, 123, 255 ]; // MAIN > ROM_SYNOPSIS > outline_color - color29 = [ 247, 186, 11, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > color - color30 = [ 0, 56, 123, 255 ]; // MAIN > ROM_SYNOPSIS > TEXT > outline_color - color31 = [ 0, 56, 123, 240 ]; // OPTIONS_MENU > color - color32 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > outline_color - color33 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > TITLE_TEXT > color - color34 = [ 193, 18, 28, 255 ]; // OPTIONS_MENU > TITLE_TEXT > outline_color - color35 = [ 200, 200, 200, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > color - color36 = [ 0, 0, 0, 255 ]; // OPTIONS_MENU > ITEMS_TEXT > outline_color - color37 = [ 0, 56, 123, 220 ]; // STATES_MENU > color - color38 = [ 193, 18, 28, 255 ]; // STATES_MENU > outline_color - color39 = [ 200, 200, 200, 255 ]; // STATES_MENU > TITLE_TEXT > color - color40 = [ 220, 0, 0, 255 ]; // STATES_MENU > TITLE_TEXT > outline_color - color41 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > color - color42 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > outline_color - color43 = [ 200, 200, 200, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > color - color44 = [ 0, 0, 0, 255 ]; // STATES_MENU > STATES_ITEM > STATE_TEXT > outline_color - }; - MAIN : - { - ROM_LIST : - { - TEXT : - { - highlight_use_text_color = 0; - }; - }; - }; -}; diff --git a/psnes/data/3ds/romfs/skins/big/title.png b/psnes/data/3ds/romfs/skins/big/title.png deleted file mode 100644 index 9fc12c96468687107924c5925ac57a73dc79901b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3410 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 TjR*eoe;aofPxRwsXMg%Hoq}-% diff --git a/ui/c2dui_skin.cpp b/ui/c2dui_skin.cpp index 72f97cb3..45a4656e 100644 --- a/ui/c2dui_skin.cpp +++ b/ui/c2dui_skin.cpp @@ -68,7 +68,7 @@ Skin::Skin(UiMain *u) { /// FONT config::Group font_group("FONT"); font_group.addOption({"path", "default.ttf"}); - font_group.addOption({"offset", Vector2f{0, -3}}); + font_group.addOption({"offset", Vector2f{0, -4}}); font_group.addOption({"filtering", 0}); config->addGroup(font_group); @@ -204,7 +204,11 @@ Skin::Skin(UiMain *u) { font = ui->getFont(); } font->setFilter((Texture::Filter) fntGroup->getOption("filtering")->getInteger()); - font->setOffset(fntGroup->getOption("offset")->getVector2f()); + Vector2f offset = fntGroup->getOption("offset")->getVector2f(); +#ifdef __3DS__ + offset.y += 2; +#endif + font->setOffset(offset); } config::Config *Skin::getConfig() { diff --git a/ui/c2dui_ui_help.cpp b/ui/c2dui_ui_help.cpp index a93b56e6..79c148a4 100644 --- a/ui/c2dui_ui_help.cpp +++ b/ui/c2dui_ui_help.cpp @@ -46,8 +46,8 @@ float UiHelp::addItem(bool left, c2d::Font *font, const std::vectortexture && button->texture->available) { auto sprite = new Sprite(button->texture); - float scaling = std::min((getSize().x - 4) / (float) sprite->getSize().x, - (getSize().y - 4) / (float) sprite->getSize().y); + float scaling = std::min(getSize().x / (float) sprite->getSize().x, + getSize().y / (float) sprite->getSize().y); sprite->setScale(scaling, scaling); sprite->setOrigin(left ? Origin::Left : Origin::Right); sprite->setPosition(pos); @@ -59,11 +59,10 @@ float UiHelp::addItem(bool left, c2d::Font *font, const std::vectorsetOutlineThickness(1); text->setOrigin(left ? Origin::Left : Origin::Right); - float x = left ? bounds.left + bounds.width + 4 : bounds.left - 4; + float x = left ? bounds.left + bounds.width : bounds.left; text->setPosition({x, getSize().y / 2}); add(text); diff --git a/ui/c2dui_ui_listbox.cpp b/ui/c2dui_ui_listbox.cpp index 04eab523..4e6a82f5 100644 --- a/ui/c2dui_ui_listbox.cpp +++ b/ui/c2dui_ui_listbox.cpp @@ -34,7 +34,7 @@ UIListBoxLine::UIListBoxLine( text->setPosition(iconRect->getSize().x + 8, UIListBoxLine::getSize().y / 2); text->setSizeMax(UIListBoxLine::getSize().x - (float) fontSize - iconRect->getSize().x, 0); } else { - text->setPosition(2, UIListBoxLine::getSize().y / 2); + text->setPosition(0, UIListBoxLine::getSize().y / 2); text->setSizeMax(UIListBoxLine::getSize().x - (float) fontSize, 0); } diff --git a/ui/c2dui_ui_main.cpp b/ui/c2dui_ui_main.cpp index ed59d14c..2a21bc6f 100644 --- a/ui/c2dui_ui_main.cpp +++ b/ui/c2dui_ui_main.cpp @@ -32,22 +32,7 @@ UiMain::~UiMain() { #endif } -void UiMain::init(UIRomList *_uiRomList, UiMenu *_uiMenu, - UiEmu *_uiEmu, UiStateMenu *_uiState) { -#if 0 - uiHighlight = new UIHighlight(); - skin->loadRectangleShape(uiHighlight, {"SKIN_CONFIG", "HIGHLIGHT"}); - float alpha = uiHighlight->getAlpha(); - if (alpha > 0) { - uiHighlight->add(new TweenAlpha((float) uiHighlight->getAlpha() * 0.5f, - uiHighlight->getAlpha(), 0.5f, TweenLoop::PingPong)); - } - uiHighlight->setOrigin(Origin::Center); - uiHighlight->setLayer(1); - uiHighlight->setVisibility(Visibility::Hidden); - add(uiHighlight); -#endif - +void UiMain::init(UIRomList *_uiRomList, UiMenu *_uiMenu, UiEmu *_uiEmu, UiStateMenu *_uiState) { uiRomList = _uiRomList; uiRomList->updateRomList(); add(uiRomList); @@ -62,19 +47,12 @@ void UiMain::init(UIRomList *_uiRomList, UiMenu *_uiMenu, uiState = _uiState; add(uiState); - uiMessageBox = new c2d::MessageBox( - FloatRect( - getSize().x / 2, - getSize().y / 2, - getSize().x / 2, - getSize().y / 2), - getInput(), skin->font, getFontSize()); + // message box + Skin::TextGroup textGroup = skin->getText( + {"MAIN", "ROM_LIST", "TEXT"}); // use rom list text size for message box font size + Skin::RectangleShapeGroup shape = skin->getRectangleShape({"SKIN_CONFIG", "MESSAGEBOX"}); + uiMessageBox = new c2d::MessageBox(shape.rect, getInput(), skin->font, (int) textGroup.size); skin->loadRectangleShape(uiMessageBox, {"SKIN_CONFIG", "MESSAGEBOX"}); - float fontSize = uiMessageBox->getTitleText()->getSize().y * 1.5f; - uiMessageBox->getTitleText()->setSize( - uiMessageBox->getTitleText()->getSize().x * 1.5f, fontSize); - uiMessageBox->getTitleText()->setSizeMax(uiMessageBox->getSize().x - (float) fontSize * 2, - (float) fontSize + 4); uiMessageBox->setSelectedColor(uiMessageBox->getFillColor(), uiMessageBox->getOutlineColor()); Color c = uiMessageBox->getOutlineColor(); c.a -= 150; diff --git a/ui/c2dui_ui_progressbox.cpp b/ui/c2dui_ui_progressbox.cpp index f9172e77..1f0c0c28 100644 --- a/ui/c2dui_ui_progressbox.cpp +++ b/ui/c2dui_ui_progressbox.cpp @@ -4,73 +4,68 @@ #include "c2dui.h" -UIProgressBox::UIProgressBox(UiMain *gui) - : RectangleShape(Vector2f(gui->getSize().x / 2, - gui->getSize().y / 2)) { - - gui->getSkin()->loadRectangleShape(this, {"SKIN_CONFIG", "MESSAGEBOX"}); - +UIProgressBox::UIProgressBox(UiMain *ui) + : SkinnedRectangle(ui->getSkin(), {"SKIN_CONFIG", "MESSAGEBOX"}) { float w = getSize().x; float h = getSize().y; - float margin_x = UI_MARGIN * gui->getScaling().x; - float margin_y = UI_MARGIN * gui->getScaling().y; + float font_size = h / 15.0f; + float margin_x = font_size * ui->getScaling().x; + float margin_y = font_size * ui->getScaling().y; - title = new Text("TITLE", C2D_DEFAULT_CHAR_SIZE, gui->getSkin()->getFont()); - title->setPosition(margin_x, margin_y + 16); - title->setSizeMax(w - (margin_x * 2), 0); - title->setOutlineThickness(2); - title->setOutlineColor(Color::Black); - add(title); + m_title = new Text("TITLE", (unsigned int) (font_size * 1.3f), ui->getSkin()->getFont()); + m_title->setPosition(margin_x, margin_y); + m_title->setSizeMax(w - (margin_x * 2), 0); + m_title->setOutlineThickness(2); + m_title->setOutlineColor(Color::Black); + add(m_title); - progress_bg = new RectangleShape({margin_x, h - margin_y - (h / 6), w - (margin_x * 2), h / 6}); + m_progress_bg = new RectangleShape({margin_x, h - margin_y - (h / 6), w - (margin_x * 2), h / 6}); Color col = getFillColor(); col.r = (uint8_t) std::max(0, col.r - 40); col.g = (uint8_t) std::max(0, col.g - 40); col.b = (uint8_t) std::max(0, col.b - 40); - progress_bg->setFillColor(col); - progress_bg->setOutlineColor(getOutlineColor()); - progress_bg->setOutlineThickness(2); - add(progress_bg); - - progress_fg = new RectangleShape( - FloatRect(progress_bg->getPosition().x + 1, progress_bg->getPosition().y + 1, - 2, progress_bg->getSize().y - 2)); - progress_fg->setFillColor(getOutlineColor()); - add(progress_fg); - - message = new Text("MESSAGE", (unsigned int) gui->getFontSize(), gui->getSkin()->getFont()); - message->setOrigin(Origin::BottomLeft); - message->setPosition(margin_x, progress_bg->getPosition().y - margin_y); - message->setSizeMax(w - (margin_x * 2), 0); - message->setOutlineThickness(2); - message->setOutlineColor(Color::Black); - add(message); + m_progress_bg->setFillColor(col); + m_progress_bg->setOutlineColor(getOutlineColor()); + m_progress_bg->setOutlineThickness(2); + add(m_progress_bg); + + m_progress_fg = new RectangleShape( + FloatRect(m_progress_bg->getPosition().x + 1, m_progress_bg->getPosition().y + 1, + 2, m_progress_bg->getSize().y - 2)); + m_progress_fg->setFillColor(getOutlineColor()); + add(m_progress_fg); + + m_message = new Text("MESSAGE", (unsigned int) font_size, ui->getSkin()->getFont()); + m_message->setOrigin(Origin::BottomLeft); + m_message->setPosition(margin_x, m_progress_bg->getPosition().y - margin_y); + m_message->setSizeMax(w - (margin_x * 2), 0); + m_message->setOutlineThickness(2); + m_message->setOutlineColor(Color::Black); + add(m_message); setVisibility(Visibility::Hidden); } -void UIProgressBox::setTitle(std::string title) { - this->title->setString(title); +void UIProgressBox::setTitle(const std::string &title) { + m_title->setString(title); } void UIProgressBox::setProgress(float progress) { - - float width = progress * (progress_bg->getSize().x - 2); - progress_fg->setSize( - std::min(width, progress_bg->getSize().x - 2), - progress_fg->getSize().y); + float width = progress * (m_progress_bg->getSize().x - 2); + m_progress_fg->setSize( + std::min(width, m_progress_bg->getSize().x - 2), + m_progress_fg->getSize().y); } -void UIProgressBox::setMessage(std::string message) { - - this->message->setString(message); +void UIProgressBox::setMessage(const std::string &message) { + m_message->setString(message); } c2d::Text *UIProgressBox::getTitleText() { - return title; + return m_title; } c2d::Text *UIProgressBox::getMessageText() { - return message; + return m_message; } diff --git a/ui/c2dui_ui_progressbox.h b/ui/c2dui_ui_progressbox.h index d4cb91e7..b14cb98c 100644 --- a/ui/c2dui_ui_progressbox.h +++ b/ui/c2dui_ui_progressbox.h @@ -7,15 +7,15 @@ namespace c2dui { - class UIProgressBox : public c2d::RectangleShape { + class UIProgressBox : public SkinnedRectangle { public: - UIProgressBox(UiMain *gui); + explicit UIProgressBox(UiMain *ui); - void setTitle(std::string title); + void setTitle(const std::string& title); - void setMessage(std::string message); + void setMessage(const std::string& message); void setProgress(float progress); @@ -25,10 +25,10 @@ namespace c2dui { private: - c2d::Text *title; - c2d::Text *message; - c2d::RectangleShape *progress_bg; - c2d::RectangleShape *progress_fg; + c2d::Text *m_title; + c2d::Text *m_message; + c2d::RectangleShape *m_progress_bg; + c2d::RectangleShape *m_progress_fg; }; } From 78dc907f43a80c119cdab4bdc728f4f4d473d02c Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Mon, 19 Sep 2022 15:13:05 +0200 Subject: [PATCH 11/70] 3ds: fix button icons --- data/3ds/romfs/skins/big/buttons/0.png | Bin 3788 -> 3780 bytes data/3ds/romfs/skins/big/buttons/1.png | Bin 3780 -> 3788 bytes data/3ds/romfs/skins/big/buttons/10.png | Bin 3306 -> 2418 bytes data/3ds/romfs/skins/big/buttons/11.png | Bin 2418 -> 2379 bytes data/3ds/romfs/skins/big/buttons/12.png | Bin 2379 -> 2408 bytes data/3ds/romfs/skins/big/buttons/13.png | Bin 2408 -> 2397 bytes data/3ds/romfs/skins/big/buttons/2.png | Bin 3736 -> 4011 bytes data/3ds/romfs/skins/big/buttons/3.png | Bin 4011 -> 3736 bytes data/3ds/romfs/skins/big/buttons/4.png | Bin 356 -> 2163 bytes data/3ds/romfs/skins/big/buttons/5.png | Bin 0 -> 2152 bytes data/3ds/romfs/skins/big/buttons/6.png | Bin 764 -> 2799 bytes data/3ds/romfs/skins/big/buttons/7.png | Bin 3006 -> 3306 bytes data/3ds/romfs/skins/big/buttons/8.png | Bin 3314 -> 2808 bytes data/3ds/romfs/skins/big/buttons/9.png | Bin 2799 -> 3066 bytes data/3ds/romfs/skins/default/buttons/0.png | Bin 0 -> 3780 bytes data/3ds/romfs/skins/default/buttons/1.png | Bin 0 -> 3788 bytes data/3ds/romfs/skins/default/buttons/10.png | Bin 0 -> 2418 bytes data/3ds/romfs/skins/default/buttons/100.png | Bin 0 -> 2082 bytes data/3ds/romfs/skins/default/buttons/11.png | Bin 0 -> 2379 bytes data/3ds/romfs/skins/default/buttons/12.png | Bin 0 -> 2408 bytes .../buttons/14.png => default/buttons/13.png} | Bin data/3ds/romfs/skins/default/buttons/2.png | Bin 0 -> 4011 bytes data/3ds/romfs/skins/default/buttons/3.png | Bin 0 -> 3736 bytes data/3ds/romfs/skins/default/buttons/4.png | Bin 0 -> 2163 bytes data/3ds/romfs/skins/default/buttons/5.png | Bin 0 -> 2152 bytes data/3ds/romfs/skins/default/buttons/6.png | Bin 0 -> 2799 bytes data/3ds/romfs/skins/default/buttons/7.png | Bin 0 -> 3306 bytes .../buttons/104.png => default/buttons/8.png} | Bin .../buttons/105.png => default/buttons/9.png} | Bin libcross2d | 2 +- 30 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 data/3ds/romfs/skins/big/buttons/5.png create mode 100644 data/3ds/romfs/skins/default/buttons/0.png create mode 100644 data/3ds/romfs/skins/default/buttons/1.png create mode 100644 data/3ds/romfs/skins/default/buttons/10.png create mode 100644 data/3ds/romfs/skins/default/buttons/100.png create mode 100644 data/3ds/romfs/skins/default/buttons/11.png create mode 100644 data/3ds/romfs/skins/default/buttons/12.png rename data/3ds/romfs/skins/{big/buttons/14.png => default/buttons/13.png} (100%) create mode 100644 data/3ds/romfs/skins/default/buttons/2.png create mode 100644 data/3ds/romfs/skins/default/buttons/3.png create mode 100644 data/3ds/romfs/skins/default/buttons/4.png create mode 100644 data/3ds/romfs/skins/default/buttons/5.png create mode 100644 data/3ds/romfs/skins/default/buttons/6.png create mode 100644 data/3ds/romfs/skins/default/buttons/7.png rename data/3ds/romfs/skins/{big/buttons/104.png => default/buttons/8.png} (100%) rename data/3ds/romfs/skins/{big/buttons/105.png => default/buttons/9.png} (100%) diff --git a/data/3ds/romfs/skins/big/buttons/0.png b/data/3ds/romfs/skins/big/buttons/0.png index ea7e74380c9ed07ec19189eddc3c2618c9f10019..df756ef0fe0b1a6a1c277b6106aaaa1b6db36201 100644 GIT binary patch literal 3780 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 diff --git a/data/3ds/romfs/skins/big/buttons/1.png b/data/3ds/romfs/skins/big/buttons/1.png index df756ef0fe0b1a6a1c277b6106aaaa1b6db36201..ea7e74380c9ed07ec19189eddc3c2618c9f10019 100644 GIT binary patch literal 3788 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 literal 3780 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 diff --git a/data/3ds/romfs/skins/big/buttons/11.png b/data/3ds/romfs/skins/big/buttons/11.png index 700a8ba7577f641049d71c37275e3b9e104cc1cf..37f6d5b11138b6c6bb6c89ce6bc473523215e6fb 100644 GIT binary patch delta 2368 zcmV-G3BUI863Y^hB!3b~L_t(|ob8=WPup4=$N$H6QsUGhFI1#S(1b-&i3QZN)Tvki3#2MlVN^(wN^qJK2MDq6 zq9KzP=apk0hx#W)!gg|=hx7M2&pF4BZNSFH#>U2`KL~3F+JE8m`G#-YxG_bu%(Jtz zO<9(|(kzoEmJ=ix49;>Kmn4Kd1mHEuOit6ZRaI4=A08gQHpoU_SW1v^IQ$!cpG`LV z`@zA%zfHE;5}vgKmxMy06++0r7?}R6BuUXiq3{O-+f7(PkWeV}H$up-tn3p)rf%N6 znfvzb+kaX4P=ED>wF3YU3WatFAyK_!9LIs@>6|y^av7?swmO_UI5_Z8F?0o(3sPwv ztBw1ePA4Quq9(>A<#HK?LILOJ=S{~nO?#NhWSDkc982RBnufIwhXY=(m%11L!1Fx3 zUN0ODM_0a>jU@#UMbU7hEo?9sL}2XzA*5-pK}da1>VI~-;c~gaas8b?s;Z(`EaK$k zq@|5kzL*VjK{~z1fYH%W*6v)HffrIh9L}O3%SnNf>;b&5Q||8 zVliw%EJoL(tlPJ5|AphYIZe~%TBYpt3G?gNHGfQn!{Ierg=w0$M+ix&s+#)z`Sbs} z`AtVbg2CV{&-2Rw<^cU`(botsD*q=9Ds`3QI1b@(I8`o}mpkPWx9zgR;qY%f&!=cQ z`2#b@^L(n3zuc0Rf`me$6_}s+4B*^r8c-+uDV4-r_)KT z?0?#_oK9z}WI4kjgd~H(;H=&;-564d8BK5;2T>FaTizywG*yx$Nz}@hBngE=p}Ot! z`E*lCX>oCJ0Yy=C^NA~U{Gf4vQ{Uk8`G!SN%r)+JI-T%(&CMf|Bndtr-TY@+mg__@ zgIq4BE4-p8-p0GRnz}5#TgV6@@OV5_oqz0v*XyM&2JpRAn0;b-JRaS+s8`or^*w?h zG^KG8La6rdwYDTlGNkNFJRT2*hK5im6mW5ILB0I*^K)pLR^8?}4uT+{R4R4+ZC}B_ z?RLZG^Yxu;YXzK6CzTY{R^;<}?qYX$*O1W}V2~h@NCdH1 z%#>Tx%*5evARdn+5{V$4PGf(6pSlgIg82P@OiWB*czBp*v6e#=MI;glM59sc?Cjw9 z_?TMRR0MIkTu3AmhK}p4$nfwm?tk68hio>Bt*tE-i^VIKNhPQU0s+&PR;+}_qQY>ZaXmgLi?Pe`ZJRJy5JsE@LW z#Ui%1x3Rakhlz=aYZq6t*(`Q;c975K4JqHSc}PB=$J@7W;rIKINF1oq`y)+=*oXtuG z_*~FH_2VliqLhAvkVHa0f!>eZ`itA8n#N_ANxG*J|# zRri%TI5_B>Cx!wVDLi}jth!AzS+23GT3A>>CX=C3cCVDnjKqmoubANxoY2;%jmUy%Vt2?F|?HV=o?SBR4g6KU?+zf#TA(qTf zW-bWJ`w6XhFQX*{VO24WEyV7!&|E2id0kec9V@gL=7RLoLY_Q%f_LxUwf)ZByLa*O z<;%9;v0@8h9@TiB2gh-BpH2cTEiH8{x6^kngL>`9i1(HB3Ufg&TS)Dv6Eib2n4h0- zd3=6;9y2pDhJV;L8cPV$c&2v4)2C1SI#x@sEz=B`3vyWzy`HI&NCbUJ`j?CCPI9Yb{J zXOvaT($W&b;V{DCa8Iqns-rCC^AOVAXE|pnPZ6-0swP!b1MLnjLfg5QmMZ)vRw!B7;;G}mHH=u=L}45 z3WAViU{@FRt7$dt?d|;$jYjuiPI_q$z^|!P>Ny`DKYl#x_-&K0OqbQjg9i^1Fi@1W mwY9cyDX_7zv9YlkH2wrkJFcc)@rWA$0000$l~JS-vE42r~CbW zJb(TiV`F1X?VX;U;@!J<*xTFF+WmBEYfD#A1U-!d0HxGVDMj_4*Xzad@-lNV0AOrv z49m;Q@Or&a+ohB;?P9ls?t&qk)(6bc1gTwK)Hpp@1er{2~B-36&M7mW}_kx5Xu+wCY8 zi;!jcI!#fOj`L-W?t&xfVq0LNGl9w|fXrOb^k3g&3bde+B^D zzkk2$wtrcpyCAYG-`Hd|!`j*!fYt<|l-7BO5d_k`+Y6v>JkSao8ync!*}=}v4mLJ6 zx@MObx(g!9a@}~KmCAYb>XqjIw^8vB)i|W3vhzT9K{Q6oO`jVK1`&(JuD4^c7=poI zS8Vgb5Q3<$)Mm(Lv)8esnzgkxWV6|(^611fd4Hk1AeD+}^-5h|Uq>#Nt4q)2a#&wq zzx8}An?~pc>n=z;9&&tqtmz#U*4EZ=e0+RsKBk9g(2jT9Bt|R87%_(QNrGqLCmR>T67oWw#h|an3IbQFg>IeLkRLK+HQpIg0PreY=@o?>XVa`GlUR7 zA%7$QfXQNjDu%jJ42ieiXyA%9f@q9}%3F4x*%J=D8Oa7dSdP!qL$Y zPEJm+ySt0i)6?ty*=!b>Oosb!sDGd+3X;iWU9V1-<$$`^)l}PKu~_QFAcQb&->Yp6 z3=GueeR_I|j~_oWu`xI}i2nY5245Q#*%^v(cIf=o?K!Rz(b zJqgw8^!4@O?%lhXnwmm59ByiLiS?eO`0@OV5pJUm1y zm134R6G3b?8+<+=*M7Yb8GjlY!o!CTkxVABzrT+{q0n)jOoF=8>8zRN_|+I39AtJe zGVze(<6|TeiJBn(Dphd-H#d2k;ZC=HgE^OFFib%VMq7et-5)lorQL3DT?`Qf;ntN5nM?*37Z*%# zQVD_ptJMlZ2>Sc`x!fMErc^4SSS*54ic+b>d?kD{7p+!ZHx<++NrIv%H3Bqqf4Ehu z`}6|?0~i?@VQvEe(tqi+<^!X=P!y%<`l`Fc3xz^R>%jB#^Ug}uBDq|Si_P=%^R9|f zv8jbtUDtU?I-NeV*=!#OAy2E*i^U=oMd3E3P6(-+a!I99=BuV17 z@H?N+Yc^k$(huo$y6z3zjecnmKi(`|L#b5a9?<*x`f8f0Tz@Xdtm#sFMxzC6T_UKJ zs2P>x@%UeqQq2>1BS}(Cd&{!Is`HX0NjEVlrNMYSuKD)UhTWuiJpQ|0qIByCDm}Oo zIr%k&)MSyZtGpG(ZUPuqxpde(?JW zLaSr|Xue^&U4JO0Q9?*4pU-OsaWzeKU()IHSvs9whsN^xPI0^4n=sB3T6?ir?6IB& zFz2!ihAD`_Fabr2Hi1)hX8=f<@%3$#eKK9ZFy%m(LIJ#C}0!{FDRv552{8I0|3}I&>c`L7B6$T z+`k6~20#e$1L)^z?`nzX%XmEg2Twb#VwfgN&BVmSBVKunqL_)rV*9-EH!(3WF)`7D Z{{#0b`Y$$a2iO1r002ovPDHLkV1mT*koy1t diff --git a/data/3ds/romfs/skins/big/buttons/12.png b/data/3ds/romfs/skins/big/buttons/12.png index 37f6d5b11138b6c6bb6c89ce6bc473523215e6fb..8efd7a403545b86e491ef32ebef806f36d2dc5b2 100644 GIT binary patch delta 2397 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 Ef`|N)WB>pF delta 2397 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 AQ~&?~ literal 3736 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 diff --git a/data/3ds/romfs/skins/big/buttons/3.png b/data/3ds/romfs/skins/big/buttons/3.png index bdf86ba773378da3d7cfc69d2bc9ba155058929b..46ac2160d8df6dfe7a3283935cf3daca3a8cbed8 100644 GIT binary patch literal 3736 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 literal 4011 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 AQ~&?~ diff --git a/data/3ds/romfs/skins/big/buttons/4.png b/data/3ds/romfs/skins/big/buttons/4.png index d32608e165c263de3d42c0ca69d627a528c61c17..13faac003605db9b85206cc1426cbdf6a19760d5 100644 GIT binary patch literal 2163 zcmV-(2#oiMP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^DImaSW-L^Y+%p+(Ql`4G(u) z2$eKm$~(lNDWRdf!O@6mb;{%=Ul=Yt;yAh1nCa8gMK%w9|N5TubNbym!AwA75a7Z6 zr;`?bt@^tqMlZhj-0nG_m%Y=C-K)6ti>2@7e-$=$XJqxbE|uPmKKFBP%C|nA#};{h z%P)VQv#@=V_R~4#s>S7LTO)Mhp7DvYdTOradcI?U2}k{tjn@{vEsM^+8v5$D-Q4rf zsb(bvqLcfJ@2R$xeo4=;OtC=VC{UbM1U*q4FQ`v5+ z2I}3E=WAcT)7jPj)Y2(Ix3`_YY?ABsJU{ZXiL)mU!fQa*gSx*AcR~y|x+X3w21$6j L`njxgN@xNAN;Z(U diff --git a/data/3ds/romfs/skins/big/buttons/5.png b/data/3ds/romfs/skins/big/buttons/5.png new file mode 100644 index 0000000000000000000000000000000000000000..744291f326f32873ca7f4820df96484ce015718d GIT binary patch literal 2152 zcmV-u2$%PXP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^DIm0U3q<-hSUTlR_#)!z`CR0gw}^*_h{rKav84{XJ#FS0 z_8!A({e5j|x7)&9@Yg-=9arC$*>^6MFh6DCo>$;_$z*F) z_bRC!3jKVaB#TyG%{p0Np<|M~F(M+WH+qlL0Rs*RHpasW2@)(k%?*hH20Tn{jyMGu zhwn&~urrnFT^W>Bb~h~8^KPDbvB5V5CHqY}v)6~MUSG*?w#%vJ{`}0f&qMnj1}G>A zFTLU|(dG{n=UOyn)=Zi22~9vh%=xZxIo)Gr_42H(Qb&4>4%lC5R+tdCKD^>wf`P#O z@49PF=w|=kbnNlQwSj&nvwbCd-OfGJpYClb*Wdd5K)hl<9w#C^v+dc|bFVI1 zEwp{j-MsLMV_91_Z4mnI(=4-Q-69sfyx{+jD&yYWKWTEpM@wR9%4ZeNx@Wd0UPw+- zIXPXUYhP;QHFL{<`BQ?z-G#PnJ+(m3wu4|MAWL#4G3e9shQs zJlAaY`=xW=*oQt^_|Jo=zz6$G>*L=EmtQ_fxi7xRi^cQum6QAQUG}6lHgYFzntoE? ziJ96Ch3jvP*KKE%eNvh)DRV-QG;oM1U>3H#m@^UUZn^mAZ!Lx`GcW*(+6%?erh4al@eQl$H5wj1JBVDG z>eiIUOw_%x+A-bDklUuWjr^J(k^_jVd6#Wu`vppG)uVaAZ==~j+yqWD%)`2E^KWK^ zk=~m&M^h`K!7{S{N7#cVbp|w(vn#9urA(%i4b z`hT?zG_4Mvs@>yx{jvH!B@zZIpM_h`udc3+<*kz)y~L5D+nJd6bnq2S6Vq3QAPned z8@@;j_{dR<(V<4rt#IdfPHAZRxU z!yaTwIh|MGBlwR;V{7jdBFY_rxa*t?;jtqOo{dibI%k+w1av$*5&+T8?=uZtaz#3V zkV79&VAKFY#5;RlmNE%i6P|7xlQSGp7aA2+Hyn-m^+;{!mdm3wD5liESdChQp)=Rk z=9+h>(x)nNXA0&I4G`p zFpU(DAO7k*FJWc>6=3;zp7kQj!DC{Avr5a+j+CmZs+ik1S;Dx2>w?3}OXbA?e82?U6)j))APw2BuC=12) z&j)Kgg;~B5PYL>VFE^wUgqqz2QrZAIIyx$o_u-JaKYt>N>LLLSqlIo6a$kDA%N2p@ z_};(MuBv2vpEKA>dSHY^SP;XcWm-TALLXp36&EM@L!rj)r4t7}l}NNjiL$IB5>0?2 zLra>ZF{p?!dU>D6?x1%!Gcz+~+^Iq_P`opfps0wu?p@N(BX15;$MciMRt@ilpwcDI zq{4M|fg)XD1u0STN=5?9MB+SeLqYSZa-s=1-Do!D_!+MQKFct(nY zvgqHl=Gjzw>n#`$6JVD8h&&a?$8xOMy+28p@3k^*bKbpXRAA&cyCI((ZPOc_v))MX zxyfYd>z55lq8bNVDGq_}gMJEy9as3+11bV8#gCepgD= z2gG7;IHarxe8u%!xP7_E^><$?#<3{5B2}_BTk@_Hj;g}w`weOK>BZk z)^%qJildt*i{XpY6Ack%vvF1zk{n|}a>>4E3WcKIGHt3?T$~mN>2A9PdjO@iV~W+d zjP3N17U}kiBB8OdO9)pbvGjimws7p!s@mr=k!~kn6W)#FG$gWUnpetuif&xwL}nPb zw75Ej#m8TLu`5Rq?tnSw6*46Gc#|WJS>vOv;;-Tgg8R?0YEwsJ_`QeKevkKT|LGk2J32+QZj-hz>zVWJ!Nwzx| zOm&9R3|ppIv3Y}?BW*6B=+(__Gva7*Qc+4;2f{mLEZ(sziaD?}>3@ zQNQy|$&BWrTm{MsVjbP{V}-`YZ!CoH4)RndO@d-_zH)ME3#CgkF8^=bBEeaJ$kt8&EYrBv9bfk|) zx!ql9Jl?*t{%PwKoT0-%pZHwyiD#>3U%7X)yUpL_p4%ylb3W*zunGxpTzJDL;rbRS zai3(+10(ZnYZlLRdop?D%tRRV8?;L;mZ!%v<}sx~S$(%p`CVYE#rde?2euFl`7iRR zd-2Dt8dWm~qLM0&2K5nO{##(`aIK6A{#B3o!WVgS;uGd#J&+w6?kEu6;ClXy-8gfn z&KHe}_GgHQi;Lf=QI!KZ{wGzGgH3Jls*(8V5=NC+t=4;nLJpb z7h;VJ%92@eKOy0g0q5;z?mta?FM0DI$M@PFvcN56r$67`T5kFY zzExkGc$v>i4;b3%dn@l*<+IS*Pg!-N%(5LTYxkWZgRRXg_3u8;edDUSPBFfB1Ib&T z918LKS;vV*Zt%DyHY!VrbATICv9;WL@t@zU>}NJspXAaOB!$Rf&XVM~=2?WEl36a$ z^dvIGmKuAGOeQA95&=I;mF7Cb3jR69#MujWht0t0_FdD7U~diYVY&Kt!**5_7$Ktg z1i1=d*c|+5J?Epw_V|0rLF4IUO~c%Ks|OwpHC6b3V%2f#N`?cFCPW}VAY;DZ5woAl zDNA_b36^eZo4KkB@Jch{=)EfV!clEc7by9|xJlSNdzgojRV87>-w{LfACK^eWXKS> zyjOh+^E(9Xx)Han#B?m3ADca&4TWp1QIO*T;qzkZX^2c?q-Y21IEwGeHqX%JxuQCb zXVQc!UF06g_q(z|T(f(^riOPVt4H#aTBd{h4U@I2H*7eYKJ6t_E-Rb}lvf>mCiIw| zOr!=g3=N#Cazar!U-UD@gfV3U*X0+|VDH_zB0q7M@XT~() z2RPd34u$iRGWM0FfD=R+R(j9!&lAPo=33-TiJD%t*DLlADMQM=Z->497GOEB7P5T!iCguD_rC{ep9uLS9m6cf3GJ5=;jhq1a|l1Q zm~Nr;xO0HT;Q_KmY&$ delta 3001 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 diff --git a/data/3ds/romfs/skins/big/buttons/8.png b/data/3ds/romfs/skins/big/buttons/8.png index de085082ec985dd6afea3f98f0fd76c655320c3b..6942e1f9b1f22dd09130ed8d939de93c56a3f63e 100644 GIT binary patch delta 2801 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 delta 3311 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 diff --git a/data/3ds/romfs/skins/big/buttons/9.png b/data/3ds/romfs/skins/big/buttons/9.png index ddfa3b92d2648caa02d1ad8cc0f90c76baf877fe..6aef3cb37574ecc2440454fc3881018c353ad933 100644 GIT binary patch delta 3061 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 diff --git a/data/3ds/romfs/skins/default/buttons/0.png b/data/3ds/romfs/skins/default/buttons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..df756ef0fe0b1a6a1c277b6106aaaa1b6db36201 GIT binary patch literal 3780 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/10.png b/data/3ds/romfs/skins/default/buttons/10.png new file mode 100644 index 0000000000000000000000000000000000000000..700a8ba7577f641049d71c37275e3b9e104cc1cf GIT binary patch literal 2418 zcmV-&361uNP) zO-LKv8pr=XB0G1jFfcY!UQU`T}V^x{uT<|zI}HWH@A0pm%f{VtGD2$ch$Hp zl-qY#uwX83tXNPN!fh6b)T9B;hlwUJlbLfDHIhswnvZiblXiX}IA>&5c&GIKEiU~Fs*%gf8~dc9EFrIa%5Vz-0tf+&jOQ4|H$ ze@jbC-0dzcEkSKpmgN9D#5W%)WyQIwAJWsUBFD2f8Lhg1t>v9K$m z#bUV@MC(E@Jp{LV2v1B8(SU^*pFe*F0NlTSzw5SHqq`uoEZ^8#Nt4q)2a#&wqzx8}An?~pc>n=z;9&&tqtmz#U*4EZ=e0+Rs zKBk9g(2jT9Bt|R87%_(QNrGqLCmR>T67oWw#h|an3IbQFg>Ie zLkRLK+HQpIg0PreY=@o?>XVa`GlUR7AtV5R$zp&jA^dt(goa)J)YQ}_!}9D=N<);= zz3<<@A2oBrt%6KUOgs`raRor2!@|{}_Z6vOe;90kXMhm$k`My7+Z~c+c_ooZ+_;wb z#(|;B<$5cMVu*1ee^mmaD27}v*V~&8YAA@y<$6m9dBMC`zc_@D7dMHbDTv$c{!K42 z?%cTppU-!_ZM9mN0D>UEZnraC38F@p zWxRRw2G5>7!}$0(Y&ILSylplca=9E%PEPRt{d=69ond&G*CQxExm-p*pVu7kP)c6{ zsGF9qtM$pr$r(WqqUv<3)ylQ-S}ZIqU~zE~_wL<;$K&ZJuV^%iFJHc3YikR;ySr=( z*d&=u2BlJ|E?rR+kGl6&C&*Q=DpYe2A#ggKZLb_`hvDI23=R%nZ;y?QVPRnbI>OP>5l&7{u)Dj9)6>)I{n>05nM{WJZ>XRs3X;iWU9V1- z<$$`^)l}PKu~_QFAcQb&->Yp63=GueeR_I|j~_oWu`xI}i2nY5c&Hzq=OifL}>-E+>3DxWL_4VQI-Mg5YnnE}nZfdDft1uO0baWJRb8{FP z8e*BP;jr87@cDf3csw{fJVYv$VwN`(L2Nb~d_Eu7e!USH8XCgGhYyiVCb7T2k3yl) zah^LNfPrQ&n$+N%jN4p=kyZ&C?@0ISssLJ0c%`?=g6uBKEfp;#<}Qi@Wk#C#=uGZ(E^ zT{jifB}sy!C^Z5!bAPy1s{8Z<0|OWt8DVY%0MhBS<^!X=P!y%<`l`Fc3xz^R>%jB# z^Ug}uBDq|Si_P=%^R9|fv8jbtUDtU?I-NeV*=!#OAy2E*i^U=oMd3E3P6(-+a!I99 z=BuV17@H?N+Yc^k$(huo$y6z3zjecnmKi(`|L#b5a9?<*x`f8f0 zTrS6~=~8<}qXleTBB+(98I|Ml_+OM#%@cSdNm5OF%d*0%^O7V z-K2Ot{<~hHbn6K!J-8C%_eT3~?6+QtvVtEkuQ%z845f7CCNY2}y1nsu{Ev~5k=J&+ z{VAn1KnU@$D&ZA=@cRlvt7HIZzG1mtD5X(CNGPArYX)&OO?6+=>GWATonD8=^7&42 zyWN{G&J$XDu~_V}o&_-HvJ8ePh`}%gF&L&G2E!D@VCep8jdpnO;K8knCz8n|wzs#t zR3ditq=$U{`jyEsMx-YNNu^RqBoYnxClU$nt3!CvlY#)i;o)Ih`;1P{3Q{N(5Q#+U z(j$=w^VNjiq-O;Ie#D9Dsd`D0dNy`c=xIU9<#LUe@O-kVTlBOb01ys`ki zhxIN_$MoblM9t42M1`M15FXF^=|#^sSw9=5AO^$mP1fb*CGz=v$IDg~MZx9eC8JXD zLw7+ar5W|x>(rkfs(#lMD~#}YBQ11qvM8k?by~4lbr2Hi1)hX8=f<@%3$#eKK9ZFy%m(LIJ#C=?1WD5YHwszwq6 z0N6Ir9Z)P5FLSxvzXt{eKnU>z=;vwgYKiB|cs%|GPdlw*m?lfj#KgoSUU`e6n2E(= k`@HfuF)=YQG0}tn1NSQWFE(xm*Z=?k07*qoM6N<$f&ny(4*&oF literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/100.png b/data/3ds/romfs/skins/default/buttons/100.png new file mode 100644 index 0000000000000000000000000000000000000000..12f01eb3f52a3fd5ecfe5a6dda85aeb7f4562365 GIT binary patch literal 2082 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/12.png b/data/3ds/romfs/skins/default/buttons/12.png new file mode 100644 index 0000000000000000000000000000000000000000..8efd7a403545b86e491ef32ebef806f36d2dc5b2 GIT binary patch literal 2408 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 ag8UEvgmg}>CL)CZ0000|-bGNV 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 AQ~&?~ literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/3.png b/data/3ds/romfs/skins/default/buttons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..46ac2160d8df6dfe7a3283935cf3daca3a8cbed8 GIT binary patch literal 3736 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/4.png b/data/3ds/romfs/skins/default/buttons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..13faac003605db9b85206cc1426cbdf6a19760d5 GIT binary patch literal 2163 zcmV-(2#oiMP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/5.png b/data/3ds/romfs/skins/default/buttons/5.png new file mode 100644 index 0000000000000000000000000000000000000000..744291f326f32873ca7f4820df96484ce015718d GIT binary patch literal 2152 zcmV-u2$%PXP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/default/buttons/7.png b/data/3ds/romfs/skins/default/buttons/7.png new file mode 100644 index 0000000000000000000000000000000000000000..01f137a1ee7c3ddc6187533a2b1f8589676e5d2d GIT binary patch literal 3306 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 literal 0 HcmV?d00001 diff --git a/data/3ds/romfs/skins/big/buttons/104.png b/data/3ds/romfs/skins/default/buttons/8.png similarity index 100% rename from data/3ds/romfs/skins/big/buttons/104.png rename to data/3ds/romfs/skins/default/buttons/8.png diff --git a/data/3ds/romfs/skins/big/buttons/105.png b/data/3ds/romfs/skins/default/buttons/9.png similarity index 100% rename from data/3ds/romfs/skins/big/buttons/105.png rename to data/3ds/romfs/skins/default/buttons/9.png diff --git a/libcross2d b/libcross2d index 6855a536..6dfbab75 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit 6855a53666f2bb61cf2949e94c34cc7b1ae005ad +Subproject commit 6dfbab75cc3bcac3c27da0cb3b6c2870a2078d9c From 8013fe056d25b7725e059a20064fd7c3898a30f1 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Mon, 19 Sep 2022 15:15:58 +0200 Subject: [PATCH 12/70] config: minor cleanup --- ui/c2dui_config.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/ui/c2dui_config.cpp b/ui/c2dui_config.cpp index 3d69065a..c93419cc 100644 --- a/ui/c2dui_config.cpp +++ b/ui/c2dui_config.cpp @@ -67,7 +67,7 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { printf("skin found: %s\n", file.path.c_str()); } } - // set default skin index + // set "default" skin index (or "big" skin on screen height < 240) if (!get(Option::Id::GUI_SKIN)) { int index = 0; for (size_t i = 0; i < skins.size(); i++) { @@ -162,7 +162,6 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { } void Config::load(const ss_api::Game &game) { - config_t cfg; config_init(&cfg); @@ -260,7 +259,6 @@ void Config::load(const ss_api::Game &game) { } void Config::save(const ss_api::Game &game) { - config_t cfg{}; config_init(&cfg); @@ -318,7 +316,6 @@ void Config::save(const ss_api::Game &game) { } void Config::reset() { - options_rom.clear(); size_t start = 0, end = options_gui.size(); @@ -355,7 +352,6 @@ std::vector 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 diff --git a/data/3ds/romfs/skins/default/buttons/12.png b/data/3ds/romfs/skins/default/buttons/12.png index 8efd7a403545b86e491ef32ebef806f36d2dc5b2..2710a8af158ea9e0a64d19c35c51b3bf04b9b959 100644 GIT binary patch literal 951 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 ag8UEvgmg}>CL)CZ0000kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aa;ut`KgR7l6ImAg+=K@`S+XYSl} zfh;1%C}1!~f)5rSi53)E7%Mv)HJT6_6aNn@d;bEB78Y7sn%JO08p0YQDn^N`MnHLF z+1-2RSnS=q1G_w;&UEL@eD^!&`_5eW$0g079-IWnxWHa7IM0jtt zl%ms&F{x~Xu+4~;=(@>wkny4wR`c$fos60oGyy;q&~Ip?J55F`P{JLI0^)4}1W*A( zmXIv4Mim1fEgDwKY`zY2cpDYA08qNJjl#6|X9`1IEFj7l$@Y&Z5K{0d^c-9RGxyv^%=K%^RjIJBZY&Hraw(YO6~{52jKVBsWEG?rhInjFY&23g z`#mGg(@q6RjbvG&{Kj0RV3qblY0TYp2fX%=&>wp=dAW+)*Y<92etiJ=hroiS?7C#1Ai4!NF`0 zH~(0gre~QPEa>^_zBL-Vg3fS9i#zx?LJyaDc8W{v@`6>KuT6&fo&Uc60DZ*ocp=So zi2wiqC3HntbYx+4WjbSWWnpw>05UK#GA%GUEipM%F*7ppnGBPbNH7zhTR539+F*Z6iI4dwPIxsNcM35B#0000< KMNUMnLSTaLA%ZLb literal 2397 zcmV-j38MCiP) z%}*2E9>>3D`T{Ku_C*7<5X*ulU?L4^Ua&L?f=e8xvjW6E{9Pch8d$*ZM5o zC@$O)>D9!b(FD2x0~olbG&N#dI?$HB%()9Fm$uVV+A}>fIG+u}nVIwZb-r_6=A7Tm z0SpWb3=9nFgYb5s8cwJ4cuPym5X(Hbx3_0wvDgO7JXxYSK{`7-FAIV&P6)XUz@d_v zIHhz_mgVP>NaQ~%*{BOm3F7s7{{nEY$!7mvTU)!|WSbQ+@phnq$K!cM2>CY$)5D@D z`Xotu&B1mVnh?a}@mwQ>JmF=Z5HfV^*s=KL=H^FUKJ59z+W`RZcswhF5TDXMK@eav zvAJ*Z`8;GU`VrP**7?1v8@{#%O!2ZjN4c6MGinM{uXjMV!p z4~xU$fYoXR0JOBUFdN1F@#6=!x3>WRnM?-pc)aYG(hI)-uTomAe*pvtA&=j`e_u70 zxN4Q<@pzt@Or`*uD8^BR5HcbNLSSTM0VvvTl>K>GEEcr4w=>K8kc^LvjNDS%q1dQXO7AJ%L4qK_ZnvvCyj_~N zD2mMT7DW+~Bmn^W`}=YK{(XG=_D%8F{lCAkt&~=6|M&0TF*P-XSS+Sw;vRs1%IuaV zbai!|5(HtjG~H^o!r^Fc9GNJJa5~w>KgVJ*NRos*ckbZw<;zU-uEf))Pcb()x7WxQ z5Cp;Z_U+rE-d9j`y}$z(t&-TU8ex1*=02g}RL2cBD3 zW6;*t2B*_mcdRXM&YnFBtJR8=Cr_$oBauibKIa@nU01ZNtxdOLoH%i!DS;66mT-Mu z)do0q>J)Dms`A?jqV+H#)dew|%{X)BjM`>uroX?xuJax|cz{GA!PuK}R1?H(Hlwev z4_B^SK~GPQT4tKYt5>fuIy#Dpi3wGOQALpM?rvPVbP0aHztX#W+-M}+RFWi2OibX~ zwQG3!@+CvB{tr_@TrL+bUc89G!NI1yC&-JnwKY6^_z+jGUd6|cY+r3>B8bgq!|?Dh zE?l^P8#fRNg_z{YL=d;z&2!|GI|~a7`1I)$lf0M=+lE3R zL?RLN_V!kcxjl-AqKNVFaooCfi`fmyY#cq8%VBA0387F3eSLjLqGwf&v9U4Sy?Ynk z-Q7&{Wj?WyN~I7C2C=%jih+RvCa*NJWPX0Wp`O;cbLa5r(WAPbXAVNOnWjV{fti^Z zxLhs_4i2hirfGP+UOaj71n1A6SJjT{!Pe1e6w}kwYMZHN=UPQ!*4g1_4DUX z-Y!(-w-aQ3exA1rRjEr5rEg8?h4uCIrj(LgE?3uiWo?Kc2nR+o#N%;nZEZ1~q!I)H zR;v|+5VW?osyc=H`SWLtj*b>ZF|wY@t?{NUyVf-|>e*}-vMd(~kj-XmcCJ=Zsnp)K z8WAT2-n@B()2C0XlD87cWD<*ui#6TAWk;k^sesafo12@Bdv*vUNm9k;=H@15XJ?z* zmb`fJLNR?eOt*-#5)zBWHf%QA*_n46nZ3SFI?nwl#6!gi%!`W(RZ(!@+A zqk4nh+S*z)E+k13v#P5QwFvA85)1~hxVTt!jEd3krFNbx`KVZ_g~Q?3lv2eL)Fz!y z7qw3;Z-D)IWwY5bF`CHp>FH_3ub)HrUjS4&u1Om4!?X24D?~3vm zz~Ljl3`&VpN*`Af1E`_f8xDv6bUK}X+wJ!2l+uw(U!ZP)A*iLpyJ1&4xmuQJxO` zc4Jvu#}Gtg7=maFLlBK&2%<4``Ms>+;o$>=Cw~3T}~-pEs|DZUsrDQdn78DNA2jSt*)%)El}L1lVaO z_7Bx_9#Ut5t_8{Eaz&+NWo4!AXb-KRYe4{DX=w?`WD?0_5=%=zY*E~d_l+LD7sq5)-7%i^Lf=oi9{k*S1B+sFfcGM&>Q~)%q#wXn*ey( P00000NkvXXu0mjfbmokO diff --git a/data/3ds/romfs/skins/default/buttons/2.png b/data/3ds/romfs/skins/default/buttons/2.png index bdf86ba773378da3d7cfc69d2bc9ba155058929b..f20893cbca7b67a86a2610069d01eb6829d38776 100644 GIT binary patch literal 1168 zcmV;B1aJF^P)kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aaP)fLC_&pzke zdylVuVjL&&gZCp61*(S9460UYX;mSR=)X`gWJG5OG3lfdVu}E%5`RL(1V-(EAS4ti zZNsDz0s<*W(-=x2s9)M0Pj zgt+FacW-&c#@ej`tK8>}?CDv3eRB!}2|8mVrHP51t~uug>o*YT zk?SYDmi_ja+;MkV)E7jgW-KT~tt`}!bW6?`d!ugyR>gk!L;BpYkXyBcU6qMOqc&0N zTac=xq5ffv-T9&`Zvd7hJRSZxm*#LR85WGUk*M=T&w?(B-H3C|lLaN74+J4vvMCPof61hec5L7-WJdHsY1i7nQ&0V{mppOn9Mt_RhzSX({6-T>mY@=7k8ql zJ#0$UbK0ycE=xUV{_t|55p`l|_eKh(^;V~n38IL5oU-F{U)VD1w4NvmGGm>NHM@r| z$i^-;I;C`~?L`j={%PC9WwmAZ3P`0&t(w25^%StK<-Mk?jZ|_$V$qH(z62Y-u%(bA zR~c!v*PZXIBb%mnvAayc@kl~i`SXR>}P zbq8vlIPK3tRdPd{HjV9Fk1vLQbjkxjso-*4ZqH^a!Mt<|IB=cJ(7=XkCd$~p7T?mY zAN7NgqVZApNc~W%GBGriNo6uUxfzXho5n_(b6!qH2cC53NF&84UWgAj4+gbu6G2ZZ z!JbXmlq#j>ZNGQ*7M8}yu`TDjx%vlfFRE<&#+EHx{%yzDuHCZzlb5XB##C7_BM!r} zo=?tZ!`>miRcm&;3to@!s@A_H`2YG?mJHN)grEA2Ghs=FCSG&NpW}z&n`r%}^SAlh zmI+}P=A~%k^|&iu_5F05UK#GA%GU zEipM%F*7ppnGBPbNH7zhT iR539+F*Z6iI4dwPIxsNcM35B#0000|-bGNV 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 AQ~&?~ diff --git a/data/3ds/romfs/skins/default/buttons/3.png b/data/3ds/romfs/skins/default/buttons/3.png index 46ac2160d8df6dfe7a3283935cf3daca3a8cbed8..772a25b68bed6a2d58cb9fa9faf0f5bfdeb1fb45 100644 GIT binary patch literal 1126 zcmV-s1eyDZP)kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aas^C znV#txKw)6ONWg^>i6S9tH1Q=d1{3`X#w9F_TU@y@ac|Uw#E(E+xza>X6GMWEiR=gp zi8G9hElfAlHQiNpU3Akl2*#bB+TBz4f6hJkIp^|UTe$b~gJP&>S~3hnf3pa2?cV`* zNyN6pUhst7BYSU)0c+f z?cZWN^^;;ZiC`g3-ktZ_GDrv0dLl zB9$N-`BRBaecLT)Xl!#l&b7wAksV2%Z>rm&uqoK*X@|@rYB=Z_`vked4s}h*OAfmQ z*d^t~w4G^d$VHWoSxX)ku*XAYbyT9hrnXGF;N{fL5g;fUo~lXBsg$7OSJ7@;%-f4! zbU>-pma1{6s0U<3<}9TWO@%lX&t==}uwT^jyUUaHLPH{DkG4O^2;xj=1&MSVpJ3pk zd5g$hG?*x^8Y?uk;!LLPhHry(ro|RH1myP8+Ld5YGCXs_oJ}UJ}>`gMrHk~h2deYm?F-dZ|VN*(nC(@mQ;Z1l>L zPFTLrP-Uwbu@zo-EIE?3Y7=^CsMx5^`Y3)bU%5lpe|uOKH4L|eXT9RduqZwZirX?KkY9PGiQX4-Sr3n001R)MObuXVRU6WV{&C- zbY%cCFfuYNFgYzTIaDz-IxsmpH8(3TFgh?W_r+nV0000bbVXQnWMOn=I&E)cX=Zr< sGB7eSEig4LFf~*$F*-3eIyE>eFfckWFyKUx6#xJL07*qoM6N<$f*Q;5bpQYW literal 3736 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 diff --git a/data/3ds/romfs/skins/default/buttons/4.png b/data/3ds/romfs/skins/default/buttons/4.png index 13faac003605db9b85206cc1426cbdf6a19760d5..a963c1bf1ed0cacb5dc069f693919052c6d33edf 100644 GIT binary patch delta 928 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 delta 2093 zcmV+|2-5f92j~zXiBL{Q4GJ0x0000DNk~Le0000$0000$2m}BC003aQRgoc7e*+5% z1|6p5Up@c;2XIM5K~!ko?U-3?oL3dcf9HP7jP3C<@t(~~q-GHzX-igUp&_VJfrqkH zNC;K%L_uPCt<(RQAbs>V zomJ+@af?~5Fs~(v(W&n{4<8TH27o0dA|@gtMzJ*o6<+7p z{7!GQdkI;s9$_Ef=SZSl@CXP9Njc+(4oEX4iYv|$%2cRQB}Qu?UgCS4S?!v#O8o}D z#8Yff4hE!1(?J&*0)ka)f7?+^l`46bDN>?LwFcq>$M_|8rq%*5L4>!R@A7#%6d@o@ z2R-!AiSHN_D>qxZ**i>~GorvEixeqQMG+|S8-5U9@L7osZ$%^q`h=gpX0e=~q_l-q}ShC?b4 zkRi(`1B3{cDitbJi5u=NEla`0!HOFShLCPTtaDRD#@KiJEuGFf2o69WvYnrBP!ZDf zFvutwgqSL2=S0mRTNvP#-oio+KriwYzO5dl=w+0CJS-K;*n3dk2qJMtFnDxg zoR1)~gX?(2V8j_E<~eTh5w`Fm3n+a&MjtWrTx6Of3=;!F znd96*P$J5t3CU7OUN__+c~%QX(JXrvA*6#&Afj4-R^fggK`GFKM}Y$U3{ql=m|h-a zC%XXf86{wre?C6V11z(|07I0>uT+G@`gD^fOw6=bvx+a!$<{34F(x?2n<$%jm_3|9u>70zJisOX(dO=o;332miIS~pEr2hu$T|6tQl&(J zUVQwz>lh3Jj8Nq?mw=dA0+c~!`3n~i-eG_)Qp_+<%vpxm$`vAR;x%~_1o%LnO6`K@ zWD#Tni+q)18VVT(*^Ez|ypDUe3_cZ>T?R0Kf5jlqr4$cwt`@r&ik%^C{UvKLR%Mzw z@+eZ_DgBwj%aMgUd`vc~^U+QW2I~^7rA(2EtA;h9*1^I3o#aDt1$l+9S-oYBd6tP0 zILi-ZVG0j&^e#vjAIB&bOF$a0A;~ruU~y`jcVyN6igF=z879X~mXaD1@nikNHRqUQ ze_@K9vR#R>RPjmS)$@2`$+;U!&iSNBVX(||lO;-tS&s9x$UzxSDtHBT z5PXd5b+`){HExd-DSU(~w;R>J$#?9(eCBHa=E-7bRHu5ld_2uKc z@g*d1**;>4+su+9PbG<(m=k=%o-z&N$*RFbH_O*~Qb(w}PzN1!(nHuZ60e>Me`=I8 z@QV~EQl#t>Jje}xu0NHxr`9;vpB8_mkDk#{ka z<2b*Nmxx-&^)@Em#%0Dc9OY{qCQ}~oWv~Dy>CWv|~lIJy^;g3`KZCq~S zH*3&14DtwHEK^`s|0=I@UN6fGcIsW^-_1v= zK)M-cf-y!JBHa`SLWx;sxW-kcbV;i3+efO^G>J%@Qos2lnM7V$^~&9ge_N+@TBmhd zr~iBU4<`W{AZ1(9g8%>kC3HntbYx+4WjbSWWnpw>05UK#GA%GOEio}vFgZFfGCDLj zD=;uRFfeM_nWz8&03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOGA%MUR5CC+FgQ9jI4dwP XIxsMULf&cs0000kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aa;;Ymb6R7l6|)Xi&LRT#(d&$;)` zOfr)+X-#V;lzB zMHkZ6itQwQNz%?+GLt*^xabg)IIYCo0 z{B{6!vM}d>gPu@V69u`ZUwsm;7UmxYn4|0kuR7$hw310Bhzf-@#cz(M->+F14VV*? zaKJG~O4BtvjH^h7*9y@+^ZJ*(=3)b+8^txd#ffmthuNW-v3>TKRFTPK(&4HpY3`1d z;_Jzxjcg-e2Q%TF@Wxbm)`TDmG9?)Xa=C$MQcd%4vdM{{yDl!9o zYjS-nI=cFL?6PYMpsvW$EmnShcES*|OE5Sa9B1Kf7kR*UyTZHUa8lExb84Q($;4N2jPwY!UQxs-7eTL7u9x4j?#0T|AMNftcS-(NLm&Am#z;Fld*m{2lUb;^k+ zzrDS@RxHXY%=N$hQpDIVzskaaq2dCi>s*+ut#&Bm3RdpIiU{ z03~!qSaf7zbY(hYa%Ew3WdJfTGBPbNIV~|cR53F;FgZFkH!CnOIxsNz#bK%d001R) zMObuXVRU6WZEs|0W_bWIFfuYNFf}bOHB>P%Ix#jnH8?9UFgh?W;6#uW00000NkvXX Hu0mjf$;z|+ literal 2799 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 diff --git a/data/3ds/romfs/skins/default/buttons/7.png b/data/3ds/romfs/skins/default/buttons/7.png index 01f137a1ee7c3ddc6187533a2b1f8589676e5d2d..cb71a655354f01f1dc177ac824a5d9cdc97cd640 100644 GIT binary patch literal 1045 zcmV+w1nT>VP)kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aa<9Z5t%R7l6=)IDq*MHImC|C_nn zJ)igP{2^iAfg`M>N)(ACCU&V|M`%$lR78~&>{fdku~fM z7Ip{JQTQod;!$c8@CY4RT;&o!`zE%vGcZYjeT*6PNJ-RS%aLQrQ-58~^9kRQHMa*E zaF7oR2kVTZ@Bnxm8C?u9{bf$@zMGSLV%;fCmC_FR4*RDKkU~N0$t6TxaPH&vOQv_c8$Jka%NFT)p8h$VtBRfAj-0u@Yox zgaRR85r$|F*%3~Ynf1WkFvOTVT2vP}$)$Wa-eZbtP*_J!fgCf*H_UGd)Tu<3YLq~W zERC+X({io9zdf!9C=gZ#T4^y0Fes!UVhdJNwVsUs9Sm4%98GOaZT;p|at!Y>*baHYmDF%M> zi`xM`VjQO!=dfVczHqsK#d4dp%V#S8dmCVm7xzLzM*(-yhP%Ix#jnH8?9UFgh?W;6#uW P00000NkvXXu0mjfl-;VY literal 3306 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 diff --git a/data/3ds/romfs/skins/default/buttons/8.png b/data/3ds/romfs/skins/default/buttons/8.png index 6942e1f9b1f22dd09130ed8d939de93c56a3f63e..c51e44b22a8d4667a0edd774f952fff055421ed0 100644 GIT binary patch literal 1026 zcmV+d1pWJoP)kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aa<3Q0skR7l6|)W3^dRT#$c&$)MI zc6PFpY_cT#BOqC05Iq#xh;-;egcYsCR(D*QY z^N{`Of`P6rTmF>Ac*lxwedV&%Y$v%-*chPZlRdATP(ejSPn7H1v1MCNmbvK%7kuqX zTr(KuQyFuraerF!rd0J6Qq$@V$nMAaS{6(E9!(md9_|4wg*`PxW+E&74Hg}=VpBzJ+%!=} zC+@^a6XSAH9RbKoF$<1cbxkPuBfvnsV`D5~!D}2#3<0TJUj98K=%|&6ju5#%Et_GK zLE=oq@tP`vRHi5|v~fb_Csfr8M8QB`xRUm=2?+<|@|0ARNbQsk6t26WVOHOkdC$0G zMP^$z@J+6L7vM;kpB6-^LN?K+xsFXi$EtlAg2IM)!{u=&E(+ok$;@=AyDv_>@?kBa z%%%-N(AD7!*NiL=^3+om(`63~c71cBuW-{~-N&-lxMq?$r|PPrM6S4h%8ZK_@SEQ` zQ(PETWaz;$M;cOuvHsnzN4K>U=e(Dc@kf9|VS2i(aNH$+6a=|-ZTZFcR=9pQ%n)!p z_WHHSR=MASLdUv|BA$zHr{8zo9-pN&*>t-1Fg58e@pBz5ZQZsHyc2#dtltB-C=pM4 zKRj7an`YF@w1yL@t7BW<^0|-VrI5EC$PNqE!qTEwz3gN-kS4<^Q;3RKbX|4USyv5O z9$XV+Jr9)`N1b%kTuj8UqvNI(SMpm)+eFfckWFyKUx6#xJL07*qoM6N<$f|aVk`v3p{ literal 2808 zcmZ8jdpr}|8y~rhTt;}wrO{|HDuhrjxlWi>b4kf8DG@JX^}65hm*m=V3)yTgW9BlK zu%#uj@S@43uok7;D!1SI{rR5HbI$pk&*yxe=Q+>wJ>Ta^N4VHaiXRjQ005GX4mL>s zj`=fzBK$RE>A?j6K)lb<#_B@U!*$#!a>@H3WA8{@_}a?c%`?^Pt^iysp{OW+6pnKho6_oYP$L{yDtAoEuCKiqa4~Mb7&SH;KQ0%<}Cv-a7<* zB;R6;@$1=ve#U>tDi&1269!o772i7~o*WVz`?i$V{z6%waKN#k?d;JV!G!~Hu1R?( zm#;%>Qvn%ebq`1+(ykdH@Djva9#S#3mk&Z#7RLCB9hZdP$VYm~3RQ)NhHkQVbiB>Y zW&T_czdD@*^hdy%0C-YfLEVj7CX>0>Imy#lECY{V^z|~9+^Mi6rNW7`)(+`NFFcB{ z_v80Jq z(v*rKB;V=I=1Xd-XnpbPiD7K;#%K$;(|dyk23{lcii?W!Mlg8}5Rg=A=kJfyR6=GZ+B@`$B8JWB#(mNv@0iU!-2nkw5_ktbwu$t za4b^i+8>*zB5p@zSqx)qr>$H~CB3*tiV_+sQinmn%DHvxix)Ti1{aS%T|8b?Tr2>{ zsFoOR;mpe>5tXoFo!5z9{#IwNh`n$bSzke9g?wrkYrKecN#lA#>l3FMTDCQFA@OVIYiO1Te zeTQ24X1yiwDB!1-BQg`|Rb5yFkYk73&hblwIPM7`qGlD6ft5dDcdXa>=T ze6h!&NmT4*?`3XjH@L~Ck4|uJvYXx5*m%Wx5uJto=KeU!NEEp-?CUVG_*L zzu8_E7%iG;1-b9Y7XXFD6^bi>IKHVik%bg9X_0@M_e*_1!635fSEHjeZ3{$gDK)|Q7f~uij9}?fULTf2aN6SYw%0~sG zwkN`w`PXLJUq~vtHkFTRc@Y&bo@!e#b&PYtV+$W|@9i+Jz8oPLA@vheRl`j=pnWS+cb1u zKGTbAs6;k^6*AQyz}0as(!@ktQ=A%BHFLNUnn5Tc_w;1(p?rZbng3$|5T>0Yq@I-J znZ}9>US)RDXv6F4>z|8D;k9|A{`v4)P%gtccW!ppny;dZ0x5O5 zQtp$f5R7^iBA{_J+b6JQynkdwjJF!m;onw?U2p)Q5FKc~@?0k(wbAibP*AofI#$6zuHC9IaG7qwOc)c>9lw#2B+5s2$76%~j7> zLR8+Esv&oEW$-}@&CvJ$(cbzkQ1+D*YFCt*(A+o}yd7fDt&jFUZQd8NOiwQ_SAKo7 zy@8a|KI5yG;Gq<2F8^+Kcm4w>Xz)4Z5gj~*E_E?ivo}|(fTs24W?JP>2BhE=m%O%1 z7#lZ=VOvp|bnyCv_ zA=ZXH88b6VOj9pB-i3J6SEK{n_;d3fC5K;w_!QJ~hi~S-S;Td%XHKm-`~p>B5u4L~ z9?rz$XT?`cy%QvsQi+$fl0YzBT^f}81V!*Czut2B3*DY$ciKFigDQa z%0dOgDMgaN7OEw}l{zGTrF}K*|bQtGi5#8)M72tbM;r?d`QAq72wki|vYl z3a}qD?>yYm+)V45n<*KzZvi$2aYPi}*)6O39hXxLUE^&b|j?!9dMyp(V6)7WLuq$pSM#>cS3P|Q_L+(@xQ z4)78Eqv*U~$denh^VOI3WtN&V5PZsZW{D@|J*~8Z5BL`AZc`@r5Ue)++HcJ)j*8wF zR#;TYOroZzLqXf1_E!u91oY?%o%nAL$v>|~GWG;grFijKjbTpwjuzl(>taK)zMAkq D3j=lN diff --git a/data/3ds/romfs/skins/default/buttons/9.png b/data/3ds/romfs/skins/default/buttons/9.png index 6aef3cb37574ecc2440454fc3881018c353ad933..b219030f5c220c95849818b89e82133fc6737e85 100644 GIT binary patch literal 1033 zcmV+k1or!hP)kdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2^R`5D#d*zn*aa<5lKWrR7l6|)ZK1WRT#$c-&%V< zJ2TKy68aH{77`S{Pz-|c3dAE1IMs{r#CQi@gqMKvTtbXS(->odCK5lOA(TQZblOhK zOlS699&}GFgb+?meD}#t_FDh-ywCfr&40ea^DLT^LTH3a8WscT-tz;Fsmg0%#w#v* zCmjh7{p6ZOn}vJN2F#L$DW{!x(OJi1qpm79FxvKwPhG!TuB<$HW(rv+yyz|OdfP%c zRMphh(o|9Cd)QigzqlT+&y*TUz`R7myf<8M!Rc_c66;#pCe%bh-B7NhrfV=eh*@z! z!JKr&WtY5WHmlW5Xltp;q<{cKAGeT+8-0HdF*8Nkud)-=lyi zG8GO20_R+w%I4KXBt%R*>affo?n_eXcT|xk)yA$xa46IcYl>)^@v>KSyrku>s!1fp zKD;V)93BJqOk7XHQ9ViOURP7slMA|%WCKaADoBDFlcwD|2za13Y{SS6!5K@2f)i?% zt=jui6BT<3+G#dC*206dI*8XeUQIpBg3Hw39 zsw92yqu~#?E$KZ~!x)&~i6xV!VxOEV~ zu1%e;tG+A3&V0Akvny99f@o7Sx8j*3N}xmD;r-R?PR&iXKY5KhKMEKf-ad7l3E zvn#%8t?i`cXUxlt6tg*JoHA=F1tE;A`O~j%ws*GEvj1yb{{T4|C7w7DMQ8v303~!q zSaf7zbY(hYa%Ew3WdJfTGBPbNIV~|cR53F;FgZFkH!CnOIxsNz#bK%d001R)MObuX zVRU6WZEs|0W_bWIFfuYNFf}bOHB>P%Ix#jnH8?9UFgh?W;6#uW00000NkvXXu0mjf Df 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 IM6N<$f|`2id;kCd diff --git a/pfbneo/data/3ds/romfs/skins/big/title.png b/pfbneo/data/3ds/romfs/skins/big/title.png new file mode 100644 index 0000000000000000000000000000000000000000..829ae353f66e82d0b1c2efee1ae2daaee560f0b2 GIT binary patch literal 21813 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�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 I;Y9g69p&6U(ohf@QN9a|f zo1@a1yfm<&GwCD!(lw^F782#_j8D?f=fMBSt1}e4z>ih+(^s_rYlW(QDk49|49eYC zd^k55ySzpBO~Li!;#%2zFiIshxTJ_Fmg{wr1U|rcA_2rN=@nTxBea%i7C2U}Fc48- zXgZNY+(UGFjfFiJ>J@|i9D{lVx~Xob;MyP}{|oSAEW~p$mj0^ZvDrr>%Zs%Ix+MV>ct|J@zWy%-Z~3%)a2ewM@BqDd2bWgkNw;p+BDJ(uP9 z=c~dT*)v{si!(uV(E0Vt&;P5*GSB?SCp<#MFc%aQ6coIUxOm$~K%yh&=C_%DcXZOEq?Lsa^!dCUO4O6&OATo z!6nY&x$l*8Ec2?*^Q*qsUYqY(a2yv8Wp8`#X&jn3d^dT#tGV6Wvshse2{=h4D?+LhchZxb$TnE%@?;hg}eX%v6gmNYLm3yC-#nl-E| zcS&6N&*^H{MBFhyKFNkeJ=KU0sb|li`1N1=^nZXq-hFr zr^oM=lh%KcWnOguSHAvv@3nvRuP(Nq|M(wyE!Hobo)^N!CH-S!V1r5cc|esItXxW6 z>f4*jn|xX)BaLiBQ;Ag#9%WevofFD#SZ7J!z@^^4tL*I+@!D*>Gge7mF7+ywyraZIE7P-r zf`WpAn}~}W=4AXF_RA0XV?n%QeU@T@Q)(EbFsY zB|0g_`KBO;p4UU#1qJKKq2u*%bwR}gu6p@59G|G_pQ!5p_pMO#YH9aePeNP z^W{umQxfSbZ%8B_YiXau-C<1tgR4r8dH`Z=JovQ`pNjK!^BO5K^io}2MP)b z3JMBt94=v)9inllXNI94h4o6#hEg3>uulb!_g!YiP={k39EbN;#Ytk`SITc^<9$*I z)tllm|Ec`Nsrk{h5}?~IpKntA^f}6s~M?{C$$)UEiKtTQ07=e_n%oRgCN#B6{)C%Y0t7Va+&6xBZInHC%sOlIIq$Zg$IZ zTQf5?y*FoxmYU8~%pY6Ml{&Rti9ZlaGBcZ?Mu8$UGjGj;6)H9nbEftKs5OdCG zKvFp+jgVBNEB=H40fozp_ntrB&wI}KobPkK=Q+>keV^0t*M2FNeCkYH13_15a}jca zi+y%rsWgV#S0dWb59)D+c0i}w5}MVFMpAT5+`g941xa@1(Fo8==}J$gEFpXyPWkZD zahs?7Fd`zN_ClxqW^3>3F?;bXQ-q04{PQV@10wA0!`Sa^4W+Wghz|+_``i^Qwe?%~ z_nC!NISEyC^^7K%*AfsJ2s^p5*Ry66-2?6SZgrL~{+s@*+YF;#L3YsNNN!&X8~$qd z5T{jeU@on@E4n#Y%~^=(?di)9QJM)~oQ{aj#n{y-1&DRIN4oAx4?IOV{1JJ-Nz?8Hx4f?$^C5@Ei}I-S z@twJ1Tw(E$mbZr@-$9>*9pvI*2L_g@R@}VBxda9l{O4fkgY(%dOww@j*i;mFN`)3F zz%ySiz~k(zgW|9Ao7BQ9@dIy6$#27Ecf=oTwNJyLYME7?&oMzlmhed}zZFl-Zz5xQ zC@3H3lp|Y^)4?G!k*{)!owYnnT_>L^f7B&{Y1C|jq5h*|sC)HuH6fXWBU?IbotK>FieBuBPe>-xm-ekBtQh z1Ro?UU>1LXa&eReQ)_#86QJAGR#t&K>_5pgp}C85(I7)O{OWT1L;w7Nqnbj|1M^Q) zyd7yZ-H4r`rrP0%5ub;>SgJbx^c_*@SDJ@;TMvzP{#FYcD=UCL4*(33 zRn;<#kNV!TZI3#viFa(P@N;jxm5nej+dJ(l%=*uBwwEm${y$aSx|3WGYL zp~(ac$roCTA5w+h6r)m9Kan=V6>r16xM@cLLE0i4Q$}iTyzg2J;r~t2wygJ4q_qrd zFCBxjwDU1D&QRd3g|cy8#7Iq5Dnf-$B>*RD|)RD*8*2|#$yCdOTul=J>V#>cGoqS8SdT5ItD&!np!9y{pcovJy` zYl3;=NfA5I5kkh#lcRvrd zVu;M=jI4R`kw`ProZswWX)pv?tp7_ZE2pEs8_gNC6SAEbHfz3)kCwbt>mO!0hy%ft zm31^JlT|Q%2-1(nIY=f^3|@K`!ss`nF|(!S3O^>lsa~@7N0ozM@JL!s75G0ZH$;~} zUO=9J(7w<+O8cGj8uW0m`|T%hXg60VYvU0dFYqec0{;Q=-p|nMqR?CWie7UDc)oS* z<{^cEh#bh~!3D-*s(3#8?Z`(atOuJ2GL$*W-S(Jaqe|~YT-@zqicK;> zQ^v?iMnCQ`OEzT7=&@iai9O1!8u?f-$`SGok9`JBwAGW$s)xfdgJ#t%FBOAeYNFv^ zgTrPi-5-?ZUES>2X&u;oP}OPVd4p8I4x!a3B0IW`S+DIm0So{X3NsQtN5S8c3hUav@|&19e~B{|pCJKY=g ztjN8X>EV0`R+L>*qfmEZC+QjGtD3>yG5`>P z%I>9&y5HSFIy6h!&Xcsw$8sS6n~oyCM|vb`&V}jr!L4h$$Ly1-HVUAZFn1HDp}`fk zc@pKlSnzmk{VYk-&cOi=%?Al?r3b#2C1_Fy$f|@XMq05Q+`?g`ZC<8J!Lt)p(Y0sH z1BBt64~whD*wIjovnsjqyDV8HLQnJNuk`5Z6%^jkl%T@V^=yka~OUdY+FCb za!eEZvpI_X zy=Lis6k@vtGxk)+aRSD!k=3ypv9d$CQ-#W~Rds#$`DzE|+A4r^&QY2?6VFv!kd&Oh zHa&8|Ypc#qyPe)UAGAuioGRneU_N=BGs8hKr=f<;6tv2W-F=EQZ2|yKD~- z>bOZ9^9Wl?cvN_J{SKMPx*raN9YnDA6S(JoW$n`?9S2!D6lstVuW60goH4h Date: Fri, 23 Sep 2022 13:17:32 +0200 Subject: [PATCH 24/70] pfbn: disable more drivers on low memory devices (3ds, vita) --- .github/workflows/3ds-dev.yml | 15 +++++++++++++-- .github/workflows/3ds-release.yml | 15 +++++++++++++-- .github/workflows/vita-dev.yml | 2 +- .github/workflows/vita-release.yml | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/.github/workflows/3ds-dev.yml b/.github/workflows/3ds-dev.yml index f6df289e..0bf526fc 100644 --- a/.github/workflows/3ds-dev.yml +++ b/.github/workflows/3ds-dev.yml @@ -24,18 +24,29 @@ jobs: sudo apt -yq update sudo apt -yq install git build-essential cmake zip + - name: Build pfbneo + run: | + mkdir cmake-build-pfbneo && cd cmake-build-pfbneo + source /etc/profile.d/devkit-env.sh + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_EMU=pfbneo \ + -DOPTION_LIGHT=ON -DOPTION_MPV_PLAYER=OFF -DCMAKE_BUILD_TYPE=Debug .. + make pfbneo.deps + make -j $(getconf _NPROCESSORS_ONLN) pfbneo.3dsx + - name: Build pgen run: | mkdir cmake-build-pgen && cd cmake-build-pgen source /etc/profile.d/devkit-env.sh - cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_MPV_PLAYER=OFF -DOPTION_EMU=pgen -DCMAKE_BUILD_TYPE=Debug .. + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_EMU=pgen \ + -DOPTION_LIGHT=ON -DOPTION_MPV_PLAYER=OFF -DCMAKE_BUILD_TYPE=Debug .. make -j $(getconf _NPROCESSORS_ONLN) pgen.3dsx - name: Build pnes run: | mkdir cmake-build-pnes && cd cmake-build-pnes source /etc/profile.d/devkit-env.sh - cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_MPV_PLAYER=OFF -DOPTION_EMU=pnes -DCMAKE_BUILD_TYPE=Debug .. + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_EMU=pnes \ + -DOPTION_MPV_PLAYER=OFF -DCMAKE_BUILD_TYPE=Debug .. make -j $(getconf _NPROCESSORS_ONLN) pnes.3dsx # too slow for 3ds for now... diff --git a/.github/workflows/3ds-release.yml b/.github/workflows/3ds-release.yml index 0d2a4f1b..d6aaf55d 100644 --- a/.github/workflows/3ds-release.yml +++ b/.github/workflows/3ds-release.yml @@ -24,18 +24,29 @@ jobs: sudo apt -yq update sudo apt -yq install git build-essential cmake zip + - name: Build pfbneo + run: | + mkdir cmake-build-pfbneo && cd cmake-build-pfbneo + source /etc/profile.d/devkit-env.sh + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON \ + -DOPTION_EMU=pfbneo -DOPTION_LIGHT=ON -DCMAKE_BUILD_TYPE=Release .. + make pfbneo.deps + make -j $(getconf _NPROCESSORS_ONLN) pfbneo.3dsx + - name: Build pgen run: | mkdir cmake-build-pgen && cd cmake-build-pgen source /etc/profile.d/devkit-env.sh - cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_MPV_PLAYER=OFF -DOPTION_EMU=pgen -DCMAKE_BUILD_TYPE=Release .. + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_EMU=pgen \ + -DOPTION_MPV_PLAYER=OFF -DCMAKE_BUILD_TYPE=Release .. make -j $(getconf _NPROCESSORS_ONLN) pgen.3dsx - name: Build pnes run: | mkdir cmake-build-pnes && cd cmake-build-pnes source /etc/profile.d/devkit-env.sh - cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_MPV_PLAYER=OFF -DOPTION_EMU=pnes -DCMAKE_BUILD_TYPE=Release .. + cmake -G "Unix Makefiles" -DPLATFORM_3DS=ON -DOPTION_EMU=pnes \ + -DOPTION_MPV_PLAYER=OFF -DCMAKE_BUILD_TYPE=Release .. make -j $(getconf _NPROCESSORS_ONLN) pnes.3dsx # too slow for 3ds for now... diff --git a/.github/workflows/vita-dev.yml b/.github/workflows/vita-dev.yml index 38ab25e0..274a410d 100644 --- a/.github/workflows/vita-dev.yml +++ b/.github/workflows/vita-dev.yml @@ -35,7 +35,7 @@ jobs: mkdir cmake-build-pfbneo && cd cmake-build-pfbneo export VITASDK=/usr/local/vitasdk cmake -G "Unix Makefiles" -DPLATFORM_VITA=ON \ - -DOPTION_DISABLE_CONSOLES=ON -DOPTION_BUILTIN_MINIZIP=ON -DOPTION_MPV_PLAYER=OFF \ + -DOPTION_LIGHT=ON -DOPTION_BUILTIN_MINIZIP=ON -DOPTION_MPV_PLAYER=OFF \ -DOPTION_EMU=pfbneo -DCMAKE_BUILD_TYPE=Debug .. make pfbneo.deps make -j $(getconf _NPROCESSORS_ONLN) pfbneo.vpk diff --git a/.github/workflows/vita-release.yml b/.github/workflows/vita-release.yml index ca40cbb0..3f9efa59 100644 --- a/.github/workflows/vita-release.yml +++ b/.github/workflows/vita-release.yml @@ -34,7 +34,7 @@ jobs: mkdir cmake-build-pfbneo && cd cmake-build-pfbneo export VITASDK=/usr/local/vitasdk cmake -G "Unix Makefiles" -DPLATFORM_VITA=ON \ - -DOPTION_DISABLE_CONSOLES=ON -DOPTION_BUILTIN_MINIZIP=ON -DOPTION_MPV_PLAYER=OFF \ + -DOPTION_LIGHT=ON -DOPTION_BUILTIN_MINIZIP=ON -DOPTION_MPV_PLAYER=OFF \ -DOPTION_EMU=pfbneo -DCMAKE_BUILD_TYPE=Release .. make pfbneo.deps make -j $(getconf _NPROCESSORS_ONLN) pfbneo.vpk From abe41d327c95da9954ab2c8e5b7850a01fd80851 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 23 Sep 2022 13:17:50 +0200 Subject: [PATCH 25/70] 3ds: add pfbn icon --- pfbneo/data/3ds/icon.png | Bin 16818 -> 15787 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pfbneo/data/3ds/icon.png b/pfbneo/data/3ds/icon.png index 5da449278cfedb07e9f4aebc73843ea31c2ae92c..55f7f6b00d7ccb71bc202bc72cb355b7cec40fa6 100644 GIT binary patch delta 9154 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 Date: Fri, 23 Sep 2022 13:18:21 +0200 Subject: [PATCH 26/70] common: change fps color from white to yellow --- ui/c2dui_ui_emu.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/c2dui_ui_emu.cpp b/ui/c2dui_ui_emu.cpp index 01c18950..5c6bb1c3 100644 --- a/ui/c2dui_ui_emu.cpp +++ b/ui/c2dui_ui_emu.cpp @@ -11,6 +11,9 @@ UiEmu::UiEmu(UiMain *u) : RectangleShape(u->getSize()) { RectangleShape::setFillColor(Color::Transparent); fpsText = new Text("0123456789", (unsigned int) ui->getFontSize(), ui->getSkin()->font); + fpsText->setFillColor(Color::Yellow); + fpsText->setOutlineColor(Color::Black); + fpsText->setOutlineThickness(1); fpsText->setString("FPS: 00/60"); fpsText->setPosition(16, 16); fpsText->setVisibility(Visibility::Hidden); From f515827eeec8e39bf1f83e006a57188784f9fa10 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 23 Sep 2022 13:18:45 +0200 Subject: [PATCH 27/70] common: change menus items position --- ui/c2dui_ui_menu.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/c2dui_ui_menu.cpp b/ui/c2dui_ui_menu.cpp index a4c5ee25..82c3e766 100644 --- a/ui/c2dui_ui_menu.cpp +++ b/ui/c2dui_ui_menu.cpp @@ -33,8 +33,8 @@ class MenuLine : public c2d::RectangleShape { value->setOutlineThickness(textGroup.outlineSize); value->setOutlineColor(textGroup.outlineColor); value->setOrigin(Origin::Left); - value->setPosition((MenuLine::getSize().x * 0.57f), MenuLine::getSize().y / 2); - value->setSizeMax(MenuLine::getSize().x * 0.40f, 0); + value->setPosition((MenuLine::getSize().x * 0.6f), MenuLine::getSize().y / 2); + value->setSizeMax(MenuLine::getSize().x * 0.38f, 0); MenuLine::add(value); sprite = new Sprite(); @@ -63,7 +63,7 @@ class MenuLine : public c2d::RectangleShape { getSize().x / (float) sprite->getSize().x, getSize().y / (float) sprite->getSize().y); sprite->setScale(scaling, scaling); - sprite->setPosition((MenuLine::getSize().x * 0.56f), MenuLine::getSize().y / 2); + sprite->setPosition((MenuLine::getSize().x * 0.6f), MenuLine::getSize().y / 2); sprite->setOrigin(Origin::Left); } else { sprite->setVisibility(Visibility::Hidden); From e0985cf09bb3497c5f5d312712731c15358336e4 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 23 Sep 2022 13:19:32 +0200 Subject: [PATCH 28/70] pfbn: disable more drivers on low memory devices (3ds, vita) --- pfbneo/CMakeLists.txt | 80 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 12 deletions(-) diff --git a/pfbneo/CMakeLists.txt b/pfbneo/CMakeLists.txt index 8afbeb53..c2b5f6fa 100644 --- a/pfbneo/CMakeLists.txt +++ b/pfbneo/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.0) project(pfbneo) # pfbneo became very heavy in size, we disable consoles for ps vita -option(OPTION_DISABLE_CONSOLES "Disable consoles drivers" OFF) +option(OPTION_LIGHT "Disable consoles and some arcade drivers" OFF) # handle m68k FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/deps) @@ -77,7 +77,7 @@ set(DRV_DIRS ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/drv/toaplan ) -if (NOT OPTION_DISABLE_CONSOLES) +if (NOT OPTION_LIGHT) list(APPEND DRV_DIRS ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/drv/channelf ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/drv/coleco @@ -96,10 +96,6 @@ foreach (DIR ${DRV_DIRS}) list(APPEND SRC_DRV ${DRV}) endforeach () -if (OPTION_DISABLE_CONSOLES) - list(REMOVE_ITEM SRC_BURN ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/devices/vdc.cpp) -endif () - list(REMOVE_ITEM SRC_DRV ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/drv/capcom/ctv_make.cpp ${CMAKE_SOURCE_DIR}/cores/fbneo/src/burn/drv/pgm/pgm_sprite_create.cpp @@ -177,6 +173,44 @@ list(REMOVE_ITEM SRC_CPU ${CMAKE_SOURCE_DIR}/cores/fbneo/src/cpu/mips3/x64/mips3_x64.cpp ) +if (OPTION_LIGHT) + # devices + list(FILTER SRC_BURN EXCLUDE REGEX + epic12.cpp|serflash.cpp|bsmt2000.cpp|mb87078.cpp|poly.cpp|sknsspr.cpp|qs1000.cpp|v3021.cpp|decobsmt.cpp|intelfsh.cpp|st0020.cpp|vdc.cpp|ds2404.cpp|rtc9701.cpp) + # snd + list(FILTER SRC_BURN EXCLUDE REGEX + burn_ymf271.cpp|c352.cpp|c6280.cpp|es5506.cpp|i5000.cpp|ics2115.cpp|iremga20.cpp|mpeg_audio.cpp|multipcm.cpp|ymf271.cpp|ymz770.cpp) + # cpu + list(FILTER SRC_CPU EXCLUDE REGEX + adsp2100_intf.cpp|arm_intf.cpp|arm7_intf.cpp|h6280_intf.cpp|mips3_intf.cpp|pic16c5x_intf.cpp|tms34_intf.cpp|arm.cpp|e132xs.cpp) + list(FILTER SRC_CPU EXCLUDE REGEX + h6280.cpp|m37710.cpp|cop0.cpp|cop1.cpp|mips3.cpp|pic16c5x.cpp|sh2.cpp|sh4.cpp|tms34010.cpp|upd7725.cpp|v60.cpp|arm7.cpp|adsp2100.cpp|i386.cpp) + list(FILTER SRC_CPU EXCLUDE REGEX mips3_dasm.cpp|tms34010_optable.cpp) + # drivers + list(FILTER SRC_DRV EXCLUDE REGEX + d_cv1k.cpp|cps3run.cpp|cps3snd.cpp|d_cps3.cpp|d_decomlc.cpp|d_deco156.cpp|d_simpl156.cpp|d_deco32.cpp|d_backfire.cpp|d_vaportra.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_tumblep.cpp|d_supbtime.cpp|d_funkyjet.cpp|deco16ic.cpp|d_dietgogo.cpp|d_dec0.cpp|d_dassault.cpp|d_darkseal.cpp|d_cninja.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_boogwing.cpp|d_cbuster.cpp|d_actfancr.cpp|d_boogwing.cpp|d_dblewing.cpp|d_dreambal.cpp|d_rohga.cpp|d_sshangha.cpp|d_pktgaldx.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_m92.cpp|d_m107.cpp|d_gijoe.cpp|d_moo.cpp|d_mystwarr.cpp|d_xexex.cpp|d_xmen.cpp|dcs2k.cpp|d_kinst.cpp|d_tunit.cpp|d_wunit.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_xunit.cpp|d_yunit.cpp|ide.cpp|midtunit.cpp|midwayic.cpp|midwunit.cpp|narc_sound.cpp|williams_adpcm.cpp|williams_cvsd.cpp|yawdim_sound.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_msx.cpp|d_nes.cpp|d_pce.cpp|pce.cpp|d_pgm.cpp|pgm_asic25.cpp|pgm_asic27a_type1.cpp|pgm_asic27a_type2.cpp|pgm_asic27a_type3.cpp|pgm_asic3.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + pgm_crypt.cpp|pgm_draw.cpp|pgm_run.cpp|d_exterm.cpp|d_madmotor.cpp|d_psikyo4.cpp|d_psikyosh.cpp|psikyosh_render.cpp|d_ms32.cpp|d_ssv.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_namcona1.cpp|d_namconb1.cpp|d_btoads.cpp|d_artmagic.cpp|d_eolith16.cpp|d_gstream.cpp|d_vegaeo.cpp|d_limenko.cpp|d_pasha2.cpp|d_eolith.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_x2222.cpp|d_f-32.cpp|d_vamphalf.cpp|d_suprnova.cpp|d_drgnmst.cpp|d_blackt96.cpp|d_seibuspi.cpp|d_kickgoal.cpp|d_playmark.cpp|d_fuukifg3.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_rabbit.cpp|d_itech32.cpp|d_dreamwld.cpp|d_macrossp.cpp|d_jchan.cpp|d_galpani3.cpp|d_mirage.cpp|d_seta2.cpp|d_segas32.cpp|d_sys24.cpp) + list(FILTER SRC_DRV EXCLUDE REGEX + d_spectrum.cpp|d_slapshot.cpp|d_superchs.cpp|d_taitof3.cpp|d_taitof2.cpp|d_taitoz.cpp|taitof3_snd.cpp|taitof3_video.cpp|d_groundfx.cpp|d_gunbuster.cpp|d_undrfire.cpp|d_galastrm.cpp) +endif () + ############## # 7z ############## @@ -231,8 +265,8 @@ set(FLAGS -Wno-misleading-indentation -Wno-restrict -Wno-unused-result ) -if (OPTION_DISABLE_CONSOLES) - list(APPEND FLAGS -D__PFBN_NO_CONSOLES__) +if (OPTION_LIGHT) + list(APPEND FLAGS -D__PFBN_LIGHT__) endif () set(CMAKE_CXX_STANDARD 17) @@ -279,13 +313,16 @@ elseif (PLATFORM_3DS) ############## # 3DS ############## + enable_language(ASM) + list(REMOVE_ITEM SRC_CPU ${CMAKE_SOURCE_DIR}/cores/fbneo/src/cpu/m68000_intf.cpp) + list(APPEND SRC_PFBA sources/cpu/c68000_intf.cpp sources/cpu/cyclone/Cyclone.s) list(APPEND INC sources/3ds + sources/cpu/cyclone ${DEVKITPRO}/libctru/include ${DEVKITPRO}/portlibs/armv6k/include) - list(APPEND FLAGS -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS + list(APPEND FLAGS -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS -D__PFBA_ARM__ -ffunction-sections -fomit-frame-pointer) - # TODO: -D__PFBA_ARM__ list(APPEND LDFLAGS) elseif (PLATFORM_SWITCH) ############## @@ -328,10 +365,29 @@ add_custom_target(${PROJECT_NAME}.data.skin COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/../data/${TARGET_PLATFORM}/romfs -D DST=${CMAKE_CURRENT_BINARY_DIR}/data_romfs -P ${CMAKE_CURRENT_LIST_DIR}/../libcross2d/cmake/copy_directory_custom.cmake ) add_dependencies(${PROJECT_NAME}.data.skin ${PROJECT_NAME}.data) +if (OPTION_LIGHT) + if (PLATFORM_3DS) + add_custom_target(${PROJECT_NAME}.data.light + COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist_*" + COMMAND mv "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist.xml" "${CMAKE_CURRENT_BINARY_DIR}/data_datadir/gamelist.xml" + ) + else () + add_custom_target(${PROJECT_NAME}.data.light + COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist_*" + ) + endif () + add_dependencies(${PROJECT_NAME}.data.light ${PROJECT_NAME}.data) +endif () if (PLATFORM_LINUX) add_dependencies(${PROJECT_NAME}-romfs ${PROJECT_NAME}.data.skin) + if (OPTION_LIGHT) + add_dependencies(${PROJECT_NAME}-romfs ${PROJECT_NAME}.data.light) + endif () else () add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}.data.skin) + if (OPTION_LIGHT) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}.data.light) + endif () endif () # fbneo deps @@ -351,10 +407,10 @@ add_custom_target(${PROJECT_NAME}.deps COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cores/fbneo/src/dep/scripts/cave_sprite_func.pl -o ${CMAKE_CURRENT_BINARY_DIR}/deps/cave_sprite_func.h COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cores/fbneo/src/dep/scripts/psikyo_tile_func.pl -o ${CMAKE_CURRENT_BINARY_DIR}/deps/psikyo_tile_func.h # driverlist.h - COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cores/fbneo/src/dep/scripts/gamelist.pl -o ${CMAKE_CURRENT_BINARY_DIR}/deps/driverlist.h -l ${CMAKE_CURRENT_BINARY_DIR}/deps/gamelist.txt ${DRV_DIRS} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cores/fbneo/src/dep/scripts/gamelist.pl -o ${CMAKE_CURRENT_BINARY_DIR}/deps/driverlist.h -l ${CMAKE_CURRENT_BINARY_DIR}/deps/gamelist.txt ${SRC_DRV} ) if (PLATFORM_ANDROID) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}.deps) endif () -message("-- C2D: Be sure to build \"${PROJECT_NAME}.deps\" target before \"${PROJECT_NAME}\" target") +message("-- C2D: Be sure to build \"${PROJECT_NAME}.deps\" target before \"${PROJECT_NAME}\" target") From 462d1757d67100839f69e9be825e192a057a1120 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 23 Sep 2022 13:20:18 +0200 Subject: [PATCH 29/70] pfbn: disable more drivers on low memory devices (3ds, vita) --- pfbneo/sources/config.cpp | 4 ++-- pfbneo/sources/fbneo/drv.cpp | 2 +- pfbneo/sources/romlist.cpp | 2 +- pfbneo/sources/uiEmu.cpp | 21 ++++++++++----------- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/pfbneo/sources/config.cpp b/pfbneo/sources/config.cpp index 300607ad..cd03a0c4 100644 --- a/pfbneo/sources/config.cpp +++ b/pfbneo/sources/config.cpp @@ -12,7 +12,7 @@ using namespace c2dui; PFBAConfig::PFBAConfig(c2d::Io *io, int version) : Config(io, version) { printf("PFBAConfig(%s, v%i)\n", getConfigPath().c_str(), version); -#ifndef __PFBN_NO_CONSOLES__ +#ifndef __PFBN_LIGHT__ // add fba default roms paths roms_paths.emplace_back(io->getDataPath() + "channelf/"); roms_paths.emplace_back(io->getDataPath() + "coleco/"); @@ -73,7 +73,7 @@ PFBAConfig::PFBAConfig(c2d::Io *io, int version) : Config(io, version) { "DECK_V6", "DEVKIT"}, 0, Option::Id::ROM_NEOBIOS, Option::Flags::STRING); get(Option::Id::ROM_NEOBIOS)->setInfo("YOU NEED TO RESTART EMULATION AFTER CHANGING THIS OPTION"); -#ifdef __VITA__ +#ifdef __PFBA_ARM__ // do not use unibios as default on vita for cyclone asm compatibility get(Option::Id::ROM_NEOBIOS)->setIndex(4); diff --git a/pfbneo/sources/fbneo/drv.cpp b/pfbneo/sources/fbneo/drv.cpp index 32611f8d..41c8ac80 100644 --- a/pfbneo/sources/fbneo/drv.cpp +++ b/pfbneo/sources/fbneo/drv.cpp @@ -205,7 +205,7 @@ int AppError(TCHAR *szText, int bWarning) { return 1; } -#ifdef __PFBN_NO_CONSOLES__ +#ifdef __PFBN_LIGHT__ void nes_add_cheat(char *code) {}; diff --git a/pfbneo/sources/romlist.cpp b/pfbneo/sources/romlist.cpp index 4370f718..9aeb8554 100644 --- a/pfbneo/sources/romlist.cpp +++ b/pfbneo/sources/romlist.cpp @@ -6,7 +6,7 @@ #include "romlist.h" void PFBARomList::build(bool addArcadeSystem, const ss_api::System &system) { -#ifndef __PFBN_NO_CONSOLES__ +#ifndef __PFBN_LIGHT__ std::string dataPath = ui->getIo()->getDataPath(); if (!ui->getIo()->exist(dataPath + "gamelist.xml")) { dataPath = ui->getIo()->getRomFsPath(); diff --git a/pfbneo/sources/uiEmu.cpp b/pfbneo/sources/uiEmu.cpp index e4826eee..1cd7857d 100644 --- a/pfbneo/sources/uiEmu.cpp +++ b/pfbneo/sources/uiEmu.cpp @@ -48,7 +48,6 @@ PFBAUiEmu::PFBAUiEmu(UiMain *ui) : UiEmu(ui) { #ifdef __PFBA_ARM__ int PFBAUiEmu::getSekCpuCore() { - int sekCpuCore = 0; // SEK_CORE_C68K: USE CYCLONE ARM ASM M68K CORE std::vector zipList; @@ -76,17 +75,17 @@ int PFBAUiEmu::getSekCpuCore() { "TO ENABLE CYCLONE ASM CORE (FASTER)", "OK"); } } else if (isHardware(hardware, HARDWARE_PREFIX_TOAPLAN)) { - zipList.push_back("batrider"); - zipList.push_back("bbakraid"); - zipList.push_back("bgaregga"); + zipList.emplace_back("batrider"); + zipList.emplace_back("bbakraid"); + zipList.emplace_back("bgaregga"); } else if (isHardware(hardware, HARDWARE_PREFIX_SNK)) { - zipList.push_back("kof97"); - zipList.push_back("kof98"); - zipList.push_back("kof99"); - zipList.push_back("kof2000"); - zipList.push_back("kof2001"); - zipList.push_back("kof2002"); - zipList.push_back("kf2k3pcb"); + zipList.emplace_back("kof97"); + zipList.emplace_back("kof98"); + zipList.emplace_back("kof99"); + zipList.emplace_back("kof2000"); + zipList.emplace_back("kof2001"); + zipList.emplace_back("kof2002"); + zipList.emplace_back("kf2k3pcb"); //zipList.push_back("kof2003"); // WORKS } From 73bcefad85085e63ea37739e6a0d9615ef200e0b Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Fri, 23 Sep 2022 13:21:28 +0200 Subject: [PATCH 30/70] libcross2d: update submodule --- libcross2d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcross2d b/libcross2d index f3a74613..ef241ce0 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit f3a74613dbeff8bc76d4c006d7d5f8c298443614 +Subproject commit ef241ce038b4aec39d5d30048bbc737faeb93e66 From 391f9a986753a5bc4a327f996e5b5afc8f97be4c Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Mon, 26 Sep 2022 09:48:01 +0200 Subject: [PATCH 31/70] 3ds: minor changes --- libcross2d | 2 +- pfbneo/CMakeLists.txt | 15 +- pfbneo/data/light/gamelist-light.xml | 106135 ++++++++++++++++++++++++ ui/c2dui_ui_help.cpp | 16 +- 4 files changed, 106149 insertions(+), 19 deletions(-) create mode 100644 pfbneo/data/light/gamelist-light.xml diff --git a/libcross2d b/libcross2d index ef241ce0..e32a5fdb 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit ef241ce038b4aec39d5d30048bbc737faeb93e66 +Subproject commit e32a5fdbad81c59e11df4fb238b33b755a86689a diff --git a/pfbneo/CMakeLists.txt b/pfbneo/CMakeLists.txt index c2b5f6fa..449201d3 100644 --- a/pfbneo/CMakeLists.txt +++ b/pfbneo/CMakeLists.txt @@ -323,7 +323,6 @@ elseif (PLATFORM_3DS) ${DEVKITPRO}/portlibs/armv6k/include) list(APPEND FLAGS -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS -D__PFBA_ARM__ -ffunction-sections -fomit-frame-pointer) - list(APPEND LDFLAGS) elseif (PLATFORM_SWITCH) ############## # NX (SWITCH) @@ -366,16 +365,10 @@ add_custom_target(${PROJECT_NAME}.data.skin ) add_dependencies(${PROJECT_NAME}.data.skin ${PROJECT_NAME}.data) if (OPTION_LIGHT) - if (PLATFORM_3DS) - add_custom_target(${PROJECT_NAME}.data.light - COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist_*" - COMMAND mv "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist.xml" "${CMAKE_CURRENT_BINARY_DIR}/data_datadir/gamelist.xml" - ) - else () - add_custom_target(${PROJECT_NAME}.data.light - COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist_*" - ) - endif () + add_custom_target(${PROJECT_NAME}.data.light + COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist*" + COMMAND cp -f "${CMAKE_CURRENT_SOURCE_DIR}/data/light/gamelist-light.xml" "${CMAKE_CURRENT_BINARY_DIR}/data_romfs/gamelist.xml" + ) add_dependencies(${PROJECT_NAME}.data.light ${PROJECT_NAME}.data) endif () if (PLATFORM_LINUX) diff --git a/pfbneo/data/light/gamelist-light.xml b/pfbneo/data/light/gamelist-light.xml new file mode 100644 index 00000000..cf5f5b3e --- /dev/null +++ b/pfbneo/data/light/gamelist-light.xml @@ -0,0 +1,106135 @@ + + + + 88games.zip + '88 Games + Konami '88 (also known as '88 Games or Hyper Sports Special) is the third in the Track & Field game series by Konami, where you test your Olympic skills against other world-class athletes. As the name implies, it is loosely based on (and not licensed by) the 1988 Summer Olympics in Seoul, South Korea. Bronze or silver medals are not good enough - you have to go for the gold to get to the next event. However, you must at least qualify in each event in order to compete in the next event. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-2 + Konami Classics + 304x224 + media/mixrbv2/88games.png + + + + flagrall.zip + '96 Flag Rally + It's a modern version of Rally X. + 0.30 + 19960101T000000 + Promat, Ltd + Promat, Ltd + Race, Driving + 28 + 1 + Mame + 320x240 + media/mixrbv2/flagrall.png + + + + 99lstwarb.zip + '99: The Last War (bootleg) + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + repulse.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + 99lstwark.zip + '99: The Last War (Kyugo) + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + repulse.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + 99lstwar.zip + '99: The Last War (set 1) + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + repulse.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + 99lstwara.zip + '99: The Last War (set 2) + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + repulse.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + 10yard85.zip + 10-Yard Fight '85 (US, Taito license) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + 10yard.zip + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + 10yardj.zip + 10-Yard Fight (Japan) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + 10yard.zip + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + 10yard.zip + 10-Yard Fight (World, set 1) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + gtmro.zip + 1000 Miglia: Great 1000 Miles Rally (94/05/10) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + gtmr.zip + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + gtmrb.zip + 1000 Miglia: Great 1000 Miles Rally (94/05/26) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + gtmr.zip + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + gtmra.zip + 1000 Miglia: Great 1000 Miles Rally (94/06/13) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + gtmr.zip + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + gtmr.zip + 1000 Miglia: Great 1000 Miles Rally (Taiwan 94/07/18) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + cprogolf18.zip + 18 Challenge Pro Golf (DECO Cassette) (Japan) + A golf game featuring 18 levels. After the 18h hole, the game restarts from level 1. + 0.30 + 19810101T000000 + Data East + Data East + Sports / Golf + 2913 + 1-2 + cprogolf.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cprogolf.png + + + + progolf.zip + 18 Holes Pro Golf (set 1) + 18 Holes Pro Golf (c) 1981 Data East Corp. - TRIVIA - 18 Holes Pro Golf was released in September 1981. Also released on the DECO Cassette System as "Tournament Pro Golf [Cassette No.13]". - SOURCES - Game's ROM. + 0.10 + 19810101T000000 + Data East + Data East + Sports / Golf + 2913 + 1-2 + Data East Classics + 270 + 256x256 + media/mixrbv2/progolf.png + + + + 1941u.zip + 1941 - Counter Attack (900227 USA) + The goal is to shoot down enemy airplanes and collect weapon power-ups (POW). One is only able to perform three loops per level and a bonus is awarded at the end of the level for unused loops. Player 1 uses a P-38 Lightning and Player 2 uses a Mosquito Mk IV. The game shifts from the original Pacific Front setting with that of the Western Front. + +The game consists of six levels. + +It was the first shoot 'em up to add +1 to the score when a continue is used.[1] + 0.80 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1941.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/1941.png + + + + 1941.zip + 1941 - Counter Attack (900227 World) + The goal is to shoot down enemy airplanes and collect weapon power-ups (POW). One is only able to perform three loops per level and a bonus is awarded at the end of the level for unused loops. Player 1 uses a P-38 Lightning and Player 2 uses a Mosquito Mk IV. The game shifts from the original Pacific Front setting with that of the Western Front. + +The game consists of six levels. + +It was the first shoot 'em up to add +1 to the score when a continue is used.[1] + 0.80 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System + 270 + 384x224 + media/mixrbv2/1941.png + + + + 1941j.zip + 1941 - Counter Attack (Japan) + The goal is to shoot down enemy airplanes and collect weapon power-ups (POW). One is only able to perform three loops per level and a bonus is awarded at the end of the level for unused loops. Player 1 uses a P-38 Lightning and Player 2 uses a Mosquito Mk IV. The game shifts from the original Pacific Front setting with that of the Western Front. + +The game consists of six levels. + +It was the first shoot 'em up to add +1 to the score when a continue is used.[1] + 0.80 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1941.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/1941.png + + + + 1941r1.zip + 1941 - Counter Attack (World) + The goal is to shoot down enemy airplanes and collect weapon power-ups (POW). One is only able to perform three loops per level and a bonus is awarded at the end of the level for unused loops. Player 1 uses a P-38 Lightning and Player 2 uses a Mosquito Mk IV. The game shifts from the original Pacific Front setting with that of the Western Front. + +The game consists of six levels. + +It was the first shoot 'em up to add +1 to the score when a continue is used.[1] + 0.80 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1941.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/1941.png + + + + 1942c64.zip + 1942 (C64 Music) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1942b.zip + 1942 (First Version) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1942a.zip + 1942 (Revision A) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1942abl.zip + 1942 (Revision A, bootleg) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1942.zip + 1942 (Revision B) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1942w.zip + 1942 (Williams Electronics license) + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + 1943kai.zip + 1943 Kai: Midway Kaisen (Japan) + An update of 1943 with tweaked weapons, fewer levels, and a new soundtrack. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943kai.png + + + + 1943bj.zip + 1943: Midway Kaisen (bootleg) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943ja.zip + 1943: Midway Kaisen (Japan) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943jah.zip + 1943: Midway Kaisen (Japan, no protection hack) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943jaha.zip + 1943: Midway Kaisen (Japan, no protection hack, alt) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943j.zip + 1943: Midway Kaisen (Japan, Rev B) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943b.zip + 1943: The Battle of Midway (bootleg set 1, hack of Japan set) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943b2.zip + 1943: The Battle of Midway (bootleg set 2, hack of Japan set) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943.zip + 1943: The Battle of Midway (Euro) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943ua.zip + 1943: The Battle of Midway (US) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943u.zip + 1943: The Battle of Midway (US, Rev C) + The game is set in the Pacific theater of World War II, off the coast of the Midway Atoll. The goal is to attack the Japanese Air Fleet that bombed the players' American Aircraft Carrier, pursue all Japanese Air and Sea forces, fly through the 16 levels of play, make their way to the Japanese battleship Yamato and destroy her. 11 Levels consist of an Air-to-Sea battle (with a huge battleship or an aircraft carrier as an End-Level Boss), while 5 levels consist of an all-aerial battle against a squadron of Japanese Bombers and a Mother Bomber that needs to be destroyed. +As in 1942, players pilot a P-38. Two buttons are used: one for regular attacks (with several weapons) and one for special actions that executes either a loop like in 1942 or one of three special attacks that damage the plane. Unlike 1942, the player only has one life, with one refillable energy meter. Destroying a complete formation of red enemy planes will result in a power-up, such as a health boost or a temporary special weapons which replaces the default twin gun. + 0.70 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1943.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943.png + + + + 1943mii.zip + 1943: The Battle of Midway Mark II (US) + 1943: The Battle of Midway Mark II is an unofficial US version of the 1943 kai. +The game appear to be a hack game. +The airplane sprites are from 1943kai, but the background is from 1943. + 0.50 + 19870101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/1943mii.png + + + + 1944.zip + 1944 - the loop master (000620 Euro) + The game takes place in the heated battles of 1944 during the Second World War as a super ace pilot attempts to defeat an entire army. The game operates and plays like most standard shooters. The objective of every level is to shoot enemy planes, tanks, trains, turrets, battleships, and defeat the boss after each level. Unlike its predecessor, 19XX: The War Against Destiny, the game plays more like the early games in the series. + 0.90 + 20000101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/1944.png + + + + 1944j.zip + 1944 - the loop master (000620 Japan) + The game takes place in the heated battles of 1944 during the Second World War as a super ace pilot attempts to defeat an entire army. The game operates and plays like most standard shooters. The objective of every level is to shoot enemy planes, tanks, trains, turrets, battleships, and defeat the boss after each level. Unlike its predecessor, 19XX: The War Against Destiny, the game plays more like the early games in the series. + 0.90 + 20000101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1944.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/1944.png + + + + 1944d.zip + 1944 - the loop master (000620 USA Phoenix Edition) + The game takes place in the heated battles of 1944 during the Second World War as a super ace pilot attempts to defeat an entire army. The game operates and plays like most standard shooters. The objective of every level is to shoot enemy planes, tanks, trains, turrets, battleships, and defeat the boss after each level. Unlike its predecessor, 19XX: The War Against Destiny, the game plays more like the early games in the series. + 0.90 + 20000101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1944.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/1944.png + + + + 1944ad.zip + 1944 - the loop master (000620 USA Phoenix Edition, alt) + The game takes place in the heated battles of 1944 during the Second World War as a super ace pilot attempts to defeat an entire army. The game operates and plays like most standard shooters. The objective of every level is to shoot enemy planes, tanks, trains, turrets, battleships, and defeat the boss after each level. Unlike its predecessor, 19XX: The War Against Destiny, the game plays more like the early games in the series. + 0.90 + 20000101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1944.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/1944.png + + + + 1944u.zip + 1944 - the loop master (000620 USA) + The game takes place in the heated battles of 1944 during the Second World War as a super ace pilot attempts to defeat an entire army. The game operates and plays like most standard shooters. The objective of every level is to shoot enemy planes, tanks, trains, turrets, battleships, and defeat the boss after each level. Unlike its predecessor, 19XX: The War Against Destiny, the game plays more like the early games in the series. + 0.90 + 20000101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1944.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/1944.png + + + + bgareggabl.zip + 1945 Part 2 (Chinese hack of Battle Garegga) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + 1945kiiin.zip + 1945k III (newer, OPCX1 PCB) + 1945kIII is a scrolling shooter arcade video game. It was developed and published by the Korean developer Oriental Software in 2000. + +In this game, the player controls a fighter and has to shoot as many enemy fighters as possible while the stage is moving forward. There are many bonuses and new weapons available. The gameplay is reminiscent of several 1980s scrolling shooter arcade video games, and is therefore considered a retro game. + 0.80 + 20000101T000000 + Promat + Oriental Soft + Shoot'em Up + 79 + 1-2 + 1945kiii.zip + Psikyo + 270 + 320x224 + media/mixrbv2/1945kiii.png + + + + 1945kiii.zip + 1945k III (newer, OPCX2 PCB) + 1945kIII is a scrolling shooter arcade video game. It was developed and published by the Korean developer Oriental Software in 2000. + +In this game, the player controls a fighter and has to shoot as many enemy fighters as possible while the stage is moving forward. There are many bonuses and new weapons available. The gameplay is reminiscent of several 1980s scrolling shooter arcade video games, and is therefore considered a retro game. + 0.80 + 20000101T000000 + Promat + Oriental Soft + Shoot'em Up + 79 + 1-2 + Psikyo + 270 + 320x224 + media/mixrbv2/1945kiii.png + + + + 1945kiiio.zip + 1945k III (older, OPCX1 PCB) + 1945kIII is a scrolling shooter arcade video game. It was developed and published by the Korean developer Oriental Software in 2000. + +In this game, the player controls a fighter and has to shoot as many enemy fighters as possible while the stage is moving forward. There are many bonuses and new weapons available. The gameplay is reminiscent of several 1980s scrolling shooter arcade video games, and is therefore considered a retro game. + 0.80 + 20000101T000000 + Promat + Oriental Soft + Shoot'em Up + 79 + 1-2 + 1945kiii.zip + Psikyo + 270 + 320x224 + media/mixrbv2/1945kiii.png + + + + 19xxar1.zip + 19XX - the war against destiny (951207 Asia) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxjr2.zip + 19XX - the war against destiny (951207 Japan) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxd.zip + 19XX - the war against destiny (951207 USA Phoenix Edition) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxu.zip + 19XX - the war against destiny (951207 USA) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxb.zip + 19XX - the war against destiny (951218 Brazil) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxh.zip + 19XX - the war against destiny (951218 Hispanic) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxjr1.zip + 19XX - the war against destiny (951225 Japan) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxa.zip + 19XX - the war against destiny (960104 Asia) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xx.zip + 19XX - the war against destiny (960104 Euro) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 19xxj.zip + 19XX - the war against destiny (960104 Japan, yellow case) + 19XX: The War Against Destiny is a vertical scrolling shooter arcade game made by Capcom in 1995 (copyrighted in 1996). The game is the 4th of a series of World War II vertical shooters made by Capcom. The story takes place before a fictional war (Hence, the 19XX) as a lone pilot tries to defeat an entire army/evil organization from starting another World War, which soon escalates to a nuclear apocalypse. + 0.70 + 19960101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 19xx.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/19xx.png + + + + 2020bb.zip + 2020 Super Baseball (set 1) + In the year 2020, baseball finally evolved. There is no longer conventional professional baseball in 2020. Baseball designed by the Super Baseball Association has been very popular and is the best sport. + +However, the truth is that the association has used a colossal sum of money to promote Super Baseball as show business. They have manipulated each player's ability using the control computer to secretly decide victory or defeat in every game. The players who knew this removed the connecting parts of the computer to play their own game of baseball. Finally, a fair game is going to be played at Cyber Egg Stadium. + +In 2020 Super Baseball is a fast-paced game with new rules, where you can select 1 of 12 individual men, women, or robot players. During play, you can make your team stronger with prizes earned from amazing catches. + + 0.60 + 19910101T000000 + Pallas + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/2020bb.png + + + + 2020bba.zip + 2020 Super Baseball (set 2) + In the year 2020, baseball finally evolved. There is no longer conventional professional baseball in 2020. Baseball designed by the Super Baseball Association has been very popular and is the best sport. + +However, the truth is that the association has used a colossal sum of money to promote Super Baseball as show business. They have manipulated each player's ability using the control computer to secretly decide victory or defeat in every game. The players who knew this removed the connecting parts of the computer to play their own game of baseball. Finally, a fair game is going to be played at Cyber Egg Stadium. + +In 2020 Super Baseball is a fast-paced game with new rules, where you can select 1 of 12 individual men, women, or robot players. During play, you can make your team stronger with prizes earned from amazing catches. + + 0.60 + 19910101T000000 + Pallas + SNK + Sports + 685 + 1-2 + 2020bb.zip + Neo-Geo + 320x224 + media/mixrbv2/2020bb.png + + + + 2020bbh.zip + 2020 Super Baseball (set 3) + In the year 2020, baseball finally evolved. There is no longer conventional professional baseball in 2020. Baseball designed by the Super Baseball Association has been very popular and is the best sport. + +However, the truth is that the association has used a colossal sum of money to promote Super Baseball as show business. They have manipulated each player's ability using the control computer to secretly decide victory or defeat in every game. The players who knew this removed the connecting parts of the computer to play their own game of baseball. Finally, a fair game is going to be played at Cyber Egg Stadium. + +In 2020 Super Baseball is a fast-paced game with new rules, where you can select 1 of 12 individual men, women, or robot players. During play, you can make your team stronger with prizes earned from amazing catches. + + 0.60 + 19910101T000000 + Pallas + SNK + Sports + 685 + 1-2 + 2020bb.zip + Neo-Geo + 320x224 + media/mixrbv2/2020bb.png + + + + 3countba.zip + 3 Count Bout / Fire Suplex (NGM-043) + 3 Count Bout is a one-on-one fighting game. Choose from ten wrestlers who have their own power attacks. There are ten rounds in the game, and each one of them has you fighting other wrestlers that are much tougher than the previous ones. You defeat each one by biting, kicking, and performing other moves to the point where their damage meter is empty. But just because it is empty doesn't mean that you win. You have to pin him for the infamous-three count. Also features competitive play and tag match battles. + 0.60 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + 3countb.zip + Neo-Geo + 320x224 + media/mixrbv2/3countb.png + + + + 3countb.zip + 3 Count Bout / Fire Suplex (NGM-043)(NGH-043) + 3 Count Bout is a one-on-one fighting game. Choose from ten wrestlers who have their own power attacks. There are ten rounds in the game, and each one of them has you fighting other wrestlers that are much tougher than the previous ones. You defeat each one by biting, kicking, and performing other moves to the point where their damage meter is empty. But just because it is empty doesn't mean that you win. You have to pin him for the infamous-three count. Also features competitive play and tag match battles. + 0.60 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/3countb.png + + + + 3on3dunk.zip + 3 On 3 Dunk Madness (US, prototype? 1997/02/04) + 3 On 3 Dunk Madness is a "NBA Jam" like basket game + 0.60 + 19960101T000000 + Video System + Video System + Sports / Basketball + 2852 + 1-4 + Video System Co. + 320x224 + media/mixrbv2/3on3dunk.png + + + + 3x3puzzl.zip + 3X3 Puzzle (Enterprise) + A "hot" compilation of 3 logicals Games + 0.50 + 19980101T000000 + A.C.E. + A.C.E. + Puzzle-Game / Equalize + 2864 + 1-2 + Mame + 320x240 + media/mixrbv2/3x3puzzl.png + + + + 3x3puzzla.zip + 3X3 Puzzle (Normal) + A "hot" compilation of 3 logicals Games + 0.50 + 19980101T000000 + A.C.E. + A.C.E. + Puzzle-Game / Equalize + 2864 + 1-2 + 3x3puzzl.zip + Mame + 320x240 + media/mixrbv2/3x3puzzl.png + + + + 4enraya.zip + 4 En Raya (set 1) + A puzzle game from Spain. Line up your pieces 4 in a row either vertically, horizontally or diagonally. You can also shoot your opponent's piece to cancel their turn. + 0.30 + 19900101T000000 + IDSA + IDSA + Puzzle-Game / Equalize + 2864 + 1-2 + Mame + 256x224 + media/mixrbv2/4enraya.png + + + + 4enrayaa.zip + 4 En Raya (set 2) + A puzzle game from Spain. Line up your pieces 4 in a row either vertically, horizontally or diagonally. You can also shoot your opponent's piece to cancel their turn. + 0.30 + 19900101T000000 + IDSA + IDSA + Puzzle-Game / Equalize + 2864 + 1-2 + 4enraya.zip + Mame + 256x224 + media/mixrbv2/4enraya.png + + + + 4in1.zip + 4 Fun in 1 + This multi-game system lets you select from four different games; "Galactic Convoy", "Scramble Pt2", "Galaxian Pt5" and "The Ghost Muncher Pt3". + 0.10 + 19810101T000000 + Armenia + Armenia + Compilation + 34 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/4in1.png + + + + 4play.zip + 4 player input test + Neo-Geo + media/mixrbv2/4play.png + + + 4dwarrio.zip + 4-D Warriors (315-5162) + 4-D Warriors is a strange deep space shoot them up, which apparently has a 4th dimension. The game is a side scrolling shooter in which you take control of a jetpack propelled space warrior who travels between parallel universes and worm holes throughout the game. By flying over the top of the play field, you end up in an alternate universe. You travel back and forth defeating enemies until you reach a boss creature. On some occasions a worm hole will appear in the middle of the play field and you are taken to even stranger worlds... + 0.30 + 19850101T000000 + Coreland + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/4dwarrio.png + + + + 600.zip + 600 + Help the turtles carry their babies to safety. Watch out for the evil beetles! + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + turtles.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/turtles.png + + + + 64streetja.zip + 64th. Street - A Detective Story (Japan, alt) + Rick. PRIVATE DETECTIVE +OCT. 1939 file no. 238 +The kidnapping of a rich man's daughter. + +Beat the bad guys and throw them into the wall! + +Rick and Allen's Detective Agency is on 64th st. They have specialized maneuvres to beat the enemy. When you are in trouble... call on a partner to join the game and assist you. A great new action game from Jaleco. + 0.50 + 19910101T000000 + C.P. Brain + Jaleco + Beat'em Up + 1 + 1-2 + 64street.zip + Jaleco + 256x224 + media/mixrbv2/64street.png + + + + 64streetj.zip + 64th. Street - A Detective Story (Japan, set 1) + Rick. PRIVATE DETECTIVE +OCT. 1939 file no. 238 +The kidnapping of a rich man's daughter. + +Beat the bad guys and throw them into the wall! + +Rick and Allen's Detective Agency is on 64th st. They have specialized maneuvres to beat the enemy. When you are in trouble... call on a partner to join the game and assist you. A great new action game from Jaleco. + 0.50 + 19910101T000000 + C.P. Brain + Jaleco + Beat'em Up + 1 + 1-2 + 64street.zip + Jaleco + 256x224 + media/mixrbv2/64street.png + + + + 64street.zip + 64th. Street - A Detective Story (World) + Rick. PRIVATE DETECTIVE +OCT. 1939 file no. 238 +The kidnapping of a rich man's daughter. + +Beat the bad guys and throw them into the wall! + +Rick and Allen's Detective Agency is on 64th st. They have specialized maneuvres to beat the enemy. When you are in trouble... call on a partner to join the game and assist you. A great new action game from Jaleco. + 0.50 + 19910101T000000 + C.P. Brain + Jaleco + Beat'em Up + 1 + 1-2 + Jaleco + 256x224 + media/mixrbv2/64street.png + + + + 7ordi.zip + 7 Ordi (Korea) + 7 Ordi is a seven card stud medal game. Once the player meets the minimum number of credits the player is dealt a hand. Three cards are dealt to the player and the computer and one card is chosen to show face up. Next a card is dealt and a round of betting takes place. Two more cards are dealt face up with a round of betting after each. Then one more card is dealt face down with one more round of betting. + +If the player wins then the player may choose to either take his winnings or play a mini-game where he bets on whether the next card will be a low card (1-5), a high card (6-10), or a face card (J,Q,K). After every winning guess the player may choose to continue or drop out. + +Hands are dealt until the players credits fall below the minimum level to play. + 20020101T000000 + Yun Sung + Yun Sung + Casino / Cards + 2872 + 1 + Mame + 320x240 + media/mixrbv2/7ordi.png + + + + 800fath.zip + 800 Fathoms + An old horizontally scrolling shoot'em up with a vertically scrolling background. The player has to guide a submarine armed with torpedoes and missiles through five levels while fighting different underwater terrors. At the end of each area the boss-submarine appears. + 0.50 + 19810101T000000 + Amenip + Amenip + Shooter / Horizontal + 2876 + 1-2 + mariner.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/mariner.png + + + + 800fatha.zip + 800 Fathoms (older) + An old horizontally scrolling shoot'em up with a vertically scrolling background. The player has to guide a submarine armed with torpedoes and missiles through five levels while fighting different underwater terrors. At the end of each area the boss-submarine appears. + 0.50 + 19810101T000000 + Amenip + Amenip + Shooter / Horizontal + 2876 + 1-2 + mariner.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/mariner.png + + + + abcopjd.zip + A.B. Cop (Japan, FD1094 317-0169b decrypted) + A.B. Cop is a futuristically-themed racing game from Sega in which the player takes on the role of a law enforcement officer - riding a heavily armoured and heavily armed hover-bike - who must chase down and destroy the perpetrators of an armed robbery before the time limit expires. + +A.B. Cop is hugely reminiscent of Taito's superb racing legend, "Chase HQ", released two years earlier. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + abcop.zip + Sega Classics + 320x224 + media/mixrbv2/abcop.png + + + + abcopj.zip + A.B. Cop (Japan, FD1094 317-0169b) + A.B. Cop is a futuristically-themed racing game from Sega in which the player takes on the role of a law enforcement officer - riding a heavily armoured and heavily armed hover-bike - who must chase down and destroy the perpetrators of an armed robbery before the time limit expires. + +A.B. Cop is hugely reminiscent of Taito's superb racing legend, "Chase HQ", released two years earlier. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + abcop.zip + Sega Classics + 320x224 + media/mixrbv2/abcop.png + + + + abcopd.zip + A.B. Cop (World, FD1094 317-0169b decrypted) + A.B. Cop is a futuristically-themed racing game from Sega in which the player takes on the role of a law enforcement officer - riding a heavily armoured and heavily armed hover-bike - who must chase down and destroy the perpetrators of an armed robbery before the time limit expires. + +A.B. Cop is hugely reminiscent of Taito's superb racing legend, "Chase HQ", released two years earlier. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + abcop.zip + Sega Classics + 320x224 + media/mixrbv2/abcop.png + + + + abcop.zip + A.B. Cop (World, FD1094 317-0169b) + A.B. Cop is a futuristically-themed racing game from Sega in which the player takes on the role of a law enforcement officer - riding a heavily armoured and heavily armed hover-bike - who must chase down and destroy the perpetrators of an armed robbery before the time limit expires. + +A.B. Cop is hugely reminiscent of Taito's superb racing legend, "Chase HQ", released two years earlier. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 320x224 + media/mixrbv2/abcop.png + + + + ad2083.zip + A.D. 2083 + A.D. 2083 is an 8-way scrolling pseudo-3D shoot 'em up arcade game released by Midcoin in 1983, set in 2083 . Gameplay is similar to "Time Pilot", except that enemies can appear from the ground or 'merge' into battle from the distance. + 0.30 + 19830101T000000 + Midcoin + Midcoin + Shooter + 2646 + 1 + Century Electronics + 270 + 256x224 + media/mixrbv2/ad2083.png + + + + abscam.zip + Abscam + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + aceattac.zip + Ace Attacker (FD1094 317-0059) + Ace Attacker is an overhead volleyball game. + 0.40 + 19880101T000000 + SEGA + SEGA + Sports / Volleyball + 2883 + 1-4 + Sega Classics + 270 + 320x224 + media/mixrbv2/aceattac.png + + + + aceattaca.zip + Ace Attacker (Japan, System 16A, FD1094 317-0060) + Ace Attacker is an overhead volleyball game. + 0.40 + 19880101T000000 + SEGA + SEGA + Sports / Volleyball + 2883 + 1-4 + aceattac.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/aceattac.png + + + + acrobatm.zip + Acrobat Mission + A great vertical scrolling shoot'em up game. + +At the year 2100 A.D. Humans were exterminated by their own self-destructive nature leaving behind the consequences of environmental degradation on earth and were forced to escape to Mars leaving a bio-computer for environmental recuperation of earth to preparing the blue planet for future recolonization. But one day a half a century after humans arrived, mars was attacked by strange flying objects. To fight these enemies, the director general of the Defence Agency organized the task force army and started quickly the dogfight with invaders to neutralize the invasion. + +The operation was called 'Acrobat Mission' as it exceeded the technical limits of the pilots. + +The players takes controls on one of two surviving fighters pilots, 'Jet' a male pilot and 'Nova' a female pilot and both flying the Icarus, a fast and powerful space-fighter, which comes equipped with a Standard laser. Two more weapons are available throughout the game - the wide shot (W) which spreads out in front of the ship and the Hurricane shot (H) which fires clusters of rotating balls of energy. Holding the fire button charges up a special attack and each weapon features a different energy blast and damage factor. The ships can also hold a maximum of two smart-bombs, one under each wing - although they can be activated by the players, they also do fall off easily and can be detonated by enemy shots. Interestingly, the Icarus can't collide with other ships or any part of the scenery - instead, it bounces off and only suffers damage from enemy shots. However, once the shield is depleted, the ship will fly out of control for a few seconds and grant the players a last chance to inflict damage to any remaining enemies before it explodes. + 0.50 + 19910101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/acrobatm.png + + + + dogfgt.zip + Acrobatic Dog-Fight + A very funny shoot'em up game. + +Hop to New Plane: If your plane becomes damaged, you don't need to waste a parachute to reach the ground for a replacement. You can jump to a new plane by simply flying very close, usually right under or on top of your plane and pressing the jump button. If the other plane is in just the right spot, you'll make it, but otherwise you'll fall. + +Destroy UFOs the Easy Way: When you reach the UFO wave of the battle you're in, take your plane down as close to the ground as you can without crashing. Chances are, thanks to the circular pattern of their flight, the UFOs will arc over you and smash themselves into the ground. + +Score Big Points: While on the ground, instead of climbing right onto your replacement plane, jump over it. For each time you do this, you'll score 1,000 points. As long as you're careful, you can get a lot of points this way. +Enemy Ran Away!!: After destroying 20 aircraft in a wave, the enemy retreats and you are awarded with 20,000 points and a free parachute! + 19840101T000000 + Data East + Tecmo + Shooter / Plane + 2928 + 1-2 + Technos + 256x240 + media/mixrbv2/dogfgt.png + + + + dogfgtu.zip + Acrobatic Dog-Fight (USA) + A very funny shoot'em up game. + +Hop to New Plane: If your plane becomes damaged, you don't need to waste a parachute to reach the ground for a replacement. You can jump to a new plane by simply flying very close, usually right under or on top of your plane and pressing the jump button. If the other plane is in just the right spot, you'll make it, but otherwise you'll fall. + +Destroy UFOs the Easy Way: When you reach the UFO wave of the battle you're in, take your plane down as close to the ground as you can without crashing. Chances are, thanks to the circular pattern of their flight, the UFOs will arc over you and smash themselves into the ground. + +Score Big Points: While on the ground, instead of climbing right onto your replacement plane, jump over it. For each time you do this, you'll score 1,000 points. As long as you're careful, you can get a lot of points this way. +Enemy Ran Away!!: After destroying 20 aircraft in a wave, the enemy retreats and you are awarded with 20,000 points and a free parachute! + 19840101T000000 + Data East + Tecmo + Shooter / Plane + 2928 + 1-2 + dogfgt.zip + Technos + 256x240 + media/mixrbv2/dogfgt.png + + + + afighterc.zip + Action Fighter (FD1089B 317-unknown) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighterd.zip + Action Fighter (FD1089B 317-unknown, analog controls) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighterh.zip + Action Fighter (System 16B, FD1089A 317-0018) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighterg.zip + Action Fighter (System 16B, FD1089B 317-unknown) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighterf.zip + Action Fighter (System 16B, FD1089B 317-unknown, analog controls) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afightere.zip + Action Fighter (System 16B, unprotected, analog controls) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afightera.zip + Action Fighter (unprotected) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighterb.zip + Action Fighter (unprotected, analog controls) + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + afighter.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + afighter.zip + Action Fighter, FD1089A 317-0018 + Action Fighter is an overhead driving / shoot'em up game from Sega which borrows heavily from Bally Midway's 1983 classic, "Spy Hunter". The player begins the game riding a motorbike. In subsequent levels a sportscar, a beach buggy, a boat, a chopper and even a Formula-1 racing car can all be driven. All of the vehicles are, of course, fully armed to deal with the many enemy vehicles and gun emplacements intent on stopping the player's progress. The helicopter levels play as a straightforward vertically-scrolling shoot'em up and bear more than a passing resemblance to Namco's "Xevious". + 0.70 + 19860101T000000 + SEGA + SEGA + Shooter / Vertical + 2889 + 1-2 + Sega Classics + 270 + 320x224 + media/mixrbv2/afighter.png + + + + hatena.zip + Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228) + The game features the character Hatena, who goes on a great adventure in seven maps. Characters from Kamen no Ninja Hanamaru have a guest appearance in the game as enemies. + 0.50 + 19900101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Classics + 384x240 + media/mixrbv2/hatena.png + + + + cworld2j.zip + Adventure Quiz Capcom World 2 (920611 Japan) + Capcom World 2 - Adventure Quiz is a Japanese quiz game. + 0.50 + 19920101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/cworld2j.png + + + + cworld2ja.zip + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery) + Capcom World 2 - Adventure Quiz is a Japanese quiz game. + 0.50 + 19920101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + cworld2j.zip + Capcom Play System + 384x224 + media/mixrbv2/cworld2j.png + + + + cworld2jb.zip + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2) + Capcom World 2 - Adventure Quiz is a Japanese quiz game. + 0.50 + 19920101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + cworld2j.zip + Capcom Play System + 384x224 + media/mixrbv2/cworld2j.png + + + + aerofgt.zip + Aero Fighters + A superb vertically scrolling shoot-em-up in which the player chooses an ace fighter pilot from a selection of 4 countries (USA, Japan, Sweden and Britain) and takes to the skies to destroy enemy jets, boats, helicopt + 0.70 + 19920101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-2 + Video System Co. + 270 + 320x224 + media/mixrbv2/aerofgt.png + + + + aerofgtb.zip + Aero Fighters (Turbo Force hardware set 1) + A superb vertically scrolling shoot-em-up in which the player chooses an ace fighter pilot from a selection of 4 countries (USA, Japan, Sweden and Britain) and takes to the skies to destroy enemy jets, boats, helicopt + 0.70 + 19920101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-2 + aerofgt.zip + Video System Co. + 270 + 320x224 + media/mixrbv2/aerofgt.png + + + + aerofgtc.zip + Aero Fighters (Turbo Force hardware set 2) + A superb vertically scrolling shoot-em-up in which the player chooses an ace fighter pilot from a selection of 4 countries (USA, Japan, Sweden and Britain) and takes to the skies to destroy enemy jets, boats, helicopt + 0.70 + 19920101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-2 + aerofgt.zip + Video System Co. + 270 + 320x224 + media/mixrbv2/aerofgt.png + + + + sonicwi2.zip + Aero Fighters 2 / Sonic Wings 2 + Aero Fighters 2 is a vertically-scrolling shooter in the same vein as 1942 and similar games. It supports up to two players and has 8 different aircraft to choose from, each equipped with unique primary and secondary weapons. Power-ups upgrade the look, power, size and shape of the shots. Bombs activate a special power that usually wipes off the enemies on the screen. The game has a total of 10 stages (Japan, Brazil, Atlantic, U.S.A., France, Australia, Himalayas, Mexico, Hawaii and Space), all of them with a boss battle. + 0.75 + 19940101T000000 + Video System + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sonicwi2.png + + + + sonicwi3.zip + Aero Fighters 3 / Sonic Wings 3 + Aero Fighters 3 is a vertically-scrolling shooter in the same vein as 1942 and similar games. It supports up to two players and has 10 different aircraft to choose from, each equipped with unique primary and secondary weapons. Power-ups upgrade the look, power, size and shape of the shots. Bombs activate a special power that usually wipes off the enemies on the screen. The game has a total of 8 stages placed on several countries (Japan, Germany, Libya, Egypt, Pacific, U.S.A., England, France, Panama, Thailand, Ukraine, Atlantic and Space), all of them with a boss battle. + 0.75 + 19950101T000000 + Video System + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sonicwi3.png + + + + aeroboto.zip + Aeroboto + Taking place in the year 2701, the player controls a robot which can transform into an aero fighter on a mission to stop an alien super weapon from reaching the Earth. The robot may move forwards, backwards and jump, and the aero fighter may travel anywhere on screen but has limited fuel in which to do so. A combination of the two must be used to avoid obstacles, as well as to destroy any on-screen enemies for extra points. + 0.50 + 19840101T000000 + Jaleco + Jaleco + Shooter / Horizontal + 2876 + 1-2 + formatz.zip + Jaleco + 248x224 + media/mixrbv2/formatz.png + + + + aerolitos.zip + Aerolitos (Spanish bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + aburner.zip + After Burner + After Burner is another Sega game rendered with their then-ubiquitous 3-D sprite-scaling technology; this time putting the player into the seat of a powerful F14 Tomcat jet fighter. + +Players must fight their way through 21 colourful, fast-moving stages, shooting down waves of enemy fighters while avoiding the enemy's incoming missiles. The F14 is equipped with a machine gun and a limited number of homing missiles. The gun has infinite ammunition and targeting is achieved by maneuvering the Tomcat so that the targeting cursor situated just in front of the jet is placed over an enemy fighter. + +After Burner's straightforward shoot-em-up gameplay is simple and repetitive, but the game's incredible visuals ensured its success. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + aburner2.zip + Sega Classics + 320x224 + media/mixrbv2/aburner2.png + + + + aburner2.zip + After Burner II + After Burner is another Sega game rendered with their then-ubiquitous 3-D sprite-scaling technology; this time putting the player into the seat of a powerful F14 Tomcat jet fighter. + +Players must fight their way through 21 colourful, fast-moving stages, shooting down waves of enemy fighters while avoiding the enemy's incoming missiles. The F14 is equipped with a machine gun and a limited number of homing missiles. The gun has infinite ammunition and targeting is achieved by maneuvering the Tomcat so that the targeting cursor situated just in front of the jet is placed over an enemy fighter. + +After Burner's straightforward shoot-em-up gameplay is simple and repetitive, but the game's incredible visuals ensured its success. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + Sega Classics + 320x224 + media/mixrbv2/aburner2.png + + + + aburner2g.zip + After Burner II (German) + After Burner is another Sega game rendered with their then-ubiquitous 3-D sprite-scaling technology; this time putting the player into the seat of a powerful F14 Tomcat jet fighter. + +Players must fight their way through 21 colourful, fast-moving stages, shooting down waves of enemy fighters while avoiding the enemy's incoming missiles. The F14 is equipped with a machine gun and a limited number of homing missiles. The gun has infinite ammunition and targeting is achieved by maneuvering the Tomcat so that the targeting cursor situated just in front of the jet is placed over an enemy fighter. + +After Burner's straightforward shoot-em-up gameplay is simple and repetitive, but the game's incredible visuals ensured its success. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + aburner2.zip + Sega Classics + 320x224 + media/mixrbv2/aburner2.png + + + + superbon.zip + Agent Super Bond (scobra hardware) + Agent Super Bond is a shooter game like the 007 series games. You have to shoot at objects and people that try to attack you, and find specific objects to complete the level. This game also has very similar spirtes to the Galaxian hardware shoot-em-up know as Lost Tomb. + 0.50 + 19850101T000000 + Signatron USA + Signatron USA + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/superbon.png + + + + agentx1.zip + Agent X (prototype, rev 1) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + agentx2.zip + Agent X (prototype, rev 2) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + agentx3.zip + Agent X (prototype, rev 3) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + agentx4.zip + Agent X (prototype, rev 4) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + aodk.zip + Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008)(ADH-008) + Aggressors of Dark Kombat is another one-on-one street fighting beat 'em up from the Neo-Geo's seemingly endless library of fighters. + +It pits 8 fighters of different styles and strengths against each other in a tournament to see who's the toughest mofo on the streets of Tokyo. Your objective as usual is to deplete your opponent's health bar within the time limit by using your basic attacks and special moves (triggered by specific controller motions) while avoiding his moves and attacks. + +Unique to Aggressors of Dark Kombat is the combination of traditional side-scrolling beat 'em up elements, meaning characters can freely move in an isometric space instead of being restricted to a single plane of movement. Weapons and throw-able items are usually thrown into the arena by the crowds and you can pick them up and wield them for added damage. Additionally, matches are 1-round only affairs, with an extended multi-layered health bar that allows for longer rounds than usual. + 0.60 + 19940101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/aodk.png + + + + agress.zip + Agress + Fast-paced puzzle game with a war setting. The game is played between two sides (either a computer-controlled opponent or a second player) on a fixed screen. The two sides each control a launcher vehicle that can shoot missiles. The player needs to reconstruct the shape as shown in the top window. This is done by solving a sliding puzzle. +If a shape is formed on top of a missile block, the missile is launched and and either collides with a missile of the opponent or with the launcher vehicle itself. The player needs to strategize to move the shape in a certain direction to cover as many missiles as possible. + 0.50 + 19910101T000000 + Palco + Puzzle-Game / Glide + 2891 + 1-2 + Technos + 320x240 + media/mixrbv2/agress.png + + + + agressb.zip + Agress (English bootleg) + Fast-paced puzzle game with a war setting. The game is played between two sides (either a computer-controlled opponent or a second player) on a fixed screen. The two sides each control a launcher vehicle that can shoot missiles. The player needs to reconstruct the shape as shown in the top window. This is done by solving a sliding puzzle. +If a shape is formed on top of a missile block, the missile is launched and and either collides with a missile of the opponent or with the launcher vehicle itself. The player needs to strategize to move the shape in a certain direction to cover as many missiles as possible. + 0.50 + 19910101T000000 + Palco + Puzzle-Game / Glide + 2891 + 1-2 + agress.zip + Technos + 320x240 + media/mixrbv2/agress.png + + + + airattck.zip + Air Attack (set 1) + The player ships fly through a total of seven stages fighting many enemies and multiple end-level bosses. Each player ship had a semi-automatic Normal shot and Bomb Stock, appearing as a large Phoenix. Players has a total of four different weapon pick-up items to choose from. Weapon 1 is the standard Vulcan weapon, Weapon 2 is a Rapid-Fire shot, Weapon 3 is an area-effect weapon that fires in five directions, two behind the ship and Weapon 4 is a Rocket weapon. Collecting four of the same weapon pick-up allows the selected weapon to flare-out. The player ship only had one hit though and there were no Extend Bonuses. + 19960101T000000 + Comad + Comad + Shoot'em Up + 79 + 1-2 + Comad + 270 + 256x224 + media/mixrbv2/airattck.png + + + + airattcka.zip + Air Attack (set 2) + The player ships fly through a total of seven stages fighting many enemies and multiple end-level bosses. Each player ship had a semi-automatic Normal shot and Bomb Stock, appearing as a large Phoenix. Players has a total of four different weapon pick-up items to choose from. Weapon 1 is the standard Vulcan weapon, Weapon 2 is a Rapid-Fire shot, Weapon 3 is an area-effect weapon that fires in five directions, two behind the ship and Weapon 4 is a Rocket weapon. Collecting four of the same weapon pick-up allows the selected weapon to flare-out. The player ship only had one hit though and there were no Extend Bonuses. + 19960101T000000 + Comad + Comad + Shoot'em Up + 79 + 1-2 + airattck.zip + Comad + 270 + 256x224 + media/mixrbv2/airattck.png + + + + airbustrb.zip + Air Buster: Trouble Specialty Raid Unit (bootleg) + Air Buster is a horizontally scrolling shoot 'em up video game produced by Kaneko and co-distributed by Namco for the arcades in 1990. It was subsequently ported to the PC Engine/TurboGrafx-16 (under the title Aero Blasters) and for the Mega Drive/Genesis in 1991. +In Air Buster, the player controls a fighter jet also designed for space travel and shoots enemies, collects power-ups, and defeats bosses to advance levels. Players choose between one of the two Blaster fighters through scrolling six stages. The Blaster fighters can equip one of seven weapons. The weapons include the Striker weapon which adds additional firepower through vertically aligned Options, the Reverse shot which fires two diagonal shots from the rear of the ship, the Six Way Shot which fires semi-automatic shots in six directions and the Homing Shot which tracks enemies all around the screen. The other three weapons are Missile based which vary from Red straight-firing Rockets and Green Homing Missiles. There is also the Border item which surrounds the front of the ship, keeping it from crashing into foreground objects. The only other Items include Power-Ups which increase the ship's standard shot power and Bonus Points that appear in the sign of Dollar signs. + 0.60 + 19900101T000000 + Kaneko + Namco + Shoot'em Up + 79 + 1-2 + airbustr.zip + Namco Classics + 256x224 + media/mixrbv2/airbustr.png + + + + airbustrj.zip + Air Buster: Trouble Specialty Raid Unit (Japan) + Air Buster is a horizontally scrolling shoot 'em up video game produced by Kaneko and co-distributed by Namco for the arcades in 1990. It was subsequently ported to the PC Engine/TurboGrafx-16 (under the title Aero Blasters) and for the Mega Drive/Genesis in 1991. +In Air Buster, the player controls a fighter jet also designed for space travel and shoots enemies, collects power-ups, and defeats bosses to advance levels. Players choose between one of the two Blaster fighters through scrolling six stages. The Blaster fighters can equip one of seven weapons. The weapons include the Striker weapon which adds additional firepower through vertically aligned Options, the Reverse shot which fires two diagonal shots from the rear of the ship, the Six Way Shot which fires semi-automatic shots in six directions and the Homing Shot which tracks enemies all around the screen. The other three weapons are Missile based which vary from Red straight-firing Rockets and Green Homing Missiles. There is also the Border item which surrounds the front of the ship, keeping it from crashing into foreground objects. The only other Items include Power-Ups which increase the ship's standard shot power and Bonus Points that appear in the sign of Dollar signs. + 0.60 + 19900101T000000 + Kaneko + Namco + Shoot'em Up + 79 + 1-2 + airbustr.zip + Namco Classics + 256x224 + media/mixrbv2/airbustr.png + + + + airbustr.zip + Air Buster: Trouble Specialty Raid Unit (World) + Air Buster is a horizontally scrolling shoot 'em up video game produced by Kaneko and co-distributed by Namco for the arcades in 1990. It was subsequently ported to the PC Engine/TurboGrafx-16 (under the title Aero Blasters) and for the Mega Drive/Genesis in 1991. +In Air Buster, the player controls a fighter jet also designed for space travel and shoots enemies, collects power-ups, and defeats bosses to advance levels. Players choose between one of the two Blaster fighters through scrolling six stages. The Blaster fighters can equip one of seven weapons. The weapons include the Striker weapon which adds additional firepower through vertically aligned Options, the Reverse shot which fires two diagonal shots from the rear of the ship, the Six Way Shot which fires semi-automatic shots in six directions and the Homing Shot which tracks enemies all around the screen. The other three weapons are Missile based which vary from Red straight-firing Rockets and Green Homing Missiles. There is also the Border item which surrounds the front of the ship, keeping it from crashing into foreground objects. The only other Items include Power-Ups which increase the ship's standard shot power and Bonus Points that appear in the sign of Dollar signs. + 0.60 + 19900101T000000 + Kaneko + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 256x224 + media/mixrbv2/airbustr.png + + + + airdueljm72.zip + Air Duel (Japan, M72 hardware) + The player selects from a jet fighter or helicopter, shoot enemies in the air and ground, collect power-ups, and defeat bosses to advance levels. + +The game differs from most others in the genre in that you can change the aircraft you use at the start of each level. The jet fighter always shoots straight forward; power-ups increase the width and strength of its shots. The helicopter fires thinner and weaker shots, but turns in the direction it moves (similar to the later Zero Gunner), giving it great range; powerups increase the strength of shots, as well as the number of bullets per shot (adding a small "spread" effect to the shot while moving around). +Both the fighter and the helicopter also start with three bombs which wipe out everything in their path, including enemy shots. These bombs are also unique compared to similar games, in that they produce a line of small horizontal blasts that can be "directed" at the line travels across the ground, by pressing left and right (similar to the helicopter's shots). Additional bombs can be picked up during the course of the game. + +Losing a life resets your power and bomb count to the amount you start with. "Air Duel" is a challenging game, and later levels can become nearly unplayable if a single life is lost. + 0.60 + 19900101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + airduel.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/airduel.png + + + + airduelu.zip + Air Duel (US location test, M82 hardware) + The player selects from a jet fighter or helicopter, shoot enemies in the air and ground, collect power-ups, and defeat bosses to advance levels. + +The game differs from most others in the genre in that you can change the aircraft you use at the start of each level. The jet fighter always shoots straight forward; power-ups increase the width and strength of its shots. The helicopter fires thinner and weaker shots, but turns in the direction it moves (similar to the later Zero Gunner), giving it great range; powerups increase the strength of shots, as well as the number of bullets per shot (adding a small "spread" effect to the shot while moving around). +Both the fighter and the helicopter also start with three bombs which wipe out everything in their path, including enemy shots. These bombs are also unique compared to similar games, in that they produce a line of small horizontal blasts that can be "directed" at the line travels across the ground, by pressing left and right (similar to the helicopter's shots). Additional bombs can be picked up during the course of the game. + +Losing a life resets your power and bomb count to the amount you start with. "Air Duel" is a challenging game, and later levels can become nearly unplayable if a single life is lost. + 0.60 + 19900101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + airduel.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/airduel.png + + + + airduelm72.zip + Air Duel (World, M72 hardware) + The player selects from a jet fighter or helicopter, shoot enemies in the air and ground, collect power-ups, and defeat bosses to advance levels. + +The game differs from most others in the genre in that you can change the aircraft you use at the start of each level. The jet fighter always shoots straight forward; power-ups increase the width and strength of its shots. The helicopter fires thinner and weaker shots, but turns in the direction it moves (similar to the later Zero Gunner), giving it great range; powerups increase the strength of shots, as well as the number of bullets per shot (adding a small "spread" effect to the shot while moving around). +Both the fighter and the helicopter also start with three bombs which wipe out everything in their path, including enemy shots. These bombs are also unique compared to similar games, in that they produce a line of small horizontal blasts that can be "directed" at the line travels across the ground, by pressing left and right (similar to the helicopter's shots). Additional bombs can be picked up during the course of the game. + +Losing a life resets your power and bomb count to the amount you start with. "Air Duel" is a challenging game, and later levels can become nearly unplayable if a single life is lost. + 0.60 + 19900101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + airduel.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/airduel.png + + + + airduel.zip + Air Duel (World, M82 hardware) + The player selects from a jet fighter or helicopter, shoot enemies in the air and ground, collect power-ups, and defeat bosses to advance levels. + +The game differs from most others in the genre in that you can change the aircraft you use at the start of each level. The jet fighter always shoots straight forward; power-ups increase the width and strength of its shots. The helicopter fires thinner and weaker shots, but turns in the direction it moves (similar to the later Zero Gunner), giving it great range; powerups increase the strength of shots, as well as the number of bullets per shot (adding a small "spread" effect to the shot while moving around). +Both the fighter and the helicopter also start with three bombs which wipe out everything in their path, including enemy shots. These bombs are also unique compared to similar games, in that they produce a line of small horizontal blasts that can be "directed" at the line travels across the ground, by pressing left and right (similar to the helicopter's shots). Additional bombs can be picked up during the course of the game. + +Losing a life resets your power and bomb count to the amount you start with. "Air Duel" is a challenging game, and later levels can become nearly unplayable if a single life is lost. + 0.60 + 19900101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 270 + 384x256 + media/mixrbv2/airduel.png + + + + agallet.zip + Air Gallet (Europe) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalleth.zip + Air Gallet (Hong Kong) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletk.zip + Air Gallet (Korea) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalleta.zip + Air Gallet (older, Europe) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletah.zip + Air Gallet (older, Hong Kong) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletak.zip + Air Gallet (older, Korea) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletat.zip + Air Gallet (older, Taiwan) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletau.zip + Air Gallet (older, USA) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agallett.zip + Air Gallet (Taiwan) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletu.zip + Air Gallet (USA) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + airwolf.zip + Airwolf + Airwolf is a horizontally scrolling shoot'em up game. + 0.30 + 19870101T000000 + Kyugo Boueki + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + Mame + 288x224 + media/mixrbv2/airwolf.png + + + + airwolfa.zip + Airwolf (US) + Airwolf is a horizontally scrolling shoot'em up game. + 0.30 + 19870101T000000 + Kyugo Boueki + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + airwolf.zip + Mame + 288x224 + media/mixrbv2/airwolf.png + + + + ajax.zip + Ajax + The player has been issued an emergency order. He must save the earth from being conquered by enemy forces. He climbs into his helicopter and prepares for intense aerial combat. Shooting oncoming enemy aircrafts and bombing the enemies below, he tries to make his way through the different stages to reach the enemy base. When he finishes the first stage, he is transported to his next mission by ab aircraft carrier. He hops into his jet fighters, tanks, ships, helicopters, and aircraft carriers. The player must also be aware of unseen enemies and surprise attacks. + +Different kinds of power ups can be obtained throughout the game. These include: +'3' 3-Way: Bullets fire forward, right, and left. +'L' Laser: Player can shoot double lasers. +'T' Triple: Missiles are fired that spread out three ways in front. +'V' Vulcan: Rapid bullets are fired in the directions controlled. +'B' Bomb: Air to ground missles which can be upgraded twice. +'O' Orbital: A small drone using the same weaponry as the helicopter which can be otained by clearing a special formation of little red fighters. + +There is an additional super weapon that destroys all the enemies on the screen at once. However, use of this weapon is limited. + +Ajax contains 2 different types of stages: 2-D and 3-D. In the 2-D stage, the player controls a helicopter. In the 3-D stage, the player commands a jet fighter. + +Ajax features some impressive graphics filled with rotation and scaling effects (some may get a little dizzy, though!), a solid soundtrack and excellent game control. Highly recommended for any shoot'em up enthusiast! + 0.70 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/ajax.png + + + + ajaxj.zip + Ajax (Japan) + The player has been issued an emergency order. He must save the earth from being conquered by enemy forces. He climbs into his helicopter and prepares for intense aerial combat. Shooting oncoming enemy aircrafts and bombing the enemies below, he tries to make his way through the different stages to reach the enemy base. When he finishes the first stage, he is transported to his next mission by ab aircraft carrier. He hops into his jet fighters, tanks, ships, helicopters, and aircraft carriers. The player must also be aware of unseen enemies and surprise attacks. + +Different kinds of power ups can be obtained throughout the game. These include: +'3' 3-Way: Bullets fire forward, right, and left. +'L' Laser: Player can shoot double lasers. +'T' Triple: Missiles are fired that spread out three ways in front. +'V' Vulcan: Rapid bullets are fired in the directions controlled. +'B' Bomb: Air to ground missles which can be upgraded twice. +'O' Orbital: A small drone using the same weaponry as the helicopter which can be otained by clearing a special formation of little red fighters. + +There is an additional super weapon that destroys all the enemies on the screen at once. However, use of this weapon is limited. + +Ajax contains 2 different types of stages: 2-D and 3-D. In the 2-D stage, the player controls a helicopter. In the 3-D stage, the player commands a jet fighter. + +Ajax features some impressive graphics filled with rotation and scaling effects (some may get a little dizzy, though!), a solid soundtrack and excellent game control. Highly recommended for any shoot'em up enthusiast! + 0.70 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + ajax.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/ajax.png + + + + akkaarrh.zip + Akka Arrh (prototype) + The game itself is a spaceship game controlled with a trackball. Your spaceship sits in the center of the screen and you control a cursor which represents the ships weapon systems. The most interesting thing about this game was the fact that it has a zoom button which allows you to zoom in on the area closest to the ship. + 0.50 + 19820101T000000 + Atari + Shooter + 2646 + Mame + 256x240 + media/mixrbv2/akkaarrh.png + + + + akumajoun.zip + Akuma-Jou Dracula (Japan ver. N) + Count Dracula sleeps for a long hundred of years. During this time, peace exists at the village and Dracula is nothing but a mere legend. + +However, one day a young couple named Simon and Serena were celebrating their wedding at the village's church. + +The couple were enveloped with happiness, as the wedding bells rang, their future seemed blessed... + +Suddenly, the empty sky was covered with dark clouds and with a rolling thunder that shook the earth, Dracula has once again awakened. Asking for the beautiful girl's blood, he flew down during the middle of the wedding and suddenly took the bride with him. + +Now in order to save Serena, Simon heads to the demon castle + 0.70 + 19880101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + hcastle.zip + Konami Classics + 256x224 + media/mixrbv2/hcastle.png + + + + akumajou.zip + Akuma-Jou Dracula (Japan ver. P) + Count Dracula sleeps for a long hundred of years. During this time, peace exists at the village and Dracula is nothing but a mere legend. + +However, one day a young couple named Simon and Serena were celebrating their wedding at the village's church. + +The couple were enveloped with happiness, as the wedding bells rang, their future seemed blessed... + +Suddenly, the empty sky was covered with dark clouds and with a rolling thunder that shook the earth, Dracula has once again awakened. Asking for the beautiful girl's blood, he flew down during the middle of the wedding and suddenly took the bride with him. + +Now in order to save Serena, Simon heads to the demon castle + 0.70 + 19880101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + hcastle.zip + Konami Classics + 256x224 + media/mixrbv2/hcastle.png + + + + agalletj.zip + Akuu Gallet (Japan) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + agalletaj.zip + Akuu Gallet (older, Japan) + The player controls a fighter jet and shoot enemies in the air and on the ground, collects power-ups, and defeat bosses to advance levels. The player must collect four power ups to upgrade their weapon. There are four weapon types: L, a laser weapon, S, a support drone, M, a tracing missile, and F, gatling Fire, a spread-out vulcan bullet shot. + +Four levels of power-ups are available for each weapon, however each level requires four power up tokens be collected. There are also two special "bomb" weapons available for collection - green Energy Spark for a screen-covering swarm of lower-power bombs and blue Thunder Drive for a narrower and more focused attack. The Energy Spark clears all bullets from the screen, while the Thunder Drive only clears bullets that actually touch the blast. This blast starts momentarily atop the player, but quickly moves forward a short distance and stays stationary for a few seconds before dissipating. + 0.70 + 19960101T000000 + Gazelle + Banpresto + Shoot'em Up + 79 + 1-2 + agallet.zip + Cave + 270 + 320x240 + media/mixrbv2/agallet.png + + + + alcon.zip + Alcon (US) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + alexkidd1.zip + Alex Kidd: The Lost Stars (set 1, FD1089A 317-unknown) + Alex Kidd: The Lost Stars features Alex Kidd and Stella (controlled by player 2) searching for the twelve Zodiac signs. Alex's mission is to run through each level, knocking down enemies, and obtain the six miracle balls. These balls are hidden inside such unusual places as golden eggs, the Fantasy Zone ship out of action, clamshells, Christmas presents, pumpkins, and desk bells. Levels include Toy World, Machine World, the World of Make Believe, Water World, and Monster World. + 0.70 + 19860101T000000 + SEGA + SEGA + Platform / Run Jump Scrolling + 2897 + 1-2 + alexkidd.zip + Sega Classics + 320x224 + media/mixrbv2/alexkidd.png + + + + alexkidd.zip + Alex Kidd: The Lost Stars (set 2, unprotected) + Alex Kidd: The Lost Stars features Alex Kidd and Stella (controlled by player 2) searching for the twelve Zodiac signs. Alex's mission is to run through each level, knocking down enemies, and obtain the six miracle balls. These balls are hidden inside such unusual places as golden eggs, the Fantasy Zone ship out of action, clamshells, Christmas presents, pumpkins, and desk bells. Levels include Toy World, Machine World, the World of Make Believe, Water World, and Monster World. + 0.70 + 19860101T000000 + SEGA + SEGA + Platform / Run Jump Scrolling + 2897 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/alexkidd.png + + + + alibaba.zip + Ali Baba and 40 Thieves + Ali Baba and 40 Thieves is an arcade game in which the player must utilize a four-way joystick to take control of the eponymous Ali Baba who must fend off and kill the forty thieves as they try to steal his money; at the start of the game, Ali Baba goes into the room at the top of the screen as that text "Open Sesame" appears above him, grabs the seven bags of money and takes them down to the room at the bottom of the screen. He will now have to hit each of the forty thieves as they enter the room - but if one of them should make it to the room at the bottom of the screen he will pick up one of the seven bags of money then try to take it back up to the room at the top of the screen. If the thieves take all seven of the money bags up to the top of the screen, it will cost Ali Baba a life; but, if he "hits" all forty thieves without this happening (except the large and invulnerable red one), he will proceed to the next level. + 0.30 + 19820101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 270 + 288x224 + media/mixrbv2/alibaba.png + + + + alienar.zip + Alien Arena + Player 1 (Thor) and Player 2 (Zespar) are battling it out in the Alien Arena. The game is timed, with 2 minutes for every 25 cents inserted, regardless of your choice of 1-player or 2-player. More time can be purchased at any time before the timer reads ':00'. + +In a 1-player game you are Thor, with controls on the right, and the computer plays Zespar, on the left. In a 2-player game each of you chooses a set of controls. When time runs out in either game, it reverts to a "play as long as you can keep alive and possibly winning extra lives" 1-player game. If it started as a 2-player game, whoever is winning when time runs out is the one who gets to battle the computer. + +The basic theme of the game is "capture the flag (while protecting your own)". You can assemble offensive and defensive aids by picking up 'pieces' strewn about your half of the playfield. The pieces are color-coded, randomly created and distributed, and different objects require different numbers of pieces to assemble. Once you start assembling an object, you must finish assembling it (pick up enough pieces for it) and place it... or 'flush' the pieces you've picked up so far. Flush is mostly used for when you accidentally picked up the wrong color piece... or when you don't have the required pieces to assemble the rest of the object. A status bar shows what object is under construction, and how many more pieces are needed. Only one object can be assembled at a time. Once it is assembled, you must carry it to where you want to place or launch it and press the 'place' button. + +There is a delay at the beginning of each round before the flags appear, and then a further delay before the midfield barrier comes down. Use this time to start assembling an offense or defense or both (this keeps the opponent from just starting each round by making a suicide dash for your flag). When the flags do appear, their placement is random, but within a small distance from the back wall of your half of the arena. + +A round ends when an opposing flag is captured by a player, or when a player is destroyed by one of his opponent's offensive or defensive objects. There are all sorts of nuances to how the objects behave, how they score, etc. + 0.20 + 19850101T000000 + Duncan Brown + Duncan Brown + Action + 10 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/alienar.png + + + + alienaru.zip + Alien Arena (Stargate upgrade) + Player 1 (Thor) and Player 2 (Zespar) are battling it out in the Alien Arena. The game is timed, with 2 minutes for every 25 cents inserted, regardless of your choice of 1-player or 2-player. More time can be purchased at any time before the timer reads ':00'. + +In a 1-player game you are Thor, with controls on the right, and the computer plays Zespar, on the left. In a 2-player game each of you chooses a set of controls. When time runs out in either game, it reverts to a "play as long as you can keep alive and possibly winning extra lives" 1-player game. If it started as a 2-player game, whoever is winning when time runs out is the one who gets to battle the computer. + +The basic theme of the game is "capture the flag (while protecting your own)". You can assemble offensive and defensive aids by picking up 'pieces' strewn about your half of the playfield. The pieces are color-coded, randomly created and distributed, and different objects require different numbers of pieces to assemble. Once you start assembling an object, you must finish assembling it (pick up enough pieces for it) and place it... or 'flush' the pieces you've picked up so far. Flush is mostly used for when you accidentally picked up the wrong color piece... or when you don't have the required pieces to assemble the rest of the object. A status bar shows what object is under construction, and how many more pieces are needed. Only one object can be assembled at a time. Once it is assembled, you must carry it to where you want to place or launch it and press the 'place' button. + +There is a delay at the beginning of each round before the flags appear, and then a further delay before the midfield barrier comes down. Use this time to start assembling an offense or defense or both (this keeps the opponent from just starting each round by making a suicide dash for your flag). When the flags do appear, their placement is random, but within a small distance from the back wall of your half of the arena. + +A round ends when an opposing flag is captured by a player, or when a player is destroyed by one of his opponent's offensive or defensive objects. There are all sorts of nuances to how the objects behave, how they score, etc. + 0.20 + 19850101T000000 + Duncan Brown + Duncan Brown + Action + 10 + 1-2 + alienar.zip + Midway Classics + 292x240 + media/mixrbv2/alienar.png + + + + aa.zip + Alien Armada + 20030101T000000 + Mame + + + alienchac.zip + Alien Challenge (China) + Alien Challenge is a 2D versus fighting game in which you take control of one of eight eight fallen gods (according to the introduction story) and participate in a fighting tournament. The fighters to choose from are the ninja Jean Paul, warrior Melanie, American footballer Dougster, werewolf Fang, jester Drew, oriental fighter Nic-San, burning Burnie and golden Stevareno. Each fighter has their own fighting techniques witch include kick, punch and special attacks. The fights are best of three. After defeating the playable fighters the non-playable boss old man Claus must be beaten. Under certain conditions a bonus level follows were you have to destroy as many objects as possible before the time runs out to increase your score. You can play solo or against a friend. + 0.40 + 19940101T000000 + IGS + IGS + Fight / Versus + 2885 + 1-2 + aliencha.zip + IGS + 448x224 + media/mixrbv2/aliencha.png + + + + aliencha.zip + Alien Challenge (World) + Alien Challenge is a 2D versus fighting game in which you take control of one of eight eight fallen gods (according to the introduction story) and participate in a fighting tournament. The fighters to choose from are the ninja Jean Paul, warrior Melanie, American footballer Dougster, werewolf Fang, jester Drew, oriental fighter Nic-San, burning Burnie and golden Stevareno. Each fighter has their own fighting techniques witch include kick, punch and special attacks. The fights are best of three. After defeating the playable fighters the non-playable boss old man Claus must be beaten. Under certain conditions a bonus level follows were you have to destroy as many objects as possible before the time runs out to increase your score. You can play solo or against a friend. + 0.40 + 19940101T000000 + IGS + IGS + Fight / Versus + 2885 + 1-2 + IGS + 448x224 + media/mixrbv2/aliencha.png + + + + alinvade.zip + Alien Invaders + A clone of Space Invaders except using own graphic characters. A B&W monitor with multiple color gels are used. Uses discrete computer-like sounds instead of the original discrete sounds from Taito or Bally/Midway. + 0.20 + Forbes? + Forbes? + Shooter / Space Invaders Like + 2900 + Mame + 270 + 128x128 + media/mixrbv2/alinvade.png + + + + alienres.zip + Alien Rescue (Homebrew, Test Build July 2019) + 20190101T000000 + Platform + 7 + Mame + media/mixrbv2/alienres.png + + + aliensec.zip + Alien Sector + A scrolling shooter arcade game, that was released by Namco in 1985. It runs on Namco Pac-Land hardware, but with a video system like that used in Metro-Cross and Dragon Buster (modified to support vertical scrolling and a 2048-color palette). Ten years after its original arcade release, it was ported to the Sharp X68000, and it was also included in the fifth volume of the Namco Museum series on the Sony PlayStation. The game's primary protagonist, Toby "Kissy" Masuyo, predates by one year Samus Aran from Metroid as a human female playable character, although her face isn't revealed until she defeats the Octy King at the end. + 0.50 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/aliensec.png + + + + astormjd.zip + Alien Storm (set 1, Japan Rev B, 2 Players, FD1094 317-0146 decrypted) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astormj.zip + Alien Storm (set 1, Japan Rev B, 2 Players, FD1094 317-0146) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astormud.zip + Alien Storm (set 2, US, 3 Players, FD1094 317-0147 decrypted) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astormu.zip + Alien Storm (set 2, US, 3 Players, FD1094 317-0147) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astorm3d.zip + Alien Storm (set 3, World, 3 Players, FD1094 317-0148 decrypted) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astorm3.zip + Alien Storm (set 3, World, 3 Players, FD1094 317-0148) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + astorm.zip + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + astorm.zip + Alien Storm (set 4, World, 2 Players, FD1094 317-0154) + Alien Storm is a side-scrolling beat-em-up in which up to 3 players take on the role of one of 3 futuristic warriors. The game heroes are charged with destroying the hoards of repulsive aliens who are invading the Earth. Many of the aliens are disguised as a variety of everyday street objects; such as telephone booths, oil cans, trash cans and mailboxes. The aliens reveal their true forms as the warriors approach. + +Each of the 3 heroes carries their own individual weapon; Gordon has his plasma gun, Karla has a flamethrower and Scooter has an electric whip. At the end of each level, the warriors will enter a building and the shoot-em-up action will switch to a first-person perspective. + 0.40 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/astorm.png + + + + aliensynjo.zip + Alien Syndrome (set 1, Japan, old, System 16A, FD1089A 317-0033) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensyn2.zip + Alien Syndrome (set 2, System 16A, FD1089A 317-0033) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensyn3.zip + Alien Syndrome (set 3, System 16B, FD1089A 317-0033) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensyn.zip + Alien Syndrome (set 4, System 16B, unprotected) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensyn5.zip + Alien Syndrome (set 5, System 16A, FD1089B 317-0037) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensynj.zip + Alien Syndrome (set 6, Japan, new, System 16B, FD1089A 317-0033) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + aliensyn7.zip + Alien Syndrome (set 7, System 16B, MC-8123B 317-00xx) + Alien Syndrome is a overhead-view run and gun game for one or two players in which a number of Mankind's space ships and bases have been overrun by an alien race, who have taken the human inhabitants hostage. + +Players control two soldiers named Ricky and Mary and must fight their way through large eight-way scrolling levels to rescue their captured comrades. Once a set number of hostages have been rescued, an exit opens and players can pass through it to fight the end-of-level guardian. Once the guardian is defeated, play moves onto the next stage. + +A time-bomb is automatically set at the start of each stage, which must then be completed before the bomb's timer runs down. Failure to finish the level in time results in the death of the player characters. Weapon upgrades and maps of the current level are available at certain points and are accessed via hatchways in the wall. + +Alien Syndrome consists of 6 full stages plus a 7th final mini-stage, consisting solely of a fight to the death against the game's final, massive guardian. + 0.50 + 19870101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + aliensyn.zip + Sega Classics + 320x224 + media/mixrbv2/aliensyn.png + + + + avspa.zip + Alien vs Predator (940520 Asia) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + avsp.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + avspd.zip + Alien vs Predator (940520 Euro Phoenix Edition) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + avsp.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + avsp.zip + Alien vs Predator (940520 Euro) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + avsph.zip + Alien vs Predator (940520 Hispanic) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + avsp.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + avspj.zip + Alien vs Predator (940520 Japan) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + avsp.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + avspu.zip + Alien vs Predator (940520 USA) + San Drad, California, has been overrun by the Aliens, and the cybernetically-enhanced Major Dutch Schaefer and Lieutenant Linn Kurosawa have been abandoned by their superiors and are cornered by a swarm of the Alien drones. Before they can be killed, a pair of the Predators appear and destroy the Aliens. The Predators offer an alliance with the two humans in order to stop the Alien infestation. + +The players take control of up to three of four characters: Dutch, Linn, a Predator hunter, and a Predator warrior, and battle the Aliens through several environments. In the process, the characters discover that the Alien presence on Earth is the result of an experiment headed by a renegade General Bush of the U.S. Colonial Marines in conjunction with the Weyland-Yutani corporation. They destroy the Alien hive by crashing a military ship into San Drad, causing a huge explosion. The Predator warrior then gives his wrist blades to Dutch and Linn in recognition of their skills as warriors, before the Predators depart back into space. + 0.40 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + avsp.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/avsp.png + + + + aliensa.zip + Aliens (Asia) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliensj.zip + Aliens (Japan set 1) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliensj2.zip + Aliens (Japan set 2) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliensu.zip + Aliens (US set 1) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliensu2.zip + Aliens (US set 2) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliens.zip + Aliens (World set 1) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliens2.zip + Aliens (World set 2) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliens3.zip + Aliens (World set 3) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aliens4.zip + Aliens (World set 4) + Aliens is a scrolling run 'n' gun game for one or two players based on the classic 1986 science-fiction movie of the same name. Players take on the role of either Ellen Ripley (in the single-player game) or Corporal Hicks (in the two-player game) and must shoot their way through the alien-infested levels of the LV426 base to make their escape together with 'Newt', the little girl who survived the alien invasion of her settlement. + +Players begin the game armed only with a pulse rifle but will have opportunities to upgrade to other weapons, including flamethrowers and grenade launchers. Bombs can also be found that cause greater damage to the enemies. Each player life starts with eight health points which deplete upon contact with either an alien or an enemy projectile and once all health points are lost, the player loses a life. Each stage ends with a Boss encounter, with the game's final boss being the Alien Queen herself. + +As well as the standard side-scrolling stages, intermittent into-the-screen stages also feature that have the players riding atop the Marines' APC vehicle, shooting the hordes of aliens that swarm towards it. + +As well as the standard Aliens and Face-huggers from the original film (that now come in a variety of different colours), there are many enemies that were created only for the arcade game and have never appeared elsewhere in the Alien franchise. These include flying aliens and mutated humans, as well as all end-of-stage bosses prior to the Alien queen. + 0.50 + 19900101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + aliens.zip + Konami Classics + 288x224 + media/mixrbv2/aliens.png + + + + aligators.zip + Alligator Hunt (Spain, protected) + Strange reptilian-looking aliens are invading earth and is up to the most brave and skilled soldiers (apparently a duo of skateboarding youths!) to stop the invasion and destroy the enemy base. Features nice graphics and great shoot'em up gameplay which is quite similar to "Cabal" & "Blood Bros.". + 0.60 + 19940101T000000 + Gaelco + Gaelco + Shoot'em Up + 79 + 1-2 + aligator.zip + Gaelco + 320x240 + media/mixrbv2/aligator.png + + + + aligatorun.zip + Alligator Hunt (unprotected, set 1) + Strange reptilian-looking aliens are invading earth and is up to the most brave and skilled soldiers (apparently a duo of skateboarding youths!) to stop the invasion and destroy the enemy base. Features nice graphics and great shoot'em up gameplay which is quite similar to "Cabal" & "Blood Bros.". + 0.60 + 19940101T000000 + Gaelco + Gaelco + Shoot'em Up + 79 + 1-2 + aligator.zip + Gaelco + 320x240 + media/mixrbv2/aligator.png + + + + aligatoruna.zip + Alligator Hunt (unprotected, set 2) + Strange reptilian-looking aliens are invading earth and is up to the most brave and skilled soldiers (apparently a duo of skateboarding youths!) to stop the invasion and destroy the enemy base. Features nice graphics and great shoot'em up gameplay which is quite similar to "Cabal" & "Blood Bros.". + 0.60 + 19940101T000000 + Gaelco + Gaelco + Shoot'em Up + 79 + 1-2 + aligator.zip + Gaelco + 320x240 + media/mixrbv2/aligator.png + + + + aligator.zip + Alligator Hunt (World, protected) + Strange reptilian-looking aliens are invading earth and is up to the most brave and skilled soldiers (apparently a duo of skateboarding youths!) to stop the invasion and destroy the enemy base. Features nice graphics and great shoot'em up gameplay which is quite similar to "Cabal" & "Blood Bros.". + 0.60 + 19940101T000000 + Gaelco + Gaelco + Shoot'em Up + 79 + 1-2 + Gaelco + 320x240 + media/mixrbv2/aligator.png + + + + alphamis.zip + Alpha Mission + ASO is a one-player scrolling shooter game, similar to Xevious in its segregation of air-to-air and air-to-ground weapons. Missiles are used to destroy ground enemies, while laser-like weapons are used for aerial opponents. Throughout each of the levels, the player must fight off waves of enemies that threaten several space stations and a boss must be defeated at the end of each. Like most early games in this genre, when the player dies, all weapons are lost and the player is moved to a point slightly before the point of death. The player's craft can also be upgraded to have more powerful weapons by picking up various power-ups throughout the level. + 0.50 + 19850101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + aso.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/aso.png + + + + alpham2.zip + Alpha Mission II / ASO II - Last Guardian (NGM-007)(NGH-007) + The lunar nightmare of a bloody 200-year space war was thought to be over in the "original" ALPHA MISSION. But now with the advent of more technically sophisticated weapons, the evil "Fulvar" and his "Seven Star Alliance" have returned to destroy all planets that stand in their way of the ultimate target... Earth! Now in the year of 2525! Your mission as pilot of the new SYD-FX fighter is to use every weapon at your disposal to rid the galaxy once and for all of the evil that now dominates and threatens Earth. So suit up, hold your breath, and stand ready for unbelievable graphics and stereo sound that'll suck you into the far reaches of deep, dark inner space. Be prepared... you may never come back! + 0.65 + 19910101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/alpham2.png + + + + alpham2p.zip + Alpha Mission II / ASO II - Last Guardian (prototype) + The lunar nightmare of a bloody 200-year space war was thought to be over in the "original" ALPHA MISSION. But now with the advent of more technically sophisticated weapons, the evil "Fulvar" and his "Seven Star Alliance" have returned to destroy all planets that stand in their way of the ultimate target... Earth! Now in the year of 2525! Your mission as pilot of the new SYD-FX fighter is to use every weapon at your disposal to rid the galaxy once and for all of the evil that now dominates and threatens Earth. So suit up, hold your breath, and stand ready for unbelievable graphics and stereo sound that'll suck you into the far reaches of deep, dark inner space. Be prepared... you may never come back! + 0.65 + 19910101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + alpham2.zip + Neo-Geo + 320x224 + media/mixrbv2/alpham2.png + + + + alphaone.zip + Alpha One (prototype, 3 lives) + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + mhavoc.zip + Atari Classics + media/mixrbv2/mhavoc.png + + + + alphaonea.zip + Alpha One (prototype, 5 lives) + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + mhavoc.zip + Atari Classics + media/mixrbv2/mhavoc.png + + + + alpha1v.zip + Alpha One (Vision Electronics) + Alpha One + 19880101T000000 + Vision Electronics + Vision Electronics + Shoot'em Up + 79 + 1-2 + Irem Classics + 240x252 + media/mixrbv2/alpha1v.png + + + + alpine.zip + Alpine Ski (set 1) + The player controls a skier, who can move left, right, or increase forward speed. The aim is to maneuver a skier through a downhill ski course, a slalom course, and a ski jumping competition in the shortest time possible. Two players can compete against each other. + 0.50 + 19820101T000000 + Pacific Kougyou + Taito + Sports / Skiing + 2902 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/alpine.png + + + + alpinea.zip + Alpine Ski (set 2) + The player controls a skier, who can move left, right, or increase forward speed. The aim is to maneuver a skier through a downhill ski course, a slalom course, and a ski jumping competition in the shortest time possible. Two players can compete against each other. + 0.50 + 19820101T000000 + Pacific Kougyou + Taito + Sports / Skiing + 2902 + 1-2 + alpine.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/alpine.png + + + + altbeast2.zip + Altered Beast (set 2, MC-8123B 317-0066) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeast4.zip + Altered Beast (set 4, MC-8123B 317-0066) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeast5d.zip + Altered Beast (set 5, FD1094 317-0069 decrypted) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeast5.zip + Altered Beast (set 5, FD1094 317-0069) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeast6.zip + Altered Beast (set 6, 8751 317-0076) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeast.zip + Altered Beast (set 8, 8751 317-0078) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + ambush.zip + Ambush + An early shoot 'em up. You must first attempt to take off you spaceship by repeatedly pressing left and right. Then you must attempt to fight off enemy spaceships. + 0.50 + 19830101T000000 + Tecfri + Tecfri + Shooter / Plane, 3rd person + 2881 + 1-2 + Mame + 256x222 + media/mixrbv2/ambush.png + + + + ambushh.zip + Ambush (hack?) + An early shoot 'em up. You must first attempt to take off you spaceship by repeatedly pressing left and right. Then you must attempt to fight off enemy spaceships. + 0.50 + 19830101T000000 + Tecfri + Tecfri + Shooter / Plane, 3rd person + 2881 + 1-2 + ambush.zip + Mame + 256x222 + media/mixrbv2/ambush.png + + + + ambushj.zip + Ambush (Japan) + An early shoot 'em up. You must first attempt to take off you spaceship by repeatedly pressing left and right. Then you must attempt to fight off enemy spaceships. + 0.50 + 19830101T000000 + Tecfri + Tecfri + Shooter / Plane, 3rd person + 2881 + 1-2 + ambush.zip + Mame + 256x222 + media/mixrbv2/ambush.png + + + + ambushv.zip + Ambush (Volt Elec co-ltd) + An early shoot 'em up. You must first attempt to take off you spaceship by repeatedly pressing left and right. Then you must attempt to fight off enemy spaceships. + 0.50 + 19830101T000000 + Tecfri + Tecfri + Shooter / Plane, 3rd person + 2881 + 1-2 + ambush.zip + Mame + 256x222 + media/mixrbv2/ambush.png + + + + anteaterg.zip + Ameisenbaer (German) + Anteater is an abstract maze game in which the player controls an anteater that elongates its tongue through maze-like anthills eating ants and ant larvae. The object of the game is to eat all of the larvae - represented as round dots - before the timer runs out. Once all larvae have been eaten, play moves onto the next stage. + +Players can only eat ants with the tip of the anteater's tongue, if an ant touches any other part of the tongue, the anteater is bitten and a player life is lost. As well as the ants, worms also roam the stages, worms will not harm the anteater upon contact with the extended tongue but if the head of the worm touches the tongue's tip, the player loses a life. Worms can be safely eaten from behind. + +Large queen ants are situated at the bottom of the nest and eating these will temporarily clear all insects from the screen. + +Anteater has a short day-night cycle represented by a moving Sun at the top of the screen. Once the sun has traveled across the screen and night falls, a spider will appear. The spider climbs down the anteater's tongue, taking a life if it reaches the tongue's tip. The spider can only be killed by eating a queen ant. + 0.70 + 19820101T000000 + Tago Electronics + Tago Electronics + Action + 10 + 1-2 + anteater.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/anteater.png + + + + horshoes.zip + American Horseshoes (US) + American Horseshoes is a 1 to 4 players horseshoe game. Each players can choose from one of four characters. There are 2 pitches in each inning. Players may select grip and throwing angle prior to each pitch. The rolling of the trackball determines the distance of each pitch. After each inning the scoring with shown with an overhead shot of the stake area. Each player's score is shown throughout the game at the top of the screen. At the end of each 3 innings the players may continue by inserting additional credits. Up to 9 innings can be played per game. + 0.50 + 19900101T000000 + Taito + Taito + Sports + 685 + 1-4 + Taito Classics + 270 + 320x224 + media/mixrbv2/horshoes.png + + + + amspdwy.zip + American Speedway (set 1) + An overhead racing game. + 0.50 + 19870101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Race, Driving / Race + 2924 + 1-2 + Mame + 256x224 + media/mixrbv2/amspdwy.png + + + + amspdwya.zip + American Speedway (set 2) + An overhead racing game. + 0.50 + 19870101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Race, Driving / Race + 2924 + 1-2 + amspdwy.zip + Mame + 256x224 + media/mixrbv2/amspdwy.png + + + + amidar.zip + Amidar + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amidarb.zip + Amidar (bootleg) + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amidar1.zip + Amidar (older) + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amidaro.zip + Amidar (Olympia) + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amidars.zip + Amidar (Scramble hardware) + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amidaru.zip + Amidar (Stern) + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + amigo.zip + Amigo + Amidar is an abstract arcade game in which players must 'colour in' all of the rectangles on the screen. Each level has a number of patrolling enemies called 'Amidars' that must be avoided but players are aided in their task with the inclusion of a JUMP button which, when used, causes all the on-screen enemies to jump, giving the player time to escape. There are only three 'jumps' given per level, however. + +On odd-numbered levels, the player's character is a gorilla who eats coconuts; on even-numbered levels, it's a paint roller. The game's enemy Amidars are savages and pigs respectively. Whenever a rectangular portion of the board is cleared (either by collecting all surrounding coconuts, or painting all surrounding edges), the rectangle is coloured in and on the even levels, bonus points are awarded, while on the odd-numbered levels, points are awarded for each coconut eaten. + +If players manage to fill in all four corner rectangles of a board, they are briefly able to kill the enemies by touching them (similar to the 'Power-pill' from Namco's Pac-Man series). Enemies killed in this way fall to the bottom of the screen and recover after a few seconds. + +On the even-numbered paint roller levels, the roller cannot move too far from grid rectangles that have already been filled without running out of paint and having to return to completed parts of the map to refresh its supply. When this happens, any painted lines that are not part of a filled rectangle will vanish and must be painted again. This means that the player must build their completed squares around the starting point of the level and spread outwards, rather than completing squares on any part of the board as they can on the odd-numbered Gorilla levels. This makes filling in the corner rectangles to become invincible much more difficult. + +In between levels players are given the possibility of earning 5,000 bonus points. Here, an Amidar moves across the top of the screen, by pushing the jump button the Amidar traces a random path down towards the bottom of the screen. If the Amidar reaches a bunch of bananas, a bonus is awarded. + 0.70 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + amidar.zip + Konami Classics + 270 + 224x256 + media/mixrbv2/amidar.png + + + + androdun.zip + Andro Dunos (NGM-049)(NGH-049) + The invasion of an unknown life source is getting worse. Nobody knows if the defensive line or the heart of the enemy base is ruined first. With the people's hope, the most advanced fighter will be dispatched into multi-scrolling space. + +Fight your way through seven stages in this horizontal-scrolling game, and defeat a boss at the end of each one. You start the game with four main weapons, which you can switch from with the click of a button. Some of these weapons are more powerful than others. You can also fire off a charged shot if your main weapon level is two or greater, simply by holding down the fire button for about two seconds. Using charged shots can do more damage to an enemy ship. If you happen to die, you will lose one power level from all four weapons. If all your lives are lost and are forced to continue, you will start again with your main weapon on the second power level and all three sub-weapons on the first power level. + 0.70 + 19920101T000000 + Visco + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/androdun.png + + + + androidpo.zip + Android (prototype, early build) + 0.40 + 19870101T000000 + Nasco + Shooter + 2646 + 1-2 + androidp.zip + Mame + 270 + 256x192 + media/mixrbv2/androidp.png + + + + androidp.zip + Android (prototype, later build) + 0.40 + 19870101T000000 + Nasco + Shooter + 2646 + 1-2 + Mame + 270 + 256x192 + media/mixrbv2/androidp.png + + + + angelkds.zip + Angel Kids (Japan) + Angel Kids is a climbing game where players take turns controlling two kids holding a rope. Pull the two joysticks outwards and the rope gets taunt. When timed right this throws a third kid into balloons. Balloons are scrolled on screen, seven screens high. While the girl is in the air the screen goes split screen to cover the distance. You must push up to advance kids with the rope. + 0.50 + 19880101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 270 + 256x240 + media/mixrbv2/angelkds.png + + + + cadanglr.zip + Angler Dangler (DECO Cassette) (US) + A fishing game. Position yourself to throw your hook to the best spots and reeling in your catch past hazardous rocks. + 0.30 + 19820101T000000 + Data East + Hunting and Fishing + 2648 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cadanglr.png + + + + anteater.zip + Anteater + Anteater is an abstract maze game in which the player controls an anteater that elongates its tongue through maze-like anthills eating ants and ant larvae. The object of the game is to eat all of the larvae - represented as round dots - before the timer runs out. Once all larvae have been eaten, play moves onto the next stage. + +Players can only eat ants with the tip of the anteater's tongue, if an ant touches any other part of the tongue, the anteater is bitten and a player life is lost. As well as the ants, worms also roam the stages, worms will not harm the anteater upon contact with the extended tongue but if the head of the worm touches the tongue's tip, the player loses a life. Worms can be safely eaten from behind. + +Large queen ants are situated at the bottom of the nest and eating these will temporarily clear all insects from the screen. + +Anteater has a short day-night cycle represented by a moving Sun at the top of the screen. Once the sun has traveled across the screen and night falls, a spider will appear. The spider climbs down the anteater's tongue, taking a life if it reaches the tongue's tip. The spider can only be killed by eating a queen ant. + 0.70 + 19820101T000000 + Tago Electronics + Tago Electronics + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/anteater.png + + + + aponow.zip + Apocaljpse Now + The player pilots a rescue helicopter and must try to rescue numerous airmen who have parachuted into the sea below. The rescue chopper is under constant attack from enemy helicopters, while sharks swim in the ocean below and will kill any floating airmen they come across. Later levels also have enemy subs and ships all intent on foiling the rescue mission. Players must be careful to avoid the falling wreckage of any enemy helicopters they have just destroyed, and also need to be wary of hitting any parachuting airmen with their 'copter blades, as this will kill the airmen instantly. + +In a very similar vein to Williams' legendary "Robotron", also released in '82, the rescue chopper is armed with a gun that can fire in eight different directions, irrespective of the direction the rescue chopper is flying in. In addition to the eight-way gun, the 'copter can also drop missiles from its underside, which is essential for destroying enemy subs and ships. + +To complete a stage, players must pick up a set number of fallen airmen from the sea (determined at the start of each level) and deposit them safely onto a nearby island. + 0.50 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Plane + 2928 + 1-2 + rescue.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/rescue.png + + + + appoooh.zip + Appoooh + A Japan-only wrestling game by Sega featuring Tigerman, H.Hogen, A.Giant and other wrestlers. Personal Impressions and Technical Impressions each account for half of the total score. Within the Personal Impressions category, "Like" carries a little more weight than the other factors. + 0.30 + 19840101T000000 + Sanritsu Denki + Sanritsu Denki + Sports / Wrestling + 2861 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/appoooh.png + + + + aquariumj.zip + Aquarium (Japan) + A puzzle game with a fish theme. + 0.60 + 19960101T000000 + Excellent Systems + Excellent System + Puzzle-Game / Fall + 2912 + 1-2 + aquarium.zip + Mame + 320x256 + media/mixrbv2/aquarium.png + + + + aquarium.zip + Aquarium (US) + A puzzle game with a fish theme. + 0.60 + 19960101T000000 + Excellent Systems + Excellent System + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x256 + media/mixrbv2/aquarium.png + + + + arabian.zip + Arabian + You'll have 1001 hours of fun with the ARABIAN upright game! You are the adventurous Arabian prince, and your goal is to rescue the princess from her palace. Use the joystick control and the KICK button to move through perilous passages. Sail the seas, crawl in caves, and fly magic carpets - you'll be challenged by 4 increasingly hard waves of play! Score points on the way for picking up the letters in A-R-A-B-I-A-N, and get a bonus if you pick them up in order! + +Arabian is a 'video book' with a happy ending! The attract mode introduces the story, and animated storybook 'pages' let you experience the Arabian Prince's adventures. Use the 8-position joystick to jump, super-jump, walk, crawl, or climb in all directions. Tap either KICK button (are you right- or left-handed?) to kick your enemies out of the way. + +The player controls a young Arabian Prince who must rescue his Princess from the castle tower where she is being held prisoner. Evil Genies in brass jugs, swooping Rocs, and purple ghostly creatures called Oscars will try to stop him along the way. The Prince scores points for kicking Oscars or Rocs, picking up lettered jugs, or spelling A-R-A-B-I-A-N. The Prince loses a life when he's hit by a smokeball, falls off a ledge, flying carpet or vine, or gets caught (touched) by a Genie, Oscar, or Roc. + +The Prince must successfully complete 4 levels to rescue the Princess (4 levels or 'pages' equals 1 section). Each level is introduced with the turning of a page, which shows a distant view of the upcoming playfield. Each playfield has 7 lettered jugs that must be picked up before the player can advance to the next level, but he must avoid or KICK evil Genies, Oscars, and Rocs that will try to stop him. + + + 0.60 + 19830101T000000 + Atari + Atari + Platform / Run Jump + 2915 + 1-2 + Atari Classics + 270 + 256x234 + media/mixrbv2/arabian.png + + + + arabiana.zip + Arabian (Atari) + You'll have 1001 hours of fun with the ARABIAN upright game! You are the adventurous Arabian prince, and your goal is to rescue the princess from her palace. Use the joystick control and the KICK button to move through perilous passages. Sail the seas, crawl in caves, and fly magic carpets - you'll be challenged by 4 increasingly hard waves of play! Score points on the way for picking up the letters in A-R-A-B-I-A-N, and get a bonus if you pick them up in order! + +Arabian is a 'video book' with a happy ending! The attract mode introduces the story, and animated storybook 'pages' let you experience the Arabian Prince's adventures. Use the 8-position joystick to jump, super-jump, walk, crawl, or climb in all directions. Tap either KICK button (are you right- or left-handed?) to kick your enemies out of the way. + +The player controls a young Arabian Prince who must rescue his Princess from the castle tower where she is being held prisoner. Evil Genies in brass jugs, swooping Rocs, and purple ghostly creatures called Oscars will try to stop him along the way. The Prince scores points for kicking Oscars or Rocs, picking up lettered jugs, or spelling A-R-A-B-I-A-N. The Prince loses a life when he's hit by a smokeball, falls off a ledge, flying carpet or vine, or gets caught (touched) by a Genie, Oscar, or Roc. + +The Prince must successfully complete 4 levels to rescue the Princess (4 levels or 'pages' equals 1 section). Each level is introduced with the turning of a page, which shows a distant view of the upcoming playfield. Each playfield has 7 lettered jugs that must be picked up before the player can advance to the next level, but he must avoid or KICK evil Genies, Oscars, and Rocs that will try to stop him. + + + 0.60 + 19830101T000000 + Atari + Atari + Platform / Run Jump + 2915 + 1-2 + arabian.zip + Atari Classics + 270 + 256x234 + media/mixrbv2/arabian.png + + + + aracnis.zip + Aracnis (bootleg of Scorpion on Moon Cresta hardware) + Maneuver a spaceship through terrains filled with spiders and other creatures. + 0.60 + 19820101T000000 + Zaccaria + Zaccaria + Shoot'em Up + 79 + 1-2 + scorpion.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scorpion.png + + + + arbalest.zip + Arbalester + A vertically scrolling shoot'em up game. + 0.30 + 19890101T000000 + SETA Corporation + SETA Corporation + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x224 + media/mixrbv2/arbalest.png + + + + arcadecl.zip + Arcade Classics (prototype) + 2 games in one means double the fun. + 0.50 + 19920101T000000 + Atari + Atari + Compilation + 34 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/arcadecl.png + + + + arcadian.zip + Arcadia (NMK) + Arcadia is a vertical shooter, developed and published by NMK, which was released in Japan in 1994. Nihon Maicom Kaihatsu, simply known as NMK, is a defunct Japanese game developer. The game it's been created by some of the programmers of "Thunder Dragon 2" + 0.60 + 19940101T000000 + NMK + Shoot'em Up + 79 + 1-2 + NMK + 270 + 384x224 + media/mixrbv2/arcadian.png + + + + area88r.zip + Area 88 (Japan Resale ver.) + U.N. Squadron / Area 88 is a horizontally-scrolling shoot-em-up and is based on the Manga series of the same name. The game features characters from the original Manga and their mission is to battle their way through enemy-packed levels to stop a terrorist group known as 'Project 4'. + 0.70 + 19890101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + unsquad.zip + Capcom Play System + 384x224 + media/mixrbv2/unsquad.png + + + + area88.zip + Area 88 (Japan) + U.N. Squadron / Area 88 is a horizontally-scrolling shoot-em-up and is based on the Manga series of the same name. The game features characters from the original Manga and their mission is to battle their way through enemy-packed levels to stop a terrorist group known as 'Project 4'. + 0.70 + 19890101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + unsquad.zip + Capcom Play System + 384x224 + media/mixrbv2/unsquad.png + + + + lwingsj.zip + Ares no Tsubasa (Japan) + The human race was about to achieve the evolution from an ancient civilization to a state of millennium with the help of DARK, a super powerful computer left by spacemen long ago. DARK suddenly began to malfunction. + +The world was in a panic. The human race was on the brink of extinction. + +ARES, god of war, gave two young men Wings of Love and Courage and entrusted them with the survival and future of the human race. Time is of the essence. Destroy DARK Take wings, legendary soldiers. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + lwings.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/lwings.png + + + + lwingsja.zip + Ares no Tsubasa (Japan, rev. A) + The human race was about to achieve the evolution from an ancient civilization to a state of millennium with the help of DARK, a super powerful computer left by spacemen long ago. DARK suddenly began to malfunction. + +The world was in a panic. The human race was on the brink of extinction. + +ARES, god of war, gave two young men Wings of Love and Courage and entrusted them with the survival and future of the human race. Time is of the essence. Destroy DARK Take wings, legendary soldiers. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + lwings.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/lwings.png + + + + argus.zip + Argus + While it borrows heavily from the game which established the vertically scrolling shooter, "Xevious", Argus adds its own unique twists. The player's ship is always presented in the center of the screen, and as the player moves left and right, the ground actually scrolls in the opposite direction. The player can continue scrolling all the way in one direction and end up back where he or she started. + +Other new concepts include walls of mazes that float in the air which may be optionally traveled through. Certain ground targets provide power-ups or special weapons, but they must be bombed 3 times in order to earn them. A boss sequence occurs at the end of each stage. The boss has one infrequently exposed weak spot that only takes one bomb to destroy, but the boss will leave after an allotted time if the player does not succeed. There is a landing sequence after the boss fight that must be successfully maneuvered for bonus points. And finally, the ship receives a new weapons at each stage (5 distinct combinations which cycle). + 0.70 + 19860101T000000 + NMK + Jaleco + Shoot'em Up + 79 + 1-2 + NMK + 270 + 256x224 + media/mixrbv2/argus.png + + + + argusg.zip + Argus (Gottlieb, prototype) + Protect the citizens of earth! As Gottlieb's Argus, shoot villains and hazards with energy bolts. Hold down catch button to rescue falling citizens and catch falling cars. Shoot or catch rubble before it crushes someone. Game ends when no citizens remain. + 0.70 + 19840101T000000 + Gottlieb + Gottlieb + Action + 10 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/argusg.png + + + + rygarj.zip + Argus no Senshi (Japan) + Rygar is a classic game for many home consoles. It also has an Arcade version that plays different than the home console versions. + 0.90 + 19860101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1 + rygar.zip + Tecmo + 256x224 + media/mixrbv2/rygar.png + + + + arian.zip + Arian Mission + ASO is a one-player scrolling shooter game, similar to Xevious in its segregation of air-to-air and air-to-ground weapons. Missiles are used to destroy ground enemies, while laser-like weapons are used for aerial opponents. Throughout each of the levels, the player must fight off waves of enemies that threaten several space stations and a boss must be defeated at the end of each. Like most early games in this genre, when the player dies, all weapons are lost and the player is moved to a point slightly before the point of death. The player's craft can also be upgraded to have more powerful weapons by picking up various power-ups throughout the level. + 0.50 + 19850101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + aso.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/aso.png + + + + arkarea.zip + Ark Area + An overhead shoot'em up where you fight through 23 stages, battling 1 or 2 bosses at the end of each level + 0.70 + 19880101T000000 + UPL + UPL + Shooter + 2646 + 1-2 + Mame + 256x192 + media/mixrbv2/arkarea.png + + + + arkgcbl.zip + Arkanoid (bootleg on Block hardware) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidjbl.zip + Arkanoid (bootleg with MCU set 1) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidjbl2.zip + Arkanoid (bootleg with MCU set 2) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidjbla.zip + Arkanoid (bootleg with MCU, alt) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + ark1ball.zip + Arkanoid (bootleg with MCU, harder) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + ark1balla.zip + Arkanoid (bootleg with MCU, harder, alt) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkangc.zip + Arkanoid (Game Corporation bootleg, set 1) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkangc2.zip + Arkanoid (Game Corporation bootleg, set 2) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidj.zip + Arkanoid (Japan) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidja.zip + Arkanoid (Japan, older rev) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidjb.zip + Arkanoid (Japan, oldest rev) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkatayt.zip + Arkanoid (Tayto bootleg) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arktayt2.zip + Arkanoid (Tayto bootleg, harder) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoidu.zip + Arkanoid (US) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoiduo.zip + Arkanoid (US, oldest rev) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkanoid.zip + Arkanoid (World, oldest rev) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arknoid2b.zip + Arkanoid - Revenge of DOH (Japan bootleg) + Arkanoid - Revenge of DOH © 1987 Taito Corp. + +The mysterious enemy known as 'DOH' has returned to seek vengeance on the 'Vaus' space vessel. The player must once again take control of the Vaus and overcome many challenges in order to destroy DOH once and for all. + +An update of the popular 1986 original, Revenge of DOH sees the player battle through 34 rounds, taken from a grand total of 64. Revenge of DOH differs from its predecessor with the introduction of "Warp Gates". Upon completion of a round or when the Break ('B') pill is caught, two gates appear at the bottom left and bottom right of the play area respectively, the Vaus is then taken through one of the gates - the choice will affect which version of the next round is provided. + +The game also features two new features for bricks. Notched silver bricks, like normal silver bricks, take several hits to destroy. However, after a short period of time after destruction, they regenerate at full strength. Fortunately, clearing a level does not require that any notched bricks to be destroyed. Also, some bricks move from side to side as long as their left and/or right sides are not obstructed by other bricks. + +The game features a mini-boss in the form of a giant brain, which will help you practice for DOH. You must aim for the brain's mouth to defeat it. + 0.75 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + arknoid2.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arknoid2.png + + + + arknoid2j.zip + Arkanoid - Revenge of DOH (Japan) + Arkanoid - Revenge of DOH © 1987 Taito Corp. + +The mysterious enemy known as 'DOH' has returned to seek vengeance on the 'Vaus' space vessel. The player must once again take control of the Vaus and overcome many challenges in order to destroy DOH once and for all. + +An update of the popular 1986 original, Revenge of DOH sees the player battle through 34 rounds, taken from a grand total of 64. Revenge of DOH differs from its predecessor with the introduction of "Warp Gates". Upon completion of a round or when the Break ('B') pill is caught, two gates appear at the bottom left and bottom right of the play area respectively, the Vaus is then taken through one of the gates - the choice will affect which version of the next round is provided. + +The game also features two new features for bricks. Notched silver bricks, like normal silver bricks, take several hits to destroy. However, after a short period of time after destruction, they regenerate at full strength. Fortunately, clearing a level does not require that any notched bricks to be destroyed. Also, some bricks move from side to side as long as their left and/or right sides are not obstructed by other bricks. + +The game features a mini-boss in the form of a giant brain, which will help you practice for DOH. You must aim for the brain's mouth to defeat it. + 0.75 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + arknoid2.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arknoid2.png + + + + arknoid2u.zip + Arkanoid - Revenge of DOH (US) + Arkanoid - Revenge of DOH © 1987 Taito Corp. + +The mysterious enemy known as 'DOH' has returned to seek vengeance on the 'Vaus' space vessel. The player must once again take control of the Vaus and overcome many challenges in order to destroy DOH once and for all. + +An update of the popular 1986 original, Revenge of DOH sees the player battle through 34 rounds, taken from a grand total of 64. Revenge of DOH differs from its predecessor with the introduction of "Warp Gates". Upon completion of a round or when the Break ('B') pill is caught, two gates appear at the bottom left and bottom right of the play area respectively, the Vaus is then taken through one of the gates - the choice will affect which version of the next round is provided. + +The game also features two new features for bricks. Notched silver bricks, like normal silver bricks, take several hits to destroy. However, after a short period of time after destruction, they regenerate at full strength. Fortunately, clearing a level does not require that any notched bricks to be destroyed. Also, some bricks move from side to side as long as their left and/or right sides are not obstructed by other bricks. + +The game features a mini-boss in the form of a giant brain, which will help you practice for DOH. You must aim for the brain's mouth to defeat it. + 0.75 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + arknoid2.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arknoid2.png + + + + arknoid2.zip + Arkanoid - Revenge of DOH (World) + Arkanoid - Revenge of DOH © 1987 Taito Corp. + +The mysterious enemy known as 'DOH' has returned to seek vengeance on the 'Vaus' space vessel. The player must once again take control of the Vaus and overcome many challenges in order to destroy DOH once and for all. + +An update of the popular 1986 original, Revenge of DOH sees the player battle through 34 rounds, taken from a grand total of 64. Revenge of DOH differs from its predecessor with the introduction of "Warp Gates". Upon completion of a round or when the Break ('B') pill is caught, two gates appear at the bottom left and bottom right of the play area respectively, the Vaus is then taken through one of the gates - the choice will affect which version of the next round is provided. + +The game also features two new features for bricks. Notched silver bricks, like normal silver bricks, take several hits to destroy. However, after a short period of time after destruction, they regenerate at full strength. Fortunately, clearing a level does not require that any notched bricks to be destroyed. Also, some bricks move from side to side as long as their left and/or right sides are not obstructed by other bricks. + +The game features a mini-boss in the form of a giant brain, which will help you practice for DOH. You must aim for the brain's mouth to defeat it. + 0.75 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/arknoid2.png + + + + armchmp2o.zip + Arm Champs II v1.7 + Nine opponents to beat: +Specks +Shibayama +Goliath +The Rock +Duke +Turk +Atlas +Chang +Trixie + 0.20 + 19920101T000000 + Jaleco + Sports / Arm wrestling + 2919 + 1 + armchmp2.zip + Jaleco + 270 + 256x224 + media/mixrbv2/armchmp2.png + + + + armchmp2o2.zip + Arm Champs II v2.6 + Nine opponents to beat: +Specks +Shibayama +Goliath +The Rock +Duke +Turk +Atlas +Chang +Trixie + 0.20 + 19920101T000000 + Jaleco + Sports / Arm wrestling + 2919 + 1 + armchmp2.zip + Jaleco + 270 + 256x224 + media/mixrbv2/armchmp2.png + + + + armchmp2.zip + Arm Champs II v2.7 + Nine opponents to beat: +Specks +Shibayama +Goliath +The Rock +Duke +Turk +Atlas +Chang +Trixie + 0.20 + 19920101T000000 + Jaleco + Sports / Arm wrestling + 2919 + 1 + Jaleco + 270 + 256x224 + media/mixrbv2/armchmp2.png + + + + armwrest.zip + Arm Wrestling + In Arm Wrestling, the player takes on a number of different, distinctly cartoon-like opponents in a series of arm wrestling matches. The game's graphical styling is very similar to Nintendo's classic "Punch-Out!!" series. Gameplay requires that the player initially pushes the joystick to the left, but whenever the computer opponent starts to act, the player must push the joystick to the right to counter-attack, and press the button to increase power. If the counterattack is unsuccessful, moving the joystick back and forth several times will prevent the player from being pinned. The player's opponent must be pinned before the counter reaches one minute, or the match will be lost. + 0.70 + 19850101T000000 + Nintendo + Nintendo + Sports / Arm wrestling + 2919 + 1 + Nintendo Classics + 256x224 + media/mixrbv2/armwrest.png + + + + armedf.zip + Armed Formation + A vertically scrolling shoot'em up. + 0.50 + 19880101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 270 + 320x240 + media/mixrbv2/armedf.png + + + + armedff.zip + Armed Formation (Fillmore license) + A vertically scrolling shoot'em up. + 0.50 + 19880101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + armedf.zip + Nichibutsu + 270 + 320x240 + media/mixrbv2/armedf.png + + + + batriderc.zip + Armed Police Batrider (China) (Fri Feb 13 1998) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batrider.zip + Armed Police Batrider (Europe) (Fri Feb 13 1998) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batriderk.zip + Armed Police Batrider (Korea) (Fri Feb 13 1998) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batrideru.zip + Armed Police Batrider (U.S.A.) (Fri Feb 13 1998) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batriderhk.zip + Armed Police Batrider - A Version (Hong Kong) (Mon Dec 22 1997) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batriderja.zip + Armed Police Batrider - A Version (Japan) (Mon Dec 22 1997) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batridert.zip + Armed Police Batrider - A Version (Taiwan) (Mon Dec 22 1997) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + batriderj.zip + Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998) + An excellent vertically scrolling shoot'em up. + 0.70 + 19980101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + batrider.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/batrider.png + + + + armorcar.zip + Armored Car (set 1) + An overhead view maze game where you drive a money van (the armoured car) through as it scrolls from right to left. Some intersections are marked with directions. You pick up money to deliver to banks while avoiding criminals by dropping saw horses in roadway. Fuel levels must be replenished at gas stations along the way. + 0.50 + 19810101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/armorcar.png + + + + armorcar2.zip + Armored Car (set 2) + An overhead view maze game where you drive a money van (the armoured car) through as it scrolls from right to left. Some intersections are marked with directions. You pick up money to deliver to banks while avoiding criminals by dropping saw horses in roadway. Fuel levels must be replenished at gas stations along the way. + 0.50 + 19810101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + armorcar.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/armorcar.png + + + + armwarar1.zip + Armored Warriors (940920 Asia) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwaru1.zip + Armored Warriors (940920 USA) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwar1d.zip + Armored Warriors (941011 Europe Phoenix Edition) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwarr1.zip + Armored Warriors (941011 Europe) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwara.zip + Armored Warriors (941024 Asia) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwarb.zip + Armored Warriors (941024 Brazil) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwar.zip + Armored Warriors (941024 Europe) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + armwaru.zip + Armored Warriors (941024 USA) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + aof.zip + Art of Fighting / Ryuuko no Ken (NGM-044)(NGH-044) + The storyline of Art of Fighting takes place in 1978. Ryo Sakazaki and Robert Garcia set out to find Ryo's sister, Yuri, who was kidnapped by Mr. Big. Mr. Big took Yuri to entice Takuma Sakazaki, Ryo's father and originator of Kyokugen Karate, and also because Ryo refused to work for Big. After Ryo & Robert defeat Mr. Big, they face the enigmatic Mr. Karate. Art of Fighting's story ends with a cliff-hanger; Yuri is about to disclose the true identity of Mr. Karate as their father Takuma. + 0.75 + 19920101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/aof.png + + + + aof2bh.zip + Art of Fighting 2 / Ryuuko no Ken 2 (Enable hidden characters V2) + In this sequel to the original Art of Fighting, and prequel to the original Fatal Fury, we learn that Mr. Karate, the final boss of the original game, behind the mask, is really Takuma Sakazaki, Ryo and Yuri's father, that Takuma was being used by Geese Howard for his own evil intentions, and that Mr. Big was the one who had originally kidnapped Yuri. + +Many of the problems that existed in the first game have been fixed in this installment (it is easier to execute special moves, you no longer have only Ryo or Robert to choose from in 1 player mode, etc.). + +The entire cast from the first Art of Fighting is here (with the exceptions of Todo and Mr. Karate), along with a few new characters: Takuma Sakazaki, Ryo and Yuri's father; Yuri Sakazaki, Takuma's daughter and Ryo's sister; Eiji Kisaragi, a sworn enemy of the Sakazakis; Temjin, a Mongolian trucker; and a younger version of Geese Howard, whom you face as the last boss if you beat the game without losing a round. + 0.60 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + aof2.zip + Neo-Geo + 320x224 + media/mixrbv2/aof2.png + + + + aof2a.zip + Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056) + In this sequel to the original Art of Fighting, and prequel to the original Fatal Fury, we learn that Mr. Karate, the final boss of the original game, behind the mask, is really Takuma Sakazaki, Ryo and Yuri's father, that Takuma was being used by Geese Howard for his own evil intentions, and that Mr. Big was the one who had originally kidnapped Yuri. + +Many of the problems that existed in the first game have been fixed in this installment (it is easier to execute special moves, you no longer have only Ryo or Robert to choose from in 1 player mode, etc.). + +The entire cast from the first Art of Fighting is here (with the exceptions of Todo and Mr. Karate), along with a few new characters: Takuma Sakazaki, Ryo and Yuri's father; Yuri Sakazaki, Takuma's daughter and Ryo's sister; Eiji Kisaragi, a sworn enemy of the Sakazakis; Temjin, a Mongolian trucker; and a younger version of Geese Howard, whom you face as the last boss if you beat the game without losing a round. + 0.60 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + aof2.zip + Neo-Geo + 320x224 + media/mixrbv2/aof2.png + + + + aof2.zip + Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056) + In this sequel to the original Art of Fighting, and prequel to the original Fatal Fury, we learn that Mr. Karate, the final boss of the original game, behind the mask, is really Takuma Sakazaki, Ryo and Yuri's father, that Takuma was being used by Geese Howard for his own evil intentions, and that Mr. Big was the one who had originally kidnapped Yuri. + +Many of the problems that existed in the first game have been fixed in this installment (it is easier to execute special moves, you no longer have only Ryo or Robert to choose from in 1 player mode, etc.). + +The entire cast from the first Art of Fighting is here (with the exceptions of Todo and Mr. Karate), along with a few new characters: Takuma Sakazaki, Ryo and Yuri's father; Yuri Sakazaki, Takuma's daughter and Ryo's sister; Eiji Kisaragi, a sworn enemy of the Sakazakis; Temjin, a Mongolian trucker; and a younger version of Geese Howard, whom you face as the last boss if you beat the game without losing a round. + 0.60 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/aof2.png + + + + aof3k.zip + Art of Fighting 3 - The Path of the Warrior (Korean release) + In this third and final entry in the Art of Fighting series, the story shifts from Ryo Sakazaki to his best friend and rival, Robert Garcia, as he ventures into Mexico to try and locate Freia Lawrence, a childhood friend, who asked for his help. However, he leaves without the consent of The Garcia Foundation, which sends an agent named Karman Cole to get him back. But not everything is as simple as it looks... because Robert is not the only one looking for Freia. + +Art of Fighting 3: The Path of The Warrior features ten playable characters with different fighting styles, a completely new fighting system based on joystick and button combinations, and incredibly detailed graphics and animation. + + 0.65 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + aof3.zip + Neo-Geo + 320x224 + media/mixrbv2/aof3.png + + + + aof3.zip + Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden + In this third and final entry in the Art of Fighting series, the story shifts from Ryo Sakazaki to his best friend and rival, Robert Garcia, as he ventures into Mexico to try and locate Freia Lawrence, a childhood friend, who asked for his help. However, he leaves without the consent of The Garcia Foundation, which sends an agent named Karman Cole to get him back. But not everything is as simple as it looks... because Robert is not the only one looking for Freia. + +Art of Fighting 3: The Path of The Warrior features ten playable characters with different fighting styles, a completely new fighting system based on joystick and button combinations, and incredibly detailed graphics and animation. + + 0.65 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/aof3.png + + + + aof3bh.zip + Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden (Enable Hidden Characters V2) + In this third and final entry in the Art of Fighting series, the story shifts from Ryo Sakazaki to his best friend and rival, Robert Garcia, as he ventures into Mexico to try and locate Freia Lawrence, a childhood friend, who asked for his help. However, he leaves without the consent of The Garcia Foundation, which sends an agent named Karman Cole to get him back. But not everything is as simple as it looks... because Robert is not the only one looking for Freia. + +Art of Fighting 3: The Path of The Warrior features ten playable characters with different fighting styles, a completely new fighting system based on joystick and button combinations, and incredibly detailed graphics and animation. + + 0.65 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + aof3.zip + Neo-Geo + 320x224 + media/mixrbv2/aof3.png + + + + ashnojoe.zip + Ashita no Joe (Japan) + Extremely rare, this game is based on the classic manga/anime series Ashita no Joe (Tomorrow's Joe). The manga ran from 1968 to 1973 in Shonen Magazine. There were also 2 TV series that ran from 1970 to 1971 and 1980 to 1981 and a movie was released in 1980. + +When one of Joe's old rivals, Rikishi, died in the ring in 1970, Kodansha publishing actually held a funeral service for him. Over 700 people attended from all over Japan. An actual Buddhist priest presided over the funeral, held in a full-sized boxing ring. + 0.30 + 19900101T000000 + Wave Corp. + Wave + Sports / Boxing + 2929 + 1-2 + scessjoe.zip + Taito Classics + 288x208 + media/mixrbv2/scessjoe.png + + + + ashuraj.zip + Ashura Blaster (Japan) + Ashura Blaster is a vertically scrolling shoot 'em up arcade game released by Taito in 1990. The player controls a helicopter (selecting 1 of 4 bomb configurations) and shoots enemies in the air and ground, collects power-ups, and defeats bosses to advance levels. + +The kanji characters on the titlescreen read 'Ashura'. Ashura is a demon related to fighting. + 0.50 + 19900101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + ashura.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/ashura.png + + + + ashurau.zip + Ashura Blaster (US) + Ashura Blaster is a vertically scrolling shoot 'em up arcade game released by Taito in 1990. The player controls a helicopter (selecting 1 of 4 bomb configurations) and shoots enemies in the air and ground, collects power-ups, and defeats bosses to advance levels. + +The kanji characters on the titlescreen read 'Ashura'. Ashura is a demon related to fighting. + 0.50 + 19900101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + ashura.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/ashura.png + + + + ashura.zip + Ashura Blaster (World) + Ashura Blaster is a vertically scrolling shoot 'em up arcade game released by Taito in 1990. The player controls a helicopter (selecting 1 of 4 bomb configurations) and shoots enemies in the air and ground, collects power-ups, and defeats bosses to advance levels. + +The kanji characters on the titlescreen read 'Ashura'. Ashura is a demon related to fighting. + 0.50 + 19900101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/ashura.png + + + + aso.zip + ASO - Armored Scrum Object + ASO is a one-player scrolling shooter game, similar to Xevious in its segregation of air-to-air and air-to-ground weapons. Missiles are used to destroy ground enemies, while laser-like weapons are used for aerial opponents. Throughout each of the levels, the player must fight off waves of enemies that threaten several space stations and a boss must be defeated at the end of each. Like most early games in this genre, when the player dies, all weapons are lost and the player is moved to a point slightly before the point of death. The player's craft can also be upgraded to have more powerful weapons by picking up various power-ups throughout the level. + 0.50 + 19850101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/aso.png + + + + assaultj.zip + Assault (Japan) + Your mission is to reclaim your homeland by destroying the enemy forces that have taken over. You have an Assault tank, the supreme mobile weapon. Your tank has artillery guns and grenades, can perform Rapid Rolls to dodge enemy shots, and uses Power Wheelies to launch grenades. + +Your controls are two 4-position joysticks with triggers. These controls make Assault like no other tank game. You have a quick, highly responsive vehicle with fast movement in all directions. To avoid enemy shots, Rapid Roll your tank left or right by moving both joysticks to the same side. To launch grenades, put the tank in the Power Wheelie position by moving both joysticks to the outside, then pressing either trigger. Your grenades are triple the fire power of your tank's standard shots. + +Your tank is always in the center of the screen no matter what direction you are going. With Assault's 360-degree scrolling playfield, the world rotates around you as you move. An arrow always points you towards the exit to the next level. + +The lift zone gives you an advantage over the invaders and a spectacular view of the playfield. Each lift zone is a five-sided platform on the playfield that flashes red when you can use it. When you drive onto the lift zone, your tank jets straight up to get a bird's eye view of the surrounding terrain and enemy lines. From this overhead position, you can reconnoiter enemy forces and bomb enemy outposts. + +Fight your way through 11 different levels to seek out and destroy the invader’s headquarters. To succeed, you must: +Dodge enemy gunfire with the Rapid Roll maneuver. +Assault enemy lines with long-range powerful grenades launched from Power Wheelies. +Destroy all enemy tanks you encounter to prevent rear attacks. +Bomb enemy outposts and reconnoiter enemy emplacements using the lift zones. +Protect yourself against enemy artillery using buildings and trees. +Blow up the large cannons on each level while you avoid enemy attacks. +Follow the arrow to find the exit to the next level. Before you can exit, you must destroy the large cannons defending the enemy strongholds. + 0.70 + 19880101T000000 + Namco + Namco + Race, Driving + 28 + 1 + assault.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/assault.png + + + + assault.zip + Assault (Rev B) + Your mission is to reclaim your homeland by destroying the enemy forces that have taken over. You have an Assault tank, the supreme mobile weapon. Your tank has artillery guns and grenades, can perform Rapid Rolls to dodge enemy shots, and uses Power Wheelies to launch grenades. + +Your controls are two 4-position joysticks with triggers. These controls make Assault like no other tank game. You have a quick, highly responsive vehicle with fast movement in all directions. To avoid enemy shots, Rapid Roll your tank left or right by moving both joysticks to the same side. To launch grenades, put the tank in the Power Wheelie position by moving both joysticks to the outside, then pressing either trigger. Your grenades are triple the fire power of your tank's standard shots. + +Your tank is always in the center of the screen no matter what direction you are going. With Assault's 360-degree scrolling playfield, the world rotates around you as you move. An arrow always points you towards the exit to the next level. + +The lift zone gives you an advantage over the invaders and a spectacular view of the playfield. Each lift zone is a five-sided platform on the playfield that flashes red when you can use it. When you drive onto the lift zone, your tank jets straight up to get a bird's eye view of the surrounding terrain and enemy lines. From this overhead position, you can reconnoiter enemy forces and bomb enemy outposts. + +Fight your way through 11 different levels to seek out and destroy the invader’s headquarters. To succeed, you must: +Dodge enemy gunfire with the Rapid Roll maneuver. +Assault enemy lines with long-range powerful grenades launched from Power Wheelies. +Destroy all enemy tanks you encounter to prevent rear attacks. +Bomb enemy outposts and reconnoiter enemy emplacements using the lift zones. +Protect yourself against enemy artillery using buildings and trees. +Blow up the large cannons on each level while you avoid enemy attacks. +Follow the arrow to find the exit to the next level. Before you can exit, you must destroy the large cannons defending the enemy strongholds. + 0.70 + 19880101T000000 + Namco + Namco + Race, Driving + 28 + 1 + Namco Classics + 270 + 288x224 + media/mixrbv2/assault.png + + + + assaultp.zip + Assault Plus (Japan) + Your mission is to reclaim your homeland by destroying the enemy forces that have taken over. You have an Assault tank, the supreme mobile weapon. Your tank has artillery guns and grenades, can perform Rapid Rolls to dodge enemy shots, and uses Power Wheelies to launch grenades. + +Your controls are two 4-position joysticks with triggers. These controls make Assault like no other tank game. You have a quick, highly responsive vehicle with fast movement in all directions. To avoid enemy shots, Rapid Roll your tank left or right by moving both joysticks to the same side. To launch grenades, put the tank in the Power Wheelie position by moving both joysticks to the outside, then pressing either trigger. Your grenades are triple the fire power of your tank's standard shots. + +Your tank is always in the center of the screen no matter what direction you are going. With Assault's 360-degree scrolling playfield, the world rotates around you as you move. An arrow always points you towards the exit to the next level. + +The lift zone gives you an advantage over the invaders and a spectacular view of the playfield. Each lift zone is a five-sided platform on the playfield that flashes red when you can use it. When you drive onto the lift zone, your tank jets straight up to get a bird's eye view of the surrounding terrain and enemy lines. From this overhead position, you can reconnoiter enemy forces and bomb enemy outposts. + +Fight your way through 11 different levels to seek out and destroy the invader’s headquarters. To succeed, you must: +Dodge enemy gunfire with the Rapid Roll maneuver. +Assault enemy lines with long-range powerful grenades launched from Power Wheelies. +Destroy all enemy tanks you encounter to prevent rear attacks. +Bomb enemy outposts and reconnoiter enemy emplacements using the lift zones. +Protect yourself against enemy artillery using buildings and trees. +Blow up the large cannons on each level while you avoid enemy attacks. +Follow the arrow to find the exit to the next level. Before you can exit, you must destroy the large cannons defending the enemy strongholds. + 0.70 + 19880101T000000 + Namco + Namco + Race, Driving + 28 + 1 + assault.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/assault.png + + + + asterixaad.zip + Asterix (ver AAD) + Asterix is a horizontally-scrolling beat-em-up for one or two players and is based on the French comic-book series, 'Asterix & Obelix'. Players fight as either Asterix the Gaul or his best friend, Obelix, as they take on the might of the oppressive Roman Empire. + +Asterix and Obelix each have standard jump/attack controls, as well as a dash attack activated by tapping the joystick forward twice then pressing the attack button. Each character also posesses a powerful spinning arm attack, this is activated by holding the attack button for a short while until the character's face turns red, after which players must release the button. If the button is held down for too long, the character gets out of breath and takes a few seconds to recover. + +The heroes' main foes are Roman legionaries and fat - ocassionally horseback riding - centurions. After an enemy has been beaten enough to fall to the ground, he can be picked up and attacked again, the nature of the attack is dependant on which character picks them up; Asterix will spin the stunned enemy above his head, whereas Obelix smashes him repeatedly into the ground. These stunned enemies also act as tempoarary weapons, as they will cause damage to any other enemies they come into contact with. + + + 0.70 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + asterix.zip + Konami Classics + 288x224 + media/mixrbv2/asterix.png + + + + asterixeaa.zip + Asterix (ver EAA) + Asterix is a horizontally-scrolling beat-em-up for one or two players and is based on the French comic-book series, 'Asterix & Obelix'. Players fight as either Asterix the Gaul or his best friend, Obelix, as they take on the might of the oppressive Roman Empire. + +Asterix and Obelix each have standard jump/attack controls, as well as a dash attack activated by tapping the joystick forward twice then pressing the attack button. Each character also posesses a powerful spinning arm attack, this is activated by holding the attack button for a short while until the character's face turns red, after which players must release the button. If the button is held down for too long, the character gets out of breath and takes a few seconds to recover. + +The heroes' main foes are Roman legionaries and fat - ocassionally horseback riding - centurions. After an enemy has been beaten enough to fall to the ground, he can be picked up and attacked again, the nature of the attack is dependant on which character picks them up; Asterix will spin the stunned enemy above his head, whereas Obelix smashes him repeatedly into the ground. These stunned enemies also act as tempoarary weapons, as they will cause damage to any other enemies they come into contact with. + + + 0.70 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + asterix.zip + Konami Classics + 288x224 + media/mixrbv2/asterix.png + + + + asterixeac.zip + Asterix (ver EAC) + Asterix is a horizontally-scrolling beat-em-up for one or two players and is based on the French comic-book series, 'Asterix & Obelix'. Players fight as either Asterix the Gaul or his best friend, Obelix, as they take on the might of the oppressive Roman Empire. + +Asterix and Obelix each have standard jump/attack controls, as well as a dash attack activated by tapping the joystick forward twice then pressing the attack button. Each character also posesses a powerful spinning arm attack, this is activated by holding the attack button for a short while until the character's face turns red, after which players must release the button. If the button is held down for too long, the character gets out of breath and takes a few seconds to recover. + +The heroes' main foes are Roman legionaries and fat - ocassionally horseback riding - centurions. After an enemy has been beaten enough to fall to the ground, he can be picked up and attacked again, the nature of the attack is dependant on which character picks them up; Asterix will spin the stunned enemy above his head, whereas Obelix smashes him repeatedly into the ground. These stunned enemies also act as tempoarary weapons, as they will cause damage to any other enemies they come into contact with. + + + 0.70 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + asterix.zip + Konami Classics + 288x224 + media/mixrbv2/asterix.png + + + + asterix.zip + Asterix (ver EAD) + Asterix is a horizontally-scrolling beat-em-up for one or two players and is based on the French comic-book series, 'Asterix & Obelix'. Players fight as either Asterix the Gaul or his best friend, Obelix, as they take on the might of the oppressive Roman Empire. + +Asterix and Obelix each have standard jump/attack controls, as well as a dash attack activated by tapping the joystick forward twice then pressing the attack button. Each character also posesses a powerful spinning arm attack, this is activated by holding the attack button for a short while until the character's face turns red, after which players must release the button. If the button is held down for too long, the character gets out of breath and takes a few seconds to recover. + +The heroes' main foes are Roman legionaries and fat - ocassionally horseback riding - centurions. After an enemy has been beaten enough to fall to the ground, he can be picked up and attacked again, the nature of the attack is dependant on which character picks them up; Asterix will spin the stunned enemy above his head, whereas Obelix smashes him repeatedly into the ground. These stunned enemies also act as tempoarary weapons, as they will cause damage to any other enemies they come into contact with. + + + 0.70 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/asterix.png + + + + asterixj.zip + Asterix (ver JAD) + Asterix is a horizontally-scrolling beat-em-up for one or two players and is based on the French comic-book series, 'Asterix & Obelix'. Players fight as either Asterix the Gaul or his best friend, Obelix, as they take on the might of the oppressive Roman Empire. + +Asterix and Obelix each have standard jump/attack controls, as well as a dash attack activated by tapping the joystick forward twice then pressing the attack button. Each character also posesses a powerful spinning arm attack, this is activated by holding the attack button for a short while until the character's face turns red, after which players must release the button. If the button is held down for too long, the character gets out of breath and takes a few seconds to recover. + +The heroes' main foes are Roman legionaries and fat - ocassionally horseback riding - centurions. After an enemy has been beaten enough to fall to the ground, he can be picked up and attacked again, the nature of the attack is dependant on which character picks them up; Asterix will spin the stunned enemy above his head, whereas Obelix smashes him repeatedly into the ground. These stunned enemies also act as tempoarary weapons, as they will cause damage to any other enemies they come into contact with. + + + 0.70 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-2 + asterix.zip + Konami Classics + 288x224 + media/mixrbv2/asterix.png + + + + asterock.zip + Asterock (Sidam bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asterockv.zip + Asterock (Videotron bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asteroidb1.zip + Asteroids (bootleg on Lunar Lander hardware, set 1) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asteroidb2.zip + Asteroids (bootleg on Lunar Lander hardware, set 2) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asteroid1.zip + Asteroids (rev 1) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asteroid2.zip + Asteroids (rev 2) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + asteroid.zip + Asteroids (rev 4) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + Atari Classics + media/mixrbv2/asteroid.png + + + + astdelux1.zip + Asteroids Deluxe (rev 1) + Asteroids Deluxe is a 1 or 2-player game with an X-Y or vector-generator monitor. The game depicts a third-person view of a player's spaceship battling to destroy asteroids, flying saucers and enemy ships or 'death stars' (shaped like clusters of triangles). When hit, the asteroids and death stars will break into progressively smaller pieces. + +Players can put up an octagon-shaped 'shield' to temporarily protect their spaceship. However, this shield wears out with use. + +Large asteroids appear and drift in from the outer edges of the display. By pressing the ROTATE LEFT and ROTATE RIGHT pushbuttons on the control panel, the player may aim a spaceship toward any of the asteroids. The player uses the FIRE pushbutton to shoot at the asteroids and other objects. + +When shot, each large asteroid divides into two medium-sized asteroids, and the game adds 20 points to the player's score. Medium-sized asteroids, when shot, divide into two small-sized asteroids, and the game awards 50 points to the player. When shot the smallest asteroid disappears and the game adds 100 points to the player's score. + +In addition to asteroids, the players can score points for shooting the various enemy ships. When hit, the large ships ('death stars' shaped like hexagons) score 50 points and break into three diamond shapes. The medium-sized enemy or diamond, when hit, grants the player 100 points and breaks into two small triangular pieces. These small pieces disappear when the player hits them, and the score increases by 200 points. + +At any time during game play, a flying saucer may appear from either side of the display. The game awards players 200 points for shooting a large saucer and 1,000 points for a small saucer (the latter is a smaller target for players, though not any faster moving than the large one. It also shoots more accurately). + +The player's objective in the game is to shoot and destroy as many asteroids, saucers, and enemy ships as possible before all his or her spaceships are destroyed. A ship is destroyed if an asteroid, saucer or enemy ship smashes into it, or if a flying saucer shoots it. To prevent losing a ship, the player may press the THRUST pushbutton to move out of the path of an oncoming object. + +As an emergency maneuver, a player can press the Shields button. An octagon will then appear around the player's ship as protection from all enemies. For challenge the shield power lasts only about 10 seconds, but the power is renewed with each ship. The amount of shielding power available is shown by the brightness of the octagon (dim means almost exhausted power). + + + 0.80 + 19800101T000000 + Dave Shepperd + Atari + Shooter + 2646 + 1 + astdelux.zip + Atari Classics + media/mixrbv2/astdelux.png + + + + astdelux2.zip + Asteroids Deluxe (rev 2) + Asteroids Deluxe is a 1 or 2-player game with an X-Y or vector-generator monitor. The game depicts a third-person view of a player's spaceship battling to destroy asteroids, flying saucers and enemy ships or 'death stars' (shaped like clusters of triangles). When hit, the asteroids and death stars will break into progressively smaller pieces. + +Players can put up an octagon-shaped 'shield' to temporarily protect their spaceship. However, this shield wears out with use. + +Large asteroids appear and drift in from the outer edges of the display. By pressing the ROTATE LEFT and ROTATE RIGHT pushbuttons on the control panel, the player may aim a spaceship toward any of the asteroids. The player uses the FIRE pushbutton to shoot at the asteroids and other objects. + +When shot, each large asteroid divides into two medium-sized asteroids, and the game adds 20 points to the player's score. Medium-sized asteroids, when shot, divide into two small-sized asteroids, and the game awards 50 points to the player. When shot the smallest asteroid disappears and the game adds 100 points to the player's score. + +In addition to asteroids, the players can score points for shooting the various enemy ships. When hit, the large ships ('death stars' shaped like hexagons) score 50 points and break into three diamond shapes. The medium-sized enemy or diamond, when hit, grants the player 100 points and breaks into two small triangular pieces. These small pieces disappear when the player hits them, and the score increases by 200 points. + +At any time during game play, a flying saucer may appear from either side of the display. The game awards players 200 points for shooting a large saucer and 1,000 points for a small saucer (the latter is a smaller target for players, though not any faster moving than the large one. It also shoots more accurately). + +The player's objective in the game is to shoot and destroy as many asteroids, saucers, and enemy ships as possible before all his or her spaceships are destroyed. A ship is destroyed if an asteroid, saucer or enemy ship smashes into it, or if a flying saucer shoots it. To prevent losing a ship, the player may press the THRUST pushbutton to move out of the path of an oncoming object. + +As an emergency maneuver, a player can press the Shields button. An octagon will then appear around the player's ship as protection from all enemies. For challenge the shield power lasts only about 10 seconds, but the power is renewed with each ship. The amount of shielding power available is shown by the brightness of the octagon (dim means almost exhausted power). + + + 0.80 + 19800101T000000 + Dave Shepperd + Atari + Shooter + 2646 + 1 + astdelux.zip + Atari Classics + media/mixrbv2/astdelux.png + + + + astdelux.zip + Asteroids Deluxe (rev 3) + Asteroids Deluxe is a 1 or 2-player game with an X-Y or vector-generator monitor. The game depicts a third-person view of a player's spaceship battling to destroy asteroids, flying saucers and enemy ships or 'death stars' (shaped like clusters of triangles). When hit, the asteroids and death stars will break into progressively smaller pieces. + +Players can put up an octagon-shaped 'shield' to temporarily protect their spaceship. However, this shield wears out with use. + +Large asteroids appear and drift in from the outer edges of the display. By pressing the ROTATE LEFT and ROTATE RIGHT pushbuttons on the control panel, the player may aim a spaceship toward any of the asteroids. The player uses the FIRE pushbutton to shoot at the asteroids and other objects. + +When shot, each large asteroid divides into two medium-sized asteroids, and the game adds 20 points to the player's score. Medium-sized asteroids, when shot, divide into two small-sized asteroids, and the game awards 50 points to the player. When shot the smallest asteroid disappears and the game adds 100 points to the player's score. + +In addition to asteroids, the players can score points for shooting the various enemy ships. When hit, the large ships ('death stars' shaped like hexagons) score 50 points and break into three diamond shapes. The medium-sized enemy or diamond, when hit, grants the player 100 points and breaks into two small triangular pieces. These small pieces disappear when the player hits them, and the score increases by 200 points. + +At any time during game play, a flying saucer may appear from either side of the display. The game awards players 200 points for shooting a large saucer and 1,000 points for a small saucer (the latter is a smaller target for players, though not any faster moving than the large one. It also shoots more accurately). + +The player's objective in the game is to shoot and destroy as many asteroids, saucers, and enemy ships as possible before all his or her spaceships are destroyed. A ship is destroyed if an asteroid, saucer or enemy ship smashes into it, or if a flying saucer shoots it. To prevent losing a ship, the player may press the THRUST pushbutton to move out of the path of an oncoming object. + +As an emergency maneuver, a player can press the Shields button. An octagon will then appear around the player's ship as protection from all enemies. For challenge the shield power lasts only about 10 seconds, but the power is renewed with each ship. The amount of shielding power available is shown by the brightness of the octagon (dim means almost exhausted power). + + + 0.80 + 19800101T000000 + Dave Shepperd + Atari + Shooter + 2646 + 1 + Atari Classics + media/mixrbv2/astdelux.png + + + + astrians.zip + Astrians (clone of Swarm) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + castfant.zip + Astro Fantasia (DECO Cassette) (US) + Astro Fantasia &copy; 1981 Data East Corp. + +This is a &quot;Galaga&quot; style vertical shoot&#039;em up with a few unique twists that make it interesting. You pilot a single fighter ship against an armada of enemies (sound familiar?). There are 2 different play screens that alternate. + +The opening screen uses pseudo 3-D graphics and has a large red bit of what appears to be machinery (or perhaps part of a very large spaceship) as background on the bottom half of the screen. You can move your ship around anywhere on the red background, but the black area beyond is off limits. + +The game opens with a large mothership craft visible at the top of the screen, but your shots cannot reach it at this point. Red UFOs quickly begin attacking you, swooping in line formations from the top area of the screen. They actually scale in size as they get closer to you (a nice effect for a 1981 raster title). By moving around you will discover that the screen can scroll upwards quite a bit, and the enemy armada comes into view if you get near the top of your area. + +The armada consists of several rows of ships in classic &quot;Space Invaders&quot; style, except for the fact that they are tiny. You can quickly blast the armada away, as you have twin shots on this opening screen, and you can have several sets of them on screen at once (it really only takes a few seconds to take out the armada). + +After the armada is gone, the mothership begins spewing out groups of red UFOs (who make suicide runs at your ship), and a new green ship that actually fires at you. Be sure and shoot these green ships quickly, as they split into 3 separate enemies once they reach your movable territory. Eventually the mothership will stop spewing fighters at you, and the entire screen will scroll up (taking you completely away from your red &#039;home base&#039;), and the game will begin the second wave. + +The second wave pits you against the mothership directly. You will find that your multi shot is gone, and you can only have one shot on the screen at a time. The mothership has 3 areas that must be blasted away (a &#039;spark&#039; on each side, and then the center which takes several more hits than the sparks do). The mothership does not flash, or otherwise provide any feedback on a successful hit, but just blast away, and eventually you will get it. + +After killing the mothership, the game will award you bonus points based upon how much fuel you have left and then the game will begin again with increased difficulty. + 0.10 + 19810101T000000 + Data East + Data East + Shooter / Space Invaders Like + 2900 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/castfant.png + + + + astrofl.zip + Astro Flash (Japan) + After the devastating underground Dalaus invasion only one TransBot pilot is left standing. You. Armed with your TransBots tranforming weaponry and your own wits, be prepared for the fight of your life as you try to thwart the Dalaus oppression. + 0.50 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + transfrm.zip + Sega Classics + 256x192 + media/mixrbv2/transfrm.png + + + + asukaja.zip + Asuka & Asuka (Japan) + A vertically scrolling shoot em up. + 0.50 + 19880101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + asuka.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/asuka.png + + + + asukaj.zip + Asuka & Asuka (Japan, version 1) + A vertically scrolling shoot em up. + 0.50 + 19880101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + asuka.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/asuka.png + + + + asuka.zip + Asuka & Asuka (World) + A vertically scrolling shoot em up. + 0.50 + 19880101T000000 + Visco + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/asuka.png + + + + ataqandr.zip + Ataque Androide - Moon Cresta (FAR S.A. Spanish bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + asideral.zip + Ataque Sideral (Spanish bootleg of UniWar S) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + athena.zip + Athena + This is a pretty hard platform game where you take the role of Athena fighting your way through different worlds inhabited by all kinds of different enemies, ranging from moving pears to huge golems and flying devils. + +You start out with nothing more than your feet to fight with and no more protection than Athena's underwear (she actually loses her dress in the intro to the first world) but can collect a huge number of different weapons and armour, as well as a great number of power-ups ranging from the usual more-power-for weapon or armour, through boots that allow her to jump higher and wings for flying, to one where Athena becomes a semi-god and actually growths to twice her usual size and gets a huge burning sword and full armour. + +The worlds are filled with stone blocks that can be smashed when searching for secrets and items, as well as several levels connected by ladders or other means of transportation. + +Athena is a great game, and will give even the most hardened platform-player a real challenge, for it is NOT an easy game, even with the dip switches in 'Easy' mode. + 0.30 + 19860101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/athena.png + + + + athenab.zip + Athena (bootleg) + This is a pretty hard platform game where you take the role of Athena fighting your way through different worlds inhabited by all kinds of different enemies, ranging from moving pears to huge golems and flying devils. + +You start out with nothing more than your feet to fight with and no more protection than Athena's underwear (she actually loses her dress in the intro to the first world) but can collect a huge number of different weapons and armour, as well as a great number of power-ups ranging from the usual more-power-for weapon or armour, through boots that allow her to jump higher and wings for flying, to one where Athena becomes a semi-god and actually growths to twice her usual size and gets a huge burning sword and full armour. + +The worlds are filled with stone blocks that can be smashed when searching for secrets and items, as well as several levels connected by ladders or other means of transportation. + +Athena is a great game, and will give even the most hardened platform-player a real challenge, for it is NOT an easy game, even with the dip switches in 'Easy' mode. + 0.30 + 19860101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + athena.zip + SNK Classics + 288x216 + media/mixrbv2/athena.png + + + + atehate.zip + Athena no Hatena ? + A Japanese quiz game. + 0.50 + 19930101T000000 + Athena + Quiz / Japanese + 2894 + 1-2 + Seta + 384x240 + media/mixrbv2/atehate.png + + + + atlantol.zip + Atlant Olimpic + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + acitya.zip + Atlantic City Action + Vous pouvez jouer à 5 jeux de casino : poker, machines à sous, black jack, dés et courses de chevaux. + 19830101T000000 + Epos Corporation + Epos Corporation + Casino / Cards + 2872 + 1-2 + bwcasino.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/bwcasino.png + + + + atombjt.zip + Atom (bootleg of Bombjack Twin) + Bomb Jack Twin is a direct sequel to the 1984 original and retains the same platform-based collect-the-bombs gameplay of its predecessor. + +Changes over the original game include a slightly faster playing tempo and the option for simultaneous two-player action. As with the prequel, extra points and bonuses can be earned by collecting bonus coins and bombs with their fuses still lit. Bomb Jack Twin also retains the 'Powerball' feature of its predecessor which, when collected, freezes the level's enemies for several seconds, allowing them to be destroyed. + +The way the sequel's levels are structured differs significantly from the original game. In "Bomb Jack", each screen was simply numbered sequentially and the background picture changed on every screen, but the stages in "Bomb Jack Twin" are grouped into 'rounds', each consisting of three screen layouts but retaining a single background picture for the duration of that round. + +Another new addition is the bonus screen. This appears every couple of rounds and players must try to collect all bombs on the screen within a tight time limit to earn extra bonus points. There are no enemies on the bonus screens and the background is plain black. + +As with the first game, "Bomb Jack Twin" takes place in different locations throughout the world. A map screen is displayed before the start of each new round showing the next location. The available locations are: Germany, Thailand, Nevada, Japan, England, Hong Kong and China. + 0.70 + 19930101T000000 + NMK + Platform / Run Jump + 2915 + 1-2 + bjtwin.zip + NMK + 270 + 384x224 + media/mixrbv2/bjtwin.png + + + + atomboya.zip + Atomic Boy (revision A) + A platform game where you must climb around lattice of pipes to deactivate power switches for main computer while avoiding robots. Jump on generators to send out disrupters and kill robots. + 0.50 + 19840101T000000 + Irem + Irem + Platform / Run Jump Scrolling + 2897 + 1-2 + wilytowr.zip + Irem Classics + 256x224 + media/mixrbv2/wilytowr.png + + + + atomboy.zip + Atomic Boy (revision B) + A platform game where you must climb around lattice of pipes to deactivate power switches for main computer while avoiding robots. Jump on generators to send out disrupters and kill robots. + 0.50 + 19840101T000000 + Irem + Irem + Platform / Run Jump Scrolling + 2897 + 1-2 + wilytowr.zip + Irem Classics + 256x224 + media/mixrbv2/wilytowr.png + + + + atomicp.zip + Atomic Point (Korea) + In this puzzle game, a collection of colored blocks appears on the screen along with 2 glowing diamonds. Single colored blocks fall from the top of the playfield and your task is to complete a horizontal row on the same level that each flashing diamond appears. + 0.50 + 19900101T000000 + Philko + Philko + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/atomicp.png + + + + atompunk.zip + Atomic Punk (US) + In the future, fight competitions among robots are the most popular event. Bomber Man & King Bomber are the supreme champions, however King Bomber turns evil and attacks mankind with his loyal minions. Bomber Man & his brother Bomber Man 2 must defeat these henchmen and show King Bomber that crime just doesn't pay! Features cute graphics & music and insanely addictive gameplay. Have a blast, but don't get blasted yourself! + 0.70 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + dynablst.zip + Irem Classics + 320x240 + media/mixrbv2/dynablst.png + + + + robokidj3.zip + Atomic Robo-kid (Japan) + In the 21st century, a blast of cosmic radiation bombarded Terra-12, a deep-space outpost of Earth, hideously mutating all transplanted life. A fleet of savage beings followed the radiation wave and invaded the planet, and began the systematic destruction of all remaining sentient life. Years of battling the alien 'governors' have gone by, and now only one hope survives to avenge the desperate Terran colonists. + +The player controls the Atomic Robo-Kid through six stages of increasing difficulty, facing an alien "governor" boss, which are so large as to be considered levels themselves, followed by a "duel" level against other Robo-Kid sized robots. Many levels branch into others, giving the player the choice over which zone to enter next, increasing replayability. + +Robo-Kid can collect four different weapons. Whichever weapon is selected is lost when Robo-kid loses a life. In addition to his default gun, Robo-Kid is able collect powerups for a shield that activates on enemy contact, rapid fire, and speed powerups. The player can also encounter a friendly dinosaur-looking robot that sells weapons and shields to Robo-kid using extra lives as currency. + 0.70 + 19880101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + robokid.zip + Mame + 256x192 + media/mixrbv2/robokid.png + + + + robokidj.zip + Atomic Robo-kid (Japan, Type-2, set 1) + In the 21st century, a blast of cosmic radiation bombarded Terra-12, a deep-space outpost of Earth, hideously mutating all transplanted life. A fleet of savage beings followed the radiation wave and invaded the planet, and began the systematic destruction of all remaining sentient life. Years of battling the alien 'governors' have gone by, and now only one hope survives to avenge the desperate Terran colonists. + +The player controls the Atomic Robo-Kid through six stages of increasing difficulty, facing an alien "governor" boss, which are so large as to be considered levels themselves, followed by a "duel" level against other Robo-Kid sized robots. Many levels branch into others, giving the player the choice over which zone to enter next, increasing replayability. + +Robo-Kid can collect four different weapons. Whichever weapon is selected is lost when Robo-kid loses a life. In addition to his default gun, Robo-Kid is able collect powerups for a shield that activates on enemy contact, rapid fire, and speed powerups. The player can also encounter a friendly dinosaur-looking robot that sells weapons and shields to Robo-kid using extra lives as currency. + 0.70 + 19880101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + robokid.zip + Mame + 256x192 + media/mixrbv2/robokid.png + + + + robokidj2.zip + Atomic Robo-kid (Japan, Type-2, set 2) + In the 21st century, a blast of cosmic radiation bombarded Terra-12, a deep-space outpost of Earth, hideously mutating all transplanted life. A fleet of savage beings followed the radiation wave and invaded the planet, and began the systematic destruction of all remaining sentient life. Years of battling the alien 'governors' have gone by, and now only one hope survives to avenge the desperate Terran colonists. + +The player controls the Atomic Robo-Kid through six stages of increasing difficulty, facing an alien "governor" boss, which are so large as to be considered levels themselves, followed by a "duel" level against other Robo-Kid sized robots. Many levels branch into others, giving the player the choice over which zone to enter next, increasing replayability. + +Robo-Kid can collect four different weapons. Whichever weapon is selected is lost when Robo-kid loses a life. In addition to his default gun, Robo-Kid is able collect powerups for a shield that activates on enemy contact, rapid fire, and speed powerups. The player can also encounter a friendly dinosaur-looking robot that sells weapons and shields to Robo-kid using extra lives as currency. + 0.70 + 19880101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + robokid.zip + Mame + 256x192 + media/mixrbv2/robokid.png + + + + robokid.zip + Atomic Robo-kid (World, Type-2) + In the 21st century, a blast of cosmic radiation bombarded Terra-12, a deep-space outpost of Earth, hideously mutating all transplanted life. A fleet of savage beings followed the radiation wave and invaded the planet, and began the systematic destruction of all remaining sentient life. Years of battling the alien 'governors' have gone by, and now only one hope survives to avenge the desperate Terran colonists. + +The player controls the Atomic Robo-Kid through six stages of increasing difficulty, facing an alien "governor" boss, which are so large as to be considered levels themselves, followed by a "duel" level against other Robo-Kid sized robots. Many levels branch into others, giving the player the choice over which zone to enter next, increasing replayability. + +Robo-Kid can collect four different weapons. Whichever weapon is selected is lost when Robo-kid loses a life. In addition to his default gun, Robo-Kid is able collect powerups for a shield that activates on enemy contact, rapid fire, and speed powerups. The player can also encounter a friendly dinosaur-looking robot that sells weapons and shields to Robo-kid using extra lives as currency. + 0.70 + 19880101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 256x192 + media/mixrbv2/robokid.png + + + + attackf.zip + Attack (Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + aurailjd.zip + Aurail (set 1, Japan, FD1089A 317-0167 decrypted) + An overhead-view shoot'em up where you pilot a super tank of the future, that looks like a battle mek, and blow everything up. Collect power-ups to increase shields and operate the remote attack drone. Features tunnel levels with a + 0.70 + 19900101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + aurail.zip + Sega Classics + 320x224 + media/mixrbv2/aurail.png + + + + aurailj.zip + Aurail (set 1, Japan, FD1089A 317-0167) + An overhead-view shoot'em up where you pilot a super tank of the future, that looks like a battle mek, and blow everything up. Collect power-ups to increase shields and operate the remote attack drone. Features tunnel levels with a + 0.70 + 19900101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + aurail.zip + Sega Classics + 320x224 + media/mixrbv2/aurail.png + + + + aurail1d.zip + Aurail (set 2, World, FD1089B 317-0168 decrypted) + An overhead-view shoot'em up where you pilot a super tank of the future, that looks like a battle mek, and blow everything up. Collect power-ups to increase shields and operate the remote attack drone. Features tunnel levels with a + 0.70 + 19900101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + aurail.zip + Sega Classics + 320x224 + media/mixrbv2/aurail.png + + + + aurail1.zip + Aurail (set 2, World, FD1089B 317-0168) + An overhead-view shoot'em up where you pilot a super tank of the future, that looks like a battle mek, and blow everything up. Collect power-ups to increase shields and operate the remote attack drone. Features tunnel levels with a + 0.70 + 19900101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + aurail.zip + Sega Classics + 320x224 + media/mixrbv2/aurail.png + + + + aurail.zip + Aurail (set 3, US, unprotected) + An overhead-view shoot'em up where you pilot a super tank of the future, that looks like a battle mek, and blow everything up. Collect power-ups to increase shields and operate the remote attack drone. Features tunnel levels with a + 0.70 + 19900101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/aurail.png + + + + avefenix.zip + Ave Fenix (Electrogame, Spanish bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + avefenixl.zip + Ave Fenix (Laguna, Spanish bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + avefenixrf.zip + Ave Fenix (Recreativos Franco, Spanish bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + avengers.zip + Avengers (US set 1) + Avenger takes place in Paradise City, where the villain, "Geshita", has captured six girls from the city. The player's objective (as Ryu or Ko) is to banish "Geshita" from Paradise City once and for all. During the game, the player can pick up powerups like the "Speed Up", the Super Punch, Grenades, Shurikens, Nunchaku and extra health. + 0.70 + 19870101T000000 + Capcom + Capcom + Fight / Vertical + 2922 + 1-2 + Capcom Classics + 270 + 256x240 + media/mixrbv2/avengers.png + + + + avengers2.zip + Avengers (US set 2) + Avenger takes place in Paradise City, where the villain, "Geshita", has captured six girls from the city. The player's objective (as Ryu or Ko) is to banish "Geshita" from Paradise City once and for all. During the game, the player can pick up powerups like the "Speed Up", the Super Punch, Grenades, Shurikens, Nunchaku and extra health. + 0.70 + 19870101T000000 + Capcom + Capcom + Fight / Vertical + 2922 + 1-2 + avengers.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/avengers.png + + + + avspirit.zip + Avenging Spirit + While walking out with his girlfriend the game's hero is ambushed by unknown enemies who snatch his girlfriend and shoot the hero dead. Now, as a wandering spirit with the ability to possess almost anybody he comes across, the hero is summoned by his girlfriend's father and given a mission to save her from the mysterious crime syndicate that holds her hostage. Only then can the hero rest in peace. + +The player's character 'inhabits' a body with which to combat the game's enemies. When that body is killed, providing there is a living enemy nearby (other than that of a boss) the player can posses them and continue playing. Each time this is done, it costs the player some of their 'spirit energy'. Should the hero die when there are no enemies close by for the player to possess; the game is over. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + Jaleco + 256x224 + media/mixrbv2/avspirit.png + + + + aztarac.zip + Aztarac + The actual game has you piloting a little space tank. The tank and its turret are controlled independently, which allows you to move in one direction while shooting in another. Your mission is to guard various space outposts from hordes of incoming enemy ships. Each level will have several outposts all clustered together in the center. If an enemy ship touches an outpost, then the outpost is destroyed. You can activate a long range scanner by using your second button. This allows you to locate enemies before they get close, that way you can fly off and get them before they even have a shot at the outposts. + 0.50 + 19830101T000000 + Tim Stryker + Centuri + Shooter + 2646 + 1-2 + Mame + media/mixrbv2/aztarac.png + + + + azurian.zip + Azurian Attack + Azurian Attack is a shoot 'em up arcade game released by Rait Electronics in 1982. The game features similar graphics and sounds to "Galaxian" except your fighter can move in 8 directions. The game was programmed inhouse by Rait Electronics who were based in Christchurch, New Zealand and the game code runs on a modified Galaxian Board. + 19820101T000000 + Rait Electronics Ltd. + Rait Electronics + Shooter + 2646 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/azurian.png + + + + bwingsa.zip + B-Wings (Alt Ver.?) + A vertically scrolling shoot'em up. + 0.40 + 19840101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + bwings.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/bwings.png + + + + bwings.zip + B-Wings (Japan new Ver.) + A vertically scrolling shoot'em up. + 0.40 + 19840101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/bwings.png + + + + bwingso.zip + B-Wings (Japan old Ver.) + A vertically scrolling shoot'em up. + 0.40 + 19840101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + bwings.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/bwings.png + + + + bonkadv.zip + B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin + A platform game, based on the NEC PC Engine game of the same name, consisting of 21 stages fighting dinosaurs and other creatures. + 0.60 + 19940101T000000 + Red Company + Kaneko + Platform / Run Jump Scrolling + 2897 + 1-2 + Kaneko + 320x240 + media/mixrbv2/bonkadv.png + + + + bcstry.zip + B.C. Story (set 1) + An Olympic type game set in the Stone Age. + 0.50 + 19970101T000000 + Tirano + SemiCom + Compilation + 34 + 1-2 + SemiCom + 320x240 + media/mixrbv2/bcstry.png + + + + bcstrya.zip + B.C. Story (set 2) + An Olympic type game set in the Stone Age. + 0.50 + 19970101T000000 + Tirano + SemiCom + Compilation + 34 + 1-2 + bcstry.zip + SemiCom + 320x240 + media/mixrbv2/bcstry.png + + + + brapboys.zip + B.Rap Boys (World) + A side scrolling beat'em up. 3 characters, one on a skateboard, one on a bike and one on rollerskates fight various enemies. Features a large amount of sampled voices and several rap songs. + 0.30 + 19920101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-3 + Kaneko + 256x224 + media/mixrbv2/brapboys.png + + + + brapboyspj.zip + B.Rap Boys Special (Japan) + A side scrolling beat'em up. 3 characters, one on a skateboard, one on a bike and one on rollerskates fight various enemies. Features a large amount of sampled voices and several rap songs. + 0.30 + 19920101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-3 + brapboys.zip + Kaneko + 256x224 + media/mixrbv2/brapboys.png + + + + brapboyspu.zip + B.Rap Boys Special (US) + A side scrolling beat'em up. 3 characters, one on a skateboard, one on a bike and one on rollerskates fight various enemies. Features a large amount of sampled voices and several rap songs. + 0.30 + 19920101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-3 + brapboys.zip + Kaneko + 256x224 + media/mixrbv2/brapboys.png + + + + brapboysp.zip + B.Rap Boys Special (World) + A side scrolling beat'em up. 3 characters, one on a skateboard, one on a bike and one on rollerskates fight various enemies. Features a large amount of sampled voices and several rap songs. + 0.30 + 19920101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-3 + brapboys.zip + Kaneko + 256x224 + media/mixrbv2/brapboys.png + + + + backfirt.zip + Back Fire (Tecmo, bootleg) + A standard horizontal shoot'em up. The main weapon can be powered-up to provide faster and more powerful shots. Weapons such as lightning or three-way shots appear as power-ups. There are 18 levels to complete the game. + 0.70 + 19880101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + Tecmo + 256x224 + media/mixrbv2/backfirt.png + + + + bssoccer.zip + Back Street Soccer + One of 14 international teams can be selected. The game is played on the street with a 'street fighter' element to the soccer. + 0.50 + 19960101T000000 + SunA + SunA + Sports / Soccer + 2847 + 1-4 + Mame + 256x224 + media/mixrbv2/bssoccer.png + + + + badapple.zip + Bad Apple (Tech-Demo) + Neo-Geo + media/mixrbv2/badapple.png + + + badlands.zip + Bad Lands + Bad Lands is a top-down single-screen racer for one or two players set in a post-apocalyptic future and is the last in Atari's Sprint series of racing games. It has been 50 years since nuclear disaster changed the world forever and the sport of sprint racing is now a ruthless battle between armed cars. + +Races take place on tracks built in the ruins of the dangerous nuclear zone known only as the BADLANDS, with each race taking place over three laps. Cars are equipped with front-facing cannons that can be used to fire on rival racers to slow them down. Missile upgrades can also be earned or bought that will completely destroy a rival vehicle that then takes several seconds to be replaced. Races feature three cars so there is always at least one drone car to compete against. + +Each track features play-field targets that can be shot for extra points and bonus missiles and as with previous Sprint games, bonus wrenches appear at regular intervals that can be collected and used to upgrade the player's vehicle between races. The available upgrades are: +Missiles +Tires +Turbo +Increased speed +Shields + +Bad lands features eight different circuits, each with its own unique, post-apocalyptic setting and background. + 0.50 + 19890101T000000 + Atari + Atari + Race, Driving / Race + 2924 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/badlands.png + + + + bagman.zip + Bagman + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagmanm2.zip + Bagman (bootleg on Moon Cresta hardware set 2) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagmans3.zip + Bagman (Stern Electronics, revision A3) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagmans4.zip + Bagman (Stern Electronics, revision A4) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagmans.zip + Bagman (Stern Electronics, revision A5) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagmanj.zip + Bagman (Taito) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bakatono.zip + Bakatonosama Mahjong Manyuuki (MOM-002)(MOH-002) + Bakatonosama Mahjong Manyuki is a Mahjong Game for Neo-Geo. Is developed by Monolith company in 1991 and Distributed by SNK + 0.25 + 19910101T000000 + Monolith + SNK + Mahjong + 2869 + 1 + Neo-Geo + 320x224 + media/mixrbv2/bakatono.png + + + + bakubrkr.zip + Bakuretsu Breaker (Japan) + Explosive Breaker is a up-scrolling space themed shoot 'em up game where you take control of one of six different pilots and their ships. The pilots are Jean, Nigel, Steel, Mai, Mifune and Hanse, each having their own distinct weapons pattern. + +You fight a variety of spacecraft's, static guns and bosses. While playing destroyed enemies drop power-ups. These include: A front weapon power-up (P), missiles (M), homing missiles (H), some kind of flouting bombs (C), Side weapon (S), extra big bomb (B) and instant Max power (P in block). + 0.50 + 19920101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + explbrkr.zip + Kaneko + 270 + 256x224 + media/mixrbv2/explbrkr.png + + + + bakutotu.zip + Bakutotsu Kijuutei + Bakutotsu Kijuutei is the sequel to BaRaDuKe, which was released three years earlier. As in the original game, the player must take control of a spaceman in a bio-suit (who is a caricature of a Namco employee) while fighting the strange-looking Octy and saving the one-eyed Paccets - except this time Player 1 is Takky and Player 2 is Hommy. The Paccets that the spacemen collect during the stage now come in two different colours (yellow and white), and will circle around them, and the yellow ones will also add to their scores at the end of the stage (for 100, 200, 500, 1000, 2000, 4000 and 7650 points in succession) instead of featuring in the bonus game, which now only happens before a boss stage; however, the white ones will not, because they cannot be killed. If a yellow Paccet is accidentally shot or killed by an enemy, he will explode and send his eyeball flying - and if the player catches the eyeball he will receive a single point. Several new enemies have also been introduced (one of which, the "Block Brain", first appeared in Beraboh Man, and another, the "Black Paccet", is an evil version of the Paccets); the boss for the thirtieth stage, "Dark Paccet", is also an enormous evil version of the Paccets. If the player defeats Dark Paccet on his first try, the game shall not end - instead, six more stages will have to be played, and if a player wins the game (regardless of if it ends on Stage 30 or 36), he will not be able to enter his name on its high score table. There are now four different types of capsules; as a general rule, the yellow ones contain Paccets, while the red ones contain Baganns (the Pac-Man-like aliens from the original title), the blue ones contain shot powerups, and the green ones contain speed powerups. It is also now impossible to move backwards (like in Super Mario Bros.) - but if the player dies, he will be sent back to the beginning of the stage (unlike in the original, where he would restart in the place where he died) and be reprimanded by the "Paccet Ojisan", who also appears for the start of some stages to give him advice. + 0.50 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/bakutotu.png + + + + balcube.zip + Bal Cube + This is an "Arkanoid"-type game with a few twists. Instead of controlling a paddle, you control the ball itself by altering its momentum using the joystick. Various blocks (squares, triangles, and special blocks containing powerups) advance down from the top of the screen. The player dies when the ball goes down through a hole in the bottom of the screen, or if the blocks reach the bottom of the screen. When you die, you start over at the beginning of the level. Although the game has a ball and paddle look and feel, puzzle elements come into play later in the game. + 0.70 + 19960101T000000 + Metro 3D + Metro 3D + Action / Breakout games + 2917 + 1-2 + Mitchell + 320x224 + media/mixrbv2/balcube.png + + + + ballboy.zip + Ball Boy + Snow Brothers 3 - Magical Adventure is an unofficial sequel running on hacked hardware of the first game in the series, Magical Adventure plays identically to "Snow Bros"; the only difference being that the players' characters are wearing football strips and now encase the game's enemies in a giant football. + 0.90 + 20020101T000000 + Syrmex + Syrmex + Platform / Run Jump + 2915 + 1-2 + snowbro3.zip + SemiCom + 256x224 + media/mixrbv2/snowbro3.png + + + + bace.zip + Balloon Ace + 20030101T000000 + Mame + + + ballbros.zip + Balloon Brothers + Balloon Brothers is a puzzle game similar to "Tetris" but with different colored balloons in different shapes. Instead of falling blocks, the balloons float to the top. Completing a full row across will make that row disappear. + 0.50 + 19920101T000000 + East Technology + East Technology + Puzzle-Game / Fall + 2912 + 1-2 + Taito Classics + 384x240 + media/mixrbv2/ballbros.png + + + + baluba.zip + Baluba-louk no Densetsu (Japan) + An explorer must get all the treasure chests while avoiding the monsters in this platform game. + 0.70 + 19860101T000000 + Able Corp. + Able Corp. + Platform / Run Jump + 2915 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/baluba.png + + + + banbam.zip + BanBam + Crush and conquer, and date Pettanko!! + +Use plates to defeat 20 different-dimensional maze bugs! + +Charge towards the plate and the plate will fall, and if you press the button, the plate will rise. There are 4 types of plates, each with different movements, so use them effectively! + +If you defeat the enemy together with Pettanko, you will have 100 times more courage and 2 times more points. + 0.30 + 19840101T000000 + Sunsoft + Sunsoft + Action + 10 + 1-2 + Mame + 240x224 + media/mixrbv2/banbam.png + + + + bangball.zip + Bang Bang Ball (v1.05) + Two skateboarding mouse dudes must face many strange puzzle challenges in order to rescue their girl who has been abducted by a nasty gang of cats! Features colourful graphics and interesting game mechanics. Care to have a ball of a good time?:) + 0.50 + 19960101T000000 + Banpresto + Banpresto + Puzzle-Game / Throw + 2923 + 1-2 + Banpresto + 320x224 + media/mixrbv2/bangball.png + + + + b2b.zip + Bang Bang Busters (2010 NCI release) + After choosing your favorite character (Lazy or Refia), you come to a cute kinematic with our heroes in their space ship, landing on the planet Palua. Seven zones await players, broken down into numerous levels. Ice, green forests, towering waterfalls, castles, evil mountains, Egyptian pyramids... What a world! With such diversity, the no need to say the backgrounds are varied and the graphics exotic! + 20000101T000000 + Visco + Neo Conception International + Platform / Run Jump + 2915 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/b2b.png + + + + bangbead.zip + Bang Bead + Bang Bead, known in Japan as Bang Beads, is a 2001 ball-and-paddle game developed and published by Visco exclusively for the arcade cabinet known as the SNK Neo-Geo MVS hardware. It combines the genres of the Magnavox Odyssey Tennis game, Atari's Pong and Breakout arcades, and Nintendo's Spitball Sparky of the Game & Watch series. You can select from 9 characters and play against another player or the computer. Knock out the stars behind the other player then get the bouncing ball through to win the round. + 0.70 + 20000101T000000 + Visco + Visco + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/bangbead.png + + + + bangbedp.zip + Bang Bead (Prototype?) + Bang Bead, known in Japan as Bang Beads, is a 2001 ball-and-paddle game developed and published by Visco exclusively for the arcade cabinet known as the SNK Neo-Geo MVS hardware. It combines the genres of the Magnavox Odyssey Tennis game, Atari's Pong and Breakout arcades, and Nintendo's Spitball Sparky of the Game & Watch series. You can select from 9 characters and play against another player or the computer. Knock out the stars behind the other player then get the bouncing ball through to win the round. + 0.70 + 20000101T000000 + Visco + Visco + Sports + 685 + 1-2 + bangbead.zip + Neo-Geo + 320x224 + media/mixrbv2/bangbead.png + + + + bang.zip + Bang! + A cartoony first-person 2-D wild west shoot'em up game. + 0.70 + 19980101T000000 + Bit Managers + Gaelco + Lightgun Shooter + 32 + 1-2 + Gaelco + 320x240 + media/mixrbv2/bang.png + + + + bankp.zip + Bank Panic + Bank Panic is a reaction-based shoot-em-up in which the player takes on the role of a gun-slinging Deputy, who has been charged with protecting the town bank from outlaws. + 0.70 + 19840101T000000 + Sanritsu Denki + Sanritsu Denki + Race, Driving + 28 + 1-2 + Sega Classics + 224x224 + media/mixrbv2/bankp.png + + + + baraduke.zip + Baraduke + A scrolling shooter arcade game, that was released by Namco in 1985. It runs on Namco Pac-Land hardware, but with a video system like that used in Metro-Cross and Dragon Buster (modified to support vertical scrolling and a 2048-color palette). Ten years after its original arcade release, it was ported to the Sharp X68000, and it was also included in the fifth volume of the Namco Museum series on the Sony PlayStation. The game's primary protagonist, Toby "Kissy" Masuyo, predates by one year Samus Aran from Metroid as a human female playable character, although her face isn't revealed until she defeats the Octy King at the end. + 0.50 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + aliensec.zip + Namco Classics + 288x224 + media/mixrbv2/aliensec.png + + + + bstars2.zip + Baseball Stars 2 + This follow up to Baseball Stars Professional features a fast-paced arcade style baseball with six fictitious teams, each with their own strengths and weaknesses. There are two difficulties of play: Beginner, which automatically fields the ball for the player while Exciting has the player do the field manually. Additionally, there are two main modes of play where in the single player mode the player will compete in a fifteen-team tournament or go head-to-head against a friend in a multiplayer mode. + +The standard rules of baseball still apply, but it adds power-ups that the player can pick up and use during the game, such as the ability for their pitcher to throw faster or their batter to hit better. They can also substitute a player during the game, but are limited to three substitutions per game. The game is shown through 2D graphics with comic-style cutscenes to illustrate the action, such as dramatic catches and home runs that will pop-up during the game. + 0.70 + 19920101T000000 + SNK + SNK + Sports / Baseball + 2853 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/bstars2.png + + + + bstarsh.zip + Baseball Stars Professional (NGH-002) + Baseball Stars Professional is the follow-up to Baseball Stars for the Nintendo Entertainment System, and features comic-style graphics. Choose from a variety of teams that include Celestial Planets, Heavenly Bodies, Shadow Demons, Battle Knights, Fabulous Superstars, and many others. Then select the field where the game is to be held: The SNK stadium or the SNK dome. Each field has the same dimensions, but their capacity varies. The game is played the same way as normal baseball. Features a VS. mode in which two players can play against each other. + 0.70 + 19900101T000000 + SNK + SNK + Sports / Baseball + 2853 + 1-2 + bstars.zip + Neo-Geo + 320x224 + media/mixrbv2/bstars.png + + + + bstars.zip + Baseball Stars Professional (NGM-002) + Baseball Stars Professional is the follow-up to Baseball Stars for the Nintendo Entertainment System, and features comic-style graphics. Choose from a variety of teams that include Celestial Planets, Heavenly Bodies, Shadow Demons, Battle Knights, Fabulous Superstars, and many others. Then select the field where the game is to be held: The SNK stadium or the SNK dome. Each field has the same dimensions, but their capacity varies. The game is played the same way as normal baseball. Features a VS. mode in which two players can play against each other. + 0.70 + 19900101T000000 + SNK + SNK + Sports / Baseball + 2853 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/bstars.png + + + + batman.zip + Batman + Batman must save Gotham City from The Joker in this action game. Featuring stages with the Batmobile and the Batwing. + 0.40 + 19910101T000000 + Atari + Atari + Platform / Fighter Scrolling + 2896 + 1 + Atari Classics + 336x240 + media/mixrbv2/batman.png + + + + batman2.zip + Batman Part 2 + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + batsugun.zip + Batsugun + A vertically scrolling shoot'em up game. As is the standard with most arcade shooters, the player controls their ship with a joystick and two buttons. One button (Fire) shoots the main guns, and the other button (Bomb) releases a smart bomb that spreads huge energy balls all around the player's ship. + +As enemies are destroyed, the player gains experience points that are separate from the score. For every 288 experience points gained, the main gun will 'level up', becoming much stronger. This is analogous to experience points and leveling up in role playing games. The weapon can only level up twice, so after it has achieved its maximum level, 288 experience points will grant the player an extra bomb. + +The player can also grab P icons to increase the power of the current level gun. A maximum of five "P"s can be collected per experience level; getting more after this gives extra points instead. + +Collecting B icons increases the number of bombs, to a maximum of 7. + +Apart from destroying enemies, points can be gained from collecting golden V-shaped medals. After the level is finished, 3000 points are awarded for every small one, and 5000 points for every large one. If the player's ship is destroyed during a level, all medals collected are lost. + 0.60 + 19930101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/batsugun.png + + + + batsugunb.zip + Batsugun (Korean PCB) + A vertically scrolling shoot'em up game. As is the standard with most arcade shooters, the player controls their ship with a joystick and two buttons. One button (Fire) shoots the main guns, and the other button (Bomb) releases a smart bomb that spreads huge energy balls all around the player's ship. + +As enemies are destroyed, the player gains experience points that are separate from the score. For every 288 experience points gained, the main gun will 'level up', becoming much stronger. This is analogous to experience points and leveling up in role playing games. The weapon can only level up twice, so after it has achieved its maximum level, 288 experience points will grant the player an extra bomb. + +The player can also grab P icons to increase the power of the current level gun. A maximum of five "P"s can be collected per experience level; getting more after this gives extra points instead. + +Collecting B icons increases the number of bombs, to a maximum of 7. + +Apart from destroying enemies, points can be gained from collecting golden V-shaped medals. After the level is finished, 3000 points are awarded for every small one, and 5000 points for every large one. If the player's ship is destroyed during a level, all medals collected are lost. + 0.60 + 19930101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + batsugun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/batsugun.png + + + + batsuguna.zip + Batsugun (older, set 1) + A vertically scrolling shoot'em up game. As is the standard with most arcade shooters, the player controls their ship with a joystick and two buttons. One button (Fire) shoots the main guns, and the other button (Bomb) releases a smart bomb that spreads huge energy balls all around the player's ship. + +As enemies are destroyed, the player gains experience points that are separate from the score. For every 288 experience points gained, the main gun will 'level up', becoming much stronger. This is analogous to experience points and leveling up in role playing games. The weapon can only level up twice, so after it has achieved its maximum level, 288 experience points will grant the player an extra bomb. + +The player can also grab P icons to increase the power of the current level gun. A maximum of five "P"s can be collected per experience level; getting more after this gives extra points instead. + +Collecting B icons increases the number of bombs, to a maximum of 7. + +Apart from destroying enemies, points can be gained from collecting golden V-shaped medals. After the level is finished, 3000 points are awarded for every small one, and 5000 points for every large one. If the player's ship is destroyed during a level, all medals collected are lost. + 0.60 + 19930101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + batsugun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/batsugun.png + + + + batsugunc.zip + Batsugun (older, set 2) + A vertically scrolling shoot'em up game. As is the standard with most arcade shooters, the player controls their ship with a joystick and two buttons. One button (Fire) shoots the main guns, and the other button (Bomb) releases a smart bomb that spreads huge energy balls all around the player's ship. + +As enemies are destroyed, the player gains experience points that are separate from the score. For every 288 experience points gained, the main gun will 'level up', becoming much stronger. This is analogous to experience points and leveling up in role playing games. The weapon can only level up twice, so after it has achieved its maximum level, 288 experience points will grant the player an extra bomb. + +The player can also grab P icons to increase the power of the current level gun. A maximum of five "P"s can be collected per experience level; getting more after this gives extra points instead. + +Collecting B icons increases the number of bombs, to a maximum of 7. + +Apart from destroying enemies, points can be gained from collecting golden V-shaped medals. After the level is finished, 3000 points are awarded for every small one, and 5000 points for every large one. If the player's ship is destroyed during a level, all medals collected are lost. + 0.60 + 19930101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + batsugun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/batsugun.png + + + + batsugunsp.zip + Batsugun - Special Version + A vertically scrolling shoot'em up game. As is the standard with most arcade shooters, the player controls their ship with a joystick and two buttons. One button (Fire) shoots the main guns, and the other button (Bomb) releases a smart bomb that spreads huge energy balls all around the player's ship. + +As enemies are destroyed, the player gains experience points that are separate from the score. For every 288 experience points gained, the main gun will 'level up', becoming much stronger. This is analogous to experience points and leveling up in role playing games. The weapon can only level up twice, so after it has achieved its maximum level, 288 experience points will grant the player an extra bomb. + +The player can also grab P icons to increase the power of the current level gun. A maximum of five "P"s can be collected per experience level; getting more after this gives extra points instead. + +Collecting B icons increases the number of bombs, to a maximum of 7. + +Apart from destroying enemies, points can be gained from collecting golden V-shaped medals. After the level is finished, 3000 points are awarded for every small one, and 5000 points for every large one. If the player's ship is destroyed during a level, all medals collected are lost. + 0.60 + 19930101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + batsugun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/batsugun.png + + + + battlntsj.zip + Battlantis (Japan, program code E) + A shoot'em up similar to "Space Invaders" in concept. + 0.50 + 19870101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + battlnts.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/battlnts.png + + + + battlntsa.zip + Battlantis (program code F) + A shoot'em up similar to "Space Invaders" in concept. + 0.50 + 19870101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + battlnts.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/battlnts.png + + + + battlnts.zip + Battlantis (program code G) + A shoot'em up similar to "Space Invaders" in concept. + 0.50 + 19870101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/battlnts.png + + + + bbakraidja.zip + Battle Bakraid (Japan) (Wed Apr 7 1999) + The sequel to "Battle Garegga", an equally excellent vertically scrolling shoot 'em up game. + 0.40 + 19990101T000000 + Eighting + Eighting + Shoot'em Up + 79 + 1-2 + bbakraid.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bbakraid.png + + + + bbakraidc.zip + Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999) + The sequel to "Battle Garegga", an equally excellent vertically scrolling shoot 'em up game. + 0.40 + 19990101T000000 + Eighting + Eighting + Shoot'em Up + 79 + 1-2 + bbakraid.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bbakraid.png + + + + bbakraidj.zip + Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999) + The sequel to "Battle Garegga", an equally excellent vertically scrolling shoot 'em up game. + 0.40 + 19990101T000000 + Eighting + Eighting + Shoot'em Up + 79 + 1-2 + bbakraid.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bbakraid.png + + + + bbakraid.zip + Battle Bakraid - Unlimited Version (U.S.A.) (Tue Jun 8 1999) + The sequel to "Battle Garegga", an equally excellent vertically scrolling shoot 'em up game. + 0.40 + 19990101T000000 + Eighting + Eighting + Shoot'em Up + 79 + 1-2 + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bbakraid.png + + + + batlbubl.zip + Battle Bubble (v2.00) + Two skateboarding mouse dudes must face many strange puzzle challenges in order to rescue their girl who has been abducted by a nasty gang of cats! Features colourful graphics and interesting game mechanics. Care to have a ball of a good time?:) + 0.50 + 19960101T000000 + Banpresto + Banpresto + Puzzle-Game / Throw + 2923 + 1-2 + bangball.zip + Banpresto + 320x224 + media/mixrbv2/bangball.png + + + + bchopper.zip + Battle Chopper (World) + Players control a wacky fighter chopper name Mr. Heli, while shooting enemies, collecting power-ups, and defeating bosses to advance levels. + 0.50 + 19870101T000000 + Irem + Irem + Shooter / Plane + 2928 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/bchopper.png + + + + batcira.zip + Battle Circuit (970319 Asia) + Battle Circuit take place in an alternate future earth, the game revolves around a group of bounty hunters who must capture the mad scientist Doctor Saturn and secure a sophisticated computer disc carrying a program known as the "Shiva System". Battle Circuit, which was Capcom's last beat 'em game for the arcades, contains comic-like characters in a futuristic science fiction setting and is considered by some to be a cult classic. + 0.70 + 19970101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + batcir.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/batcir.png + + + + batcird.zip + Battle Circuit (970319 Euro Phoenix Edition) + Battle Circuit take place in an alternate future earth, the game revolves around a group of bounty hunters who must capture the mad scientist Doctor Saturn and secure a sophisticated computer disc carrying a program known as the "Shiva System". Battle Circuit, which was Capcom's last beat 'em game for the arcades, contains comic-like characters in a futuristic science fiction setting and is considered by some to be a cult classic. + 0.70 + 19970101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + batcir.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/batcir.png + + + + batcir.zip + Battle Circuit (970319 Euro) + Battle Circuit take place in an alternate future earth, the game revolves around a group of bounty hunters who must capture the mad scientist Doctor Saturn and secure a sophisticated computer disc carrying a program known as the "Shiva System". Battle Circuit, which was Capcom's last beat 'em game for the arcades, contains comic-like characters in a futuristic science fiction setting and is considered by some to be a cult classic. + 0.70 + 19970101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + Capcom Play System 2 + 384x224 + media/mixrbv2/batcir.png + + + + batcirj.zip + Battle Circuit (970319 Japan) + Battle Circuit take place in an alternate future earth, the game revolves around a group of bounty hunters who must capture the mad scientist Doctor Saturn and secure a sophisticated computer disc carrying a program known as the "Shiva System". Battle Circuit, which was Capcom's last beat 'em game for the arcades, contains comic-like characters in a futuristic science fiction setting and is considered by some to be a cult classic. + 0.70 + 19970101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + batcir.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/batcir.png + + + + battlex.zip + Battle Cross + An early space-themed shoot'em up where fleets of ships fly in from either of the screen and loop around in formation. The player may move around the screen in any direction. + 19820101T000000 + Omori Electric Co. + Omori Electric Co., Ltd. + Shooter / Plane + 2928 + 1-2 + Mame + 256x224 + media/mixrbv2/battlex.png + + + + bcruzm12.zip + Battle Cruiser M-12 + Good little shooter with a twist. You are dropping (very fast) depthcharges into the sea below, attacking waves of submarines and other underwater craft who are sending up mines as well as surface-breaking missiles. + +Fast and fluid gameplay with great sound effects and music. + +This game actually plays 'Rydeen' from the Yellow Magic Orchestra, as well as 'Here comes the sun' from the Beatles, very cheeky! + 0.30 + 19830101T000000 + Sigma Enterprises + Sigma Enterprises + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/bcruzm12.png + + + + btlfieldb.zip + Battle Field (bootleg) + Travel throughout various time periods to save your fellow comrades in this vertically scrolling shoot'em up. Collect power-ups to help you defeat a variety of enemies and end-bosses. + 0.50 + 19870101T000000 + ADK + ADK + Shooter / Run and Gun + 2903 + 1-2 + timesold.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/timesold.png + + + + btlfield.zip + Battle Field (Japan) + Travel throughout various time periods to save your fellow comrades in this vertically scrolling shoot'em up. Collect power-ups to help you defeat a variety of enemies and end-bosses. + 0.50 + 19870101T000000 + ADK + ADK + Shooter / Run and Gun + 2903 + 1-2 + timesold.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/timesold.png + + + + flipshot.zip + Battle Flip Shot + Battle Flip Shot is an arcade game that mixes elements of Pong with Japanese character design. + 0.60 + 19980101T000000 + Visco + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/flipshot.png + + + + bgareggahk.zip + Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgaregga.zip + Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgareggat.zip + Battle Garegga (location test) (Wed Jan 17 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgareggatw.zip + Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgaregganv.zip + Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgareggacn.zip + Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgareggat2.zip + Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + bgareggaz.zip + Battle Garegga Zakk version (Europe / USA / Japan / Asia) (Sat Feb 3 1996) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + btlkroad.zip + Battle K-Road + The game focuses mostly on reality fighting than fictional. At the start of the game in 1P mode, the player will face against the other fighter that uses the same fighting style as the one the player chose. After the player wins against the opponent, the player will face against other opponents that use other fighting styles in the K-Road Tournament. If the player loses, the game will only allow the player to continue fighting through it with the character he used, and will not allow the player to choose another character. + +The gameplay has a 6-button layout, but with command inputs different compared to ones in most fighting games released at the time. There are three punches and kicks for a few directions (weak, medium and strong). There are seven fighting styles featured in the game and two playable characters per style, for a total of 14 playable fighters. + 0.30 + 19940101T000000 + Psikyo + Psikyo + Fight / Versus + 2885 + 1-2 + Psikyo + 320x224 + media/mixrbv2/btlkroad.png + + + + btlkroadk.zip + Battle K-Road (Korea) + The game focuses mostly on reality fighting than fictional. At the start of the game in 1P mode, the player will face against the other fighter that uses the same fighting style as the one the player chose. After the player wins against the opponent, the player will face against other opponents that use other fighting styles in the K-Road Tournament. If the player loses, the game will only allow the player to continue fighting through it with the character he used, and will not allow the player to choose another character. + +The gameplay has a 6-button layout, but with command inputs different compared to ones in most fighting games released at the time. There are three punches and kicks for a few directions (weak, medium and strong). There are seven fighting styles featured in the game and two playable characters per style, for a total of 14 playable fighters. + 0.30 + 19940101T000000 + Psikyo + Psikyo + Fight / Versus + 2885 + 1-2 + btlkroad.zip + Psikyo + 320x224 + media/mixrbv2/btlkroad.png + + + + battlane.zip + Battle Lane! Vol. 5 (set 1) + Battle Lane! Vol. 5 is a vertically scrolling shoot'em up where you ride a motorcycle. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Shooter / Vehicle, Vertical + 2921 + 1-2 + Taito Classics + 270 + 240x256 + media/mixrbv2/battlane.png + + + + battlane2.zip + Battle Lane! Vol. 5 (set 2) + Battle Lane! Vol. 5 is a vertically scrolling shoot'em up where you ride a motorcycle. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Shooter / Vehicle, Vertical + 2921 + 1-2 + battlane.zip + Taito Classics + 270 + 240x256 + media/mixrbv2/battlane.png + + + + battlane3.zip + Battle Lane! Vol. 5 (set 3) + Battle Lane! Vol. 5 is a vertically scrolling shoot'em up where you ride a motorcycle. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Shooter / Vehicle, Vertical + 2921 + 1-2 + battlane.zip + Taito Classics + 270 + 240x256 + media/mixrbv2/battlane.png + + + + atlantisb.zip + Battle of Atlantis (bootleg) + Your mission: Finish the six tables at all costs by eliminating a maximum of opponents. To Do this you possess a multi-directional laser (ultra-rapid firing) and terrifying torpedo-bombs. Through all 6 tables, build up your bonus by blowing-up the fuel tanks. +Table 1: Avoid and destroy the floating mines. +Table 2: The deadly exploding sharks appear as well as the destroyers (avoid their bombs!). Obliterate them with your laser. +Table 3: You penetrate into an abyssal cavern where redoubtable octopuses lie in wait. The destroyers can only drop their bombs through the thin sides of the cavern. +Table 4: A complex of towers replaces the lower part of the cavern. As well as the destroyers and octopus, the mines reappear in large numbers. +Table 5: Accelerated version of Table 4. +Table 6: You return to Table 1 in an accelerated version but you must face up to all your opponents. + 0.30 + 19810101T000000 + Comsoft + Comsoft + Shooter / Horizontal + 2876 + 1-2 + atlantis.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/atlantis.png + + + + atlantis.zip + Battle of Atlantis (set 1) + Your mission: Finish the six tables at all costs by eliminating a maximum of opponents. To Do this you possess a multi-directional laser (ultra-rapid firing) and terrifying torpedo-bombs. Through all 6 tables, build up your bonus by blowing-up the fuel tanks. +Table 1: Avoid and destroy the floating mines. +Table 2: The deadly exploding sharks appear as well as the destroyers (avoid their bombs!). Obliterate them with your laser. +Table 3: You penetrate into an abyssal cavern where redoubtable octopuses lie in wait. The destroyers can only drop their bombs through the thin sides of the cavern. +Table 4: A complex of towers replaces the lower part of the cavern. As well as the destroyers and octopus, the mines reappear in large numbers. +Table 5: Accelerated version of Table 4. +Table 6: You return to Table 1 in an accelerated version but you must face up to all your opponents. + 0.30 + 19810101T000000 + Comsoft + Comsoft + Shooter / Horizontal + 2876 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/atlantis.png + + + + atlantis2.zip + Battle of Atlantis (set 2) + Your mission: Finish the six tables at all costs by eliminating a maximum of opponents. To Do this you possess a multi-directional laser (ultra-rapid firing) and terrifying torpedo-bombs. Through all 6 tables, build up your bonus by blowing-up the fuel tanks. +Table 1: Avoid and destroy the floating mines. +Table 2: The deadly exploding sharks appear as well as the destroyers (avoid their bombs!). Obliterate them with your laser. +Table 3: You penetrate into an abyssal cavern where redoubtable octopuses lie in wait. The destroyers can only drop their bombs through the thin sides of the cavern. +Table 4: A complex of towers replaces the lower part of the cavern. As well as the destroyers and octopus, the mines reappear in large numbers. +Table 5: Accelerated version of Table 4. +Table 6: You return to Table 1 in an accelerated version but you must face up to all your opponents. + 0.30 + 19810101T000000 + Comsoft + Comsoft + Shooter / Horizontal + 2876 + 1-2 + atlantis.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/atlantis.png + + + + batlzone.zip + Battle Zone (bootleg of Mayday) + The player's ship flies over a horizontally scrolling planet surface. Waves of enemy ships attack and must be destroyed for the player to advance to the next planet. The Mayday button slows the game down for five seconds. The player's ship fires both forward and back. + +The game itself is not a direct copy of Defender. It has an 8-Way joystick, two fire buttons (forward and backwards) and a Mayday button. The Mayday button slows everything on-screen down for a few seconds and makes the screen flash. Although it only scrolls from right to left, you can speed up and slow down your ship's forward momentum. The first wave that is over the sea of submarines. The submarines, which look a lot like Baiters in Defender, shoot along the bottom of the screen and fire up at the player's ship. The player's shots are aimed diagonally down at the waves. The second wave is flying through a cavern with swarms of aliens flying and bouncing from right to left towards the player. Unlike Defender, you can crash into the cavern walls. The third wave is set over a gently rolling planet surface. Later waves follow a similar pattern. + 0.30 + 19800101T000000 + Hoei + Hoei + Shoot'em Up + 79 + 1-2 + mayday.zip + Midway Classics + 292x240 + media/mixrbv2/mayday.png + + + + bzonec.zip + Battle Zone (cocktail) + Battlezone is a classic one-player first person 3-D wire frame shoot-em-up in which the player controls a tank patrolling a dangerous war zone. Set in a valley surrounded by mountains, the aim is to destroy as many enemy tanks as possible, while avoiding return fire and destroying or avoiding the homing missiles that occasionally appear. + +Enemy tanks come in two varieties; standard slow-moving tanks and fast-moving 'Super Tanks'. A single hit taken from either an enemy tank or homing missile will result in the loss of a player tank. A flying saucer also occasionally appears but does not attack the player and can be either ignored or destroyed for bonus points. + +A radar screen at the top of the play area shows the current position of any enemy tanks or missiles within range, and the war zone is littered with indestructible pyramids and boxes that can provide temporary cover. Only a single shot is allowed on screen at any one time so accuracy of shots is vital to survival. + 0.60 + 19800101T000000 + Atari + Shooter / Vehicle, 1st person + 2940 + 1 + bzone.zip + Atari Classics + media/mixrbv2/bzone.png + + + + bzonea.zip + Battle Zone (rev 1) + Battlezone is a classic one-player first person 3-D wire frame shoot-em-up in which the player controls a tank patrolling a dangerous war zone. Set in a valley surrounded by mountains, the aim is to destroy as many enemy tanks as possible, while avoiding return fire and destroying or avoiding the homing missiles that occasionally appear. + +Enemy tanks come in two varieties; standard slow-moving tanks and fast-moving 'Super Tanks'. A single hit taken from either an enemy tank or homing missile will result in the loss of a player tank. A flying saucer also occasionally appears but does not attack the player and can be either ignored or destroyed for bonus points. + +A radar screen at the top of the play area shows the current position of any enemy tanks or missiles within range, and the war zone is littered with indestructible pyramids and boxes that can provide temporary cover. Only a single shot is allowed on screen at any one time so accuracy of shots is vital to survival. + 0.60 + 19800101T000000 + Atari + Shooter / Vehicle, 1st person + 2940 + 1 + bzone.zip + Atari Classics + media/mixrbv2/bzone.png + + + + bzone.zip + Battle Zone (rev 2) + Battlezone is a classic one-player first person 3-D wire frame shoot-em-up in which the player controls a tank patrolling a dangerous war zone. Set in a valley surrounded by mountains, the aim is to destroy as many enemy tanks as possible, while avoiding return fire and destroying or avoiding the homing missiles that occasionally appear. + +Enemy tanks come in two varieties; standard slow-moving tanks and fast-moving 'Super Tanks'. A single hit taken from either an enemy tank or homing missile will result in the loss of a player tank. A flying saucer also occasionally appears but does not attack the player and can be either ignored or destroyed for bonus points. + +A radar screen at the top of the play area shows the current position of any enemy tanks or missiles within range, and the war zone is littered with indestructible pyramids and boxes that can provide temporary cover. Only a single shot is allowed on screen at any one time so accuracy of shots is vital to survival. + 0.60 + 19800101T000000 + Atari + Shooter / Vehicle, 1st person + 2940 + 1 + Atari Classics + media/mixrbv2/bzone.png + + + + bayroute1.zip + Bay Route (set 1, US, unprotected) + Bay Route is a 1989 run-and-gun game for the Sega System 16B by Sega and Sunsoft. You play as a guy who must destroy some enemy organization that is holding hostages with an arm cannon that can switch between several weapons with one button and shoot with another button. A third button jumps. + 0.40 + 19890101T000000 + Sunsoft + Sunsoft + Shooter + 2646 + 1-2 + bayroute.zip + Sega Classics + 320x224 + media/mixrbv2/bayroute.png + + + + bayroutejd.zip + Bay Route (set 2, Japan, FD1094 317-0115 decrypted) + Bay Route is a 1989 run-and-gun game for the Sega System 16B by Sega and Sunsoft. You play as a guy who must destroy some enemy organization that is holding hostages with an arm cannon that can switch between several weapons with one button and shoot with another button. A third button jumps. + 0.40 + 19890101T000000 + Sunsoft + Sunsoft + Shooter + 2646 + 1-2 + bayroute.zip + Sega Classics + 320x224 + media/mixrbv2/bayroute.png + + + + bayroutej.zip + Bay Route (set 2, Japan, FD1094 317-0115) + Bay Route is a 1989 run-and-gun game for the Sega System 16B by Sega and Sunsoft. You play as a guy who must destroy some enemy organization that is holding hostages with an arm cannon that can switch between several weapons with one button and shoot with another button. A third button jumps. + 0.40 + 19890101T000000 + Sunsoft + Sunsoft + Shooter + 2646 + 1-2 + bayroute.zip + Sega Classics + 320x224 + media/mixrbv2/bayroute.png + + + + bayrouted.zip + Bay Route (set 3, World, FD1094 317-0116 decrypted) + Bay Route is a 1989 run-and-gun game for the Sega System 16B by Sega and Sunsoft. You play as a guy who must destroy some enemy organization that is holding hostages with an arm cannon that can switch between several weapons with one button and shoot with another button. A third button jumps. + 0.40 + 19890101T000000 + Sunsoft + Sunsoft + Shooter + 2646 + 1-2 + bayroute.zip + Sega Classics + 320x224 + media/mixrbv2/bayroute.png + + + + bayroute.zip + Bay Route (set 3, World, FD1094 317-0116) + Bay Route is a 1989 run-and-gun game for the Sega System 16B by Sega and Sunsoft. You play as a guy who must destroy some enemy organization that is holding hostages with an arm cannon that can switch between several weapons with one button and shoot with another button. A third button jumps. + 0.40 + 19890101T000000 + Sunsoft + Sunsoft + Shooter + 2646 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/bayroute.png + + + + bbustersja.zip + Beast Busters (Japan, Version 2, 2 Players) + A city has been invaded by the undead, you as any of three soldiers must shoot & blast your way out or you'll become tonight's main course in this frantic first person shooter! Features excellent graphics and lots of challenge! No one knows how it happened but one thing is for sure, we'll risk our lives... and have lots of fun! + 0.50 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-3 + bbusters.zip + SNK Classics + 256x224 + media/mixrbv2/bbusters.png + + + + bbustersj.zip + Beast Busters (Japan, Version 2, 3 Players) + A city has been invaded by the undead, you as any of three soldiers must shoot & blast your way out or you'll become tonight's main course in this frantic first person shooter! Features excellent graphics and lots of challenge! No one knows how it happened but one thing is for sure, we'll risk our lives... and have lots of fun! + 0.50 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-3 + bbusters.zip + SNK Classics + 256x224 + media/mixrbv2/bbusters.png + + + + bbustersua.zip + Beast Busters (US, Version 2) + A city has been invaded by the undead, you as any of three soldiers must shoot & blast your way out or you'll become tonight's main course in this frantic first person shooter! Features excellent graphics and lots of challenge! No one knows how it happened but one thing is for sure, we'll risk our lives... and have lots of fun! + 0.50 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-3 + bbusters.zip + SNK Classics + 256x224 + media/mixrbv2/bbusters.png + + + + bbustersu.zip + Beast Busters (US, Version 3) + A city has been invaded by the undead, you as any of three soldiers must shoot & blast your way out or you'll become tonight's main course in this frantic first person shooter! Features excellent graphics and lots of challenge! No one knows how it happened but one thing is for sure, we'll risk our lives... and have lots of fun! + 0.50 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-3 + bbusters.zip + SNK Classics + 256x224 + media/mixrbv2/bbusters.png + + + + bbusters.zip + Beast Busters (World) + A city has been invaded by the undead, you as any of three soldiers must shoot & blast your way out or you'll become tonight's main course in this frantic first person shooter! Features excellent graphics and lots of challenge! No one knows how it happened but one thing is for sure, we'll risk our lives... and have lots of fun! + 0.50 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-3 + SNK Classics + 256x224 + media/mixrbv2/bbusters.png + + + + beastfp.zip + Beastie Feastie (Pac-Man conversion) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + blswhstla.zip + Bells & Whistles (Asia, version M) + The planet Meru is on the attack by the Iva forces. A plea for help has reached Twinbee and you must guide him through a perilous journey through a colorful world fighting to restore peace. This vertically scrolling shoot'em up game features colorful anime-style graphics, lots of power-ups and a fun challenge. + 0.70 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + blswhstl.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/blswhstl.png + + + + blswhstl.zip + Bells & Whistles (World, version L) + The planet Meru is on the attack by the Iva forces. A plea for help has reached Twinbee and you must guide him through a perilous journey through a colorful world fighting to restore peace. This vertically scrolling shoot'em up game features colorful anime-style graphics, lots of power-ups and a fun challenge. + 0.70 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 280x224 + media/mixrbv2/blswhstl.png + + + + bermudatj.zip + Bermuda Triangle (Japan) + A vertically scrolling shoot'em up. + 0.40 + 19870101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + bermudat.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/bermudat.png + + + + bermudata.zip + Bermuda Triangle (World Wars) (US) + World Wars and an early "Bermuda Triangle" version, it have different gameplay and graphics from the other versions. + 0.50 + 19870101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + worldwar.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/worldwar.png + + + + bermudat.zip + Bermuda Triangle (World?) + A vertically scrolling shoot'em up. + 0.40 + 19870101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 400x224 + media/mixrbv2/bermudat.png + + + + berzerkf.zip + Berzerk (French Speech, revision RC31) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + berzerk.zip + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + berzerkg.zip + Berzerk (German Speech, revision RC32) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + berzerk.zip + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + berzerkb.zip + Berzerk (revision RC28) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + berzerk.zip + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + berzerka.zip + Berzerk (revision RC31) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + berzerk.zip + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + berzerk.zip + Berzerk (revision RC31A) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + berzerks.zip + Berzerk (Spanish Speech, revision RC32) + The player controls the 'Humanoid' and must negotiate a number of robot-filled rooms; each with up to as many as eleven, laser-firing enemy robots. The Humanoid can be killed either by a single shot from a robot, by running into a robot, by running into a wall of the maze, or by being touched by the player's nemesis, 'Evil Otto'. + +To advance through the game, players must fight their way through each room to an opening at one of the far walls. Each robot destroyed is worth 50 points and while it's possible to progress without killing every robot in each room, destroying all of them will earn the player a per-maze bonus (worth ten points per robot). The game has an impressive 64,000 mazes, with each level designed to be more difficult than the last. + 0.20 + 19800101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + berzerk.zip + Mame + 256x224 + media/mixrbv2/berzerk.png + + + + bestleag.zip + Best League (bootleg of Big Striker, Italian Serie A) + Big Striker is a football game developed and published by Jaleco in 1992. You have the choice between 8 international teams. The game is seen from the side in 3D. The graphics are correct and the sound effects are nice. We see from time to time, at the bottom left of the screen, the bench that encourages you and even gives you advice. + 0.50 + 19920101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + bigstrik.zip + Jaleco + 256x224 + media/mixrbv2/bigstrik.png + + + + bestleaw.zip + Best League (bootleg of Big Striker, World Cup) + Big Striker is a football game developed and published by Jaleco in 1992. You have the choice between 8 international teams. The game is seen from the side in 3D. The graphics are correct and the sound effects are nice. We see from time to time, at the bottom left of the screen, the bench that encourages you and even gives you advice. + 0.50 + 19920101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + bigstrik.zip + Jaleco + 256x224 + media/mixrbv2/bigstrik.png + + + + bestbest.zip + Best Of Best + Best of Best is a 2D versus fighting game in which you take control of one of eight fighters and participate in a fighting tournament. The fighters to choose from are Tom, Hawk, Shalin, the wrestler Abdul, the Rambo like Scott, the Japanese Sasaki, the punker Tango and the turban wearing Alli. Each fighter has their own fighting techniques witch include kick, punch and special attacks. The fights are best of three and after each fight a new fighter can be selected. You can play solo or with a friend. This would be a typical early Street Fighter clone if it wasn't for the good old SunA wackyness. Eight combatants come to this turney to find out who is the best of the best in the world. Like in many Korean fighting games at the time, there is no boss, nor any hidden characters. Each character has its own stage, but the same musical tunes are played in each of them. Get ready to fight to the rythm of Lambada and celebrate your victory with the Ode to Joy. + 0.50 + 19940101T000000 + SunA + SunA + Fight / Versus + 2885 + 1-2 + Mame + 256x224 + media/mixrbv2/bestbest.png + + + + bestri.zip + Bestri (Korea, set 1) + A collection of 3 games : 'Die Break', 'Heuk Sua Baek Sa' and 'Penta'. + 0.70 + 19980101T000000 + F2 System + F2 System + Compilation + 34 + 1-2 + Mame + 320x240 + media/mixrbv2/bestri.png + + + + bestria.zip + Bestri (Korea, set 2) + A collection of 3 games : 'Die Break', 'Heuk Sua Baek Sa' and 'Penta'. + 0.70 + 19980101T000000 + F2 System + F2 System + Compilation + 34 + 1-2 + bestri.zip + Mame + 320x240 + media/mixrbv2/bestri.png + + + + punisherbz.zip + Biaofeng Zhanjing (Chinese bootleg) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + bigbang.zip + Big Bang (9th Nov. 1993) + The game uses variable rate scrolling (the screen scrolls at different speeds or not at all), and is played from a top-down view. Unlike space shooters, Thunder Dragon 2 is played in-atmosphere on a single world with contemporary airplanes. +The game contains eight stages, with popcorn enemies and ships with varying degrees of durability throughout. Each stage culminates in a boss fight, preceded by a warning. The player chooses between two different ships, a slow but powerful ship on the player 1 side, and a fast but weak ship on the player 2 side. Scoring is accomplished through enemy destruction, accumulation of medals dropped by enemies, and special bonus awards for completing specific tasks. + 0.70 + 19930101T000000 + Banpresto + NMK + Shoot'em Up + 79 + 1-2 + tdragon2.zip + NMK + 270 + 384x224 + media/mixrbv2/tdragon2.png + + + + bigbucks.zip + Big Bucks + Test your trivia IQ in this English quiz game. + 0.50 + 19860101T000000 + Dynasoft Inc. + Dynasoft Inc. + Quiz / English + 2931 + 1-4 + Namco Classics + 270 + 288x224 + media/mixrbv2/bigbucks.png + + + + bigkarnk.zip + Big Karnak (ver. 1.0, checksum 1e38c94) + In this platform game you control a pharaoh that attempts to fight through several deadly enemies like cobras and scorpions. + 0.50 + 19910101T000000 + Gaelco + Gaelco + Platform / Fighter Scrolling + 2896 + 1-2 + Gaelco + 320x240 + media/mixrbv2/bigkarnk.png + + + + bigrun.zip + Big Run (11th Rallye version) + A driving game. + 0.50 + 19890101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + Jaleco + 256x224 + media/mixrbv2/bigrun.png + + + + bigstrik.zip + Big Striker + Big Striker is a football game developed and published by Jaleco in 1992. You have the choice between 8 international teams. The game is seen from the side in 3D. The graphics are correct and the sound effects are nice. We see from time to time, at the bottom left of the screen, the bench that encourages you and even gives you advice. + 0.50 + 19920101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + Jaleco + 256x224 + media/mixrbv2/bigstrik.png + + + + bigstrkba.zip + Big Striker (bootleg w/Italian teams) + Big Striker is a football game developed and published by Jaleco in 1992. You have the choice between 8 international teams. The game is seen from the side in 3D. The graphics are correct and the sound effects are nice. We see from time to time, at the bottom left of the screen, the bench that encourages you and even gives you advice. + 0.50 + 19920101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + bigstrik.zip + Jaleco + 256x224 + media/mixrbv2/bigstrik.png + + + + bigstrkb.zip + Big Striker (bootleg) + Big Striker is a football game developed and published by Jaleco in 1992. You have the choice between 8 international teams. The game is seen from the side in 3D. The graphics are correct and the sound effects are nice. We see from time to time, at the bottom left of the screen, the bench that encourages you and even gives you advice. + 0.50 + 19920101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + bigstrik.zip + Jaleco + 256x224 + media/mixrbv2/bigstrik.png + + + + bikkuric.zip + Bikkuri Card (Japan) + Bikkuri Card (c) 1987 Unknown. - SOURCES - Game's ROM. + 0.30 + 19870101T000000 + Puzzle-Game / Equalize + 2864 + 1 + Konami Classics + 270 + 256x224 + media/mixrbv2/bikkuric.png + + + + bioatack.zip + Bio Attack + In Bio-Attack the player controls a ship through a human's body while shooting viruses. It was licensed by Fox Video Games, as it is based on the 20th Century Fox film, Fantastic Voyage. + +Shoot down little devils that throw arrows at you - only 2 bullets can be onscreen at a time. +Moving forward will cause the screen will scroll faster. This is necessary because you have a oxygen bar that will cost you one life if it runs out. +Be sure to pick up oxygen capsules by flying over them. This refills the timer and gains you 100 points. + 0.50 + 19830101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/bioatack.png + + + + bioship.zip + Bio-ship Paladin + While the game is essentially a standard horizontally scrolling shoot'em up, it has an innovation that makes it unique in the genre. The player flies a spaceship (specifically, a bioship) which has the standard forward guns to be found in all horizontal scrollers, but it also possesses a weapon that can be manually targeted with a crosshair, in the same manner as in the game "Missile Command". This allows the player to fire in any direction with pinpoint accuracy, and adds an extra level of strategy to the game. The player's bioship can also collect power-ups to grow bigger (becoming more powerful), and can acquire spherical pods which attach to the ship and increase its firepower. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Sammy Classics + 256x224 + media/mixrbv2/bioship.png + + + + biomtoyc.zip + Biomechanical Toy (ver. 1.0.1870, checksum ba682195) + Biomechanical Toy is an eightway-scrolling platform shoot-em-up set in a world of magically-animated toys, in which the magical pendulum that animates the toys has been stolen by the evil 'Scrubby', a criminal once imprisoned for trying to steal the pendulum who has managed to escape and take his revenge. The player takes on the role of Inguz and is tasked with freeing the few remaining good toys that are trapped throughout the stages, while destroying or avoiding the many evil toys that now patrol the kingdom. + +Inguz carries a basic, single-firing pistol, although additional ammo clips can be found throughout the game that upgrade the gun with either extra shot power, automatic firing or exploding bullets. When the gun's current ammo clip is empty, Inguz will take a moment to reload, leaving him vulnerable to attack. Freed toys will give help to Inguz by providing additional firepower for a short time. + +Inguz begins each stage and each new life with a full health meter of eighty units, but food can be found that will replenish the meter. The player can lose a life either by running out of health, falling off the bottom of the screen (or into a hazard, such as a lava pit), or by running out of time. Clearing each stage awards bonus points based on both remaining time and health units. + +Checkpoints - indicated by red flags - are located at certain points throughout the stages. In the event of losing a life, play restarts from the last checkpoint reached. Objects with Inguz's face on them (such as wooden chests and balloons) release bonus items when shot. + +An abstract, oriental-looking face occasionally forms part of a level's platform which, when shot, releases balloons which can in turn be shot for bonus items. A giant flying hat also occasionally appears and will drop bonus items when shot. Smart Bombs can also be found at certain points that, when run into by Inguz, will damage or destroy all enemy toys on screen. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1 + biomtoy.zip + Gaelco + 320x240 + media/mixrbv2/biomtoy.png + + + + biomtoyb.zip + Biomechanical Toy (ver. 1.0.1878, checksum d84b28ff) + Biomechanical Toy is an eightway-scrolling platform shoot-em-up set in a world of magically-animated toys, in which the magical pendulum that animates the toys has been stolen by the evil 'Scrubby', a criminal once imprisoned for trying to steal the pendulum who has managed to escape and take his revenge. The player takes on the role of Inguz and is tasked with freeing the few remaining good toys that are trapped throughout the stages, while destroying or avoiding the many evil toys that now patrol the kingdom. + +Inguz carries a basic, single-firing pistol, although additional ammo clips can be found throughout the game that upgrade the gun with either extra shot power, automatic firing or exploding bullets. When the gun's current ammo clip is empty, Inguz will take a moment to reload, leaving him vulnerable to attack. Freed toys will give help to Inguz by providing additional firepower for a short time. + +Inguz begins each stage and each new life with a full health meter of eighty units, but food can be found that will replenish the meter. The player can lose a life either by running out of health, falling off the bottom of the screen (or into a hazard, such as a lava pit), or by running out of time. Clearing each stage awards bonus points based on both remaining time and health units. + +Checkpoints - indicated by red flags - are located at certain points throughout the stages. In the event of losing a life, play restarts from the last checkpoint reached. Objects with Inguz's face on them (such as wooden chests and balloons) release bonus items when shot. + +An abstract, oriental-looking face occasionally forms part of a level's platform which, when shot, releases balloons which can in turn be shot for bonus items. A giant flying hat also occasionally appears and will drop bonus items when shot. Smart Bombs can also be found at certain points that, when run into by Inguz, will damage or destroy all enemy toys on screen. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1 + biomtoy.zip + Gaelco + 320x240 + media/mixrbv2/biomtoy.png + + + + biomtoya.zip + Biomechanical Toy (ver. 1.0.1884, checksum 3f316c70) + Biomechanical Toy is an eightway-scrolling platform shoot-em-up set in a world of magically-animated toys, in which the magical pendulum that animates the toys has been stolen by the evil 'Scrubby', a criminal once imprisoned for trying to steal the pendulum who has managed to escape and take his revenge. The player takes on the role of Inguz and is tasked with freeing the few remaining good toys that are trapped throughout the stages, while destroying or avoiding the many evil toys that now patrol the kingdom. + +Inguz carries a basic, single-firing pistol, although additional ammo clips can be found throughout the game that upgrade the gun with either extra shot power, automatic firing or exploding bullets. When the gun's current ammo clip is empty, Inguz will take a moment to reload, leaving him vulnerable to attack. Freed toys will give help to Inguz by providing additional firepower for a short time. + +Inguz begins each stage and each new life with a full health meter of eighty units, but food can be found that will replenish the meter. The player can lose a life either by running out of health, falling off the bottom of the screen (or into a hazard, such as a lava pit), or by running out of time. Clearing each stage awards bonus points based on both remaining time and health units. + +Checkpoints - indicated by red flags - are located at certain points throughout the stages. In the event of losing a life, play restarts from the last checkpoint reached. Objects with Inguz's face on them (such as wooden chests and balloons) release bonus items when shot. + +An abstract, oriental-looking face occasionally forms part of a level's platform which, when shot, releases balloons which can in turn be shot for bonus items. A giant flying hat also occasionally appears and will drop bonus items when shot. Smart Bombs can also be found at certain points that, when run into by Inguz, will damage or destroy all enemy toys on screen. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1 + biomtoy.zip + Gaelco + 320x240 + media/mixrbv2/biomtoy.png + + + + biomtoy.zip + Biomechanical Toy (ver. 1.0.1885, checksum 69f5e032) + Biomechanical Toy is an eightway-scrolling platform shoot-em-up set in a world of magically-animated toys, in which the magical pendulum that animates the toys has been stolen by the evil 'Scrubby', a criminal once imprisoned for trying to steal the pendulum who has managed to escape and take his revenge. The player takes on the role of Inguz and is tasked with freeing the few remaining good toys that are trapped throughout the stages, while destroying or avoiding the many evil toys that now patrol the kingdom. + +Inguz carries a basic, single-firing pistol, although additional ammo clips can be found throughout the game that upgrade the gun with either extra shot power, automatic firing or exploding bullets. When the gun's current ammo clip is empty, Inguz will take a moment to reload, leaving him vulnerable to attack. Freed toys will give help to Inguz by providing additional firepower for a short time. + +Inguz begins each stage and each new life with a full health meter of eighty units, but food can be found that will replenish the meter. The player can lose a life either by running out of health, falling off the bottom of the screen (or into a hazard, such as a lava pit), or by running out of time. Clearing each stage awards bonus points based on both remaining time and health units. + +Checkpoints - indicated by red flags - are located at certain points throughout the stages. In the event of losing a life, play restarts from the last checkpoint reached. Objects with Inguz's face on them (such as wooden chests and balloons) release bonus items when shot. + +An abstract, oriental-looking face occasionally forms part of a level's platform which, when shot, releases balloons which can in turn be shot for bonus items. A giant flying hat also occasionally appears and will drop bonus items when shot. Smart Bombs can also be found at certain points that, when run into by Inguz, will damage or destroy all enemy toys on screen. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1 + Gaelco + 320x240 + media/mixrbv2/biomtoy.png + + + + bionicc.zip + Bionic Commando (Euro) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + bionicc1.zip + Bionic Commando (US set 1) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + bionicc2.zip + Bionic Commando (US set 2) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + bioniccbl.zip + Bionic Commandos (bootleg, set 1) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + bioniccbl2.zip + Bionic Commandos (bootleg, set 2) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + bioplayc.zip + Bioplaything Cop (ver. 1.0.1823, checksum cd960fc9, prototype) + Biomechanical Toy is an eightway-scrolling platform shoot-em-up set in a world of magically-animated toys, in which the magical pendulum that animates the toys has been stolen by the evil 'Scrubby', a criminal once imprisoned for trying to steal the pendulum who has managed to escape and take his revenge. The player takes on the role of Inguz and is tasked with freeing the few remaining good toys that are trapped throughout the stages, while destroying or avoiding the many evil toys that now patrol the kingdom. + +Inguz carries a basic, single-firing pistol, although additional ammo clips can be found throughout the game that upgrade the gun with either extra shot power, automatic firing or exploding bullets. When the gun's current ammo clip is empty, Inguz will take a moment to reload, leaving him vulnerable to attack. Freed toys will give help to Inguz by providing additional firepower for a short time. + +Inguz begins each stage and each new life with a full health meter of eighty units, but food can be found that will replenish the meter. The player can lose a life either by running out of health, falling off the bottom of the screen (or into a hazard, such as a lava pit), or by running out of time. Clearing each stage awards bonus points based on both remaining time and health units. + +Checkpoints - indicated by red flags - are located at certain points throughout the stages. In the event of losing a life, play restarts from the last checkpoint reached. Objects with Inguz's face on them (such as wooden chests and balloons) release bonus items when shot. + +An abstract, oriental-looking face occasionally forms part of a level's platform which, when shot, releases balloons which can in turn be shot for bonus items. A giant flying hat also occasionally appears and will drop bonus items when shot. Smart Bombs can also be found at certain points that, when run into by Inguz, will damage or destroy all enemy toys on screen. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1 + biomtoy.zip + Gaelco + 320x240 + media/mixrbv2/biomtoy.png + + + + birdiy.zip + Birdiy + You control a mama bird that attempts to catch a caterpillars on the tree leafs and a worms under the ground taking caution not to be attacked by a skunk, to later feed her little chick on the nest and protect from stealthy predators. + 0.10 + 19830101T000000 + Mama Top + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/birdiy.png + + + + bishi.zip + Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players) + A puzzle game with various mini games. + 0.70 + 19960101T000000 + Konami + Konami + Compilation + 34 + 1-3 + Konami Classics + 288x224 + media/mixrbv2/bishi.png + + + + blkdrgonb.zip + Black Dragon (bootleg) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blkdrgon.zip + Black Dragon (Japan) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blkheart.zip + Black Heart + A horizontally scrolling shoot'em up. + 0.50 + 19910101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/blkheart.png + + + + blkheartj.zip + Black Heart (Japan) + A horizontally scrolling shoot'em up. + 0.50 + 19910101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + blkheart.zip + Mame + 256x224 + media/mixrbv2/blkheart.png + + + + blkhole.zip + Black Hole + Black Hole is a space-themed shoot'em up. The point of the game is to shoot all of the terrain, go through the "point ships" for extra points, and finally shoot the moving figure on top of everything. + 0.10 + 19810101T000000 + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/blkhole.png + + + + blkpnthr.zip + Black Panther + Black Panther is a beat'em up / platform game. You play a black panther cat who has to claw or jump on enemies to kill them. You collect power-ups and defeat bosses to advance levels. + 0.50 + 19870101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/blkpnthr.png + + + + blktiger.zip + Black Tiger + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blktigerb1.zip + Black Tiger (bootleg set 1) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blktigerb2.zip + Black Tiger (bootleg set 2) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blktigera.zip + Black Tiger (older) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + blktigerb3.zip + Black Tiger / Black Dragon (mixed bootleg?) + Black Dragon/Tiger is a scrolling platform shoot-em-up set in a fantasy world and is the spiritual successor to the Capcom classic, "Makaimura" ("Ghosts'n' Goblins" outside Japan). + +The player takes on the role of a barbarian hero who must jump and fight his way through a variety of colourful, enemy-packed levels, collecting treasure and weapon power-ups and rescuing the trapped 'wise old men' that litter the levels. + +Rescuing the wise men sees the player awarded 'Zeny coins'; these are the game's currency and allow the player to buy such items as weapon and armour upgrades, keys for treasure chests, anti-poisoning potions and health potions from the shops that appear on each level. Occasionally, a rescued wise man will also offer to sell the player weapon and armour power-ups. + +The barbarian hero is armed with a spiked mace on the end of a long chain, as well as unlimited throwing daggers. Both these and the armour worn by the barbarian (which offers limited protection from enemy attacks) can be upgraded by finding or buying the relevant power-ups. + +The sprawling, eight-way scrolling levels are packed with hidden bonuses to encourage and reward exploration. These bonuses are in the form of weapon and armour power-ups, as well as valuable treasure items. Many levels also include a hidden dungeon and each dungeon is filled with both bonus items and trapped wise men. + +Special items that reveal coins, upgraded armour, or simply bonus points can be found by attacking certain walls. + 0.95 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + blktiger.zip + Capcom Classics + 256x224 + media/mixrbv2/blktiger.png + + + + bwidow.zip + Black Widow + In Black Widow you have to move around a web using two joysticks to control the action. The left joystick moves, while the right joystick fires. "Robotron - 2084" players will feel right at home playing this game, as the controls are identical. You have to defend your little vector spider around her vector web in order to keep out all the deadly bugs. Shoot down bugs and they turn into bonuses. Watch out for eggs, if you see any eggs, then you should quickly push them off the web before they hatch. Other enemies include mosquitoes, beetles, and hornets. + 0.70 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + Atari Classics + media/mixrbv2/bwidow.png + + + + bladestle.zip + Blades of Steel (version E, Trackball) + An ice hockey game with hand-to-hand fighting and physical violence. Features close-up action scenes where two players (one from each team) throw off their gloves and punch each other. + 0.50 + 19870101T000000 + Konami + Konami + Sports / Hockey + 2933 + 1-2 + bladestl.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/bladestl.png + + + + bladestll.zip + Blades of Steel (version L, Trackball) + An ice hockey game with hand-to-hand fighting and physical violence. Features close-up action scenes where two players (one from each team) throw off their gloves and punch each other. + 0.50 + 19870101T000000 + Konami + Konami + Sports / Hockey + 2933 + 1-2 + bladestl.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/bladestl.png + + + + bladestl.zip + Blades of Steel (version T, Joystick) + An ice hockey game with hand-to-hand fighting and physical violence. Features close-up action scenes where two players (one from each team) throw off their gloves and punch each other. + 0.50 + 19870101T000000 + Konami + Konami + Sports / Hockey + 2933 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/bladestl.png + + + + blandia.zip + Blandia + Weapon-based fighting game featuring visible damage to each of the 10 fighter's armor. + 0.20 + 19920101T000000 + Taito + Allumer + Fight / Versus + 2885 + 1-2 + Seta + 384x240 + media/mixrbv2/blandia.png + + + + blandiap.zip + Blandia (prototype) + Weapon-based fighting game featuring visible damage to each of the 10 fighter's armor. + 0.20 + 19920101T000000 + Taito + Allumer + Fight / Versus + 2885 + 1-2 + blandia.zip + Seta + 384x240 + media/mixrbv2/blandia.png + + + + blastoff.zip + Blast Off (Japan) + Blast Off is a vertically scrolling shoot'em up. Despite the drastically different gameplay, Blast Off is the sequel to Bosconian which was released eight years earlier. + +As in many other vertical scrolling shooters (including Namco's own Xevious), the player controls a ship, facing the top of the screen, that can move freely while the background scrolls down, bringing enemies in to view; the player may destroy enemies for points. The game uses two buttons - one is used to make the ship fire circular lasers, while the other is used to cycle through its four firing patterns. The red pattern is two lasers in a spiral pattern, while the blue one is one laser straight ahead and one behind, the yellow one is one laser straight ahead, one left, and one right and the green one is two lasers diagonally forward (one to the left and one to the right), and one straight behind; by holding down the button, the ship fires more powerful, spherical lasers. + 0.50 + 19890101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/blastoff.png + + + + blaster.zip + Blaster + The player takes control of a spaceship and must fight against wave after wave of enemy fighters, while trying to rescue the stranded astronauts that represent the last surviving remnants of the human race. Enemies attack the player both with weapons, and by making 'suicide runs' at the player's ship. The game consists of eleven different levels, nine of which are repeated, bringing the total number of levels to 20. + +The levels are: Planetoid Waves, Robot Grid Waves, Saucerland Waves, Vampire Waves, Time Tunnel Waves, Outer Space Waves, Enduro Waves, Cat World Waves, and Mastermind Waves (there are two of each of these). + +There are also two unique waves that occur only once, they are Armageddon and Paradise. + +Players can select their starting wave at the start of the game; choosing from Planetoids, Robot Grid, Saucerland, and Vampires. During the game, players must be careful to NOT shoot the human astronauts that drift through the levels. These must be rescued by 'running' into them. + +Despite the presence of an energy meter, the player can take exactly three hits before he or she dies. Upon death, the window of the player's virtual cockpit breaks and one of the player's lives is lost. Blaster has a 'Continue' option but this can only be used once. + 0.70 + 19830101T000000 + Williams + Vid Kidz + Shooter / Plane, 3rd person + 2881 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/blaster.png + + + + blastero.zip + Blaster (location test) + The player takes control of a spaceship and must fight against wave after wave of enemy fighters, while trying to rescue the stranded astronauts that represent the last surviving remnants of the human race. Enemies attack the player both with weapons, and by making 'suicide runs' at the player's ship. The game consists of eleven different levels, nine of which are repeated, bringing the total number of levels to 20. + +The levels are: Planetoid Waves, Robot Grid Waves, Saucerland Waves, Vampire Waves, Time Tunnel Waves, Outer Space Waves, Enduro Waves, Cat World Waves, and Mastermind Waves (there are two of each of these). + +There are also two unique waves that occur only once, they are Armageddon and Paradise. + +Players can select their starting wave at the start of the game; choosing from Planetoids, Robot Grid, Saucerland, and Vampires. During the game, players must be careful to NOT shoot the human astronauts that drift through the levels. These must be rescued by 'running' into them. + +Despite the presence of an energy meter, the player can take exactly three hits before he or she dies. Upon death, the window of the player's virtual cockpit breaks and one of the player's lives is lost. Blaster has a 'Continue' option but this can only be used once. + 0.70 + 19830101T000000 + Williams + Vid Kidz + Shooter / Plane, 3rd person + 2881 + 1-2 + blaster.zip + Midway Classics + 292x240 + media/mixrbv2/blaster.png + + + + blstroidg.zip + Blasteroids (German, rev 2) + Blasteroids is a 1 or 2-player update of Atari's seminal "Asteroids", where the object of the game is to clear all sectors of the asteroids and enemy ships. Once this task is completed, the player goes on to battle Mukor - the "boss" asteroid who rules all galaxies - and destroy him. + +The player's ship appears first in the center of four vortices, he or she must chose which vortex they wish to enter, which then transports them to a sector of their chosen star system. + +Unlike in "Asteroids", the player ship has a finite amount of fuel which must be replenished as often as possible. This is achieved by destroying specifically-colored asteroids which turn into collectible crystals. Not all sectors contain the crystal-bearing asteroids, however, and if the player runs out of fuel, a ship is lost. The game contains three different ship configurations and the player can switch between them at any time during a level. The three configurations are: Speeder (small and fast, but weak), Fighter (medium speed and strength) and Warrior (large and strong but very slow). + + + 0.60 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + blstroid.zip + Atari Classics + 640x240 + media/mixrbv2/blstroid.png + + + + blstroid2.zip + Blasteroids (rev 2) + Blasteroids is a 1 or 2-player update of Atari's seminal "Asteroids", where the object of the game is to clear all sectors of the asteroids and enemy ships. Once this task is completed, the player goes on to battle Mukor - the "boss" asteroid who rules all galaxies - and destroy him. + +The player's ship appears first in the center of four vortices, he or she must chose which vortex they wish to enter, which then transports them to a sector of their chosen star system. + +Unlike in "Asteroids", the player ship has a finite amount of fuel which must be replenished as often as possible. This is achieved by destroying specifically-colored asteroids which turn into collectible crystals. Not all sectors contain the crystal-bearing asteroids, however, and if the player runs out of fuel, a ship is lost. The game contains three different ship configurations and the player can switch between them at any time during a level. The three configurations are: Speeder (small and fast, but weak), Fighter (medium speed and strength) and Warrior (large and strong but very slow). + + + 0.60 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + blstroid.zip + Atari Classics + 640x240 + media/mixrbv2/blstroid.png + + + + blstroid3.zip + Blasteroids (rev 3) + Blasteroids is a 1 or 2-player update of Atari's seminal "Asteroids", where the object of the game is to clear all sectors of the asteroids and enemy ships. Once this task is completed, the player goes on to battle Mukor - the "boss" asteroid who rules all galaxies - and destroy him. + +The player's ship appears first in the center of four vortices, he or she must chose which vortex they wish to enter, which then transports them to a sector of their chosen star system. + +Unlike in "Asteroids", the player ship has a finite amount of fuel which must be replenished as often as possible. This is achieved by destroying specifically-colored asteroids which turn into collectible crystals. Not all sectors contain the crystal-bearing asteroids, however, and if the player runs out of fuel, a ship is lost. The game contains three different ship configurations and the player can switch between them at any time during a level. The three configurations are: Speeder (small and fast, but weak), Fighter (medium speed and strength) and Warrior (large and strong but very slow). + + + 0.60 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + blstroid.zip + Atari Classics + 640x240 + media/mixrbv2/blstroid.png + + + + blstroid.zip + Blasteroids (rev 4) + Blasteroids is a 1 or 2-player update of Atari's seminal "Asteroids", where the object of the game is to clear all sectors of the asteroids and enemy ships. Once this task is completed, the player goes on to battle Mukor - the "boss" asteroid who rules all galaxies - and destroy him. + +The player's ship appears first in the center of four vortices, he or she must chose which vortex they wish to enter, which then transports them to a sector of their chosen star system. + +Unlike in "Asteroids", the player ship has a finite amount of fuel which must be replenished as often as possible. This is achieved by destroying specifically-colored asteroids which turn into collectible crystals. Not all sectors contain the crystal-bearing asteroids, however, and if the player runs out of fuel, a ship is lost. The game contains three different ship configurations and the player can switch between them at any time during a level. The three configurations are: Speeder (small and fast, but weak), Fighter (medium speed and strength) and Warrior (large and strong but very slow). + + + 0.60 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + Atari Classics + 640x240 + media/mixrbv2/blstroid.png + + + + blstroidh.zip + Blasteroids (with heads) + Blasteroids is a 1 or 2-player update of Atari's seminal "Asteroids", where the object of the game is to clear all sectors of the asteroids and enemy ships. Once this task is completed, the player goes on to battle Mukor - the "boss" asteroid who rules all galaxies - and destroy him. + +The player's ship appears first in the center of four vortices, he or she must chose which vortex they wish to enter, which then transports them to a sector of their chosen star system. + +Unlike in "Asteroids", the player ship has a finite amount of fuel which must be replenished as often as possible. This is achieved by destroying specifically-colored asteroids which turn into collectible crystals. Not all sectors contain the crystal-bearing asteroids, however, and if the player runs out of fuel, a ship is lost. The game contains three different ship configurations and the player can switch between them at any time during a level. The three configurations are: Speeder (small and fast, but weak), Fighter (medium speed and strength) and Warrior (large and strong but very slow). + + + 0.60 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + blstroid.zip + Atari Classics + 640x240 + media/mixrbv2/blstroid.png + + + + blasto.zip + Blasto + Your are in control of your spaceship as you maneuver it through a mine field. Beat the clock to explode all the mines. With two players, Blasto gets even more challenging, more exciting, as each one battles for the most mines and ultimately-for each other! + 0.30 + 19780101T000000 + Gremlin Interactive + Gremlin Interactive + Action + 10 + 1-2 + Mame + 256x224 + media/mixrbv2/blasto.png + + + + blazeonj.zip + Blaze On (Japan) + The player is set in control of The Garland TFF-01, a sub-standard space fighter ship that is only armed with a semi-auto or rapid fire laser gun known as the Beam Vulcan and the Tranquilander. Some enemy units can be captured and used in play; certain enemy robots, when shot by the player's Tranquilander, will morph into an outline of themselves. The player can then fly into the outline, and take on the form of the enemy robot, taking control of its weapons, abilities and special attacks. + +There is also addition to the boss battle scoring: similar to some shooters, players have the opportunity to increase their scores by beating the end level bosses within a certain time limit. Every time a boss battle is initiated, a timer will count down and once the boss is destroyed/killed before the timer reaches zero, then the time left will add to the player's end-level score; if the timer runs out, then the score at the end of the level will remain unaffected. + 0.50 + 19920101T000000 + A.I + Atlus + Shoot'em Up + 79 + 1-2 + blazeon.zip + Kaneko + 320x232 + media/mixrbv2/blazeon.png + + + + blazeon.zip + Blaze On (World) + The player is set in control of The Garland TFF-01, a sub-standard space fighter ship that is only armed with a semi-auto or rapid fire laser gun known as the Beam Vulcan and the Tranquilander. Some enemy units can be captured and used in play; certain enemy robots, when shot by the player's Tranquilander, will morph into an outline of themselves. The player can then fly into the outline, and take on the form of the enemy robot, taking control of its weapons, abilities and special attacks. + +There is also addition to the boss battle scoring: similar to some shooters, players have the opportunity to increase their scores by beating the end level bosses within a certain time limit. Every time a boss battle is initiated, a timer will count down and once the boss is destroyed/killed before the timer reaches zero, then the time left will add to the player's end-level score; if the timer runs out, then the score at the end of the level will remain unaffected. + 0.50 + 19920101T000000 + A.I + Atlus + Shoot'em Up + 79 + 1-2 + Kaneko + 320x232 + media/mixrbv2/blazeon.png + + + + blazer.zip + Blazer (Japan) + Blazer is an isometric scrolling shoot 'em up featuring a tank and occasionally a helicopter battling multiple land and air based enemies. + 0.70 + 19870101T000000 + Namco + Namco + Shooter / Vehicle, Diagonal + 2934 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/blazer.png + + + + blazstar.zip + Blazing Star + The unofficial sequel to Pulstar, Blazing Star is again a horizontal-scrolling shoot-'em-up. One or two players proceed along levels, each with a boss enemy at the end, trying to redeem the humankind. There are six ships to choose from, each with its own pilot (four of them females), weapons and characteristics of movement. Each ship has its own types of shots, but also a standard shot, charged shot (more powerful) and split shot (a charged shot can be parted into more bullets, lowering the power of each bullet while widening the fire range). + 0.80 + 19980101T000000 + Yumekobo + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/blazstar.png + + + + blazstarcm.zip + Blazing Star (Stage Select Hack) + The unofficial sequel to Pulstar, Blazing Star is again a horizontal-scrolling shoot-'em-up. One or two players proceed along levels, each with a boss enemy at the end, trying to redeem the humankind. There are six ships to choose from, each with its own pilot (four of them females), weapons and characteristics of movement. Each ship has its own types of shots, but also a standard shot, charged shot (more powerful) and split shot (a charged shot can be parted into more bullets, lowering the power of each bullet while widening the fire range). + 0.80 + 19980101T000000 + Yumekobo + SNK + Shoot'em Up + 79 + 1-2 + blazstar.zip + Neo-Geo + 320x224 + media/mixrbv2/blazstar.png + + + + blzntrnd.zip + Blazing Tornado + An arcade wrestling game developed by Masato Masuda and his team, most famous for their work on the Fire Pro Wrestling series. + 0.50 + 19940101T000000 + Human + Human + Sports / Wrestling + 2861 + 1-4 + Mitchell + 304x224 + media/mixrbv2/blzntrnd.png + + + + arkblock.zip + Block (Game Corporation bootleg, set 1) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + arkbloc2.zip + Block (Game Corporation bootleg, set 2) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + blockbl.zip + Block Block (bootleg) + A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a turn when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward and back into play. + 0.60 + 19910101T000000 + Capcom + Capcom + Action / Breakout games + 2917 + 1-2 + block.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/block.png + + + + blockj.zip + Block Block (Japan 910910) + A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a turn when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward and back into play. + 0.60 + 19910101T000000 + Capcom + Capcom + Action / Breakout games + 2917 + 1-2 + block.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/block.png + + + + blockr2.zip + Block Block (World 910910) + A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a turn when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward and back into play. + 0.60 + 19910101T000000 + Capcom + Capcom + Action / Breakout games + 2917 + 1-2 + block.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/block.png + + + + blockr1.zip + Block Block (World 911106 Joystick) + A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a turn when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward and back into play. + 0.60 + 19910101T000000 + Capcom + Capcom + Action / Breakout games + 2917 + 1-2 + block.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/block.png + + + + block.zip + Block Block (World 911219 Joystick) + A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a turn when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward and back into play. + 0.60 + 19910101T000000 + Capcom + Capcom + Action / Breakout games + 2917 + 1-2 + Capcom Classics + 270 + 384x240 + media/mixrbv2/block.png + + + + blockcar.zip + Block Carnival / Thunder & Lightning 2 + Block Carnival is a funny ball and paddle game. + 0.50 + 19920101T000000 + Visco + Action + 10 + 1-2 + Visco + 270 + 384x240 + media/mixrbv2/blockcar.png + + + + blockgal.zip + Block Gal (MC-8123B, 317-0029) + Block Gal is a Breakout/Arkanoid clone, with some erotic imagery: clearing a screen reveals some part of a naked lady. + 0.50 + 19870101T000000 + SEGA + Action / Breakout games + 2917 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/blockgal.png + + + + blockhl.zip + Block Hole + A puzzle game. + + + 0.50 + 19890101T000000 + Konami + Konami + Various + 39 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/blockhl.png + + + + blockout3.zip + Block Out (Europe and Oceania) + Block Out is a 1-player or a simultaneous 2 players competitive game of unique dimensional action and strategy. +As the blocks drop one-by-one into the three-dimensional pit, rotate them by using the three buttons and joystick. Once the player has decided on the the rotation of the block, use the button to drop the block into place. The objective is to place the blocks into the pit without leaving any empty spaces. Once this is achieved, the layers without empty spaces, will disappear. + +The player begins the game by selecting a starting stage. Game start level select can be chosen from stages 1, 5, 10, 15, or 20. There is a total of 100 stages in the game and as the players progress through the game, the stages get more and more difficult. +Each stage has a certain number of layers (faces) that must be erased. Once these faces are erased, the player will move on to the next stage. The less blocks the players has left in the pit at the end of the stage, the more points are awarded. + +In addition to the one player mode, Block Out offers a competitive simultaneous two player mode. The split screen effect gives each player their own pit with which to play in. They compete against each other in the race to erase the faces. As one player erases a face, that face will be added to the opponent's pit, making their pit rise. This allows less room to work. There are two ways to win in the 2-player mode: +1) Force the opponent to the top of their pit and out of the game +or +2) Erase 21 faces first. + 0.70 + 19890101T000000 + Technos Japan Corp. + Technos Japan Corp. + Puzzle-Game / Fall + 2912 + 1-2 + blockout.zip + Technos + 320x240 + media/mixrbv2/blockout.png + + + + blockoutj.zip + Block Out (Japan) + Block Out is a 1-player or a simultaneous 2 players competitive game of unique dimensional action and strategy. +As the blocks drop one-by-one into the three-dimensional pit, rotate them by using the three buttons and joystick. Once the player has decided on the the rotation of the block, use the button to drop the block into place. The objective is to place the blocks into the pit without leaving any empty spaces. Once this is achieved, the layers without empty spaces, will disappear. + +The player begins the game by selecting a starting stage. Game start level select can be chosen from stages 1, 5, 10, 15, or 20. There is a total of 100 stages in the game and as the players progress through the game, the stages get more and more difficult. +Each stage has a certain number of layers (faces) that must be erased. Once these faces are erased, the player will move on to the next stage. The less blocks the players has left in the pit at the end of the stage, the more points are awarded. + +In addition to the one player mode, Block Out offers a competitive simultaneous two player mode. The split screen effect gives each player their own pit with which to play in. They compete against each other in the race to erase the faces. As one player erases a face, that face will be added to the opponent's pit, making their pit rise. This allows less room to work. There are two ways to win in the 2-player mode: +1) Force the opponent to the top of their pit and out of the game +or +2) Erase 21 faces first. + 0.70 + 19890101T000000 + Technos Japan Corp. + Technos Japan Corp. + Puzzle-Game / Fall + 2912 + 1-2 + blockout.zip + Technos + 320x240 + media/mixrbv2/blockout.png + + + + blockout.zip + Block Out (set 1) + Block Out is a 1-player or a simultaneous 2 players competitive game of unique dimensional action and strategy. +As the blocks drop one-by-one into the three-dimensional pit, rotate them by using the three buttons and joystick. Once the player has decided on the the rotation of the block, use the button to drop the block into place. The objective is to place the blocks into the pit without leaving any empty spaces. Once this is achieved, the layers without empty spaces, will disappear. + +The player begins the game by selecting a starting stage. Game start level select can be chosen from stages 1, 5, 10, 15, or 20. There is a total of 100 stages in the game and as the players progress through the game, the stages get more and more difficult. +Each stage has a certain number of layers (faces) that must be erased. Once these faces are erased, the player will move on to the next stage. The less blocks the players has left in the pit at the end of the stage, the more points are awarded. + +In addition to the one player mode, Block Out offers a competitive simultaneous two player mode. The split screen effect gives each player their own pit with which to play in. They compete against each other in the race to erase the faces. As one player erases a face, that face will be added to the opponent's pit, making their pit rise. This allows less room to work. There are two ways to win in the 2-player mode: +1) Force the opponent to the top of their pit and out of the game +or +2) Erase 21 faces first. + 0.70 + 19890101T000000 + Technos Japan Corp. + Technos Japan Corp. + Puzzle-Game / Fall + 2912 + 1-2 + Technos + 320x240 + media/mixrbv2/blockout.png + + + + blockout2.zip + Block Out (set 2) + Block Out is a 1-player or a simultaneous 2 players competitive game of unique dimensional action and strategy. +As the blocks drop one-by-one into the three-dimensional pit, rotate them by using the three buttons and joystick. Once the player has decided on the the rotation of the block, use the button to drop the block into place. The objective is to place the blocks into the pit without leaving any empty spaces. Once this is achieved, the layers without empty spaces, will disappear. + +The player begins the game by selecting a starting stage. Game start level select can be chosen from stages 1, 5, 10, 15, or 20. There is a total of 100 stages in the game and as the players progress through the game, the stages get more and more difficult. +Each stage has a certain number of layers (faces) that must be erased. Once these faces are erased, the player will move on to the next stage. The less blocks the players has left in the pit at the end of the stage, the more points are awarded. + +In addition to the one player mode, Block Out offers a competitive simultaneous two player mode. The split screen effect gives each player their own pit with which to play in. They compete against each other in the race to erase the faces. As one player erases a face, that face will be added to the opponent's pit, making their pit rise. This allows less room to work. There are two ways to win in the 2-player mode: +1) Force the opponent to the top of their pit and out of the game +or +2) Erase 21 faces first. + 0.70 + 19890101T000000 + Technos Japan Corp. + Technos Japan Corp. + Puzzle-Game / Fall + 2912 + 1-2 + blockout.zip + Technos + 320x240 + media/mixrbv2/blockout.png + + + + blockade.zip + Blockade + This game was two player only, you must have a live human opponent to play against, or else the other players character will go straight into a wall, making for a very quick and boring game. Each player moves their character around leaving a solid line behind them. All moves are made on an invisible grid, so you can only turn at 90 degree angles. To win you must last longer than your opponent before hitting something (first person to hit something loses). The game ended after one player chalked up six wins, but this was operator adjustable down to as low as three. + 0.10 + 19760101T000000 + Gremlin Interactive + Gremlin Interactive + Action + 10 + 1-2 + Mame + 256x224 + media/mixrbv2/blockade.png + + + + blkbustr.zip + BlockBuster + A puzzle game. + 0.50 + 19830101T000000 + Kiwako + Kiwako + Action + 10 + 1-2 + mrjong.zip + Mame + 270 + 240x224 + media/mixrbv2/mrjong.png + + + + blocken.zip + Blocken (Japan) + A ball and paddle game. + 0.70 + 19940101T000000 + Kindle Imagine Develop + Kindle Imagine Develop + Action / Breakout games + 2917 + 1-2 + Visco + 384x224 + media/mixrbv2/blocken.png + + + + blmbycar.zip + Blomby Car + A 2-D rally driving game. + 0.60 + 19940101T000000 + ABM Games + ABM Games + Race, Driving / Race + 2924 + 1-2 + Mame + 384x256 + media/mixrbv2/blmbycar.png + + + + blmbycaru.zip + Blomby Car (not encrypted) + A 2-D rally driving game. + 0.60 + 19940101T000000 + ABM Games + ABM Games + Race, Driving / Race + 2924 + 1-2 + blmbycar.zip + Mame + 384x256 + media/mixrbv2/blmbycar.png + + + + bloodbroja.zip + Blood Bros. (Japan) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + bloodbro.zip + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodbroj.zip + Blood Bros. (Japan, rev A) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + bloodbro.zip + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodbrok.zip + Blood Bros. (Korea) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + bloodbro.zip + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodbrom.zip + Blood Bros. (Modular System) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + bloodbro.zip + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodbrou.zip + Blood Bros. (US) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + bloodbro.zip + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodbro.zip + Blood Bros. (World?) + In the far west, ruthless bandits terrorized the good people and is up to you to stop them and their vast weapon arsenal in order to bring peace to this troubled land. Features destructible background objects and lots of weapons! Despite the western concept, this game features almost identical mechanics to TAD's previous shooter "Cabal". + 0.50 + 19900101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + Mame + 256x224 + media/mixrbv2/bloodbro.png + + + + bloodwar.zip + Blood Warrior + The gameplay of Blood Warrior is quite similar to many of the 2D fighting games of the same era. However, Kaneko seem to have taken much of their inspiration from the Mortal Kombat franchise in terms of over the top gore and violence; however, Blood Warrior's predecessor Shogun Warriors predates Mortal Kombat in featuring blood, while Barbarian: The Ultimate Warrior predates Mortal Kombat in featuring death moves. + 0.50 + 19930101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + Kaneko + 320x240 + media/mixrbv2/bloodwar.png + + + + bloxeedd.zip + Bloxeed (Japan, FD1094 317-0139 decrypted) + A puzzle game. Gameplay is quite similar to "Tetris" but with some added twists. + 0.50 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + bloxeed.zip + Sega Classics + 320x224 + media/mixrbv2/bloxeed.png + + + + bloxeed.zip + Bloxeed (Japan, FD1094 317-0139) + A puzzle game. Gameplay is quite similar to "Tetris" but with some added twists. + 0.50 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/bloxeed.png + + + + blox16b.zip + Bloxeed (System 16B, PS2 data file) + A puzzle game. Gameplay is quite similar to "Tetris" but with some added twists. + 0.50 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + bloxeed.zip + Sega Classics + 320x224 + media/mixrbv2/bloxeed.png + + + + bloxeedu.zip + Bloxeed (US, C System, Rev A) + A puzzle game. Gameplay is quite similar to "Tetris" but with some added twists. + 0.50 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + bloxeed.zip + Sega Classics + 320x224 + media/mixrbv2/bloxeed.png + + + + bloxeedc.zip + Bloxeed (World, C System) + A puzzle game. Gameplay is quite similar to "Tetris" but with some added twists. + 0.50 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + bloxeed.zip + Sega Classics + 320x224 + media/mixrbv2/bloxeed.png + + + + bluehawk.zip + Blue Hawk + Blue Hawk is a vertically scrolling shoot'em up. + 0.50 + 19930101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/bluehawk.png + + + + bluehawkn.zip + Blue Hawk (NTC) + Blue Hawk is a vertically scrolling shoot'em up. + 0.50 + 19930101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + bluehawk.zip + Mame + 270 + 384x240 + media/mixrbv2/bluehawk.png + + + + blueprntj.zip + Blue Print (Jaleco) + In Blue Print the player controls a character that must search houses to find pieces of a machine. There are a variety of antagonists that impede progress, including monsters and bombs. Once the machine has been assembled in accordance with the blueprint, the player must use it to shoot the monster that is chasing the player character's girlfriend. + 0.70 + 19820101T000000 + Ashby Computers and Graphics + Midway + Action / Labyrinth + 2937 + 1-2 + blueprnt.zip + Midway Classics + 270 + 256x224 + media/mixrbv2/blueprnt.png + + + + blueprnt.zip + Blue Print (Midway) + In Blue Print the player controls a character that must search houses to find pieces of a machine. There are a variety of antagonists that impede progress, including monsters and bombs. Once the machine has been assembled in accordance with the blueprint, the player must use it to shoot the monster that is chasing the player character's girlfriend. + 0.70 + 19820101T000000 + Ashby Computers and Graphics + Midway + Action / Labyrinth + 2937 + 1-2 + Midway Classics + 270 + 256x224 + media/mixrbv2/blueprnt.png + + + + bjourneyh.zip + Blue's Journey / Raguy (ALH-001) + The planet of Raguy was once beautiful and peaceful, but all hell broke loose when it was invaded by the Daruma tribe. The pollution started to spread through the city. Blue was summoned to get rid of the Daruma tribe, and save Raguy from the Daruma Empire that has turned the inhabitants into slaves. + +You control Blue, who only has one weapon to deal with the Darumas. You can use his leaf to whip enemies upside-down, and hurl these enemies at others. Along the way, you can get flowers for use at the shop to buy items that will help you along the way. These items include flower honey (increases stamina), swim fins (easier swimming), light safe (protects all your items), spikes, and ocarinas. Later in the game, you can also get the shopkeeper to sing you a song. This helps you break curses that are placed on you by a witch.You will also interact with other characters along the way that can also help you if you tell the truth. + +You exit each stage by jumping on a huge plant. The higher up you are on this plant, the more points you are awarded. Every two or so stages, you have to defeat a boss before a guy in a devil suit offers you something. You can refuse or accept the other. If you accept the offer, you will have to pull one of four strings that will give you a life ball, more stamina, 30 flowers, cocoons, or five flowers. + +You are on a time limit. If you run out of time, a black creature appears out of nowhere, and starts firing "bird" missiles at you. + 0.50 + 19900101T000000 + ADK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + bjourney.zip + Neo-Geo + 320x224 + media/mixrbv2/bjourney.png + + + + bjourney.zip + Blue's Journey / Raguy (ALM-001)(ALH-001) + The planet of Raguy was once beautiful and peaceful, but all hell broke loose when it was invaded by the Daruma tribe. The pollution started to spread through the city. Blue was summoned to get rid of the Daruma tribe, and save Raguy from the Daruma Empire that has turned the inhabitants into slaves. + +You control Blue, who only has one weapon to deal with the Darumas. You can use his leaf to whip enemies upside-down, and hurl these enemies at others. Along the way, you can get flowers for use at the shop to buy items that will help you along the way. These items include flower honey (increases stamina), swim fins (easier swimming), light safe (protects all your items), spikes, and ocarinas. Later in the game, you can also get the shopkeeper to sing you a song. This helps you break curses that are placed on you by a witch.You will also interact with other characters along the way that can also help you if you tell the truth. + +You exit each stage by jumping on a huge plant. The higher up you are on this plant, the more points you are awarded. Every two or so stages, you have to defeat a boss before a guy in a devil suit offers you something. You can refuse or accept the other. If you accept the offer, you will have to pull one of four strings that will give you a life ball, more stamina, 30 flowers, cocoons, or five flowers. + +You are on a time limit. If you run out of time, a black creature appears out of nowhere, and starts firing "bird" missiles at you. + 0.50 + 19900101T000000 + ADK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/bjourney.png + + + + bwcasino.zip + Boardwalk Casino + Vous pouvez jouer à 5 jeux de casino : poker, machines à sous, black jack, dés et courses de chevaux. + 19830101T000000 + Epos Corporation + Epos Corporation + Casino / Cards + 2872 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/bwcasino.png + + + + bbredux.zip + Bobble Bobble ('bootleg redux' hack for Bobble Bobble PCB) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + boblbobl.zip + Bobble Bobble (bootleg of Bubble Bobble) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bodyslam.zip + Body Slam (8751 317-0015) + Body Slam, called Dump Matsumoto in Japan, is a 1986 arcade wrestling game by Sega. You choose one of two wrestling teams, "Fresh Gals" and "The Evil Alliance", and fight with each of its members, taking turns. + 0.30 + 19860101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/bodyslam.png + + + + bogeyman.zip + Bogey Manor + You play as a young ghost hunter boy who runs around a haunted house. Your objective is to destroy with your sword all the crystal balls that are in the house, you must go through all the floors and go through the doors guided by the map at the top of the screen in a time limit without getting caught by the ghosts, frankenstein, witches and other creepy creatures. With the help of your magic glove can freeze ghosts for a short period of time to later hit them with the sword. + +Once you've destroyed all the crystal balls, the haunted house starts falling apart, and you must run for your life towards the exit to win the stage. You can transform into a super hero, entering through the flashing door to grab special items. + 0.70 + 19850101T000000 + Technos Japan Corp. + Tecmo + Fight + 14 + 1-2 + Technos + 256x240 + media/mixrbv2/bogeyman.png + + + + boggy84.zip + Boggy '84 + Boggy '84 is one of those games of which countless numbers were made in the early eighties during the homecomputer boom. It is slightly similar to Mappy or Space Panic but without the refinements of said games. + +You are a man who must collect a set of keys on a level with several floors. You can jump between floors using springboards, which gives you an advantage over your enemies, who must use the ladders to climb between floors. You must also use those in order to descend to a lower floor, mind you. Later levels add touches such as a a ski slope which you must ascend while avoiding the baddies. Hitting them from below will put them out of action, though. + 0.50 + 19830101T000000 + Kaneko + Platform / Run Jump + 2915 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/boggy84.png + + + + boggy84b.zip + Boggy '84 (bootleg) + Boggy '84 is one of those games of which countless numbers were made in the early eighties during the homecomputer boom. It is slightly similar to Mappy or Space Panic but without the refinements of said games. + +You are a man who must collect a set of keys on a level with several floors. You can jump between floors using springboards, which gives you an advantage over your enemies, who must use the ladders to climb between floors. You must also use those in order to descend to a lower floor, mind you. Later levels add touches such as a a ski slope which you must ascend while avoiding the baddies. Hitting them from below will put them out of action, though. + 0.50 + 19830101T000000 + Kaneko + Platform / Run Jump + 2915 + 1-2 + boggy84.zip + Kaneko + 270 + 256x224 + media/mixrbv2/boggy84.png + + + + bombbee.zip + Bomb Bee + In this old ball and paddle game, you control a paddle that must rebound a ball into the colorized bricks and pop-bumpers. + 0.30 + 19790101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/bombbee.png + + + + bombjack.zip + Bomb Jack (set 1) + Bomb Jack is a fast-moving platform game in which the aim is to collect all of the bombs on each level before progressing to the next. A variety of constantly spawning mechanical enemies patrol the platforms and airspace so the longer a player takes to collect all of the bombs, the more difficult progress becomes. + +Extra point bonuses are awarded for collecting bombs with their fuses lit. Only one bomb at any time has a lit fuse, and collecting twenty or more of these lit bombs on any given level will earn the player points bonus (see TIPS AND TRICKS for details). Jack is pursued around each level by the spawning enemies and when he gets killed, he drops down to the nearest platform, always landing on his head. + +A 'Powerball' appears at semi-regular intervals and moves diagonally around the screen. If the player manages to grab this, all of the level's monsters are frozen for several seconds and can then be killed by having Jack fly into them (similar to the 'Powerpill' feature in "Pac-Man"). Collecting the Bonus 'B' symbols will increase the amount of points awarded for collecting bombs with their fuses lit. Picking up an 'Extra' symbol awards the player with an additional life, while catching the 'Special' symbol will give the player an extra credit. + +Each of Bomb Jack's levels feature one of five different background pictures, some of which represent famous historical landmarks. They are: the Sphinx in Egypt, the Acropolis in Greece, Castle Neuschwanstein in Bavaria, skyscrapers and a cityscape by night. While the backgrounds themselves are repeated as the game progresses, the platform layouts for each level are completely different. At least until level 18, after which the levels are repeated. + +The basic play mechanic of collecting objects to clear a level, as well as the powerball feature, is hugely reminiscent of Namco's seminal "Pac-Man". + 0.80 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Platform / Run Jump + 2915 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/bombjack.png + + + + bombjack2.zip + Bomb Jack (set 2) + Bomb Jack is a fast-moving platform game in which the aim is to collect all of the bombs on each level before progressing to the next. A variety of constantly spawning mechanical enemies patrol the platforms and airspace so the longer a player takes to collect all of the bombs, the more difficult progress becomes. + +Extra point bonuses are awarded for collecting bombs with their fuses lit. Only one bomb at any time has a lit fuse, and collecting twenty or more of these lit bombs on any given level will earn the player points bonus (see TIPS AND TRICKS for details). Jack is pursued around each level by the spawning enemies and when he gets killed, he drops down to the nearest platform, always landing on his head. + +A 'Powerball' appears at semi-regular intervals and moves diagonally around the screen. If the player manages to grab this, all of the level's monsters are frozen for several seconds and can then be killed by having Jack fly into them (similar to the 'Powerpill' feature in "Pac-Man"). Collecting the Bonus 'B' symbols will increase the amount of points awarded for collecting bombs with their fuses lit. Picking up an 'Extra' symbol awards the player with an additional life, while catching the 'Special' symbol will give the player an extra credit. + +Each of Bomb Jack's levels feature one of five different background pictures, some of which represent famous historical landmarks. They are: the Sphinx in Egypt, the Acropolis in Greece, Castle Neuschwanstein in Bavaria, skyscrapers and a cityscape by night. While the backgrounds themselves are repeated as the game progresses, the platform layouts for each level are completely different. At least until level 18, after which the levels are repeated. + +The basic play mechanic of collecting objects to clear a level, as well as the powerball feature, is hugely reminiscent of Namco's seminal "Pac-Man". + 0.80 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Platform / Run Jump + 2915 + 1-2 + bombjack.zip + Mame + 270 + 256x224 + media/mixrbv2/bombjack.png + + + + bombjackt.zip + Bomb Jack (Tecfri, Spain) + Bomb Jack is a fast-moving platform game in which the aim is to collect all of the bombs on each level before progressing to the next. A variety of constantly spawning mechanical enemies patrol the platforms and airspace so the longer a player takes to collect all of the bombs, the more difficult progress becomes. + +Extra point bonuses are awarded for collecting bombs with their fuses lit. Only one bomb at any time has a lit fuse, and collecting twenty or more of these lit bombs on any given level will earn the player points bonus (see TIPS AND TRICKS for details). Jack is pursued around each level by the spawning enemies and when he gets killed, he drops down to the nearest platform, always landing on his head. + +A 'Powerball' appears at semi-regular intervals and moves diagonally around the screen. If the player manages to grab this, all of the level's monsters are frozen for several seconds and can then be killed by having Jack fly into them (similar to the 'Powerpill' feature in "Pac-Man"). Collecting the Bonus 'B' symbols will increase the amount of points awarded for collecting bombs with their fuses lit. Picking up an 'Extra' symbol awards the player with an additional life, while catching the 'Special' symbol will give the player an extra credit. + +Each of Bomb Jack's levels feature one of five different background pictures, some of which represent famous historical landmarks. They are: the Sphinx in Egypt, the Acropolis in Greece, Castle Neuschwanstein in Bavaria, skyscrapers and a cityscape by night. While the backgrounds themselves are repeated as the game progresses, the platform layouts for each level are completely different. At least until level 18, after which the levels are repeated. + +The basic play mechanic of collecting objects to clear a level, as well as the powerball feature, is hugely reminiscent of Namco's seminal "Pac-Man". + 0.80 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Platform / Run Jump + 2915 + 1-2 + bombjack.zip + Mame + 270 + 256x224 + media/mixrbv2/bombjack.png + + + + bombkick.zip + Bomb Kick (set 1) + A platform game where you use bombs to get rid of enemies. + 0.50 + 19980101T000000 + Yun Sung + Yun Sung + Platform / Fighter Scrolling + 2896 + 1-2 + Mame + 380x224 + media/mixrbv2/bombkick.png + + + + bombkicka.zip + Bomb Kick (set 2) + A platform game where you use bombs to get rid of enemies. + 0.50 + 19980101T000000 + Yun Sung + Yun Sung + Platform / Fighter Scrolling + 2896 + 1-2 + bombkick.zip + Mame + 380x224 + media/mixrbv2/bombkick.png + + + + bomber.zip + Bomber (bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + bombrman.zip + Bomber Man (Japan) + In the future, fight competitions among robots are the most popular event. Bomber Man & King Bomber are the supreme champions, however King Bomber turns evil and attacks mankind with his loyal minions. Bomber Man & his brother Bomber Man 2 must defeat these henchmen and show King Bomber that crime just doesn't pay! Features cute graphics & music and insanely addictive gameplay. Have a blast, but don't get blasted yourself! + 0.70 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + dynablst.zip + Irem Classics + 320x240 + media/mixrbv2/dynablst.png + + + + bbmanwj.zip + Bomber Man World (Japan) + Bomber Man World is a strategic maze-based action game for up to four players in which the aim is to plant bombs to kill all of the enemies on the stage. Each of the game's grid-based stages are littered with both destructible and indestructible blocks, destructible blocks can be blown up to clear a path as well as to reveal a variety of different power-ups. + 0.70 + 19920101T000000 + Hudson + Irem + Action + 10 + 1-4 + bbmanw.zip + Irem Classics + 320x240 + media/mixrbv2/bbmanw.png + + + + bbmanwja.zip + Bomber Man World (Japan, revised sound hardware) + Bomber Man World is a strategic maze-based action game for up to four players in which the aim is to plant bombs to kill all of the enemies on the stage. Each of the game's grid-based stages are littered with both destructible and indestructible blocks, destructible blocks can be blown up to clear a path as well as to reveal a variety of different power-ups. + 0.70 + 19920101T000000 + Hudson + Irem + Action + 10 + 1-4 + bbmanw.zip + Irem Classics + 320x240 + media/mixrbv2/bbmanw.png + + + + bbmanw.zip + Bomber Man World / New Dyna Blaster - Global Quest + Bomber Man World is a strategic maze-based action game for up to four players in which the aim is to plant bombs to kill all of the enemies on the stage. Each of the game's grid-based stages are littered with both destructible and indestructible blocks, destructible blocks can be blown up to clear a path as well as to reveal a variety of different power-ups. + 0.70 + 19920101T000000 + Hudson + Irem + Action + 10 + 1-4 + Irem Classics + 320x240 + media/mixrbv2/bbmanw.png + + + + bjtwinp.zip + Bombjack Twin (prototype? with adult pictures, set 1) + Bomb Jack Twin is a direct sequel to the 1984 original and retains the same platform-based collect-the-bombs gameplay of its predecessor. + +Changes over the original game include a slightly faster playing tempo and the option for simultaneous two-player action. As with the prequel, extra points and bonuses can be earned by collecting bonus coins and bombs with their fuses still lit. Bomb Jack Twin also retains the 'Powerball' feature of its predecessor which, when collected, freezes the level's enemies for several seconds, allowing them to be destroyed. + +The way the sequel's levels are structured differs significantly from the original game. In "Bomb Jack", each screen was simply numbered sequentially and the background picture changed on every screen, but the stages in "Bomb Jack Twin" are grouped into 'rounds', each consisting of three screen layouts but retaining a single background picture for the duration of that round. + +Another new addition is the bonus screen. This appears every couple of rounds and players must try to collect all bombs on the screen within a tight time limit to earn extra bonus points. There are no enemies on the bonus screens and the background is plain black. + +As with the first game, "Bomb Jack Twin" takes place in different locations throughout the world. A map screen is displayed before the start of each new round showing the next location. The available locations are: Germany, Thailand, Nevada, Japan, England, Hong Kong and China. + 0.70 + 19930101T000000 + NMK + Platform / Run Jump + 2915 + 1-2 + bjtwin.zip + NMK + 270 + 384x224 + media/mixrbv2/bjtwin.png + + + + bjtwinpa.zip + Bombjack Twin (prototype? with adult pictures, set 2) + Bomb Jack Twin is a direct sequel to the 1984 original and retains the same platform-based collect-the-bombs gameplay of its predecessor. + +Changes over the original game include a slightly faster playing tempo and the option for simultaneous two-player action. As with the prequel, extra points and bonuses can be earned by collecting bonus coins and bombs with their fuses still lit. Bomb Jack Twin also retains the 'Powerball' feature of its predecessor which, when collected, freezes the level's enemies for several seconds, allowing them to be destroyed. + +The way the sequel's levels are structured differs significantly from the original game. In "Bomb Jack", each screen was simply numbered sequentially and the background picture changed on every screen, but the stages in "Bomb Jack Twin" are grouped into 'rounds', each consisting of three screen layouts but retaining a single background picture for the duration of that round. + +Another new addition is the bonus screen. This appears every couple of rounds and players must try to collect all bombs on the screen within a tight time limit to earn extra bonus points. There are no enemies on the bonus screens and the background is plain black. + +As with the first game, "Bomb Jack Twin" takes place in different locations throughout the world. A map screen is displayed before the start of each new round showing the next location. The available locations are: Germany, Thailand, Nevada, Japan, England, Hong Kong and China. + 0.70 + 19930101T000000 + NMK + Platform / Run Jump + 2915 + 1-2 + bjtwin.zip + NMK + 270 + 384x224 + media/mixrbv2/bjtwin.png + + + + bjtwin.zip + Bombjack Twin (set 1) + Bomb Jack Twin is a direct sequel to the 1984 original and retains the same platform-based collect-the-bombs gameplay of its predecessor. + +Changes over the original game include a slightly faster playing tempo and the option for simultaneous two-player action. As with the prequel, extra points and bonuses can be earned by collecting bonus coins and bombs with their fuses still lit. Bomb Jack Twin also retains the 'Powerball' feature of its predecessor which, when collected, freezes the level's enemies for several seconds, allowing them to be destroyed. + +The way the sequel's levels are structured differs significantly from the original game. In "Bomb Jack", each screen was simply numbered sequentially and the background picture changed on every screen, but the stages in "Bomb Jack Twin" are grouped into 'rounds', each consisting of three screen layouts but retaining a single background picture for the duration of that round. + +Another new addition is the bonus screen. This appears every couple of rounds and players must try to collect all bombs on the screen within a tight time limit to earn extra bonus points. There are no enemies on the bonus screens and the background is plain black. + +As with the first game, "Bomb Jack Twin" takes place in different locations throughout the world. A map screen is displayed before the start of each new round showing the next location. The available locations are: Germany, Thailand, Nevada, Japan, England, Hong Kong and China. + 0.70 + 19930101T000000 + NMK + Platform / Run Jump + 2915 + 1-2 + NMK + 270 + 384x224 + media/mixrbv2/bjtwin.png + + + + bjtwina.zip + Bombjack Twin (set 2) + Bomb Jack Twin is a direct sequel to the 1984 original and retains the same platform-based collect-the-bombs gameplay of its predecessor. + +Changes over the original game include a slightly faster playing tempo and the option for simultaneous two-player action. As with the prequel, extra points and bonuses can be earned by collecting bonus coins and bombs with their fuses still lit. Bomb Jack Twin also retains the 'Powerball' feature of its predecessor which, when collected, freezes the level's enemies for several seconds, allowing them to be destroyed. + +The way the sequel's levels are structured differs significantly from the original game. In "Bomb Jack", each screen was simply numbered sequentially and the background picture changed on every screen, but the stages in "Bomb Jack Twin" are grouped into 'rounds', each consisting of three screen layouts but retaining a single background picture for the duration of that round. + +Another new addition is the bonus screen. This appears every couple of rounds and players must try to collect all bombs on the screen within a tight time limit to earn extra bonus points. There are no enemies on the bonus screens and the background is plain black. + +As with the first game, "Bomb Jack Twin" takes place in different locations throughout the world. A map screen is displayed before the start of each new round showing the next location. The available locations are: Germany, Thailand, Nevada, Japan, England, Hong Kong and China. + 0.70 + 19930101T000000 + NMK + Platform / Run Jump + 2915 + 1-2 + bjtwin.zip + NMK + 270 + 384x224 + media/mixrbv2/bjtwin.png + + + + bcrusher.zip + Bone Crusher + Knuckle Joe is a 15-step, side-scrolling beat'em all. Our protagonist, Joe, must beat all his enemies and the various final bosses with their corresponding abilities. At the end of each boss, there are bonus stages where you can ride a motorcycle and shoot other riders. + +The controls consist of an 8-way directional lever and two action buttons. You can move to the left, to the right, jump (very fast), punch, kick and block (by pressing the two buttons). + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Beat'em Up + 1 + 1-2 + kncljoe.zip + Taito Classics + 240x256 + media/mixrbv2/kncljoe.png + + + + bongo.zip + Bongo + You play on the role of a hilarious tourist trapped in a cave and chased by a red dinosaur, you have to jump through different rock platforms and elude the lava, falling objects and the animals to pick six bonus objects without losing a life, as you advance in level you get to higher difficult areas where find and follow the caveman path to exit the cave alive, but before you must use an old cage to trap the annoying dinosaur. + 0.30 + 19830101T000000 + Jetsoft + Jetsoft + Platform / Run Jump Scrolling + 2897 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/bongo.png + + + + bonzeadvu.zip + Bonze Adventure (US) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + bonzeadv.zip + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + bonzeadv.zip + Bonze Adventure (World, Newer) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + bonzeadvo.zip + Bonze Adventure (World, Older) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + bonzeadv.zip + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + bonzeadvp.zip + Bonze Adventure (World, prototype) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + bonzeadv.zip + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + boobhack.zip + Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg)) + 'Kid's Horehore Daisakusen' is an action game that was released from Nichibutsu in 1987. +Kid, who has been drawn into the space-time labyrinth from the 23 century, fights to escape from a large track of the enemy in order to return to the present day. Players defeat enemies with dropping in holes with using items, to escape from the times, such as primitive times and the Edo era and contemporary. + 0.70 + 19870101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + horekid.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/horekid.png + + + + boomrang.zip + Boomer Rang'r / Genesis (set 1) + The player controls Whirley, a caveman armed with a boomerang whose quest it is to find a lost treasure in that prehistoric land. As he searches for the lost treasure, he must fight off enemy cavemen armed with clubs, dinosaurs and other prehistoric monsters. He must also look out for vultures who drop rocks. Whirley can also mount a dinosaur and ride it after he kills the caveman who is riding it, and whenever he is riding a dinosaur, he can have the dinosaur breathe fire for a weapon. + 0.70 + 19830101T000000 + Data East + Data East + Shooter + 2646 + Data East Classics + 270 + 256x240 + media/mixrbv2/boomrang.png + + + + boomranga.zip + Boomer Rang'r / Genesis (set 2) + The player controls Whirley, a caveman armed with a boomerang whose quest it is to find a lost treasure in that prehistoric land. As he searches for the lost treasure, he must fight off enemy cavemen armed with clubs, dinosaurs and other prehistoric monsters. He must also look out for vultures who drop rocks. Whirley can also mount a dinosaur and ride it after he kills the caveman who is riding it, and whenever he is riding a dinosaur, he can have the dinosaur breathe fire for a weapon. + 0.70 + 19830101T000000 + Data East + Data East + Shooter + 2646 + boomrang.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/boomrang.png + + + + borenchj.zip + Borench (Japan) + Borench is a puzzle game similar to "Marble Madness". The player must guide a ball to the goal of a certain level. You must do this by adding blocks to the squares to influence the ball's movement. You must avoid the edges to prevent the ball falling off. + 0.70 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1-2 + borench.zip + Sega Classics + 256x224 + media/mixrbv2/borench.png + + + + borench.zip + Borench (set 1) + Borench is a puzzle game similar to "Marble Madness". The player must guide a ball to the goal of a certain level. You must do this by adding blocks to the squares to influence the ball's movement. You must avoid the edges to prevent the ball falling off. + 0.70 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/borench.png + + + + borencha.zip + Borench (set 2) + Borench is a puzzle game similar to "Marble Madness". The player must guide a ball to the goal of a certain level. You must do this by adding blocks to the squares to influence the ball's movement. You must avoid the edges to prevent the ball falling off. + 0.70 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1-2 + borench.zip + Sega Classics + 256x224 + media/mixrbv2/borench.png + + + + botanic.zip + Botanic (English / Spanish) + Botanic is a maze game. + 0.10 + 19830101T000000 + Valadon Automation + Valadon Automation (Itisa license) + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/botanic.png + + + + botanicf.zip + Botanic (French) + Botanic is a maze game. + 0.10 + 19830101T000000 + Valadon Automation + Valadon Automation (Itisa license) + Action + 10 + 1-2 + botanic.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/botanic.png + + + + bottom9n.zip + Bottom of the Ninth (ver. N) + 1 or 2 players choose a ballclub from cities like New York, Chicago, Los Angeles, Atlanta, or Boston and compete either against the computer or each other in this baseball game. A wide variety of pitches can be thrown and batters can change their stance and angle of swing. + 0.50 + 19890101T000000 + Konami + Konami + Sports / Baseball + 2853 + 1-2 + bottom9.zip + Konami Classics + 288x224 + media/mixrbv2/bottom9.png + + + + bottom9.zip + Bottom of the Ninth (ver. T) + 1 or 2 players choose a ballclub from cities like New York, Chicago, Los Angeles, Atlanta, or Boston and compete either against the computer or each other in this baseball game. A wide variety of pitches can be thrown and batters can change their stance and angle of swing. + 0.50 + 19890101T000000 + Konami + Konami + Sports / Baseball + 2853 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/bottom9.png + + + + cbdash.zip + Boulder Dash (DECO Cassette) (US) + Rockford digs feverishly, as boulders crash down all around him, throughout 16 mystical caves and five levels of difficulty. + 0.50 + 19850101T000000 + Puzzle-Game + 26 + Data East Classics + 270 + 256x240 + media/mixrbv2/cbdash.png + + + + bballs.zip + Bouncing Balls + A puzzle game where you drop balls in a certain order to create a sum of numbers. + 19910101T000000 + Comad + Puzzle-Game / Fall + 2912 + 1-2 + Comad + 256x224 + media/mixrbv2/bballs.png + + + + bballsa.zip + Bouncing Balls (Adult) + A puzzle game where you drop balls in a certain order to create a sum of numbers. + 19910101T000000 + Comad + Puzzle-Game / Fall + 2912 + 1-2 + bballs.zip + Comad + 256x224 + media/mixrbv2/bballs.png + + + + bowlrama.zip + Bowl-O-Rama + Bowl-O-Rama has 3 different bowling variations to choose from 'Regulation Bowling', 'Flash-O-Matic', and 'BlackJack' + 0.50 + 19910101T000000 + Capcom + Capcom + Sports / Bowling + 2901 + 1-2 + Capcom Classics + 270 + 360x240 + media/mixrbv2/bowlrama.png + + + + boxyboya.zip + Boxy Boy (SB?) + Boxy Boy. is a puzzle game where you control a boy who tries to push the boxes onto the blue circles. + 0.50 + 19900101T000000 + Namco + Namco + Various + 39 + 1 + boxyboy.zip + Namco Classics + 288x224 + media/mixrbv2/boxyboy.png + + + + boxyboy.zip + Boxy Boy (World, SB2) + Boxy Boy. is a puzzle game where you control a boy who tries to push the boxes onto the blue circles. + 0.50 + 19900101T000000 + Namco + Namco + Various + 39 + 1 + Namco Classics + 288x224 + media/mixrbv2/boxyboy.png + + + + bradley.zip + Bradley Trainer + The gameplay is very much a simulation. The other tanks do not fire at you, and the only way to end the game is to run out of ammo or shoot a 'friendly' tank or helicopter. + 0.30 + 19800101T000000 + Atari + Race, Driving + 28 + 1 + Atari Classics + media/mixrbv2/bradley.png + + + + brain.zip + Brain + Brain is a side scrolling shooter in deep space with tough gameplay and eerie music and sounds. The game has alternate play modes where you must first fly a space craft and land on the planet surface at the end. After landing, you take control of the space ranger and must negotiate your way through caves and tunnels while obtaining computer disks. Each disk you collect brings you closer to discovering a hidden enemy. There are certain UFO's and aliens you can obtain them from, just watch the game demo's to see them. + 0.50 + 19860101T000000 + Coreland + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/brain.png + + + + brkthru.zip + Break Thru (US) + This is a horizontally scrolling shoot'em up in which the player drives an armoured car, equipped with a front-mounted gun and super jump capability. The aim of the game is to fight through five enemy-controlled zones to retrieve a stolen top-secret fighter plane, the PK430. + +The game's levels force-scroll from right to left, although the vehicle's speed - and rate of scrolling - can be slowed down and speeded up to some degree. As well as a forward-firing gun, the car can be made to jump huge distances. This is necessary to avoid background obstacles such as rock falls and broken bridges. It can also be used to avoid incoming enemy fire and vehicles. Land mines also litter the levels and need to be shot or avoided. + 0.70 + 19860101T000000 + Data East + Data East + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Data East Classics + 240x240 + media/mixrbv2/brkthru.png + + + + breakers.zip + Breakers + In Breakers, choose one of eight fighters who have their own moves and special attacks. There are eight stages in the game, and each stage has two battles. The object of each battle is to drain your opponent's energy in order to win the battle. If there is a draw, a third battle takes place. If the time limit expires, the player with the less energy loses the battle. Once you have completed all eight stages, you will face a opponent that is much tougher than previous ones. Different endings and in-game dialog are viewed depending on the character that you select. + 0.70 + 19960101T000000 + Visco + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/breakers.png + + + + breakrev.zip + Breakers Revenge + 8 initially selectable characters face off to become the Tae Kwon Do master! After defeating the absolutely WACKY Master Taekuk, he becomes selectable as well to face off against end boss Karate Kenji. + 0.75 + 19980101T000000 + Visco + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/breakrev.png + + + + breakrevbh.zip + Breakers Revenge (Boss Hack) + 8 initially selectable characters face off to become the Tae Kwon Do master! After defeating the absolutely WACKY Master Taekuk, he becomes selectable as well to face off against end boss Karate Kenji. + 0.75 + 19980101T000000 + Visco + SNK + Fight / Versus + 2885 + 1-2 + breakrev.zip + Neo-Geo + 320x224 + media/mixrbv2/breakrev.png + + + + brkrevext.zip + Breakers Revenge - Extra Mode (Hack) + 8 initially selectable characters face off to become the Tae Kwon Do master! After defeating the absolutely WACKY Master Taekuk, he becomes selectable as well to face off against end boss Karate Kenji. + 0.75 + 19980101T000000 + Visco + SNK + Fight / Versus + 2885 + 1-2 + breakrev.zip + Neo-Geo + 320x224 + media/mixrbv2/breakrev.png + + + + breywood.zip + Breywood (Japan revision 2) + Move your player through a maze-like level in this shoot'em up. Shoot enemies and collect treasures and keys. + 0.50 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + shackled.zip + Data East Classics + 256x240 + media/mixrbv2/shackled.png + + + + brix.zip + Brix + Perseverance will be overwhelming emotion game players as they move ZZYZZYXX up and down horizontal rows of alternating moving bricks to gather presents which will satisfy his love. Lola -- whose affection is not easily captured. ZZYZZYXX's vulnerability increases (as he collects gifts, as well as points) not only because of Lola's untouchable attitude, but because of obstacles such as rattifers trying to put an end to ZZYZZYXX's quest for Lola's love and affection. + +Intelligent as the rattifers may be, there are 2 defenses ZZYZZYXX can use to outsmart the destructive creatures. ZZYZZYXX can brick himself within a brick when he sees an approaching rattifer or ZZYZZYXX can move into the space where there is a gold helmet. The gold helmet intensifies ZZYZZYXX's goal to reach Lola by allowing ZZYZZYXX to use the helmet to enclose a rattifer or break through one brick which is obstructing ZZYZZYXX's course towards Lola. + +As irreproachable as Lola appears. Lola is overjoyed by ZZYZZYXX's success to retrieve enough presents and she whistles resoundingly to let ZZYZZYXX know. After ZZYZZYXX's triumphant deed for love. ZZYZZYXX becomes invincible, enabling him to elude the rattifers by imprisoning them within their spaces. + +Other dangers testing ZZYZZYXX's skillful maneuvering are falling bombs, rising missiles and cracked bricks, each capable of disintegrating ZZYZZYXX. + +As an added attraction, when a game player completes each level, there are animated cartoons depicting ZZYZZYXX's passionate desire to impress his love for Lola. Also delightful music throughout the game leaves the players humming and their foot tapping. + 0.70 + 19820101T000000 + Advanced Microcomputer Systems + Cinematronics + Action + 10 + 1-2 + zzyzzyxx.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/zzyzzyxx.png + + + + bronx.zip + Bronx + Cycle Shooting (c) 1986 Taito. - TECHNICAL - Prom Stickers : A97 Main CPU : (2x) Z80 (@ 4 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : (2x) AY8910 (@ 2 Mhz), MSM5232 (@ 2 Mhz) Players : 1 Buttons : 1 - TRIVIA - Cycle Shooting was released in July 19 + 19860101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + cyclshtg.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/cyclshtg.png + + + + bubl2000.zip + Bubble 2000 + A "Puzzle Bobble"-like game where you get nude pictures of women with every level you complete. + 0.50 + 19980101T000000 + Tuning + Puzzle-Game / Throw + 2923 + 1-2 + NMK + 256x224 + media/mixrbv2/bubl2000.png + + + + bubl2000a.zip + Bubble 2000 V1.2 + A "Puzzle Bobble"-like game where you get nude pictures of women with every level you complete. + 0.50 + 19980101T000000 + Tuning + Puzzle-Game / Throw + 2923 + 1-2 + bubl2000.zip + NMK + 256x224 + media/mixrbv2/bubl2000.png + + + + bub68705.zip + Bubble Bobble (boolteg with 68705, set 1) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bub68705a.zip + Bubble Bobble (boolteg with 68705, set 2) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublboblb.zip + Bubble Bobble (for Bobble Bobble PCB) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublbobl1.zip + Bubble Bobble (Japan, Ver 0.0) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublbobl.zip + Bubble Bobble (Japan, Ver 0.1) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublboblp.zip + Bubble Bobble (prototype on Tokio hardware) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublboblu.zip + Bubble Bobble (Ultra Version, Hack) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublboblr1.zip + Bubble Bobble (US, Ver 1.0) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublboblr.zip + Bubble Bobble (US, Ver 5.1) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublcave10.zip + Bubble Bobble: Lost Cave V1.0 + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublcave11.zip + Bubble Bobble: Lost Cave V1.1 + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublcave.zip + Bubble Bobble: Lost Cave V1.2 + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + boblcave.zip + Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + bublbust.zip + Bubble Buster (USA, B-System) + 19940101T000000 + Mame + 320x224 + media/mixrbv2/bublbust.png + + + bublpong.zip + Bubble Pong Pong + Miss Bubble II is an adult bootleg of "Bubble Bobble". It features 100 single screen levels with photographic semi-nude images for backgrounds. The background changes every three levels. + +The player takes on the role of one of two yellow and green colored mice. Armed only with the ability to blow bubbles and jump, the objective is to trap and kill all of your enemies within the bubbles to advance to the next stage. The bubbles can also be used as temporary platforms, to help the mice reach previously inaccessible areas of a level. If a player is touched by an enemy then the player dies. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + +On many levels, special bubbles appear such as water filled bubbles appear. These can be burst by players to release their contents and destroy enemies. The water bubble releases a torrent of water that will quickly flow down the platforms to the bottom of the screen. Any enemies caught in the flow are killed. + +Bubbles containing letters also appear. The aim is to collect the letters needed to spell the word along the side of the screen. + +Once the player loses all of his lives the game is over. Upon continuing, all remaining enemies return to their un-angered forms. + 0.70 + 19960101T000000 + Alpha Co. + Alpha Co. + Platform / Run Jump + 2915 + 1-2 + missb2.zip + Alpha Denshi Co. + 256x224 + media/mixrbv2/missb2.png + + + + bubsys.zip + Bubble System BIOS + 19850101T000000 + Konami + Various + 39 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/bubsys.png + + + bubbletrj.zip + Bubble Trouble - Golly! Ghost! 2 (Japan, Rev C) + Use your gun to shoot fish, crabs and other sea creatures at the bottom of the ocean. This is a sequel to "Golly! Ghost!" that is themed around sunken treasure. It cleverly projects several scenes of video animation onto a real 3-D diorama backdrop. + 0.40 + 19920101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + bubbletr.zip + Namco Classics + 288x224 + media/mixrbv2/bubbletr.png + + + + bubbletr.zip + Bubble Trouble - Golly! Ghost! 2 (World, Rev B) + Use your gun to shoot fish, crabs and other sea creatures at the bottom of the ocean. This is a sequel to "Golly! Ghost!" that is themed around sunken treasure. It cleverly projects several scenes of video animation onto a real 3-D diorama backdrop. + 0.40 + 19920101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/bubbletr.png + + + + bubbles.zip + Bubbles + In Bubbles you control a cartoon soap bubble inside a large sink. The object of the game is clean out the sink. You can safely scrub away ants, grease, and crumbs all the time. But sponges, roaches, brushes, and razor blades are deadly to a small bubble. Don't worry too much though, because your bubble grows in size as it swallows up the dirt in the sink. When it gets big enough it will be able to hit brushes and sponges (but still not razors). + 0.70 + 19820101T000000 + Williams + Williams + Action + 10 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/bubbles.png + + + + bubblesp.zip + Bubbles (prototype version) + In Bubbles you control a cartoon soap bubble inside a large sink. The object of the game is clean out the sink. You can safely scrub away ants, grease, and crumbs all the time. But sponges, roaches, brushes, and razor blades are deadly to a small bubble. Don't worry too much though, because your bubble grows in size as it swallows up the dirt in the sink. When it gets big enough it will be able to hit brushes and sponges (but still not razors). + 0.70 + 19820101T000000 + Williams + Williams + Action + 10 + 1-2 + bubbles.zip + Midway Classics + 292x240 + media/mixrbv2/bubbles.png + + + + bubblesr.zip + Bubbles (Solid Red label) + In Bubbles you control a cartoon soap bubble inside a large sink. The object of the game is clean out the sink. You can safely scrub away ants, grease, and crumbs all the time. But sponges, roaches, brushes, and razor blades are deadly to a small bubble. Don't worry too much though, because your bubble grows in size as it swallows up the dirt in the sink. When it gets big enough it will be able to hit brushes and sponges (but still not razors). + 0.70 + 19820101T000000 + Williams + Williams + Action + 10 + 1-2 + bubbles.zip + Midway Classics + 292x240 + media/mixrbv2/bubbles.png + + + + bucaner.zip + Buccaneer (set 1) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + bucanera.zip + Buccaneer (set 2) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + buccanrs.zip + Buccaneers (set 1) + A horizontal-scrolling fighting/adventure game where the player controls a swashbuckling sailor who fights pirates through the town, the castle and the castle dungeons to rescue his fellow sailors from a mad pirate captain + 0.20 + 19890101T000000 + Duintronic + Duintronic + Beat'em Up + 1 + 1-2 + Irem Classics + 256x256 + media/mixrbv2/buccanrs.png + + + + buccanrsa.zip + Buccaneers (set 2) + A horizontal-scrolling fighting/adventure game where the player controls a swashbuckling sailor who fights pirates through the town, the castle and the castle dungeons to rescue his fellow sailors from a mad pirate captain + 0.20 + 19890101T000000 + Duintronic + Duintronic + Beat'em Up + 1 + 1-2 + buccanrs.zip + Irem Classics + 256x256 + media/mixrbv2/buccanrs.png + + + + buccanrsb.zip + Buccaneers (set 3, harder) + A horizontal-scrolling fighting/adventure game where the player controls a swashbuckling sailor who fights pirates through the town, the castle and the castle dungeons to rescue his fellow sailors from a mad pirate captain + 0.20 + 19890101T000000 + Duintronic + Duintronic + Beat'em Up + 1 + 1-2 + buccanrs.zip + Irem Classics + 256x256 + media/mixrbv2/buccanrs.png + + + + buckrog.zip + Buck Rogers: Planet of Zoom + Buck Rogers: Planet of Zoom is a forward-scrolling rail shooter where the user controls a spaceship in a behind-the-back third-person perspective that must destroy enemy ships and avoid obstacles. The game was notable for its fast pseudo 3-D scaling and detailed sprites. The game would later go on to influence the 1985 Sega hit Space Harrier. Buck is never seen in the game, except presumably in the illustration on the side of the arcade cabinet, and its only real connections to Buck Rogers are the use of the name and the outer space setting. In Japan, the game was known as Zoom 909. + 0.50 + 19820101T000000 + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + Sega Classics + 512x224 + media/mixrbv2/buckrog.png + + + + buckrogn.zip + Buck Rogers: Planet of Zoom (not encrypted, set 1) + Buck Rogers: Planet of Zoom is a forward-scrolling rail shooter where the user controls a spaceship in a behind-the-back third-person perspective that must destroy enemy ships and avoid obstacles. The game was notable for its fast pseudo 3-D scaling and detailed sprites. The game would later go on to influence the 1985 Sega hit Space Harrier. Buck is never seen in the game, except presumably in the illustration on the side of the arcade cabinet, and its only real connections to Buck Rogers are the use of the name and the outer space setting. In Japan, the game was known as Zoom 909. + 0.50 + 19820101T000000 + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + buckrog.zip + Sega Classics + 512x224 + media/mixrbv2/buckrog.png + + + + buckrogn2.zip + Buck Rogers: Planet of Zoom (not encrypted, set 2) + Buck Rogers: Planet of Zoom is a forward-scrolling rail shooter where the user controls a spaceship in a behind-the-back third-person perspective that must destroy enemy ships and avoid obstacles. The game was notable for its fast pseudo 3-D scaling and detailed sprites. The game would later go on to influence the 1985 Sega hit Space Harrier. Buck is never seen in the game, except presumably in the illustration on the side of the arcade cabinet, and its only real connections to Buck Rogers are the use of the name and the outer space setting. In Japan, the game was known as Zoom 909. + 0.50 + 19820101T000000 + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + buckrog.zip + Sega Classics + 512x224 + media/mixrbv2/buckrog.png + + + + buckyaa.zip + Bucky O'Hare (ver AA) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + bucky.zip + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + buckyaab.zip + Bucky O'Hare (ver AAB) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + bucky.zip + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + buckyea.zip + Bucky O'Hare (ver EA) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + bucky.zip + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + bucky.zip + Bucky O'Hare (ver EAB) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + buckyjaa.zip + Bucky O'Hare (ver JAA) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + bucky.zip + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + buckyuab.zip + Bucky O'Hare (ver UAB) + Bucky O'Hare is a scrolling shoot-em-up for up to four players based on the TV cartoon series Bucky O'Hare and the Toad Wars. Players must stop the Toad Empire from invading their home planets in the 'Aniverse' and enslaving their people. To achieve their goal they must shoot their way through an army of brainwashed toads to destroy their evil leader, a computer program known as 'KOMPLEX' and release the 'Interplanetary Life Force.' + +Players choose to play as either Blinky (a one-eyed android), Bucky (the heroic rabbit captain), Dead-Eye Duck (a four-armed mallard) or Jenny (an 'Aldebaran cat' and telepath). Differences between the characters are purely visual as each plays the same. + 0.70 + 19920101T000000 + Konami + Tatsumi + Shoot'em Up + 79 + 1-4 + bucky.zip + Konami Classics + 384x224 + media/mixrbv2/bucky.png + + + + buggychl.zip + Buggy Challenge + Buggy Challenge is a chase-view driving game. + 0.50 + 19840101T000000 + Taito + Taito + Race 3rd Pers. view + 2888 + 1 + Taito Classics + 270 + 256x224 + media/mixrbv2/buggychl.png + + + + buggychlt.zip + Buggy Challenge (Tecfri) + Buggy Challenge is a chase-view driving game. + 0.50 + 19840101T000000 + Taito + Taito + Race 3rd Pers. view + 2888 + 1 + buggychl.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/buggychl.png + + + + bulletd.zip + Bullet (FD1094 317-0041 decrypted) + Bullet is an overhead run'n'gun twin-stick shooter for up to three players, set in a dark future. The left joystick will move your character around while the right joystick will make your character fire in the pressed direction, allowing you to move and shoot freely in different directions. + 0.30 + 19870101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + bullet.zip + Sega Classics + 320x224 + media/mixrbv2/bullet.png + + + + bullet.zip + Bullet (FD1094 317-0041) + Bullet is an overhead run'n'gun twin-stick shooter for up to three players, set in a dark future. The left joystick will move your character around while the right joystick will make your character fire in the pressed direction, allowing you to move and shoot freely in different directions. + 0.30 + 19870101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + Sega Classics + 320x224 + media/mixrbv2/bullet.png + + + + bullfgt.zip + Bullfight (315-5065) + You play as a torero in the bullring, and the controls comprise a joystick and two buttons. Obviously, the joystick moves you around, while the buttons are for cape moving and stabbing, respectively. You score points for leading the bull with your cape, stabbing the bull, leading it into a wall, opening a wound on its back and killing it. Upon killing the bull, you go onto the next stage, with progressively fiercer bulls, and eventually, a second bull gets added to the mix. + 0.50 + 19840101T000000 + Coreland + SEGA + Sports + 685 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/bullfgt.png + + + + bnj.zip + Bump 'n' Jump + Bump 'n' Jump (Burnin' Rubber in Japan) is an overhead driving game where you jump or bump enemy cars for points. + 0.70 + 19820101T000000 + Data East + Data East + Race, Driving / Race + 2924 + 1-2 + brubber.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/brubber.png + + + + cbnj.zip + Bump 'n' Jump (DECO Cassette) (US) + Released in Japanese arcades back in 1982, Burnin' Rubber was one of numerous top-down racers vying for the quarters of the coin-op crowd back in the golden age of gaming. Players engage in high-speed races against a pack of copy-paste competitors, ramming their opposition off-road while utilising the buggy's leap ability (Yeah, sure, why not?) to get out of sticky situations. + 0.70 + 19820101T000000 + Data East + Data East + Race, Driving + 28 + 1-2 + cburnrub.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cburnrub.png + + + + btime.zip + Burger Time (Data East set 1) + A platform game in which one or two players take on the role of burger chef 'Peter Pepper'. The chef must create a set number of burgers per level by collecting the separate ingredients needed to make each one (two pieces of bun, the burger itself and/or a garnish, such as lettuce or cheese). + +Each screen is made up of platforms joined by connecting ladders. At the bottom of the screen are a number of empty plates while the burger ingredients lay across the platforms directly above the plates. The chef must walk across the entire width of the ingredients to make them drop to the platform below. A burger is only completed once all of its ingredients have been dropped onto the corresponding plate at the bottom of the screen. + +The chef's efforts are hampered by the rogue ingredients that are constantly chasing him. They are called 'Mr. Hot Dog', 'Mr. Egg' and 'Mr. Pickle'. Any contact with them results in the loss of a life. The chef can temporarily freeze the enemies by throwing pepper at them. He only carries a limited amount of pepper but this can be replenished by collecting the bonus food items that randomly appear (ice cream cones, coffee, and fries). In addition to the pepper, any enemies located on a platform below the chef can be killed by dropping an available burger ingredient on top of them. . + 0.90 + 19820101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/btime.png + + + + btime2.zip + Burger Time (Data East set 2) + A platform game in which one or two players take on the role of burger chef 'Peter Pepper'. The chef must create a set number of burgers per level by collecting the separate ingredients needed to make each one (two pieces of bun, the burger itself and/or a garnish, such as lettuce or cheese). + +Each screen is made up of platforms joined by connecting ladders. At the bottom of the screen are a number of empty plates while the burger ingredients lay across the platforms directly above the plates. The chef must walk across the entire width of the ingredients to make them drop to the platform below. A burger is only completed once all of its ingredients have been dropped onto the corresponding plate at the bottom of the screen. + +The chef's efforts are hampered by the rogue ingredients that are constantly chasing him. They are called 'Mr. Hot Dog', 'Mr. Egg' and 'Mr. Pickle'. Any contact with them results in the loss of a life. The chef can temporarily freeze the enemies by throwing pepper at them. He only carries a limited amount of pepper but this can be replenished by collecting the bonus food items that randomly appear (ice cream cones, coffee, and fries). In addition to the pepper, any enemies located on a platform below the chef can be killed by dropping an available burger ingredient on top of them. . + 0.90 + 19820101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + btime.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/btime.png + + + + btime3.zip + Burger Time (Data East USA) + A platform game in which one or two players take on the role of burger chef 'Peter Pepper'. The chef must create a set number of burgers per level by collecting the separate ingredients needed to make each one (two pieces of bun, the burger itself and/or a garnish, such as lettuce or cheese). + +Each screen is made up of platforms joined by connecting ladders. At the bottom of the screen are a number of empty plates while the burger ingredients lay across the platforms directly above the plates. The chef must walk across the entire width of the ingredients to make them drop to the platform below. A burger is only completed once all of its ingredients have been dropped onto the corresponding plate at the bottom of the screen. + +The chef's efforts are hampered by the rogue ingredients that are constantly chasing him. They are called 'Mr. Hot Dog', 'Mr. Egg' and 'Mr. Pickle'. Any contact with them results in the loss of a life. The chef can temporarily freeze the enemies by throwing pepper at them. He only carries a limited amount of pepper but this can be replenished by collecting the bonus food items that randomly appear (ice cream cones, coffee, and fries). In addition to the pepper, any enemies located on a platform below the chef can be killed by dropping an available burger ingredient on top of them. . + 0.90 + 19820101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + btime.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/btime.png + + + + cbtime.zip + Burger Time (DECO Cassette) (US) + The player is chef Peter Pepper, who must walk over hamburger ingredients located across a maze of platforms while avoiding pursuing characters. The game's original Japanese title, Hamburger , was changed to BurgerTime before its introduction to the United States. + 0.90 + 19830101T000000 + Data East Classics + 270 + 256x240 + media/mixrbv2/cbtime.png + + + + btimem.zip + Burger Time (Midway) + A platform game in which one or two players take on the role of burger chef 'Peter Pepper'. The chef must create a set number of burgers per level by collecting the separate ingredients needed to make each one (two pieces of bun, the burger itself and/or a garnish, such as lettuce or cheese). + +Each screen is made up of platforms joined by connecting ladders. At the bottom of the screen are a number of empty plates while the burger ingredients lay across the platforms directly above the plates. The chef must walk across the entire width of the ingredients to make them drop to the platform below. A burger is only completed once all of its ingredients have been dropped onto the corresponding plate at the bottom of the screen. + +The chef's efforts are hampered by the rogue ingredients that are constantly chasing him. They are called 'Mr. Hot Dog', 'Mr. Egg' and 'Mr. Pickle'. Any contact with them results in the loss of a life. The chef can temporarily freeze the enemies by throwing pepper at them. He only carries a limited amount of pepper but this can be replenished by collecting the bonus food items that randomly appear (ice cream cones, coffee, and fries). In addition to the pepper, any enemies located on a platform below the chef can be killed by dropping an available burger ingredient on top of them. . + 0.90 + 19820101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + btime.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/btime.png + + + + burglarx.zip + Burglar X + A maze game. + 0.70 + 19970101T000000 + Unicorn Group + Unico + Action + 10 + 1-2 + Mame + 384x224 + media/mixrbv2/burglarx.png + + + + brubber.zip + Burnin' Rubber + Bump 'n' Jump (Burnin' Rubber in Japan) is an overhead driving game where you jump or bump enemy cars for points. + 0.70 + 19820101T000000 + Data East + Data East + Race, Driving / Race + 2924 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/brubber.png + + + + cburnrub.zip + Burnin' Rubber (DECO Cassette) (US) (set 1) + Released in Japanese arcades back in 1982, Burnin' Rubber was one of numerous top-down racers vying for the quarters of the coin-op crowd back in the golden age of gaming. Players engage in high-speed races against a pack of copy-paste competitors, ramming their opposition off-road while utilising the buggy's leap ability (Yeah, sure, why not?) to get out of sticky situations. + 0.70 + 19820101T000000 + Data East + Data East + Race, Driving + 28 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cburnrub.png + + + + cburnrub2.zip + Burnin' Rubber (DECO Cassette) (US) (set 2) + Released in Japanese arcades back in 1982, Burnin' Rubber was one of numerous top-down racers vying for the quarters of the coin-op crowd back in the golden age of gaming. Players engage in high-speed races against a pack of copy-paste competitors, ramming their opposition off-road while utilising the buggy's leap ability (Yeah, sure, why not?) to get out of sticky situations. + 0.70 + 19820101T000000 + Data East + Data East + Race, Driving + 28 + 1-2 + cburnrub.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cburnrub.png + + + + burningfh.zip + Burning Fight (NGH-018)(US) + The Castella family from the Metro City started ruining the peaceful city of Osaka with the violent Japanese group, "Heiwa-gumi". To stop the fight, Metro police detectives dispatched two dangerous characters, Duke and Billy, to Japan. With the support of the famous Japanese detective Ryu, they decided to rush into the enemy's fortress. Ruthless violence in the neon lights of Osaka. Will there be an end to this war? + +Burning Fight is a side-scrolling street-fighting game similar to Final Fight. As Duke, Billy, or Ryu, you must fight your way through the various locations in Osaka. At the start of the game, you can only use your fists to deal with gangs, but by by breaking things like phone booths and street signs along the way, you can get new weapons and more health. At the end of each location, you will have to defeat a boss in order to continue the mission. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + burningf.zip + Neo-Geo + 320x224 + media/mixrbv2/burningf.png + + + + burningf.zip + Burning Fight (NGM-018)(NGH-018) + The Castella family from the Metro City started ruining the peaceful city of Osaka with the violent Japanese group, "Heiwa-gumi". To stop the fight, Metro police detectives dispatched two dangerous characters, Duke and Billy, to Japan. With the support of the famous Japanese detective Ryu, they decided to rush into the enemy's fortress. Ruthless violence in the neon lights of Osaka. Will there be an end to this war? + +Burning Fight is a side-scrolling street-fighting game similar to Final Fight. As Duke, Billy, or Ryu, you must fight your way through the various locations in Osaka. At the start of the game, you can only use your fists to deal with gangs, but by by breaking things like phone booths and street signs along the way, you can get new weapons and more health. At the end of each location, you will have to defeat a boss in order to continue the mission. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/burningf.png + + + + burningfpa.zip + Burning Fight (prototype, near final, ver 23.3, 910326) + The Castella family from the Metro City started ruining the peaceful city of Osaka with the violent Japanese group, "Heiwa-gumi". To stop the fight, Metro police detectives dispatched two dangerous characters, Duke and Billy, to Japan. With the support of the famous Japanese detective Ryu, they decided to rush into the enemy's fortress. Ruthless violence in the neon lights of Osaka. Will there be an end to this war? + +Burning Fight is a side-scrolling street-fighting game similar to Final Fight. As Duke, Billy, or Ryu, you must fight your way through the various locations in Osaka. At the start of the game, you can only use your fists to deal with gangs, but by by breaking things like phone booths and street signs along the way, you can get new weapons and more health. At the end of each location, you will have to defeat a boss in order to continue the mission. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + burningf.zip + Neo-Geo + 320x224 + media/mixrbv2/burningf.png + + + + burningfpb.zip + Burning Fight (prototype, newer, V07) + The Castella family from the Metro City started ruining the peaceful city of Osaka with the violent Japanese group, "Heiwa-gumi". To stop the fight, Metro police detectives dispatched two dangerous characters, Duke and Billy, to Japan. With the support of the famous Japanese detective Ryu, they decided to rush into the enemy's fortress. Ruthless violence in the neon lights of Osaka. Will there be an end to this war? + +Burning Fight is a side-scrolling street-fighting game similar to Final Fight. As Duke, Billy, or Ryu, you must fight your way through the various locations in Osaka. At the start of the game, you can only use your fists to deal with gangs, but by by breaking things like phone booths and street signs along the way, you can get new weapons and more health. At the end of each location, you will have to defeat a boss in order to continue the mission. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + burningf.zip + Neo-Geo + 320x224 + media/mixrbv2/burningf.png + + + + burningfp.zip + Burning Fight (prototype, older) + The Castella family from the Metro City started ruining the peaceful city of Osaka with the violent Japanese group, "Heiwa-gumi". To stop the fight, Metro police detectives dispatched two dangerous characters, Duke and Billy, to Japan. With the support of the famous Japanese detective Ryu, they decided to rush into the enemy's fortress. Ruthless violence in the neon lights of Osaka. Will there be an end to this war? + +Burning Fight is a side-scrolling street-fighting game similar to Final Fight. As Duke, Billy, or Ryu, you must fight your way through the various locations in Osaka. At the start of the game, you can only use your fists to deal with gangs, but by by breaking things like phone booths and street signs along the way, you can get new weapons and more health. At the end of each location, you will have to defeat a boss in order to continue the mission. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + burningf.zip + Neo-Geo + 320x224 + media/mixrbv2/burningf.png + + + + burnforc.zip + Burning Force (Japan, new version (Rev C)) + Burning Force is a chase-view shoot'em up where you battle high-tech enemies on a futuristic motor scooter. + +The gameplay is similar to that of Sega's Space Harrier, but the worlds are divided into four areas and there is no vertical mobility. In the first two sections the player controls Hiromi on the airbike, which can move to the left and right, as well as braking and accelerating. The airbike can also fire bullets and missiles at the enemies. The third area of every world is a boss area. The airbike will be transformed into a flying ship which can move in all directions. The fourth area of each world is a bonus stage and the player has to collect as many spheres as possible for bonus points. + 0.50 + 19890101T000000 + Namco + Namco + Shooter / Vehicle, 3rd person + 2910 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/burnforc.png + + + + burnforco.zip + Burning Force (Japan, old version) + Burning Force is a chase-view shoot'em up where you battle high-tech enemies on a futuristic motor scooter. + +The gameplay is similar to that of Sega's Space Harrier, but the worlds are divided into four areas and there is no vertical mobility. In the first two sections the player controls Hiromi on the airbike, which can move to the left and right, as well as braking and accelerating. The airbike can also fire bullets and missiles at the enemies. The third area of every world is a boss area. The airbike will be transformed into a flying ship which can move in all directions. The fourth area of each world is a bonus stage and the player has to collect as many spheres as possible for bonus points. + 0.50 + 19890101T000000 + Namco + Namco + Shooter / Vehicle, 3rd person + 2910 + 1-2 + burnforc.zip + Namco Classics + 288x224 + media/mixrbv2/burnforc.png + + + + bbros.zip + Buster Bros. (USA) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + dogfgtj.zip + But-ten Ohara's Suit-Cha Luck-a Dog-Fight (Japan) + A very funny shoot'em up game. + +Hop to New Plane: If your plane becomes damaged, you don't need to waste a parachute to reach the ground for a replacement. You can jump to a new plane by simply flying very close, usually right under or on top of your plane and pressing the jump button. If the other plane is in just the right spot, you'll make it, but otherwise you'll fall. + +Destroy UFOs the Easy Way: When you reach the UFO wave of the battle you're in, take your plane down as close to the ground as you can without crashing. Chances are, thanks to the circular pattern of their flight, the UFOs will arc over you and smash themselves into the ground. + +Score Big Points: While on the ground, instead of climbing right onto your replacement plane, jump over it. For each time you do this, you'll score 1,000 points. As long as you're careful, you can get a lot of points this way. +Enemy Ran Away!!: After destroying 20 aircraft in a wave, the enemy retreats and you are awarded with 20,000 points and a free parachute! + 19840101T000000 + Data East + Tecmo + Shooter / Plane + 2928 + 1-2 + dogfgt.zip + Technos + 256x240 + media/mixrbv2/dogfgt.png + + + + butasanj.zip + Butasan (Japan, Japanese) + Control a pig and blow up other pigs. The simple gameplay is as tasty as a bacon sandwich! Vegetarians beware! :) + 0.30 + 19870101T000000 + NMK + Jaleco + Shooter / Run and Gun + 2903 + 1-2 + butasan.zip + NMK + 256x240 + media/mixrbv2/butasan.png + + + + butasan.zip + Butasan - Pig's & Bomber's (Japan, English) + Control a pig and blow up other pigs. The simple gameplay is as tasty as a bacon sandwich! Vegetarians beware! :) + 0.30 + 19870101T000000 + NMK + Jaleco + Shooter / Run and Gun + 2903 + 1-2 + NMK + 256x240 + media/mixrbv2/butasan.png + + + + buzzard.zip + Buzzard + Gyrodine is a vertically scrolling shoot 'em up. + 0.60 + 19840101T000000 + Crux + Taito + Shoot'em Up + 79 + 1-2 + gyrodine.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/gyrodine.png + + + + bygone.zip + Bygone + Bygone is an innovative and fun platform game. + +The player controls a small blue Slinky robot, jumping while adhering and moving through a series of natural platforms levels and must eliminate different kinds of enemy creatures and catch special robotics parts to become different types of robot, always with the possibility once transformed of returning it to its bygone form and try different combinations of transformation, to reach higher zones and defeat the boss, a stone monster that must be shoot several times in his eye without touch it, to go to next levels. + 0.30 + 19850101T000000 + Taito + Taito + Shooter / Horizontal + 2876 + 1-2 + Taito Classics + 240x224 + media/mixrbv2/bygone.png + + + + cchip.zip + C-Chip Internal ROM + Mame + media/mixrbv2/cchip.png + + + cabala.zip + Cabal (korea?, Joystick) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + cabal.zip + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cabalng.zip + Cabal (Neo-Geo Conversion) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter + 2646 + 1-2 + Mame + 256x224 + media/mixrbv2/cabalng.png + + + + cabalukj.zip + Cabal (UK, Joystick) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + cabal.zip + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cabaluk.zip + Cabal (UK, Trackball) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + cabal.zip + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cabalus.zip + Cabal (US set 1, Trackball) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + cabal.zip + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cabalus2.zip + Cabal (US set 2, Trackball) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + cabal.zip + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cabal.zip + Cabal (World, Joystick) + Cabal is a war themed shoot-em-up with one or simultaneous two-player gameplay in which two unnamed commandos must battle through five different stages - each containing four screens of play - to reach and defeat an evil dictator. + +The game is an into-the-screen shooter with the action viewed from an over-the-shoulder perspective. The commandos can move left and right to avoid incoming fire while the enemies themselves are targeted by moving an on-screen cross-hair over them and pressing fire. If the fire button is held down, the commando remains static, allowing for more accurate targeting of the cross-hair. While static, the commandos are vulnerable to incoming enemy fire. + +Initially, the commandos are armed with only a standard single-shot gun (albeit with unlimited-ammunition) and a limited number of grenades, but additional grenades and weapon power-ups can be earned as play progresses. + +As well as enemy troops, vehicles such as tanks, armoured cars and helicopters also appear and take numerous shots to destroy. When destroyed or killed, some on-screen targets release points bonuses and weapon power-ups that drop to the bottom of the screen and can be picked up by the commandos. Weapon power-ups include additional grenades, a rapid-fire machine and an automatic shotgun, which has a slightly lower firing rate but has a larger targeting cross-hair, allowing it to strike a wider area with each shot. + +Each of the game's screens is littered with buildings and barricades that can also be destroyed. This removes enemy cover as well as earning players bonus points. + 0.60 + 19880101T000000 + Tad Corporation + Tad Corporation + Shooter / 3rd person + 2899 + 1-2 + Mame + 256x224 + media/mixrbv2/cabal.png + + + + cachat.zip + Cachat (Japan) + Cachat is a very challenging puzzle game where you must complete a line from one electrode along the sides to another, same side or other side. Blocks fall from the top of the screen, but if they reach the top of the playing area, the game is over. This mind-blowing fast game is very highly addictive. The gameplay is quite easy but requires a lot of attention. + 0.50 + 19930101T000000 + Taito + Taito + Puzzle-Game / Fall + 2912 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/cachat.png + + + + cactus.zip + Cactus (bootleg of Saboten Bombers) + A platform game with gameplay similar to Snow Bros. and Bubble Bobble. + +Saboten Bombers is a single screen platform game. The gameplay consists of throwing bombs at the enemies, and avoiding being hit by the enemy bombs. There are a variety of enemies and colorful backgrounds. The game has over 50 levels, and also a versus mode. The game has many collectables, the most notable of which is the cake which gives the player an extra life after collecting 8 pieces. + 0.50 + 19920101T000000 + Platform / Run Jump + 2915 + 1-2 + sabotenb.zip + NMK + 384x224 + media/mixrbv2/sabotenb.png + + + + cadashf.zip + Cadash (France) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashgo.zip + Cadash (Germany) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashg.zip + Cadash (Germany, version 1) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashi.zip + Cadash (Italy) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashjo.zip + Cadash (Japan, oldest version) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashj1.zip + Cadash (Japan, version 1) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashj.zip + Cadash (Japan, version 2) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashs.zip + Cadash (Spain, version 1) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashu1.zip + Cadash (US, version 1?) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashu.zip + Cadash (US, version 2) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadash.zip + Cadash (World) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + cadashp.zip + Cadash (World, prototype) + Four great heroes: a fighter, a wizard, a cleric and a ninja go on a quest to rescue the captured princess. This Taito adventure game feature all the ingredients of a traditional role-playing game (stats, exp, buy upgrade in store...). + 0.70 + 19890101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + cadash.zip + Taito Classics + 320x240 + media/mixrbv2/cadash.png + + + + dinou.zip + Cadillacs & Dinosaurs (930201 USA) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dino.zip + Cadillacs & Dinosaurs (930201 World) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinoa.zip + Cadillacs & Dinosaurs (930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinore.zip + Cadillacs & Dinosaurs Readjusted (Hack, v1.0) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinosyn.zip + Cadillacs and Dinosaurs (30th-Anniversary, Hack) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinopic.zip + Cadillacs and Dinosaurs (bootleg set 1 (with PIC16c57), 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinopic2.zip + Cadillacs and Dinosaurs (bootleg set 2 (with PIC16c57), 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinopic3.zip + Cadillacs and Dinosaurs (bootleg set 3 (with PIC16c57), 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinoh.zip + Cadillacs and Dinosaurs (bootleg set 3, 930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinopic4.zip + Cadillacs and Dinosaurs (bootleg set 4 (with PIC16c57), 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinopic5.zip + Cadillacs and Dinosaurs (bootleg set 5 (with PIC16c57), 930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinohc.zip + Cadillacs and Dinosaurs (Chinese bootleg, 930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinods.zip + Cadillacs and Dinosaurs (God of War Edition, Hack) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinogae.zip + Cadillacs and Dinosaurs (GOTVG 10th Anniversary Edition, Hack) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinoeh.zip + Cadillacs and Dinosaurs (hack, 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinot.zip + Cadillacs and Dinosaurs Turbo (bootleg set 1, 930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinotpic.zip + Cadillacs and Dinosaurs Turbo (bootleg set 2 (with PIC16c57), 930201 etc) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dinoj.zip + Cadillacs Kyouryuu-Shinseiki (930201 Japan) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + calibr50.zip + Caliber 50 + Caliber Fifty is a multi-directional scrolling shoot-em-up for one or two players taking on the roles of captured US pilots who have been taken prisoner during the Vietnam war in 1972. The pilots must escape the prison compound by battling enemy soldiers and vehicles, including tanks planes and helicopters. + +The game is very similar in play to SNK's Ikari and Heavy Barrel games, with players able to fully rotate their on-screen characters to fire and move in all directions. Players are initially armed with a machine gun and limited number of grenades but power-ups - including a rocket launcher, a flamethrower and grenades - can be found in the destructible wooden crates that litter the stages. + +Enemy vehicles such as a plane can also be commandeered and the stages take place both above ground in the Vietnamese jungles and below ground in hidden tunnels. Caliber Fifty is a quite short but very challenging game, with constantly spawning enemies attacking from all sides. + 0.70 + 19890101T000000 + Athena + Athena + Shooter / Run and Gun + 2903 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/calibr50.png + + + + calipso.zip + Calipso + You play a diver who is trying to get a treasure. Hold Fire and push in the direction you want to shoot, but you will be unable to move while doing this. Shoot the sea animals and the other player. Try to get the treasure at the bottom and return it to the boat at the top without getting attacked by sea creatures -- all before your air runs out. + 0.30 + 19820101T000000 + Tago Electronics + Tago Electronics + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/calipso.png + + + + calorie.zip + Calorie Kun vs Moguranian + Calorie Kun vs Moguranian is a traditional platforms and ladders game in which the player controls an abstract, mole-like creature that must make its way around a number of underground tunnels, avoiding enemies and collecting the items placed around the screen; before quickly making its way to the exit. The player is armed with a limited number of bombs that can be used to destroy or disable enemies. + 0.30 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/calorie.png + + + + calorieb.zip + Calorie Kun vs Moguranian (bootleg) + Calorie Kun vs Moguranian is a traditional platforms and ladders game in which the player controls an abstract, mole-like creature that must make its way around a number of underground tunnels, avoiding enemies and collecting the items placed around the screen; before quickly making its way to the exit. The player is armed with a limited number of bombs that can be used to destroy or disable enemies. + 0.30 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-2 + calorie.zip + Sega Classics + 256x224 + media/mixrbv2/calorie.png + + + + candory.zip + Candory (Bootleg) + Ponpoko is a platform game similar to Donkey Kong and Mario Bros. + +In Ponpoko, the player controls a Tanuki (a Japanese raccoon dog) that can climb ladders, walk across floors and jump over gaps and tacks while trying to avoid red and yellow snakes. The player must collect all the fruits and vegetables in order to advance to the next level. There are also baskets that contain either points or snakes. Once the final level is reached (the beer mug level) the game will repeat that level endlessly. + 0.60 + 19820101T000000 + Sigma Enterprises + Sigma Enterprises + Platform / Run Jump + 2915 + 1-2 + ponpoko.zip + Namco Classics + 288x224 + media/mixrbv2/ponpoko.png + + + + cannonbp.zip + Cannon Ball (Pacman Hardware) + Cannon Ball is a game similar to Breakout except with a twist. Instead of having to clear all of the bricks, you have to destroy a "bat" being protected by all of the bricks. The "bat" tries to kill you by throwing monsters at you which, if hit by one, your paddle shrinks. Once your paddle is invisible, you get a game over. You can also eat the monsters by ramming into one once they are on your playing field. + 0.10 + 19850101T000000 + Novomatic + Yun Sung + Action / Breakout games + 2917 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/cannonbp.png + + + + cannball.zip + Cannon Ball (Yun Sung, horizontal) + This game is like a crossover between "Arkanoid" and "Puzzle Bobble". You have a paddle and must shoot the ball trying to match with the same color balls on the descending balls. If you connect three or more balls in the same color they will disappear. After the balls disappear, any balls that become detached from the descending structure also disappear. Balls can be shot in three directions: 45 degrees to the left, 45 degrees to the right, or strait up. If you are in difficult situation, you can shoot a bomb. + +Once you clear a set number of disappearances, the stage is cleared and the player is rewarded with a digitized photo image of an Asian girl in her underwear. Each stage features a different picture with a different girl. + +If the descending balls reach the players paddle, then the game is over. If you continue you restart at previous stage. + 0.50 + 19950101T000000 + Yun Sung + Soft Vision + Puzzle-Game + 26 + Mame + 384x240 + media/mixrbv2/cannball.png + + + + cannballv.zip + Cannon Ball (Yun Sung, vertical) + This game is like a crossover between "Arkanoid" and "Puzzle Bobble". You have a paddle and must shoot the ball trying to match with the same color balls on the descending balls. If you connect three or more balls in the same color they will disappear. After the balls disappear, any balls that become detached from the descending structure also disappear. Balls can be shot in three directions: 45 degrees to the left, 45 degrees to the right, or strait up. If you are in difficult situation, you can shoot a bomb. + +Once you clear a set number of disappearances, the stage is cleared and the player is rewarded with a digitized photo image of an Asian girl in her underwear. Each stage features a different picture with a different girl. + +If the descending balls reach the players paddle, then the game is over. If you continue you restart at previous stage. + 0.50 + 19950101T000000 + Yun Sung + Soft Vision + Puzzle-Game + 26 + cannball.zip + Mame + 384x240 + media/mixrbv2/cannball.png + + + + canvas.zip + Canvas Croquis + An adult maze game. + +We play as painter while painting his great canvas of beautiful females, but his task will not be easy, because it is constantly attacked by annoying enemies, you must eliminate or dodge all enemies of the maze to complete the canvas and go to the next stage. + 0.50 + 19850101T000000 + SNK + SNK + Action + 10 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/canvas.png + + + + canyon.zip + Canyon Bomber + Canyon Bomber is a 2-D shooter. You control either the blimp or the plane while dropping bombs on the rocks below. Your goal is to get the highest amount of points (either against the computer or another player). You are allowed so many misses before your game ends. Misses are counted as the times you do not hit any rocks. The scores for the rocks are directly proportional to the difficulty in hitting those rocks. This game boils down to precision bombing and thinking ahead as to where the next bomb will fall. Good luck in taking out all of the rocks in the canyon. + 0.70 + 19770101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + Atari Classics + 256x240 + media/mixrbv2/canyon.png + + + + canyonp.zip + Canyon Bomber (prototype) + Canyon Bomber is a 2-D shooter. You control either the blimp or the plane while dropping bombs on the rocks below. Your goal is to get the highest amount of points (either against the computer or another player). You are allowed so many misses before your game ends. Misses are counted as the times you do not hit any rocks. The scores for the rocks are directly proportional to the difficulty in hitting those rocks. This game boils down to precision bombing and thinking ahead as to where the next bomb will fall. Good luck in taking out all of the rocks in the canyon. + 0.70 + 19770101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + canyon.zip + Atari Classics + 256x240 + media/mixrbv2/canyon.png + + + + capbowl.zip + Capcom Bowling (set 1) + This top-down view bowling game allows up to four players to compete. The trackball controls the aim and power of your throw and two buttons control the left and right hook respectively. There are graphic displays of turkeys, splits, gutters etc. and the game keeps track of scoring and high scores. + 0.60 + 19880101T000000 + Sports / Bowling + 2901 + 1-4 + Capcom Classics + 270 + 360x245 + media/mixrbv2/capbowl.png + + + + capbowl2.zip + Capcom Bowling (set 2) + This top-down view bowling game allows up to four players to compete. The trackball controls the aim and power of your throw and two buttons control the left and right hook respectively. There are graphic displays of turkeys, splits, gutters etc. and the game keeps track of scoring and high scores. + 0.60 + 19880101T000000 + Sports / Bowling + 2901 + 1-4 + capbowl.zip + Capcom Classics + 270 + 360x245 + media/mixrbv2/capbowl.png + + + + capbowl3.zip + Capcom Bowling (set 3) + This top-down view bowling game allows up to four players to compete. The trackball controls the aim and power of your throw and two buttons control the left and right hook respectively. There are graphic displays of turkeys, splits, gutters etc. and the game keeps track of scoring and high scores. + 0.60 + 19880101T000000 + Sports / Bowling + 2901 + 1-4 + capbowl.zip + Capcom Classics + 270 + 360x245 + media/mixrbv2/capbowl.png + + + + capbowl4.zip + Capcom Bowling (set 4) + This top-down view bowling game allows up to four players to compete. The trackball controls the aim and power of your throw and two buttons control the left and right hook respectively. There are graphic displays of turkeys, splits, gutters etc. and the game keeps track of scoring and high scores. + 0.60 + 19880101T000000 + Sports / Bowling + 2901 + 1-4 + capbowl.zip + Capcom Classics + 270 + 360x245 + media/mixrbv2/capbowl.png + + + + cscluba.zip + Capcom Sports Club (970722 Asia) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclub1d.zip + Capcom Sports Club (970722 Euro Phoenix Edition) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclub1.zip + Capcom Sports Club (970722 Euro) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclubh.zip + Capcom Sports Club (970722 Hispanic) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclubj.zip + Capcom Sports Club (970722 Japan) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclubjy.zip + Capcom Sports Club (970722 Japan, yellow case) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + csclub.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + csclub.zip + Capcom Sports Club (971017 Euro) + Capcom Sports Club is an arcade game released by Capcom in 1997. It is a multi-sport game that consists of Smash Stars (Tennis), Dunk Stars (Basketball), and Kick Stars (Football/Soccer). + 0.70 + 19970101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/csclub.png + + + + cworld.zip + Capcom World (Japan) + The princess of the Capcom Kingdom was kidnapped, and the hero must pass by six worlds to save her. In the end of each world he faces a Capcom character. + +Press one of four buttons to see how many spaces you will move. When you land on a space, you will then have to answer qustion before your opponent does or time runs out. If you answer the required amount of questions you can move on. + 0.50 + 19890101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Classics + 384x240 + media/mixrbv2/cworld.png + + + + capitol.zip + Capitol + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + captcommjr1.zip + Captain Commando (910928 Japan) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommu.zip + Captain Commando (910928 USA) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommr1.zip + Captain Commando (911014 World) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommj.zip + Captain Commando (911202 Japan) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcomm.zip + Captain Commando (911202 World) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommb.zip + Captain Commando (bootleg set 1, 911014 other country) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommb2.zip + Captain Commando (bootleg set 2 (with 2xMSM5205), 911014 other country) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommb3.zip + Captain Commando (bootleg set 3 (with YM2151 + 2xMSM5205), 911014 other country) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommp4.zip + Captain Commando (Enhanced edition 1 V 4, Hack) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + captcommr1pwx.zip + Captain Commando (Unlimited Bullet) + Captain Commando is set in a crime-ridden future in the year 2026, where a superhero named Captain Commando, assisted by his three faithful Commando Companions rise up to protect the Earth and all the Galaxy from a gang of super-powered criminals. + 0.90 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + captcomm.zip + Capcom Play System + 384x224 + media/mixrbv2/captcomm.png + + + + csilverja.zip + Captain Silver (Japan revision 1) + A side-scrolling game where you must slice enemies with your sword to rescue your beloved. + 0.40 + 19870101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + csilver.zip + Data East Classics + 256x240 + media/mixrbv2/csilver.png + + + + csilverj.zip + Captain Silver (Japan revision 3) + A side-scrolling game where you must slice enemies with your sword to rescue your beloved. + 0.40 + 19870101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + csilver.zip + Data East Classics + 256x240 + media/mixrbv2/csilver.png + + + + csilver.zip + Captain Silver (World) + A side-scrolling game where you must slice enemies with your sword to rescue your beloved. + 0.40 + 19870101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/csilver.png + + + + ctomaday.zip + Captain Tomaday + A comical vertically scrolling shoot'em up starring a mutated tomato who punches the enemy and can transform to other weird characters. + 0.60 + 19990101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ctomaday.png + + + + carjmbre.zip + Car Jamboree + A one or two player Driving/Demolition game. + +Drive you car thru demolition tracks, you must crashing the rivals cars and go dodging their attacks, always avoiding colliding with the walls and differents obstacles in the track, while you jump by ramp on this challenge of demolition Derby! + 0.30 + 19830101T000000 + Omori Electric Co. + Omori Electric Co., Ltd. + Race, Driving + 28 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/carjmbre.png + + + + carnivalc.zip + Carnival (cocktail) + CARNIVAL is a 1 or 2 player alternate action game that simulates a carnival shooting gallery. The playfield consists of three target rows, a rotating pipe wheel, a bonus message panel, and a 'special' target block. + +The player uses a left right control to position a rifle at the bottom of the screen, and a shoot control to fire the rifle. Two rows of bullets at the bottom of the screen indicate the number of shots remaining to the player. Every time the player shoots, one of the bullets disappears from the screen. More bullets are given during the first round than the others, so, the inexperienced player will have a chance to enjoy the play. +bear between rounds for extra points. + 0.70 + 19800101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + carnival.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/carnival.png + + + + carnival.zip + Carnival (upright) + CARNIVAL is a 1 or 2 player alternate action game that simulates a carnival shooting gallery. The playfield consists of three target rows, a rotating pipe wheel, a bonus message panel, and a 'special' target block. + +The player uses a left right control to position a rifle at the bottom of the screen, and a shoot control to fire the rifle. Two rows of bullets at the bottom of the screen indicate the number of shots remaining to the player. Every time the player shoots, one of the bullets disappears from the screen. More bullets are given during the first round than the others, so, the inexperienced player will have a chance to enjoy the play. +bear between rounds for extra points. + 0.70 + 19800101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/carnival.png + + + + cawingbl.zip + Carrier Air Wing (bootleg set 1 (with 2xYM2203 + 2xMSM5205), U.S. navy 901012 etc) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + cawingb2.zip + Carrier Air Wing (bootleg set 2 (with 2xYM2203 + 2xMSM5205), U.S. navy 901012 etc) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + cawingr1.zip + Carrier Air Wing (U.S. navy 901009 etc) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + cawing.zip + Carrier Air Wing (U.S. navy 901012 etc) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + cawingur1.zip + Carrier Air Wing (U.S. navy 901012 USA) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + cawingu.zip + Carrier Air Wing (U.S. navy 901130 USA) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + casanova.zip + Casanova + Casanova is a Mahjong-like game made by Promat with girls. You play as a boy who wants to attract girls (hence the name casanova) and the coinup screen is actually the reason this games' plot exists. The boy is bored, so he decides to watch some TV. Finding nothing good until he finds a channel with girls dancing to the beat of a song that goes "Come on WHOO!" (Which might be an actual song). Then the boy thinks "I gotta get girls like these!" and gets up to find women lke the dancers. He then finds this palace of buildings named such as "The Girl's" and "WELCOM LADIES", and the spelling/grammar is slightly off as that's how it appears in-game. To get to the girls, the boy must solve puzzles in order to see their glory. +In true fashion, this game is pretty much Mahjong with a couple tweaks and of course, girls. There is a "special move" that makes a dancing super-hero figure show up for a little bit, then a missile drops down on the mahjong board, removing random tiles from the board. While this all happens, one of the songs from a 1970's Beach music EP plays (which I can't remember the name of and I'm too lazy to shazam). Once you complete a level, you get to see part of a girls' body. + 0.30 + 19940101T000000 + Promat + Promat + Puzzle-Game / Equalize + 2864 + Mame + 320x240 + media/mixrbv2/casanova.png + + + + cashquiz.zip + Cash Quiz (Type B, Version 5) + A quiz game. Test your knowledge from a wide range of categories. + 0.50 + 19860101T000000 + Zilec Electronics + Zilec Electronics + Quiz / English + 2931 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/cashquiz.png + + + + catacomb.zip + Catacomb + An early vertical shooter. + 0.30 + 19820101T000000 + MTM Games + MTM Games + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/catacomb.png + + + + ctrpllrp.zip + Caterpillar Pacman Hack + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + catt.zip + Catt (Japan) + In this game you play as a magical cat wandering around a forest. This game features some very nice/appealing graphics. The cat has many strange weapons. + 0.70 + 19930101T000000 + Wintechno + Wintechno + Platform / Shooter Scrolling + 2887 + 1-2 + mcatadv.zip + Mame + 320x224 + media/mixrbv2/mcatadv.png + + + + cavelon.zip + Cavelon + In this horizontally-scrolling maze game, You the heroic knight must reach the top floor of Castle Cavelon, rescue a fair maiden and do battle with the Black Wizard! Armed with bow and arrow and a magic sword, you must avoid or kill the castle security guards while collecting the 8 pieces of the exit door that are scattered around the corridors, in order to proceed to the next floor. + 0.50 + 19830101T000000 + Jetsoft + Jetsoft + Action + 10 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/cavelon.png + + + + cencourt.zip + Center Court (World, 4 Players, prototype, MC-8123B) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + centiped3.zip + Centipede (revision 3) + Centipede is a vertically oriented single screen shoot-em-up in which the aim is to use the 'Bug Blaster' to shoot the centipedes that snake down towards the bottom of the screen to amass as high a score as possible. + +The play-field is littered with randomly placed mushrooms and the rapidly descending Centipede changes direction when it runs into a mushroom. When a segment of the Centipede is shot, the segment is destroyed and a mushroom appears in its place, the Centipede then breaks into two smaller centipedes, each with its own head, and continues its descent. + +Players can move the Bug Blaster vertically as well as horizontally, although only for the lower fifth of the play-field. Mushrooms can also be shot for points and to clear blocked areas. Once a Centipede reaches the bottom of the screen, it starts snaking back up, but remains within the lower section of the play-field near the player's Bug Blaster. + +Additionally, any Centipede that reaches the very bottom of the screen without being shot releases its tail section which then becomes a new head. Other new heads also enter the screen from the bottom corners of the play-field as time progresses. + +Randomly moving Spiders also appear in the first wave. Spiders can destroy any mushrooms they move over, eliminating many mushroom targets for a player. If the Bug Blaster and a Spider collide, both are destroyed. the Spider either moves at a 45-degree angle or vertically up and down, never simply left or right like the centipede does. + +A bombardment of Fleas appears from the second wave onward. As a Flea descends, it leaves a trail of new mushrooms behind it. Fleas appear when a certain number of mushrooms remains at the bottom of the screen. This number increases as the game progresses, meaning Fleas appear more often later on in the game. The Bug Blaster must hit a Flea twice to destroy it; the first shot simply speeds up its descent. + +When a Centipede with fewer than eleven segments appears, a Scorpion enters from either side, moving at a relatively slow speed. As the player earns more points, the Scorpion's speed increases. As the Scorpion travels across the screen, it 'poisons' the mushrooms that it moves over and changes their colours. These mushrooms cause any Centipedes that would collide with them to head straight towards the bottom of the screen, rather than continue snaking left and right. The Bug Blaster can stop a poisoned Centipede by shooting its head. + +If a player earns at least 60,000 points, two things happen to increase the challenge: the Fleas descend at a faster speed and the Spiders restrict their movement to a smaller area at the bottom of the screen. + 0.70 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + centiped.zip + Atari Classics + 270 + 256x240 + media/mixrbv2/centiped.png + + + + centiped.zip + Centipede (revision 4) + Centipede is a vertically oriented single screen shoot-em-up in which the aim is to use the 'Bug Blaster' to shoot the centipedes that snake down towards the bottom of the screen to amass as high a score as possible. + +The play-field is littered with randomly placed mushrooms and the rapidly descending Centipede changes direction when it runs into a mushroom. When a segment of the Centipede is shot, the segment is destroyed and a mushroom appears in its place, the Centipede then breaks into two smaller centipedes, each with its own head, and continues its descent. + +Players can move the Bug Blaster vertically as well as horizontally, although only for the lower fifth of the play-field. Mushrooms can also be shot for points and to clear blocked areas. Once a Centipede reaches the bottom of the screen, it starts snaking back up, but remains within the lower section of the play-field near the player's Bug Blaster. + +Additionally, any Centipede that reaches the very bottom of the screen without being shot releases its tail section which then becomes a new head. Other new heads also enter the screen from the bottom corners of the play-field as time progresses. + +Randomly moving Spiders also appear in the first wave. Spiders can destroy any mushrooms they move over, eliminating many mushroom targets for a player. If the Bug Blaster and a Spider collide, both are destroyed. the Spider either moves at a 45-degree angle or vertically up and down, never simply left or right like the centipede does. + +A bombardment of Fleas appears from the second wave onward. As a Flea descends, it leaves a trail of new mushrooms behind it. Fleas appear when a certain number of mushrooms remains at the bottom of the screen. This number increases as the game progresses, meaning Fleas appear more often later on in the game. The Bug Blaster must hit a Flea twice to destroy it; the first shot simply speeds up its descent. + +When a Centipede with fewer than eleven segments appears, a Scorpion enters from either side, moving at a relatively slow speed. As the player earns more points, the Scorpion's speed increases. As the Scorpion travels across the screen, it 'poisons' the mushrooms that it moves over and changes their colours. These mushrooms cause any Centipedes that would collide with them to head straight towards the bottom of the screen, rather than continue snaking left and right. The Bug Blaster can stop a poisoned Centipede by shooting its head. + +If a player earns at least 60,000 points, two things happen to increase the challenge: the Fleas descend at a faster speed and the Spiders restrict their movement to a smaller area at the bottom of the screen. + 0.70 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + Atari Classics + 270 + 256x240 + media/mixrbv2/centiped.png + + + + chaknpop.zip + Chack'n Pop + Chack'n Pop is considered by many to be the precursor to the venerable game Bubble Bobble. The cast consists of two enemies that would later be seen in Bubble Bobble. Many fans of the Bubble Bobble series may find Chack'n Pop less fun to play due to its high degree of difficulty. + +The game puts the player in the role of Mr. Chack'n, who must rescue all of the hearts that were stolen during a romantic interlude between him and Miss Chack'n. Chack is an interesting character with interesting abilities. He can toss two bombs, only one in each direction at a time. He can also effortlessly go from walking on the floor to walking on the ceiling. If the ceiling is low enough, Chack can extend his legs until his head touches the ceiling to immediately begin walking on it. + 0.50 + 19830101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/chaknpop.png + + + + chameleo.zip + Chameleon + A colourful platform game in which the player controls a long-tongued chameleon that must make around a series of single-screen, platform-strewn levels; stealing chicken eggs from their nests and being careful to avoid contact with angry chickens. + +As well as walking along the platforms and poles, the chameleon can use its tongue to pull itself up to higher platforms; and to escape from any nearby chickens. Each level also has a number of bombs placed at various points; the chameleon can hit these with its tongue to send them crashing towards nearby chickens. The player must keep an eye out for projectiles thrown by the chickens, such as flashing eggs. + +If the nesting eggs are left for too long, they will hatch into a baby chick. The player can eat the chick for bonus points, but if the chick is left alone for too long, it will grow into an adult chicken and start attacking the player. + +A level is over once all of the eggs have been collected and all of the chickens killed. + 0.70 + 19830101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + Jaleco + 256x224 + media/mixrbv2/chameleo.png + + + + champwrj.zip + Champion Wrestler (Japan) + Eight original wrestlers fight for glory, money and win the title belt of TWF circuit in a single or tag-team match. + 0.50 + 19890101T000000 + Taito + Taito + Sports / Wrestling + 2861 + 1-2 + champwr.zip + Taito Classics + 320x224 + media/mixrbv2/champwr.png + + + + champwru.zip + Champion Wrestler (US) + Eight original wrestlers fight for glory, money and win the title belt of TWF circuit in a single or tag-team match. + 0.50 + 19890101T000000 + Taito + Taito + Sports / Wrestling + 2861 + 1-2 + champwr.zip + Taito Classics + 320x224 + media/mixrbv2/champwr.png + + + + champwr.zip + Champion Wrestler (World) + Eight original wrestlers fight for glory, money and win the title belt of TWF circuit in a single or tag-team match. + 0.50 + 19890101T000000 + Taito + Taito + Sports / Wrestling + 2861 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/champwr.png + + + + chanbara.zip + Chanbara + Set in feudal japan, you play as a student samurai, and breakthrough to defend the dojo temple with his katana, waging battles to death against their enemies brandishing harmoniously his sharp sword katana and jumping while avoid being cut by the enemy weapon some enemies hooded attacking from above dodge his attacks to win and move forward through levels to keep the Bushido code and protect the dojo. + 0.30 + 19850101T000000 + Data East + Data East + Fight / 2D + 2914 + 1 + Data East Classics + 270 + 256x224 + media/mixrbv2/chanbara.png + + + + chkun.zip + Chance Kun (Japan) + A one player game of gambling bet based on a baseball game, starring by fun cats. + 0.10 + 19880101T000000 + Sports / Baseball + 2853 + 1 + Konami Classics + 270 + 256x224 + media/mixrbv2/chkun.png + + + + changes.zip + Changes + This maze game is quite similar to "Pac-Man". The player controls a caterpillar that crawls along the branches of a maze-like tree eating nuts and strawberries while avoiding deadly bugs and a hungry bird. The caterpillar changes into a butterfly after everything has been eaten. + +The caterpillar must eat all the strawberries and nuts on each level to become a butterfly. Eating a strawberry temporarily makes the caterpillar invincible allowing it to kill the deadly bugs and score 400 bonus points ber bug. If the caterpillar remains still for too long, an invincible owl (replaced by an invincible bat in later levels) will appear. If your catepillar moves, the owl or bat will disappear. If your catepillar remains still, the invincible owl or bat will chase the caterpillar, albiet not very effrctively. + +When the caterpillar crosses over a pivot branch, all the branches will rotate at once, and any bugs that are on those branches will fall off and score 400, 800, 1600 and 3200 points, depending on the amount of bugs killed. Keep an eye out for the flowers that will appear below the house - they will reward you between 400 and 3200 points, depending on the level. + 0.50 + 19820101T000000 + Orca Corporation + Orca + Action + 10 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/changes.png + + + + changesa.zip + Changes (EME license) + This maze game is quite similar to "Pac-Man". The player controls a caterpillar that crawls along the branches of a maze-like tree eating nuts and strawberries while avoiding deadly bugs and a hungry bird. The caterpillar changes into a butterfly after everything has been eaten. + +The caterpillar must eat all the strawberries and nuts on each level to become a butterfly. Eating a strawberry temporarily makes the caterpillar invincible allowing it to kill the deadly bugs and score 400 bonus points ber bug. If the caterpillar remains still for too long, an invincible owl (replaced by an invincible bat in later levels) will appear. If your catepillar moves, the owl or bat will disappear. If your catepillar remains still, the invincible owl or bat will chase the caterpillar, albiet not very effrctively. + +When the caterpillar crosses over a pivot branch, all the branches will rotate at once, and any bugs that are on those branches will fall off and score 400, 800, 1600 and 3200 points, depending on the amount of bugs killed. Keep an eye out for the flowers that will appear below the house - they will reward you between 400 and 3200 points, depending on the level. + 0.50 + 19820101T000000 + Orca Corporation + Orca + Action + 10 + 1-2 + changes.zip + Sega Classics + 256x224 + media/mixrbv2/changes.png + + + + cps1demo.zip + Chaos Demo (CPS-1) + 20020101T000000 + Chaos + Chaos + non Jeu + media/mixrbv2/cps1demo.png + + + neodemo.zip + Chaos Demo (Neo Geo) + Neo-Geo + media/mixrbv2/neodemo.png + + + karatourj.zip + Chatan Yara Kuushanku - The Karate Tournament (Japan) + Karate Tournament is a one-on-one fighting game for one or two players, based on the ancient and most well known of martial arts, Karate. + +Players enter a karate tournament - having first selected their preferred skill level, from either White, Brown or Black belt - and fight against a number of progressively tougher opponents. Each victory awards the player with a higher belt grade within their current belt colour - white grade six to white grade five, for example - and if the player wins the tournament, he or she is awarded a higher belt colour and the game ends. If players chooses to play the game on the 'Black Belt' skill level, defeating opponents is awarded with a higher grade, or 'dan' of Black Belt. + +Karate Tournament uses a distinctive graphical technique in that it 'morphs' some of the combatants' movement graphics to simulate speed and motion blur. The game was also unique upon its release in that, in a world of "Street Fighters" and "Mortal Kombats" - replete with fantastical special moves - Karate Tournament was a genuine simulation of a recognized martial art; something not really seen since the first appearance of Data East's legendary genre-defining fighter, "Karate Champ", released eight years' earlier in 1984. + 0.70 + 19920101T000000 + Mitchell Corporation + Mitchell + Fight / Versus + 2885 + 1-2 + karatour.zip + Mitchell + 320x240 + media/mixrbv2/karatour.png + + + + checkman.zip + Check Man + Check Man is an arcade game where the player moves a man around a grid made up of squares that disappear after being walked over. The aim of each level is to defuse a number bombs which is done by simply moving over them. Each bomb has a counter and it is necessary to defuse them before the time runs out. The quicker the bombs are defused the more points will be earned. At the same time the player has to watch out for the stomping boots that move around the grid. Any contact with these will lead to the player getting killed and a life will be lost. In addition to bombs and boots there are also skulls which are stationary obstacles and flags which give bonus points. It is possible to slide the row of squares the player is standing on left or right as long as there is space left and the objects are not moved off the edge of the screen. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Puzzle-Game + 26 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/checkman.png + + + + checkmanj.zip + Check Man (Japan) + Check Man is an arcade game where the player moves a man around a grid made up of squares that disappear after being walked over. The aim of each level is to defuse a number bombs which is done by simply moving over them. Each bomb has a counter and it is necessary to defuse them before the time runs out. The quicker the bombs are defused the more points will be earned. At the same time the player has to watch out for the stomping boots that move around the grid. Any contact with these will lead to the player getting killed and a life will be lost. In addition to bombs and boots there are also skulls which are stationary obstacles and flags which give bonus points. It is possible to slide the row of squares the player is standing on left or right as long as there is space left and the objects are not moved off the edge of the screen. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Puzzle-Game + 26 + 1-2 + checkman.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/checkman.png + + + + cheekyms.zip + Cheeky Mouse + Try to hit the mouse with a hammer when it comes out from one of many holes in the wall. The mouse is trying to get from its hole to the cheese on the other side of the house. + 0.30 + 19800101T000000 + Universal + Universal + Shooter + 2646 + 1-2 + Universal + 270 + 256x192 + media/mixrbv2/cheekyms.png + + + + chelnovj.zip + Chelnov - Atomic Runner (Japan) + You control Chelnov, the atomic runner. Beginning in Russia, he has to run from left to right through several levels to reach the Statue of Liberty. Chelnov keeps running by himself until you stop him, and he can do somersaults which enables him to fire in other directions. Nasties are killed by shooting or jumping on them. There are several different types of weapons and power-ups all of which have their strengths and weaknesses against different enemies and bosses. + 0.50 + 19880101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + chelnov.zip + Data East Classics + 256x240 + media/mixrbv2/chelnov.png + + + + chelnovu.zip + Chelnov - Atomic Runner (US) + You control Chelnov, the atomic runner. Beginning in Russia, he has to run from left to right through several levels to reach the Statue of Liberty. Chelnov keeps running by himself until you stop him, and he can do somersaults which enables him to fire in other directions. Nasties are killed by shooting or jumping on them. There are several different types of weapons and power-ups all of which have their strengths and weaknesses against different enemies and bosses. + 0.50 + 19880101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + chelnov.zip + Data East Classics + 256x240 + media/mixrbv2/chelnov.png + + + + chelnov.zip + Chelnov - Atomic Runner (World) + You control Chelnov, the atomic runner. Beginning in Russia, he has to run from left to right through several levels to reach the Statue of Liberty. Chelnov keeps running by himself until you stop him, and he can do somersaults which enables him to fire in other directions. Nasties are killed by shooting or jumping on them. There are several different types of weapons and power-ups all of which have their strengths and weaknesses against different enemies and bosses. + 0.50 + 19880101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/chelnov.png + + + + chqflag.zip + Chequered Flag + Chequered Flag is an overhead-view racing game featuring rotational sprite scaling. The player races over a series of twisting courses, trying to reach the finish line before the timer expires. + +The game includes a Pit-stop facility, a feature that had appeared a year earlier in Taito's "Continental Circus". Should the player's car sustain too much damage, a pit-stop must be made to implement repairs. A 'damage meter' at the bottom of the screen shows the severity of the damage; highlighting what car components are in need of repair; Engine, Front Tires, Rear Tires and Brakes. + 0.70 + 19880101T000000 + Konami + Konami + Race, Driving + 28 + 1 + Konami Classics + 270 + 304x224 + media/mixrbv2/chqflag.png + + + + chqflagj.zip + Chequered Flag (Japan) + Chequered Flag is an overhead-view racing game featuring rotational sprite scaling. The player races over a series of twisting courses, trying to reach the finish line before the timer expires. + +The game includes a Pit-stop facility, a feature that had appeared a year earlier in Taito's "Continental Circus". Should the player's car sustain too much damage, a pit-stop must be made to implement repairs. A 'damage meter' at the bottom of the screen shows the severity of the damage; highlighting what car components are in need of repair; Engine, Front Tires, Rear Tires and Brakes. + 0.70 + 19880101T000000 + Konami + Konami + Race, Driving + 28 + 1 + chqflag.zip + Konami Classics + 270 + 304x224 + media/mixrbv2/chqflag.png + + + + chewing.zip + Chewing Gum + Chewing Gum &copy; 198? Unknown. + 20190101T000000 + Sigma + Sigma + Casino / Slot machine + 2860 + 1 + luctoday.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/luctoday.png + + + + 7toitsu.zip + Chi-Toitsu + Mahjong game played against various girls. This must be the extra-curricular activities of the Mahjong Academy students. + 19880101T000000 + Yuga + Mahjong + 2869 + 1 + mgakuen.zip + Mitchell + 384x240 + media/mixrbv2/mgakuen.png + + + + marukodq.zip + Chibi Marukochan Deluxe Quiz + A japanese Quiz games based on a manga/anime series! + 0.80 + 19950101T000000 + Takara + SNK + Quiz + 2649 + 1-2 + Neo-Geo + media/mixrbv2/marukodq.png + + + + chikij.zip + Chiki Chiki Boys (900619 Japan) + The game features two twins who are attempting to re-take control of their land, Alurea, after a monster unexpectedly attacks, destroying everything in its path. The people of Alurea have lived in peace for a thousand years and have forgotten how to fight, yet the land's only survivors, the twin sons of the king, must take up the challenge and return their kingdom to its former glory. The two twins, aged around 15 at the time the game takes place, venture forth in search of a legendary stone known as "Dragon Blue Eyes", which is rumored to be able to put everything back to rights. + 0.80 + 19900101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + mtwins.zip + Capcom Play System + 384x224 + media/mixrbv2/mtwins.png + + + + chimerab.zip + Chimera Beast (prototype) + A horizontally scrolling shoot'em up where 1 or 2 players control creatures known as 'eaters' which are capable of eating other creatures and taking their DNA, thus acquiring their abilities or characteristics. + +Chimera Beast takes place on a planet which is described as distant and Earth-like. The planet is overrun by animals known as eaters, capable of eating other creatures and acquiring their abilities or characteristics. The player controls one of these eaters and progresses through the game by means of evolution, consuming microscopic organisms in the first stage, fish in the second, and so on. When the player's creature gets big enough to take on humanity, the goal of the game is revealed. The planet's humans have developed space travel, which the player must thwart, so as not to give the eaters a means of escaping the planet. There are two possible endings: one in which the player is able to stop the eaters from escaping the planet, and one in which the eaters do escape and, we are told, will eventually make their way to Earth. + 0.50 + 19930101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 256x224 + media/mixrbv2/chimerab.png + + + + chinagat.zip + China Gate (US) + China Gate is a beat'em up / platform game. + 0.50 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Fight + 14 + 1-2 + Technos + 256x240 + media/mixrbv2/chinagat.png + + + + chinhero.zip + Chinese Hero + Chinese Hero is a cute kung-fu action game with an overhead view. Lee and Loo must save the princess from 24 evil villains (only 12 in an 1-player game). + 0.50 + 19840101T000000 + Taiyo + Taiyo + Shooter + 2646 + 1-2 + Taito Classics + 270 + 288x224 + media/mixrbv2/chinhero.png + + + + chinhero2.zip + Chinese Hero (older, set 1) + Chinese Hero is a cute kung-fu action game with an overhead view. Lee and Loo must save the princess from 24 evil villains (only 12 in an 1-player game). + 0.50 + 19840101T000000 + Taiyo + Taiyo + Shooter + 2646 + 1-2 + chinhero.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/chinhero.png + + + + chinhero3.zip + Chinese Hero (older, set 2) + Chinese Hero is a cute kung-fu action game with an overhead view. Lee and Loo must save the princess from 24 evil villains (only 12 in an 1-player game). + 0.50 + 19840101T000000 + Taiyo + Taiyo + Shooter + 2646 + 1-2 + chinhero.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/chinhero.png + + + + chinherot.zip + Chinese Heroe (Taito) + Chinese Hero is a cute kung-fu action game with an overhead view. Lee and Loo must save the princess from 24 evil villains (only 12 in an 1-player game). + 0.50 + 19840101T000000 + Taiyo + Taiyo + Shooter + 2646 + 1-2 + chinhero.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/chinhero.png + + + + cndi.zip + Chip n Dale (FMV Demo) + Neo-Geo + media/mixrbv2/cndi.png + + + choko.zip + Choko (010820 Japan) + An adult shanghai game from Mitchell. The objective is to clear the board of matching tiles before the timer runs out. + +Each level consists a board with two or more columns of tiles and walls slowly moving toward the center of the board. Every time a matching pair of tiles is cleared from the board the two columns momentarily shift away from the center. The game is lost if the opposing columns of tiles run into each other or into the wall. In order to legally remove matching tiles no walls or other tiles can be in a path with two or fewer bends between the matching tiles. Once per stage, the player can request help and the two columns will shift to their starting positions and matching tiles will be highlighted for a short time. If the player cannot legally remove any more tiles then the board is 'deadlocked', and the game is lost. + +If the player clears the board before the timer runs out, the background girl will change into a more revealing state of undress and this new image of her will be the background for the next stage. If the timer reaches zero the player can still attempt to clear the board but the background image will not change. The game features four girls with two background images each and a topless image that is revealed after defeating the girl's second stage within the time limit. +If the game is lost, upon continuing the player may select to attempt to clear the same board or try a new board of tiles. + 0.80 + 20010101T000000 + Mitchell Corporation + Mitchell + Asiatic board game + 2647 + 1 + Capcom Play System 2 + 384x224 + media/mixrbv2/choko.png + + + + chokchok.zip + Choky! Choky! + Yet another clone of Buster Brothers / Pang! / Pomping World - this one featuring low-budget music and sound effects, and split-screen competitive two-player action, somewhat reminiscent of Twinkle Star Sprites. + 0.50 + 19950101T000000 + SemiCom + SemiCom + Shooter / 3rd person + 2899 + 1-2 + SemiCom + 320x240 + media/mixrbv2/chokchok.png + + + + choplift.zip + Choplifter (8751 315-5151) + The player assumes the role of a combat helicopter pilot. The player attempts to save hostages being held in prisoner of war camps in an unnamed enemy country. The player must collect the P.O.W.s, transport them safely to the nearby friendly base, all the while fighting off hostile tanks and other enemy combatants. There are a total of 32 hostages per level. To rescue more than 20 will advance the player to the next level. + 0.80 + 19850101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/choplift.png + + + + chopliftbl.zip + Choplifter (bootleg) + The player assumes the role of a combat helicopter pilot. The player attempts to save hostages being held in prisoner of war camps in an unnamed enemy country. The player must collect the P.O.W.s, transport them safely to the nearby friendly base, all the while fighting off hostile tanks and other enemy combatants. There are a total of 32 hostages per level. To rescue more than 20 will advance the player to the next level. + 0.80 + 19850101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + choplift.zip + Sega Classics + 512x224 + media/mixrbv2/choplift.png + + + + chopliftu.zip + Choplifter (unprotected) + The player assumes the role of a combat helicopter pilot. The player attempts to save hostages being held in prisoner of war camps in an unnamed enemy country. The player must collect the P.O.W.s, transport them safely to the nearby friendly base, all the while fighting off hostile tanks and other enemy combatants. There are a total of 32 hostages per level. To rescue more than 20 will advance the player to the next level. + 0.80 + 19850101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + choplift.zip + Sega Classics + 512x224 + media/mixrbv2/choplift.png + + + + choppera.zip + Chopper I (US ver 1?) + Pilot a helicopter in this vertically scrolling shooter from SNK. + 0.50 + 19880101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + chopper.zip + SNK Classics + 270 + 392x224 + media/mixrbv2/chopper.png + + + + chopper.zip + Chopper I (US ver 2) + Pilot a helicopter in this vertically scrolling shooter from SNK. + 0.50 + 19880101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 392x224 + media/mixrbv2/chopper.png + + + + chopperb.zip + Chopper I (US) + Pilot a helicopter in this vertically scrolling shooter from SNK. + 0.50 + 19880101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + chopper.zip + SNK Classics + 270 + 392x224 + media/mixrbv2/chopper.png + + + + berabohmb.zip + Chou Zetsurinjin Berabowman (Japan, Rev B) + Bravoman is a sentai parody action game. + +The subtitle of this game translates from Japanese as 'Unequaled Man'. + +This game is called 'Berabow Man' by Namco though this is likely a mistranslation as the later NEC PC-Engine port is called 'Bravoman'. The name 'BERABOW' appears in the default high score list. + +In Stage 8, the main character from "Pistol-Shogun - Pistol Daimyo no Bouken" (which was released 2 years later) must be fought. + +Bravoman did a cameo appearance in Namco x Capcom released for the Sony PS2 in 2005. + 0.30 + 19880101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + berabohm.zip + Namco Classics + 288x224 + media/mixrbv2/berabohm.png + + + + berabohm.zip + Chou Zetsurinjin Berabowman (Japan, Rev C) + Bravoman is a sentai parody action game. + +The subtitle of this game translates from Japanese as 'Unequaled Man'. + +This game is called 'Berabow Man' by Namco though this is likely a mistranslation as the later NEC PC-Engine port is called 'Bravoman'. The name 'BERABOW' appears in the default high score list. + +In Stage 8, the main character from "Pistol-Shogun - Pistol Daimyo no Bouken" (which was released 2 years later) must be fought. + +Bravoman did a cameo appearance in Namco x Capcom released for the Sony PS2 in 2005. + 0.30 + 19880101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/berabohm.png + + + + legionjb.zip + Chouji Meikyuu Legion (Japan ver 1.05, bootleg) + Pick up allies to form a powerful Legion against 'The Dark Empire'. + 0.50 + 19870101T000000 + Nichibutsu + Shoot'em Up + 79 + 1-2 + legion.zip + Nichibutsu + 270 + 288x224 + media/mixrbv2/legion.png + + + + legionj.zip + Chouji Meikyuu Legion (Japan ver 1.05, set 1) + Pick up allies to form a powerful Legion against 'The Dark Empire'. + 0.50 + 19870101T000000 + Nichibutsu + Shoot'em Up + 79 + 1-2 + legion.zip + Nichibutsu + 270 + 288x224 + media/mixrbv2/legion.png + + + + legionj2.zip + Chouji Meikyuu Legion (Japan ver 1.05, set 2) + Pick up allies to form a powerful Legion against 'The Dark Empire'. + 0.50 + 19870101T000000 + Nichibutsu + Shoot'em Up + 79 + 1-2 + legion.zip + Nichibutsu + 270 + 288x224 + media/mixrbv2/legion.png + + + + ironclad.zip + Choutetsu Brikin'ger - Iron clad (Prototype) + Ironclad is a side scrolling shooter developed by Saurus in 1996. Ironclad was first shown in its native MVS cartridge format at the March 1996 ACME show in Orlando, Florida. I saw and played the game at the show. We always knew therefore that at the very least, one proto was available on the MVS format. Although the game saw release on the NEOGEO CD system, it was never officially released in either the MVS or HOME cartridge formats. Ironclad was the most sought after of all the CD-protos because of its appeal to shoot 'em up fans. This was most likely why it had coincidentally caused the largest number of false claims; more then any other proto cartridge! 13 years later, in November of 2009, SNK finally released the native ROM data for the game and as a result we finally got the game and can now enjoy it forever! + 0.70 + 19960101T000000 + Saurus + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ironclad.png + + + + ironclado.zip + Choutetsu Brikin'ger - Iron clad (Prototype, older) + Ironclad is a side scrolling shooter developed by Saurus in 1996. Ironclad was first shown in its native MVS cartridge format at the March 1996 ACME show in Orlando, Florida. I saw and played the game at the show. We always knew therefore that at the very least, one proto was available on the MVS format. Although the game saw release on the NEOGEO CD system, it was never officially released in either the MVS or HOME cartridge formats. Ironclad was the most sought after of all the CD-protos because of its appeal to shoot 'em up fans. This was most likely why it had coincidentally caused the largest number of false claims; more then any other proto cartridge! 13 years later, in November of 2009, SNK finally released the native ROM data for the game and as a result we finally got the game and can now enjoy it forever! + 0.70 + 19960101T000000 + Saurus + SNK + Shoot'em Up + 79 + 1-2 + ironclad.zip + Neo-Geo + 320x224 + media/mixrbv2/ironclad.png + + + + chukataija.zip + Chuka Taisen (Japan) (P0-025-A PCB) + Chuka Taisen is a classic shooter starring the Monkey King Sun Wukong (except for Western releases, where the protagonist is "Mike Chen") + 0.50 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + chukatai.zip + Taito Classics + 256x224 + media/mixrbv2/chukatai.png + + + + chukataij.zip + Chuka Taisen (Japan) (P0-028-A PCB) + Chuka Taisen is a classic shooter starring the Monkey King Sun Wukong (except for Western releases, where the protagonist is "Mike Chen") + 0.50 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + chukatai.zip + Taito Classics + 256x224 + media/mixrbv2/chukatai.png + + + + chukataiu.zip + Chuka Taisen (US) (P0-028-A PCB) + Chuka Taisen is a classic shooter starring the Monkey King Sun Wukong (except for Western releases, where the protagonist is "Mike Chen") + 0.50 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + chukatai.zip + Taito Classics + 256x224 + media/mixrbv2/chukatai.png + + + + chukatai.zip + Chuka Taisen (World) (P0-028-A PCB) + Chuka Taisen is a classic shooter starring the Monkey King Sun Wukong (except for Western releases, where the protagonist is "Mike Chen") + 0.50 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/chukatai.png + + + + ddaydoo.zip + Chulgyeok D-Day (Korea) + The Last Day is a vertically scrolling shoot-em-up. + +In korea, this game as known as "D-day Chulguuk" (translates from Korean as 'D-day sortie'). + +Dooyong Industrial was established by Jung Jin Yook in the 80's. In its early days Dooyong made bootleg versions, and later made original games. Dooyong stopped to develop arcade games in 1996. + +Very few last Day boards were exported to Japan. + 0.50 + 19900101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + lastday.zip + Mame + 270 + 384x240 + media/mixrbv2/lastday.png + + + + circuscc.zip + Circus Charlie (Centuri) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + circusc.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + circusce.zip + Circus Charlie (Centuri, earlier) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + circusc.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + circusc.zip + Circus Charlie (level select, set 1) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + circusc2.zip + Circus Charlie (level select, set 2) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + circusc.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + circusc3.zip + Circus Charlie (level select, set 3) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + circusc.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + circusc4.zip + Circus Charlie (no level select) + Circus Charlie is a single-player abstract platform game in which the player must guide the eponymous Charlie through six different circus events. Bonus points can be won by finishing a level as quickly as possible, with further points awarded for collecting any of the money bags that occasionally appear. + +Finally, additional bonus points are awarded for completing a level without losing a life. The game is over when all Circus Charlies are lost. + +The six different events are: +Ride a lion and jump through fiery hoops and over blazing pots. +Jump over monkeys while walking a tightrope. +Bounce on trampolines, avoid fire breathers and sword jugglers. +Jump on giant, rolling beach balls. +Ride a horse while avoiding obstacles. +Trapeze. + 0.80 + 19840101T000000 + Konami + Konami + Platform / Run Jump Scrolling + 2897 + 1-2 + circusc.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/circusc.png + + + + cischeat.zip + Cisco Heat + A colourful racing game in which the player takes on the role of a police officer who must race his squad car (from a choice of 2; offering either improved 'Speed' or 'Cornering' respectively) through the undulating, winding streets of San Francisco', in an attempt to win the first ever 'National Championship Police Car Steeplechase'. + +Each stage is packed with rival squad cars, as well as civilian traffic such as taxis, trams and fire-engines. Ninety-degree turns must also be negotiated in this tricky driving game. Cisco Heat features five different stages. + 0.50 + 19900101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + Jaleco + 256x216 + media/mixrbv2/cischeat.png + + + + cityatta.zip + City Attack (Petaco S.A., bootleg of Pleiads) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + citybombj.zip + City Bomber (Japan) + City Bomber is a high speed overhead-view vertically scrolling driving game where you attempt to catch criminals. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + citybomb.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/citybomb.png + + + + citybomb.zip + City Bomber (World) + City Bomber is a high speed overhead-view vertically scrolling driving game where you attempt to catch criminals. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/citybomb.png + + + + citycon.zip + City Connection (set 1) + The player controls a small red car and must jump between platforms to colour them in as it drives over them. Oil cans can be collected and shot at the police, taxis, ambulances etc. that roam the levels. Flag waving cats must also be avoided. + 0.70 + 19850101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + Jaleco + 240x224 + media/mixrbv2/citycon.png + + + + citycona.zip + City Connection (set 2) + The player controls a small red car and must jump between platforms to colour them in as it drives over them. Oil cans can be collected and shot at the police, taxis, ambulances etc. that roam the levels. Flag waving cats must also be avoided. + 0.70 + 19850101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + citycon.zip + Jaleco + 240x224 + media/mixrbv2/citycon.png + + + + clshroad.zip + Clash-Road + A horizontally scrolling bicycle racing game. + 0.50 + 19860101T000000 + Wood Place + Wood Place Inc. + Race, Driving / Motorcycle + 2943 + 1-2 + Data East Classics + 288x224 + media/mixrbv2/clshroad.png + + + + clshroadd.zip + Clash-Road (Data East license) + A horizontally scrolling bicycle racing game. + 0.50 + 19860101T000000 + Wood Place + Wood Place Inc. + Race, Driving / Motorcycle + 2943 + 1-2 + clshroad.zip + Data East Classics + 288x224 + media/mixrbv2/clshroad.png + + + + clshroads.zip + Clash-Road (Status license) + A horizontally scrolling bicycle racing game. + 0.50 + 19860101T000000 + Wood Place + Wood Place Inc. + Race, Driving / Motorcycle + 2943 + 1-2 + clshroad.zip + Data East Classics + 288x224 + media/mixrbv2/clshroad.png + + + + cloakfr.zip + Cloak & Dagger (French) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + cloakgr.zip + Cloak & Dagger (German) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + cloak.zip + Cloak & Dagger (rev 5) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + cloaksp.zip + Cloak & Dagger (Spanish) + Agent X, complete with trenchcoat, Bogie hat, and briefcase, hurries through a series of adventures and misadventures to retrieve stolen plans and destroy dastardly Dr. Boom's subterranean bomb factory. Our masked hero descends to the depths of Dr. Boom's laboratory in a special elevator. On each floor he encounters a series of conveyor belts that are moving explosives. A giant bomb ticks down the game seconds while devices of Dr. Boom's plotting, such as bomb converters, forklifts deflecting shots back at Agent X, robot guards, acid pits, and crawling eyes shooting death rays, challenge the player(s). + + + 0.40 + 19830101T000000 + Atari + Shooter + 2646 + 1-2 + cloak.zip + Atari Classics + 256x232 + media/mixrbv2/cloak.png + + + + cloud9.zip + Cloud 9 (prototype) + Shoot clouds in the sky. Avoid rain drops and other enemies. Try to destroy all clouds before your chamber is flooded. + 0.50 + 19830101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + Atari Classics + 256x232 + media/mixrbv2/cloud9.png + + + + cgraplop.zip + Cluster Buster (DECO Cassette) (US) + The ball is used to dislodge an ever-changing array of 'grapes' in this souped-up breakout proto-Arkanoid style game. Cluster Buster or Graplop was released in November 1983. + 0.70 + 19830101T000000 + Data East + Action / Breakout games + 2917 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cgraplop.png + + + + cltchitrjd.zip + Clutch Hitter (set 1, Japan, FD1094 317-0175 decrypted) + Clutch Hitter is a baseball game originally released for Sega System 18 hardware before being ported to the Sega Game Gear. The Game Gear version was only released in North America. + +There are noticeable differences between the Japanese and US versions of the arcade game - the US version has a MLB license and uses US teams, while the Japanese version opts for Japanese players and teams. There are also subtle changes to the presentation to reflect the two regions. A Chicken Leg, an enemy seen in Altered Beast and Golden Axe, makes a cameo appearance in the results screen. + +Clutch Hitter is considered to be an entry in the Super League series of baseball games, directly inspiring the improvements Pro Yakyuu Super League '91 made to Super League. + 0.70 + 19910101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + cltchitr.zip + Sega Classics + 320x224 + media/mixrbv2/cltchitr.png + + + + cltchitrj.zip + Clutch Hitter (set 1, Japan, FD1094 317-0175) + Clutch Hitter is a baseball game originally released for Sega System 18 hardware before being ported to the Sega Game Gear. The Game Gear version was only released in North America. + +There are noticeable differences between the Japanese and US versions of the arcade game - the US version has a MLB license and uses US teams, while the Japanese version opts for Japanese players and teams. There are also subtle changes to the presentation to reflect the two regions. A Chicken Leg, an enemy seen in Altered Beast and Golden Axe, makes a cameo appearance in the results screen. + +Clutch Hitter is considered to be an entry in the Super League series of baseball games, directly inspiring the improvements Pro Yakyuu Super League '91 made to Super League. + 0.70 + 19910101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + cltchitr.zip + Sega Classics + 320x224 + media/mixrbv2/cltchitr.png + + + + cltchitrd.zip + Clutch Hitter (set 2, US, FD1094 317-0176 decrypted) + Clutch Hitter is a baseball game originally released for Sega System 18 hardware before being ported to the Sega Game Gear. The Game Gear version was only released in North America. + +There are noticeable differences between the Japanese and US versions of the arcade game - the US version has a MLB license and uses US teams, while the Japanese version opts for Japanese players and teams. There are also subtle changes to the presentation to reflect the two regions. A Chicken Leg, an enemy seen in Altered Beast and Golden Axe, makes a cameo appearance in the results screen. + +Clutch Hitter is considered to be an entry in the Super League series of baseball games, directly inspiring the improvements Pro Yakyuu Super League '91 made to Super League. + 0.70 + 19910101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + cltchitr.zip + Sega Classics + 320x224 + media/mixrbv2/cltchitr.png + + + + cltchitr.zip + Clutch Hitter (set 2, US, FD1094 317-0176) + Clutch Hitter is a baseball game originally released for Sega System 18 hardware before being ported to the Sega Game Gear. The Game Gear version was only released in North America. + +There are noticeable differences between the Japanese and US versions of the arcade game - the US version has a MLB license and uses US teams, while the Japanese version opts for Japanese players and teams. There are also subtle changes to the presentation to reflect the two regions. A Chicken Leg, an enemy seen in Altered Beast and Golden Axe, makes a cameo appearance in the results screen. + +Clutch Hitter is considered to be an entry in the Super League series of baseball games, directly inspiring the improvements Pro Yakyuu Super League '91 made to Super League. + 0.70 + 19910101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/cltchitr.png + + + + cobracomib.zip + Cobra-Command (Italian bootleg) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracomj.zip + Cobra-Command (Japan) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracomjb.zip + Cobra-Command (Japan, bootleg) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracomja.zip + Cobra-Command (Japan?, set 2) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracoma.zip + Cobra-Command (World/US revision 4) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracom.zip + Cobra-Command (World/US revision 5) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + cobracomb.zip + Cobra-Command (World/US) + A horizontally scrolling helicopter battle game. + 0.40 + 19880101T000000 + SEGA + Data East + Shoot'em Up + 79 + 1-2 + cobracom.zip + Data East Classics + 256x240 + media/mixrbv2/cobracom.png + + + + ladybugb2.zip + Coccinelle (bootleg of Lady Bug, set 2) + In Lady Bug you guide a lady bug through a Pac-Man style maze, eating dots, and avoiding enemy insects. You lose a life if you run into a skull or get eaten by an enemy insect. Collect letters to spell EXTRA for a bonus life (just like in Mr. Do!), and SPECIAL for an extra credit. The maze has rotating doors which are just enough to give the game a slightly different feel than the Pac-Man series. + 0.70 + 19810101T000000 + Action + 10 + 1-2 + ladybug.zip + Universal + 270 + 240x192 + media/mixrbv2/ladybug.png + + + + cnbe.zip + Codename - Blut Engel (2006-01-19) + Codename: Blut Engel is an insane homebrew vertical shooting game. + 20060101T000000 + Blastar + Homebrew + Shoot'em Up + 79 + 1 + Neo-Geo + media/mixrbv2/cnbe.png + + + + cnbe2018.zip + Codename - Blut Engel (2018-09-05) + Codename: Blut Engel is an insane homebrew vertical shooting game. + 20060101T000000 + Blastar + Homebrew + Shoot'em Up + 79 + 1 + cnbe.zip + Neo-Geo + media/mixrbv2/cnbe.png + + + + colony7.zip + Colony 7 (set 1) + In Colony 7 the player must defend Colony 7 from alien attack by either using the main weapons that fire shots, a Mega-Blaster which knocks out targets near the detonation zone, or with the Eradicator that acts as a smartbomb which clears the entire screen. There is an ion shield which provides temporary safety for the colony below, but can be blasted away by alien fire. + +Colony 7 is in many ways a combination of two of the most popular shoot 'em up games of the time, containing elements of both Tehkan's Pleiads and Atari's Missile Command. The main innovation of Colony 7 was the extended weaponry arsenal. This gave the player the choice to change between several different weapons, with the the Eradicator needing to be purchased separately as "extended weaponry". + 0.50 + 19810101T000000 + Taito + Taito + Shooter / Missile Command Like + 2945 + 1-2 + Taito Classics + 270 + 294x238 + media/mixrbv2/colony7.png + + + + colony7a.zip + Colony 7 (set 2) + In Colony 7 the player must defend Colony 7 from alien attack by either using the main weapons that fire shots, a Mega-Blaster which knocks out targets near the detonation zone, or with the Eradicator that acts as a smartbomb which clears the entire screen. There is an ion shield which provides temporary safety for the colony below, but can be blasted away by alien fire. + +Colony 7 is in many ways a combination of two of the most popular shoot 'em up games of the time, containing elements of both Tehkan's Pleiads and Atari's Missile Command. The main innovation of Colony 7 was the extended weaponry arsenal. This gave the player the choice to change between several different weapons, with the the Eradicator needing to be purchased separately as "extended weaponry". + 0.50 + 19810101T000000 + Taito + Taito + Shooter / Missile Command Like + 2945 + 1-2 + colony7.zip + Taito Classics + 270 + 294x238 + media/mixrbv2/colony7.png + + + + colt.zip + Colt + You play a marksman who has to rescue hostages from terrorists. Fire upon enemies from your position, but avoid shooting the bystanders. After the last life has been lost, a sequence shows your character falling from his perch to his death. + 0.70 + 19850101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + nycaptor.zip + Taito Classics + 256x224 + media/mixrbv2/nycaptor.png + + + + columnsj.zip + Columns (Japan) + Columns is a Tetris-style puzzle game in which you stack falling jewels in order to created a chain of three of the same colored jewel. + 19900101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + columns.zip + Sega Classics + 256x224 + media/mixrbv2/columns.png + + + + columnsn.zip + Columns (Neo Geo) + Columns is a Tetris-style puzzle game in which you stack falling jewels in order to created a chain of three of the same colored jewel. + 19900101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/columnsn.png + + + + columnsu.zip + Columns (US, cocktail, Rev A) + Columns is a Tetris-style puzzle game in which you stack falling jewels in order to created a chain of three of the same colored jewel. + 19900101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + columns.zip + Sega Classics + 256x224 + media/mixrbv2/columns.png + + + + columns.zip + Columns (World) + Columns is a Tetris-style puzzle game in which you stack falling jewels in order to created a chain of three of the same colored jewel. + 19900101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/columns.png + + + + column2j.zip + Columns II: The Voyage Through Time (Japan) + Align 3 or more items of the same color vertically, horizontally or diagonally. + +Columns II: The Voyage Through Time was the sequel to Columns. It featured the normal puzzle game play, but was only released in Japan in the arcades. It is not clear as to why it was subtitled "The Voyage Through Time", other than the minor tile differences which seem to attempt to indicate future and past ages: they are labeled as Machine Theme, Pale Green Theme, and Classic Theme. + 0.50 + 19900101T000000 + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + columns2.zip + Sega Classics + 256x224 + media/mixrbv2/columns2.png + + + + columns2.zip + Columns II: The Voyage Through Time (World) + Align 3 or more items of the same color vertically, horizontally or diagonally. + +Columns II: The Voyage Through Time was the sequel to Columns. It featured the normal puzzle game play, but was only released in Japan in the arcades. It is not clear as to why it was subtitled "The Voyage Through Time", other than the minor tile differences which seem to attempt to indicate future and past ages: they are labeled as Machine Theme, Pale Green Theme, and Classic Theme. + 0.50 + 19900101T000000 + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/columns2.png + + + + combh.zip + Combat Hawk + Combat Hawk is a reaction-based shoot-em-up in which the player takes on the role of an army soldier. + 0.50 + 19870101T000000 + Sanritsu Denki + Sanritsu Denki + Race, Driving + 28 + 1-2 + Sega Classics + 270 + 224x224 + media/mixrbv2/combh.png + + + + combatsc.zip + Combat School (joystick) + +Combat School is multi-event combat-themed sports game for one or two players, similar in gameplay style to Konami's earlier Track and Field games. Players must compete in a series of boot-camp style events under the watchful eye of the strict drill instructor, with the ultimate aim of completed all events and graduating as a full soldier. + +The game is composed of seven training events, each of which must be completed within a set time to progress to the next. If players only narrowly miss out on qualifying in an event, they must complete a set number of chin-ups as punishment. If they manage this within the time limit, they can progress to the next event. This only occurs once per round, however. + + + 0.50 + 19880101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/combatsc.png + + + + toto.zip + Come Back Toto + 0.70 + 19960101T000000 + SoftClub + SoftClub + Platform / Run Jump + 2915 + SemiCom + 256x224 + media/mixrbv2/toto.png + + + + pacmanpe.zip + Come Come (Petaco SA bootleg of Puck Man) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + mspacmanbhe.zip + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanbcc.zip + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanbco.zip + Come-Cocos (Ms. Pac-Man) (Cocomatic bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + commandob.zip + Commando (bootleg set 1) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + commandob2.zip + Commando (bootleg set 2) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + commandob3.zip + Commando (bootleg set 3) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + commsega.zip + Commando (Sega) + Commando is an early shoot'em up. + 0.30 + 19830101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/commsega.png + + + + commandou.zip + Commando (US set 1) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + commandou2.zip + Commando (US set 2) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + commando.zip + Commando (World) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + comotion.zip + CoMOTION + This game was for two or four players only, you must have a live human opponent to play against, or else the other players character will go straight into a wall, making for a very quick and boring game. Each player moves their character around leaving a solid line behind them. All moves are made on an invisible grid, so you can only turn at 90 degree angles. To win you must last longer than your opponents before hitting something. Each player is eliminated when they crash, taking their lines with them. One good strategy is to turn around and head for the outer area of the screen (in four player mode), because everyone starts out headed for the center. Skirt around the edges until you only have one opponent left, then box them in. Pushing backwards on the stick will cause you to crash into your own line, so avoid that at all cost. + 0.10 + 19760101T000000 + Gremlin Interactive + Action + 10 + 1-4 + Mame + 256x224 + media/mixrbv2/comotion.png + + + + complexx.zip + Complex X + Complex X is an early platform game. + 0.50 + 19840101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/complexx.png + + + + condorn.zip + Condor (S C Novar bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + condor.zip + Condor (Sidam bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + congo.zip + Congo Bongo + Congo Bongo is an isometric platform game and is Sega's take on Nintendo's legendary "Donkey Kong". The game begins with an animated cut-scene showing Bongo the gorilla as approaches the campsite of a sleeping safari hunter and + 0.70 + 19830101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/congo.png + + + + congoa.zip + Congo Bongo (Rev C, 3 board stack) + Congo Bongo is an isometric platform game and is Sega's take on Nintendo's legendary "Donkey Kong". The game begins with an animated cut-scene showing Bongo the gorilla as approaches the campsite of a sleeping safari hunter and + 0.70 + 19830101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + congo.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/congo.png + + + + contrab.zip + Contra (bootleg) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contrabj.zip + Contra (Japan bootleg, set 1) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contrabj1.zip + Contra (Japan bootleg, set 2) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contraj.zip + Contra (Japan, set 1) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contraj1.zip + Contra (Japan, set 2) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contra.zip + Contra (US / Asia, set 1) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contra1.zip + Contra (US / Asia, set 2) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + contrae.zip + Contra (US / Asia, set 3) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + cookbib.zip + Cookie & Bibi (set 1) + A "Puzzle Bobble" ripoff. + 0.50 + 19950101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + SemiCom + 320x240 + media/mixrbv2/cookbib.png + + + + cookbiba.zip + Cookie & Bibi (set 2) + A "Puzzle Bobble" ripoff. + 0.50 + 19950101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + cookbib.zip + SemiCom + 320x240 + media/mixrbv2/cookbib.png + + + + cookbib2.zip + Cookie & Bibi 2 (set 1) + A "Puzzle Bobble" rip-off. + 0.50 + 19960101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + SemiCom + 256x224 + media/mixrbv2/cookbib2.png + + + + cookbib2a.zip + Cookie & Bibi 2 (set 2) + A "Puzzle Bobble" rip-off. + 0.50 + 19960101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + cookbib2.zip + SemiCom + 256x224 + media/mixrbv2/cookbib2.png + + + + cookbib2b.zip + Cookie & Bibi 2 (set 3) + A "Puzzle Bobble" rip-off. + 0.50 + 19960101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + cookbib2.zip + SemiCom + 256x224 + media/mixrbv2/cookbib2.png + + + + cookbib3.zip + Cookie & Bibi 3 + A "Puzzle Bobble" Ripoff. + 0.50 + 19970101T000000 + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + SemiCom + 256x224 + media/mixrbv2/cookbib3.png + + + + clbowl.zip + Coors Light Bowling + This top-down view bowling game allows up to four players to compete. The trackball controls the aim and power of your throw and two buttons control the left and right hook respectively. There are graphic displays of turkeys, splits, gutters etc. and the game keeps track of scoring and high scores. + 0.60 + 19880101T000000 + Sports / Bowling + 2901 + 1-4 + capbowl.zip + Capcom Classics + 270 + 360x245 + media/mixrbv2/capbowl.png + + + + cop01.zip + Cop 01 (set 1) + A shoot'em up / platform game where you are a futuristic cop trying to save your girlfriend. + 0.50 + 19850101T000000 + Nichibutsu + Nichibutsu + Platform / Shooter Scrolling + 2887 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/cop01.png + + + + cop01a.zip + Cop 01 (set 2) + A shoot'em up / platform game where you are a futuristic cop trying to save your girlfriend. + 0.50 + 19850101T000000 + Nichibutsu + Nichibutsu + Platform / Shooter Scrolling + 2887 + 1-2 + cop01.zip + Nichibutsu + 256x224 + media/mixrbv2/cop01.png + + + + cavenger.zip + Cosmic Avenger + An early space shoot'em up game. + +How to Play: +Your Avenger can be moved in 8 directions. The speed increases as it advances, while it decreases as it retreats. +Destroy the front enemy by pressing the Fire Button, and destroy the target below by pressing the Bomb Button. +The enemy UFO will assault you flying either from in front of you or from behind you. You can locate it by using the radar. +A tough chase missile will pursue your Avenger persistently. Dodge it successfully, and you can cause the enemy to fight among themselves. +When you pass the enemy radar site, an ant-aircraft gun will fire at your according to the altitude of your Avenger. +When the screen advances further, the X station will appear. When you destroy it in good time, you can destroy all the targets appearing on the screen at once. You are then awarded a high score. +Your Avenger will be destroyed when it is affected by any explosion. +The 1st – 5th highest scores for the day can enter their names on the screen. + 0.30 + 19810101T000000 + Universal + Shoot'em Up + 79 + 1-2 + Universal + 240x192 + media/mixrbv2/cavenger.png + + + + cosmccop.zip + Cosmic Cop (World) + Hi-octane side-scrolling action, a spin-off from the popular R-Type series + 0.50 + 19910101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/cosmccop.png + + + + cosmogng.zip + Cosmo Gang the Video (US) + Defend against the Cosmo Gang baddies which enter in patterns and join an attack formation. Keep the baddies from stealing energy in the challenging stages. + 0.80 + 19910101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/cosmogng.png + + + + galivan3.zip + Cosmo Police Galivan (12/11/1985) + Galivan is a single player platform shoot-em-up in which the player takes on the roll of a 'Cosmo Police' officer who runs and jumps around a multi-directional scrolling cave system, destroying or avoiding waves of constantly attacking robots, aliens and alien ships. + +The player starts the game as an unarmed human, whose only attacking options are kicking and punching, but picking up a POW item encases the human in a robotic suit and arms the player with a laser gun. + +Collecting the blue POW items while in the suit awards the player with a powerful beam weapon for a limited time, while the red POW item gives the player a three-shot cannon. POW items are dotted throughout the levels and can also be gained by shooting the blue robot aliens. + +The player's character has an energy bar that decreases whenever the player is hit. Should this fall below the halfway point, the robot suit will be lost and the player will once again be an unarmed human. + +Collecting a POW item while in human form will restore the player's energy. If a POW is collected while wearing the suit, however, the player's energy will NOT be increased but their weapon will receive a power-up. + +The game's platforms are littered with springboards that fire the player high into the air when stepped on. Some platforms - often containing POW items - can only be reached via a springboard. + 0.50 + 19850101T000000 + Nichibutsu + Nichibutsu + Platform / Fighter Scrolling + 2896 + 1-2 + galivan.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/galivan.png + + + + galivan2.zip + Cosmo Police Galivan (12/16/1985) + Galivan is a single player platform shoot-em-up in which the player takes on the roll of a 'Cosmo Police' officer who runs and jumps around a multi-directional scrolling cave system, destroying or avoiding waves of constantly attacking robots, aliens and alien ships. + +The player starts the game as an unarmed human, whose only attacking options are kicking and punching, but picking up a POW item encases the human in a robotic suit and arms the player with a laser gun. + +Collecting the blue POW items while in the suit awards the player with a powerful beam weapon for a limited time, while the red POW item gives the player a three-shot cannon. POW items are dotted throughout the levels and can also be gained by shooting the blue robot aliens. + +The player's character has an energy bar that decreases whenever the player is hit. Should this fall below the halfway point, the robot suit will be lost and the player will once again be an unarmed human. + +Collecting a POW item while in human form will restore the player's energy. If a POW is collected while wearing the suit, however, the player's energy will NOT be increased but their weapon will receive a power-up. + +The game's platforms are littered with springboards that fire the player high into the air when stepped on. Some platforms - often containing POW items - can only be reached via a springboard. + 0.50 + 19850101T000000 + Nichibutsu + Nichibutsu + Platform / Fighter Scrolling + 2896 + 1-2 + galivan.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/galivan.png + + + + galivan.zip + Cosmo Police Galivan (12/26/1985) + Galivan is a single player platform shoot-em-up in which the player takes on the roll of a 'Cosmo Police' officer who runs and jumps around a multi-directional scrolling cave system, destroying or avoiding waves of constantly attacking robots, aliens and alien ships. + +The player starts the game as an unarmed human, whose only attacking options are kicking and punching, but picking up a POW item encases the human in a robotic suit and arms the player with a laser gun. + +Collecting the blue POW items while in the suit awards the player with a powerful beam weapon for a limited time, while the red POW item gives the player a three-shot cannon. POW items are dotted throughout the levels and can also be gained by shooting the blue robot aliens. + +The player's character has an energy bar that decreases whenever the player is hit. Should this fall below the halfway point, the robot suit will be lost and the player will once again be an unarmed human. + +Collecting a POW item while in human form will restore the player's energy. If a POW is collected while wearing the suit, however, the player's energy will NOT be increased but their weapon will receive a power-up. + +The game's platforms are littered with springboards that fire the player high into the air when stepped on. Some platforms - often containing POW items - can only be reached via a springboard. + 0.50 + 19850101T000000 + Nichibutsu + Nichibutsu + Platform / Fighter Scrolling + 2896 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/galivan.png + + + + cottong.zip + Cotocoto Cottong + Loco-Motion is a puzzle-style arcade game in which a train is riding on a grid of movable track pieces. The goal is to guide the train through the train stations located around the edge of the playfield. An empty section in the grid allows the player to shift adjacent track pieces into that section to alter the train's path, and a tracing light shows the path the train is taking as it moves. An accelerator button moves the train more quickly on its path, and a panic button will switch the piece of track the train is on with a random track piece on the grid. + + + 0.70 + 19820101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + locomotn.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/locomotn.png + + + + cottonjad.zip + Cotton (set 1, Japan, Rev A, FD1094 317-0179a decrypted)) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottonja.zip + Cotton (set 1, Japan, Rev A, FD1094 317-0179a)) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottonjd.zip + Cotton (set 2, Japan, Rev B, FD1094 317-0179b decrypted)) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottonj.zip + Cotton (set 2, Japan, Rev B, FD1094 317-0179b)) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottonud.zip + Cotton (set 2, US, FD1094 317-0180 decrypted) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottonu.zip + Cotton (set 2, US, FD1094 317-0180) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cottond.zip + Cotton (set 3, World, FD1094 317-0181a decrypted) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + cotton.zip + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + cotton.zip + Cotton (set 3, World, FD1094 317-0181a) + Cotton is a shooter starring a cute, moderately psychotic witch and a fairy. It was originally an arcade game, released in Japan in 1991; it was ported to many other platforms. + 0.70 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/cotton.png + + + + countrunb.zip + Counter Run (bootleg set 1) + In this maze game, You are a car in a labyrinth that must eat all the dots while evading the other cars who pursue you. + 19880101T000000 + Nihon Systems + Nihon Systems + Action + 10 + 1-2 + countrun.zip + Sega Classics + 256x224 + media/mixrbv2/countrun.png + + + + countrun.zip + Counter Run (NS6201-A 1988.3) + In this maze game, You are a car in a labyrinth that must eat all the dots while evading the other cars who pursue you. + 19880101T000000 + Nihon Systems + Nihon Systems + Action + 10 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/countrun.png + + + + countryc.zip + Country Club + A golf game. + 0.70 + 19880101T000000 + SNK + SNK + Sports / Golf + 2913 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/countryc.png + + + + hocrash.zip + Crash (bootleg of Head On) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + crashh.zip + Crash (Pac-Man) + A rather simple breakout-style game. There are a few powerup blocks which will provide the player with some assistance along the way. Powerups include: bomb, double bases, and bonus points. + 0.30 + 19840101T000000 + Midcoin + Midcoin + Action + 10 + 1 + Mame + 256x256 + media/mixrbv2/crashh.png + + + + crbaloon.zip + Crazy Balloon (set 1) + Crazy Balloon is a game of strategy and skill! The object of Crazy Balloon is to guide a delicate swaying balloon through a maze of pin wheel obstacles. + +You have 4 control buttons and you have the ability to move your balloon in any direction. Don't take too long, because if you are too slow, a bogey man erupts on the screen and forces you to move. Just when you think you have the maze all figured out, pin wheels attack your balloon forcing you to take evasive action. + 0.30 + 19800101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/crbaloon.png + + + + crbaloon2.zip + Crazy Balloon (set 2) + Crazy Balloon is a game of strategy and skill! The object of Crazy Balloon is to guide a delicate swaying balloon through a maze of pin wheel obstacles. + +You have 4 control buttons and you have the ability to move your balloon in any direction. Don't take too long, because if you are too slow, a bogey man erupts on the screen and forces you to move. Just when you think you have the maze all figured out, pin wheels attack your balloon forcing you to take evasive action. + 0.30 + 19800101T000000 + Taito + Taito + Action + 10 + 1-2 + crbaloon.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/crbaloon.png + + + + crazyblk.zip + Crazy Blocks + A puzzle game. + 0.50 + 19830101T000000 + Kiwako + Kiwako + Action + 10 + 1-2 + mrjong.zip + Mame + 270 + 240x224 + media/mixrbv2/mrjong.png + + + + cclimberj.zip + Crazy Climber (Japan) + Crazy Climber is a 2-D, strategy style game. The game is strategic in the fact that you must plan your moves as you climb up the building and anticipate the hazards that await you. You start out the game at the bottom of a building to be scaled. As you climb up the building, you will be assailed by bald people throwing flowerpots, signs with loose electrical wires, very large apes, falling signs, trash and barbells, and a bird that likes to drop bad things on your character. Your goal is to make it to the top of the building and catch the helicopter, which will transport you to the next building to be scaled. Of course, you will be rewarded for quickly making it up the building by getting a bonus (that is as long as you can catch the helicopter). The things one does for publicity. + 0.50 + 19800101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + cclimber.zip + Nichibutsu + 256x224 + media/mixrbv2/cclimber.png + + + + cclimber.zip + Crazy Climber (US set 1) + Crazy Climber is a 2-D, strategy style game. The game is strategic in the fact that you must plan your moves as you climb up the building and anticipate the hazards that await you. You start out the game at the bottom of a building to be scaled. As you climb up the building, you will be assailed by bald people throwing flowerpots, signs with loose electrical wires, very large apes, falling signs, trash and barbells, and a bird that likes to drop bad things on your character. Your goal is to make it to the top of the building and catch the helicopter, which will transport you to the next building to be scaled. Of course, you will be rewarded for quickly making it up the building by getting a bonus (that is as long as you can catch the helicopter). The things one does for publicity. + 0.50 + 19800101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/cclimber.png + + + + cclimbera.zip + Crazy Climber (US set 2) + Crazy Climber is a 2-D, strategy style game. The game is strategic in the fact that you must plan your moves as you climb up the building and anticipate the hazards that await you. You start out the game at the bottom of a building to be scaled. As you climb up the building, you will be assailed by bald people throwing flowerpots, signs with loose electrical wires, very large apes, falling signs, trash and barbells, and a bird that likes to drop bad things on your character. Your goal is to make it to the top of the building and catch the helicopter, which will transport you to the next building to be scaled. Of course, you will be rewarded for quickly making it up the building by getting a bonus (that is as long as you can catch the helicopter). The things one does for publicity. + 0.50 + 19800101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + cclimber.zip + Nichibutsu + 256x224 + media/mixrbv2/cclimber.png + + + + cclimbr2.zip + Crazy Climber 2 (Japan) + Using 2 joysticks, the player climbs up the face of high-rise buildings, avoiding closing windows, falling objects, cranes, birds, laundry, gorillas, etc. Reach the top of the building and catch a ride on a helicopter over to next building. + 0.50 + 19880101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 288x224 + media/mixrbv2/cclimbr2.png + + + + cclimbr2a.zip + Crazy Climber 2 (Japan, Harder) + Using 2 joysticks, the player climbs up the face of high-rise buildings, avoiding closing windows, falling objects, cranes, birds, laundry, gorillas, etc. Reach the top of the building and catch a ride on a helicopter over to next building. + 0.50 + 19880101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + cclimbr2.zip + Nichibutsu + 288x224 + media/mixrbv2/cclimbr2.png + + + + crazycop.zip + Crazy Cop (Japan) + Collect criminals while gunning down hundreds of others in this shooter from Konami. + 0.70 + 19880101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + gbusters.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/gbusters.png + + + + crazyfgt.zip + Crazy Fight + Players shoot at on-screen enemies while trying not to hit the hostages throughout 6 different stages of action. + 0.50 + 19960101T000000 + Subsino + Subsino + Lightgun Shooter + 32 + 1 + Seta + 384x224 + media/mixrbv2/crazyfgt.png + + + + ckong.zip + Crazy Kong + Japanese clone of Donkey Kong. Uses Modified Crazy Climber samples for some sounds, and runs on Crazy Climber hardware, possibly despite the name "Crazy Kong" + 0.90 + 19810101T000000 + Falcon + Kyoei / Falcon + Platform / Run Jump + 2915 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckong.png + + + + ckongg.zip + Crazy Kong (bootleg on Galaxian hardware) + Japanese clone of Donkey Kong. Uses Modified Crazy Climber samples for some sounds, and runs on Crazy Climber hardware, possibly despite the name "Crazy Kong" + 0.90 + 19810101T000000 + Falcon + Kyoei / Falcon + Platform / Run Jump + 2915 + 1-2 + ckong.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckong.png + + + + ckongmc.zip + Crazy Kong (bootleg on Moon Cresta hardware) + Japanese clone of Donkey Kong. Uses Modified Crazy Climber samples for some sounds, and runs on Crazy Climber hardware, possibly despite the name "Crazy Kong" + 0.90 + 19810101T000000 + Falcon + Kyoei / Falcon + Platform / Run Jump + 2915 + 1-2 + ckong.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckong.png + + + + ckongs.zip + Crazy Kong (bootleg on Scramble hardware) + Japanese clone of Donkey Kong. Uses Modified Crazy Climber samples for some sounds, and runs on Crazy Climber hardware, possibly despite the name "Crazy Kong" + 0.90 + 19810101T000000 + Falcon + Kyoei / Falcon + Platform / Run Jump + 2915 + 1-2 + ckong.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckong.png + + + + ckongpt2b.zip + Crazy Kong Part II (alternative levels) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + ckongpt2.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + ckongpt2b2.zip + Crazy Kong Part II (bootleg) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + ckongpt2.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + ckongpt2j.zip + Crazy Kong Part II (Japan) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + ckongpt2.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + ckongpt2jeu.zip + Crazy Kong Part II (Jeutel bootleg) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + ckongpt2.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + ckongpt2.zip + Crazy Kong Part II (set 1) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + ckongpt2a.zip + Crazy Kong Part II (set 2) + A "Donkey Kong" clone. + 0.70 + 19810101T000000 + Falcon + Falcon + Platform / Run Jump + 2915 + 1-2 + ckongpt2.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ckongpt2.png + + + + crzrallyg.zip + Crazy Rally (Gecas license) + A vertically scrolling driving game. + 0.70 + 19850101T000000 + Tecfri + Tecfri + Race, Driving / Race + 2924 + 1-2 + crzrally.zip + Mame + 270 + 256x224 + media/mixrbv2/crzrally.png + + + + crzrally.zip + Crazy Rally (set 1) + A vertically scrolling driving game. + 0.70 + 19850101T000000 + Tecfri + Tecfri + Race, Driving / Race + 2924 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/crzrally.png + + + + crzrallya.zip + Crazy Rally (set 2) + A vertically scrolling driving game. + 0.70 + 19850101T000000 + Tecfri + Tecfri + Race, Driving / Race + 2924 + 1-2 + crzrally.zip + Mame + 270 + 256x224 + media/mixrbv2/crzrally.png + + + + mooncrsl.zip + Cresta Mundo (Laguna S.A. Spanish Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + crimecj.zip + Crime City (Japan) + Crime City is a side-scrolling platform shoot-em-up for one or two players in which two cops by the names of Tony Gibson and Raymond Brody are tasked with taking down the gangs of criminals that have overrun their city. + +Each of the game's six stages focuses on a specific criminal activity, such as bank robbery or smuggling. The goal of each stage is to reach the powerful 'boss' character then defeat and arrest them. + 0.50 + 19890101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + crimec.zip + Taito Classics + 320x224 + media/mixrbv2/crimec.png + + + + crimecu.zip + Crime City (US) + Crime City is a side-scrolling platform shoot-em-up for one or two players in which two cops by the names of Tony Gibson and Raymond Brody are tasked with taking down the gangs of criminals that have overrun their city. + +Each of the game's six stages focuses on a specific criminal activity, such as bank robbery or smuggling. The goal of each stage is to reach the powerful 'boss' character then defeat and arrest them. + 0.50 + 19890101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + crimec.zip + Taito Classics + 320x224 + media/mixrbv2/crimec.png + + + + crimec.zip + Crime City (World) + Crime City is a side-scrolling platform shoot-em-up for one or two players in which two cops by the names of Tony Gibson and Raymond Brody are tasked with taking down the gangs of criminals that have overrun their city. + +Each of the game's six stages focuses on a specific criminal activity, such as bank robbery or smuggling. The goal of each stage is to reach the powerful 'boss' character then defeat and arrest them. + 0.50 + 19890101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/crimec.png + + + + crimfghtj.zip + Crime Fighters (Japan 2 Players) + Crime Fighters is a beat-em up arcade game where your job is to rescue several women that have been kidnapped by a crime boss and clean up the streets by pummeling as many gang members as possible with your bare hands, as well as anything else you might possibly discover. You will travel through eight levels throughout the city, in locations that range from subways to the docks. + +At the end of every stage is a fight with a boss character, many of whom happen to be knockoffs of famous horror movie antagonists like Freddy Kruger and Jason Voorhees. Scoring is handled by a system wherein you simply get a point for every enemy you kill. Occasionally examples of cartoon physics pop up, such as when your character gets squashed flat by a moving steamroller or a falling billboard. + 0.50 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + crimfght.zip + Konami Classics + 304x224 + media/mixrbv2/crimfght.png + + + + crimfghtu.zip + Crime Fighters (US 4 Players) + Crime Fighters is a beat-em up arcade game where your job is to rescue several women that have been kidnapped by a crime boss and clean up the streets by pummeling as many gang members as possible with your bare hands, as well as anything else you might possibly discover. You will travel through eight levels throughout the city, in locations that range from subways to the docks. + +At the end of every stage is a fight with a boss character, many of whom happen to be knockoffs of famous horror movie antagonists like Freddy Kruger and Jason Voorhees. Scoring is handled by a system wherein you simply get a point for every enemy you kill. Occasionally examples of cartoon physics pop up, such as when your character gets squashed flat by a moving steamroller or a falling billboard. + 0.50 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + crimfght.zip + Konami Classics + 304x224 + media/mixrbv2/crimfght.png + + + + crimfght.zip + Crime Fighters (World 2 players) + Crime Fighters is a beat-em up arcade game where your job is to rescue several women that have been kidnapped by a crime boss and clean up the streets by pummeling as many gang members as possible with your bare hands, as well as anything else you might possibly discover. You will travel through eight levels throughout the city, in locations that range from subways to the docks. + +At the end of every stage is a fight with a boss character, many of whom happen to be knockoffs of famous horror movie antagonists like Freddy Kruger and Jason Voorhees. Scoring is handled by a system wherein you simply get a point for every enemy you kill. Occasionally examples of cartoon physics pop up, such as when your character gets squashed flat by a moving steamroller or a falling billboard. + 0.50 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 304x224 + media/mixrbv2/crimfght.png + + + + vendetta2pp.zip + Crime Fighters 2 (Japan, 2 Players ver. P) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendettan.zip + Crime Fighters 2 (Japan, 4 Players ver. N) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + crockman.zip + Crock-Man (bootleg, Rene-Pierre) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + crockmnf.zip + Crock-Man (Marti Colls bootleg of Rene Pierre Crock-Man) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + croquisg.zip + Croquis (Germany) + A puzzle game. + 0.90 + 19960101T000000 + Deniam + Deniam + Various + 39 + 1-2 + croquis.zip + Mame + 320x224 + media/mixrbv2/croquis.png + + + + croquis.zip + Croquis (Korea) + A puzzle game. + 0.90 + 19960101T000000 + Deniam + Deniam + Various + 39 + 1-2 + Mame + 320x224 + media/mixrbv2/croquis.png + + + + crospang.zip + Cross Pang + A puzzle game. + 0.50 + 19980101T000000 + F2 System + F2 System + Various + 39 + 1-2 + Mame + 320x240 + media/mixrbv2/crospang.png + + + + crsword.zip + Crossed Swords (ALM-002)(ALH-002) + As a knight, you must travel the countryside fighting monsters and bandits using your sword and shield. When you enter combat the view changes to a pseudo 1st-person perspective where the body of your knight is outlined so that you can see the creatures that you are fighting. When enemies have been defeated, they drop money and power-ups. There are seven chapters in the game, and each chapter (except one) starts with you entering a merchant's shop and buying weapons using the money that you have collected so far. There are also alternate paths which take you to different parts of the game. At the start of the game, you may choose a chapter (from one to three only) you want to start at. + 0.60 + 19910101T000000 + ADK + SNK + Adventure + 13 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/crsword.png + + + + crswd2bl.zip + Crossed Swords 2 (bootleg CD to cartridge conversion) + Crossed Swords II is a "Hack 'n Slash" action game released in 1995 by ADK exclusively for the Neo Geo CD. It is the sequel to 1991's Crossed Swords. This version is a bootleg/hack of the CD version to make it playable in the Neo Geo MVS arcade system. + +Crossed Swords II features the same gameplay from its predecessor (Crossed Swords on Neo Geo MVS and AES). The player is given a first-person view with a third-person silhouette/wire-frame view of the character similar to the Punch-Out!! arcade game. New to this sequel is the addition of a new button for jumping and dashing, giving the player more maneuverability and allowing him to dodge incoming attacks. By pressing the attack button after dashing the player will make a horizontal slash which stuns enemies briefly, and by pressing the attack button after jumping the player will make a powerful downward slash. + +The player can now choose between three characters: the Knight, who is powerful but slow, the Dancer, who is fast but weak, and the Ninja, who has balanced stats. After choosing the character, the player must choose between two game modes: "Nausizz Counterattack" is the main story mode, while "Karividu Arena" is a survival mode where the player fights various enemies consecutively. + +The Story: Decades have passed since the messenger of darkness Nausizz was defeated and peace restored to the kingdom of Belkana. This peace wouldn't last forever, though, as Nausizz's demonic castle has arisen from the depths of hell and his hordes of demons once again threaten the peaceful kingdom with chaos and destruction. Three brave warriors then join together to put and end to Nausizz's reign of terror. + 0.60 + 19950101T000000 + ADK + SNK + Adventure + 13 + 1-2 + Neo-Geo + media/mixrbv2/crswd2bl.png + + + + cphd.zip + Crouching Poney Hidden Dragon (DEMO) + CPHD is a pedestrian shooter mixed with RPG features exclusive for the Neo-Geo. Collect money and experience to evolve your weapons and equipments. Confront hordes of ninjas, shaolins, geishas... into intense fight to earn your immortality. + 20140101T000000 + Le Cortex + Neko Entertainment + Action + 10 + 1-2 + Neo-Geo + media/mixrbv2/cphd.png + + + + cthd2003.zip + Crouching Tiger Hidden Dragon 2003 (set 1) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + cthd2k3a.zip + Crouching Tiger Hidden Dragon 2003 (set 2) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + ct2k3sp.zip + Crouching Tiger Hidden Dragon 2003 Super Plus + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + ct2k3sa.zip + Crouching Tiger Hidden Dragon 2003 Super Plus alternate + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + cruisin.zip + Cruisin + The player controls a small red car and must jump between platforms to colour them in as it drives over them. Oil cans can be collected and shot at the police, taxis, ambulances etc. that roam the levels. Flag waving cats must also be avoided. + 0.70 + 19850101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + citycon.zip + Jaleco + 240x224 + media/mixrbv2/citycon.png + + + + crushbl.zip + Crush Roller (bootleg set 1) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crushbl2.zip + Crush Roller (bootleg set 2) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crushbl3.zip + Crush Roller (bootleg set 3) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crushs.zip + Crush Roller (bootleg set 4) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crush.zip + Crush Roller (set 1) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crush2.zip + Crush Roller (set 2) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crush3.zip + Crush Roller (set 3) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crush4.zip + Crush Roller (set 4) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crush5.zip + Crush Roller (set 5) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + crusherm.zip + Crusher Makochan (Japan) + Crusher Makochan is a little known project of Takumi (or Takumi Corporation, best known for shooting games like Giga Wing, Mars Matrix, etc.) The player must destroy elements of the set to win medals. These medals make it possible to buy improvements that allow you to advance in the game. + 0.40 + 19990101T000000 + Takumi + Takumi + Fight + 14 + 1 + Mame + 318x239 + media/mixrbv2/crusherm.png + + + + ccastlesj.zip + Crystal Castles (joystick version) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastles1.zip + Crystal Castles (version 1) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastles2.zip + Crystal Castles (version 2) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastles3.zip + Crystal Castles (version 3) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastlesf.zip + Crystal Castles (version 3, French) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastlesg.zip + Crystal Castles (version 3, German) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastlesp.zip + Crystal Castles (version 3, Spanish) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + ccastles.zip + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + ccastles.zip + Crystal Castles (version 4) + Crystal Castles is an inventive variation on the maze-driven collect-the-dots gameplay first seen in Namco's legendary "Pac-Man". The player takes on the role of 'Bentley Bear', who must run around a number of "castles" - each presented in the form of an isometric forced 3D maze - picking up the gemstones that litter its walkways and platforms, before moving onto the next castle. + +Each level is populated by a variety of enemies, including sentient trees, gem eaters, a swarm of bees and Berthilda the Witch. Some enemy types move around the levels randomly, while others will actively chase Bentley. Gem Eaters will devour any gems they reach before the player. + +In addition to four-directional walking, Bentley can also jump to avoid pursuing enemies and obstacles. Many levels have platforms that can only be reached via an elevator and some screens also contain hidden secret passages and ramps, as well as 'warps' that move players forward several levels. + +Jumping over the trees will shrink and temporarily disable them, while wearing Berthilda's red hat grants the player temporary invincibility, allowing them to kill the witch should they manage to catch her. If Bentley Bear touches a Gem Eater while it's in the process of eating a gem, the Gem Eater dies and 500 points are awarded to the player. However, if the Gem Eater is not eating a gem when touched, Bentley Bear dies. + +Some levels contain a large pot of honey. A swarm of bees appears near the honey approximately every five seconds but collecting the honey pot earns the player 1,000 bonus points and causes the bees to appear less frequently. Other enemies, such as the balls, skeletons and ghosts must be avoided. + +If Bentley collects all of the gems on a castle, the player receives bonus points. A bonus is also awarded in the event of the player picking up the last gem on the level. + +Crystal Castles consists of ten different stages broken down into 37 castle mazes (with four castles making up each stage, apart from 10th, which has only one castle). + 0.80 + 19830101T000000 + Atari + Atari + Action + 10 + 1-2 + Atari Classics + 319x255 + media/mixrbv2/ccastles.png + + + + cubybop.zip + Cuby Bop (location test) + Cuby Bop is a ball and paddle game. + 0.50 + 19900101T000000 + Hot Lava Games + Hot-B + Action / Breakout games + 2917 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/cubybop.png + + + + cuebrickj.zip + Cue Brick (Japan) + A puzzle game where you shift blocks so that a ball rolling along a path can roll across every block that has a path drawn on it. + 0.60 + 19890101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + cuebrick.zip + Konami Classics + 304x224 + media/mixrbv2/cuebrick.png + + + + cuebrick.zip + Cue Brick (World, version D) + A puzzle game where you shift blocks so that a ball rolling along a path can roll across every block that has a path drawn on it. + 0.60 + 19890101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + Konami Classics + 304x224 + media/mixrbv2/cuebrick.png + + + + curvebal.zip + Curve Ball + An early baseball game. + 0.50 + 19840101T000000 + Mylstar Electronics + Mylstar + Sports / Baseball + 2853 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/curvebal.png + + + + cutieq.zip + Cutie Q + Cutie Q is an old ball and paddle / pinball game with a ghost theme. + 0.30 + 19790101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/cutieq.png + + + + cybattlr.zip + Cybattler + Aliens are invading and the only hope is a robot warrior fitted with laser cannons and an ultra cool laser sword. So get ready to blast & slash lots of enemies in this exciting action game! Features excellent graphics & sound and fast gameplay that will put blisters on those trigger fingers! + 0.50 + 19930101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 270 + 256x224 + media/mixrbv2/cybattlr.png + + + + cybertnk.zip + Cyber Tank (v1.4) + The game can be played by 2 players at the same time, and the 2nd player can join the game during playing by the 1st player. + +The 1st player uses the horizontal control and the 2nd player uses the gun unit to destroy the attacking enemies. + 0.60 + 19880101T000000 + Coreland + Coreland + Shooter / 3rd person + 2899 + 1-2 + Mame + 256x224 + media/mixrbv2/cybertnk.png + + + + cyberlip.zip + Cyber-Lip (NGM-010) + Cyber-Lip is a 1-2 player side-scrolling game where you must fight your way through several areas, and defeat a boss at the end of each one. Along the way, you can pick up a variety of weapons along the way, and use them against the invaders. By destroying certain enemies, you receive a "core bot", which is a ring that surrounds you, and when this touches the invaders, they are destroyed. Time is against you. When it expires, you lose a life. + 0.65 + 19900101T000000 + SNK + SNK + Platform / Shooter Scrolling + 2887 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/cyberlip.png + + + + cybotsj.zip + Cyberbots - fullmetal madness (950420 Japan) + Near the end of the 21st century, Earth begins to become overpopulated, leading to many people living in man-made space colonies. The primary army of Earth called "Earth Corps", has been conducting nefarious experiments and their work, along with the actions of the playable characters, will determine Earth's future. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + cybots.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/cybots.png + + + + cybots.zip + Cyberbots - fullmetal madness (950424 Euro) + Near the end of the 21st century, Earth begins to become overpopulated, leading to many people living in man-made space colonies. The primary army of Earth called "Earth Corps", has been conducting nefarious experiments and their work, along with the actions of the playable characters, will determine Earth's future. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/cybots.png + + + + cybotsud.zip + Cyberbots - fullmetal madness (950424 USA Phoenix Edition) + Near the end of the 21st century, Earth begins to become overpopulated, leading to many people living in man-made space colonies. The primary army of Earth called "Earth Corps", has been conducting nefarious experiments and their work, along with the actions of the playable characters, will determine Earth's future. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + cybots.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/cybots.png + + + + cybotsu.zip + Cyberbots - fullmetal madness (950424 USA) + Near the end of the 21st century, Earth begins to become overpopulated, leading to many people living in man-made space colonies. The primary army of Earth called "Earth Corps", has been conducting nefarious experiments and their work, along with the actions of the playable characters, will determine Earth's future. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + cybots.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/cybots.png + + + + cybotsjd.zip + Cyberbots - fullmetal madness (Japan 950424) (decrypted bootleg) + Near the end of the 21st century, Earth begins to become overpopulated, leading to many people living in man-made space colonies. The primary army of Earth called "Earth Corps", has been conducting nefarious experiments and their work, along with the actions of the playable characters, will determine Earth's future. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + cybots.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/cybots.png + + + + cyclemb.zip + Cycle Maabou (Japan) + It's a rather unique game of skill and different test. You play the role of a guy on a unicycle he advance through the track, and must performed timed jumps to land on various items to collect points, holding the button longer does longer jumps or short jumps. At the same time you need to balance your character using the paddle / spinner control so things can get quite tricky. Each stage gives you a target score and a bonnus stage. + 0.50 + 19840101T000000 + Taito + Platform / Run Jump Scrolling + 2897 + Taito Classics + 256x224 + media/mixrbv2/cyclemb.png + + + + cyclshtg.zip + Cycle Shooting + Cycle Shooting (c) 1986 Taito. - TECHNICAL - Prom Stickers : A97 Main CPU : (2x) Z80 (@ 4 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : (2x) AY8910 (@ 2 Mhz), MSM5232 (@ 2 Mhz) Players : 1 Buttons : 1 - TRIVIA - Cycle Shooting was released in July 19 + 19860101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + Taito Classics + 270 + 256x224 + media/mixrbv2/cyclshtg.png + + + + dcon.zip + D-Con + Successfully defend the city while defeating the attacking alien fleets. The buildings function as your hit points, and the integrity of the individual buildings is displayed in green bars within your HUD at the bottom of the screen. Once all buildings are destroyed the game ends. Enemy bombs can be shot down before impact to prevent damage to buildings. Use bombs to defeat large enemies. + 0.50 + 19920101T000000 + Success + Success + Shooter / Missile Command Like + 2945 + 1-2 + Mame + 320x224 + media/mixrbv2/dcon.png + + + + dday.zip + D-Day + You control a gun that shoots at tanks and other enemies. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/dday.png + + + + ddayc.zip + D-Day (Centuri) + You control a gun that shoots at tanks and other enemies. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + dday.zip + Mame + 256x224 + media/mixrbv2/dday.png + + + + ddayjlc.zip + D-Day (Jaleco set 1) + A vertical shooter from Jaleco where you control a battleship that moves on the ocean. + 0.30 + 19840101T000000 + Jaleco + Olympia + Shooter + 2646 + 1-2 + Jaleco + 270 + 256x224 + media/mixrbv2/ddayjlc.png + + + + ddayjlca.zip + D-Day (Jaleco set 2) + A vertical shooter from Jaleco where you control a battleship that moves on the ocean. + 0.30 + 19840101T000000 + Jaleco + Olympia + Shooter + 2646 + 1-2 + ddayjlc.zip + Jaleco + 270 + 256x224 + media/mixrbv2/ddayjlc.png + + + + ddcrew1d.zip + D. D. Crew (set 1, World, 4 Players, FD1094 317-? decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrew1.zip + D. D. Crew (set 1, World, 4 Players, FD1094 317-?) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrew2d.zip + D. D. Crew (set 2, World, 2 Players, FD1094 317-0184 decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrew2.zip + D. D. Crew (set 2, World, 2 Players, FD1094 317-0184) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewud.zip + D. D. Crew (set 3, US, 4 Players, FD1094 317-0186 decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewu.zip + D. D. Crew (set 3, US, 4 Players, FD1094 317-0186) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewd.zip + D. D. Crew (set 4, World, 3 Players, FD1094 317-0190 decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrew.zip + D. D. Crew (set 4, World, 3 Players, FD1094 317-0190) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewjd.zip + D. D. Crew (set 5, Japan, 4 Players, FD1094 317-0185 decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewj.zip + D. D. Crew (set 5, Japan, 4 Players, FD1094 317-0185) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewj2d.zip + D. D. Crew (set 6, Japan, 2 Players, FD1094 317-0182 decrypted) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + ddcrewj2.zip + D. D. Crew (set 6, Japan, 2 Players, FD1094 317-0182) + There's a massive terrorist plot underway and your country is under threat from a new and deadly evil. You must become one part of a 4 man wrecking crew and hit the streets to take the awesome fighting to the waves of terrorists baddies! Jump out of helicopters as you descend to the streets and fight terrorists all over the city - from down on the tarmac to up on the roofs! Punch and kick your way through everyone, collecting their weapons and using them when you can! + 0.70 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-4 + ddcrew.zip + Sega Classics + 320x224 + media/mixrbv2/ddcrew.png + + + + dacholer.zip + Dacholer + A shooter type maze game, where you play a role of an Ostrich and will have to avoid and destroy all the opponents kicking a turtle shell in a shape of soccer ball for hit them and come to the bonnus stage or next level. + 19830101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/dacholer.png + + + + daimakaib.zip + Dai Makai-Mura (bootleg, Japan) + Three years have passed since the events of "Ghosts'n Goblins" and the knight Arthur finds himself once again facing the horrible creatures of Demon World. This time the demons have invaded the kingdom and upon his return, Arthur is the only survivor, his beloved Genever having been killed by Lucifer. Arthur embarks once again on a quest to defeat the demonic invaders and save Genever's soul. + 0.90 + 19880101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + ghouls.zip + Capcom Play System + 384x224 + media/mixrbv2/ghouls.png + + + + daimakair.zip + Dai Makai-Mura (Japan Resale Ver.) + Three years have passed since the events of "Ghosts'n Goblins" and the knight Arthur finds himself once again facing the horrible creatures of Demon World. This time the demons have invaded the kingdom and upon his return, Arthur is the only survivor, his beloved Genever having been killed by Lucifer. Arthur embarks once again on a quest to defeat the demonic invaders and save Genever's soul. + 0.90 + 19880101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + ghouls.zip + Capcom Play System + 384x224 + media/mixrbv2/ghouls.png + + + + daimakai.zip + Dai Makai-Mura (Japan) + Three years have passed since the events of "Ghosts'n Goblins" and the knight Arthur finds himself once again facing the horrible creatures of Demon World. This time the demons have invaded the kingdom and upon his return, Arthur is the only survivor, his beloved Genever having been killed by Lucifer. Arthur embarks once again on a quest to defeat the demonic invaders and save Genever's soul. + 0.90 + 19880101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + ghouls.zip + Capcom Play System + 384x224 + media/mixrbv2/ghouls.png + + + + dairesya.zip + Dai Ressya Goutou (Japan) + Iron Horse is a horizontally-scrolling platform run 'n' gun game set in the Wild West in which the player takes on the role of a train-robber. The cowboy can use either his fists, pistols or a whip and must work his way along a moving train, killing enemy cowboys and collecting money bags. + +The action takes place either inside a moving train or on its rooftop, with ladders allowing players to move between the two. Player and enemy movement is on three planes and players can duck to both avoid enemy fire and shoot crouching enemies. + +The weapon option the player chooses at the start of the games significantly alters the way it plays, with weapons arranged by ease of use. The three weapons and their qualities are: + +The whip has good range and can knock out several enemies at once, making it the ideal beginner's pick. +The pistol fires bullets that have longer reach and is the only weapon that can be used while still running, but each bullet can kill only a single enemy. +Fists have the shortest range but can lay out several enemies in one punch with a domino effect. Double points are awarded for each hit. + +In addition to the main weapons, sub-weapons can be collected by killing special, box-carrying enemies. Lanterns create a wave of fire which burns enemies to cinders, bombs destroy everything within a ten-foot radius and lassos tie up enemy varmints. + 0.60 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ironhors.zip + Konami Classics + 240x224 + media/mixrbv2/ironhors.png + + + + daikaiju.zip + Daikaiju no Gyakushu + In Daikaiju no Gyakushu, You control a Godzilla like monster and has to destroy planes, tanks, buildings. + 0.50 + 19860101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/daikaiju.png + + + + dkgensanm72.zip + Daiku no Gensan (Japan, M72 hardware) + This was released in Japanese Arcade's in 1990, and for the NES on November 15th 1991 and sometime in 1992 in Europe. + 0.70 + 19900101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + hharry.zip + Irem Classics + 384x256 + media/mixrbv2/hharry.png + + + + dkgensan.zip + Daiku no Gensan (Japan, M84 hardware) + This was released in Japanese Arcade's in 1990, and for the NES on November 15th 1991 and sometime in 1992 in Europe. + 0.70 + 19900101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + hharry.zip + Irem Classics + 384x256 + media/mixrbv2/hharry.png + + + + daioh.zip + Daioh + An excellent vertically scrolling space shoot'em up. Excellent graphics, multi-layer scrolling, big sprites (especially bosses), and an extreme difficulty that continued to increase from easy to insane the farther along you went without getting killed. + 0.70 + 19930101T000000 + Athena + Athena + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/daioh.png + + + + daiohc.zip + Daioh (93111A PCB conversion) + An excellent vertically scrolling space shoot'em up. Excellent graphics, multi-layer scrolling, big sprites (especially bosses), and an extreme difficulty that continued to increase from easy to insane the farther along you went without getting killed. + 0.70 + 19930101T000000 + Athena + Athena + Shoot'em Up + 79 + 1-2 + daioh.zip + Seta + 270 + 384x240 + media/mixrbv2/daioh.png + + + + daioha.zip + Daioh (earlier) + An excellent vertically scrolling space shoot'em up. Excellent graphics, multi-layer scrolling, big sprites (especially bosses), and an extreme difficulty that continued to increase from easy to insane the farther along you went without getting killed. + 0.70 + 19930101T000000 + Athena + Athena + Shoot'em Up + 79 + 1-2 + daioh.zip + Seta + 270 + 384x240 + media/mixrbv2/daioh.png + + + + daiohp.zip + Daioh (prototype) + An excellent vertically scrolling space shoot'em up. Excellent graphics, multi-layer scrolling, big sprites (especially bosses), and an extreme difficulty that continued to increase from easy to insane the farther along you went without getting killed. + 0.70 + 19930101T000000 + Athena + Athena + Shoot'em Up + 79 + 1-2 + daioh.zip + Seta + 270 + 384x240 + media/mixrbv2/daioh.png + + + + daisenpu.zip + Daisenpu (Japan) + Twin Hawk is a typical vertical scrolling shooter with a top-down view. Your goal is easy, shoot all the enemies along the way. You only get a standard gun on your plane, and no bombs. Instead of bombs you can call helper planes. These planes make a formation around you and help to shoot all enemies. + +Along the way you get the chance to collect power-ups by shooting transport trucks. When these are destroyed they release a power-up. There are three types. First is the weapon upgrade, with this you get a wider and more powerful shot. Second, you get more calls for helper planes. And third are extra lives. + + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + twinhawk.zip + Taito Classics + 270 + 384x224 + media/mixrbv2/twinhawk.png + + + + daitorid.zip + Daitoride + Solitaire mahjong game. + 0.50 + 19950101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + Mitchell + 320x224 + media/mixrbv2/daitorid.png + + + + daitorida.zip + Daitoride (YMF278B version) + Solitaire mahjong game. + 0.50 + 19950101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + daitorid.zip + Mitchell + 320x224 + media/mixrbv2/daitorid.png + + + + dambustruk.zip + Dambusters (UK) + A great horizontally scrolling shooter game. + +You are the pilot of a bomber aircraft of the 617 Squadron RAF in a risky mission. Each mission involves flying the bomber over the English Channel, over Germany, dropping the bouncing bomb on the Dam in the Rhur valley, you must increase or decrease speed while avoiding enemy fire and destroy with your weapons a variety of enemies and artillery like aircraft, navy destroyer and barrrage ballons. Keep Go ahead dodging rugged mountain and avoid land crashing to keep the mission and flying back over Germany and the English Channel, and finally landing safely in England. As you approach the target, the enemy planes attack more frequently and accurately. As well as the threat of being shot down, the player could also run out of fuel during the mission, ending the game. + +The Lights under bomber warn of dam approaching. The dam must be destroyed by a well-timed strike descend until beams touch water. Judge distance to dam before bombing. Climb fast after launch the bouncing bomb to dam for a succes mission. + +The weather report: + +Severe icing conditions. Flying through storm clouds reduces remaining lives. Your mission is to destroy the enemy dams GOOD LUCK! + 0.30 + 19810101T000000 + South West Research + South West Research + Shoot'em Up + 79 + 1-2 + dambustr.zip + Mame + 270 + 256x224 + media/mixrbv2/dambustr.png + + + + dambustr.zip + Dambusters (US, set 1) + A great horizontally scrolling shooter game. + +You are the pilot of a bomber aircraft of the 617 Squadron RAF in a risky mission. Each mission involves flying the bomber over the English Channel, over Germany, dropping the bouncing bomb on the Dam in the Rhur valley, you must increase or decrease speed while avoiding enemy fire and destroy with your weapons a variety of enemies and artillery like aircraft, navy destroyer and barrrage ballons. Keep Go ahead dodging rugged mountain and avoid land crashing to keep the mission and flying back over Germany and the English Channel, and finally landing safely in England. As you approach the target, the enemy planes attack more frequently and accurately. As well as the threat of being shot down, the player could also run out of fuel during the mission, ending the game. + +The Lights under bomber warn of dam approaching. The dam must be destroyed by a well-timed strike descend until beams touch water. Judge distance to dam before bombing. Climb fast after launch the bouncing bomb to dam for a succes mission. + +The weather report: + +Severe icing conditions. Flying through storm clouds reduces remaining lives. Your mission is to destroy the enemy dams GOOD LUCK! + 0.30 + 19810101T000000 + South West Research + South West Research + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/dambustr.png + + + + dambustra.zip + Dambusters (US, set 2) + A great horizontally scrolling shooter game. + +You are the pilot of a bomber aircraft of the 617 Squadron RAF in a risky mission. Each mission involves flying the bomber over the English Channel, over Germany, dropping the bouncing bomb on the Dam in the Rhur valley, you must increase or decrease speed while avoiding enemy fire and destroy with your weapons a variety of enemies and artillery like aircraft, navy destroyer and barrrage ballons. Keep Go ahead dodging rugged mountain and avoid land crashing to keep the mission and flying back over Germany and the English Channel, and finally landing safely in England. As you approach the target, the enemy planes attack more frequently and accurately. As well as the threat of being shot down, the player could also run out of fuel during the mission, ending the game. + +The Lights under bomber warn of dam approaching. The dam must be destroyed by a well-timed strike descend until beams touch water. Judge distance to dam before bombing. Climb fast after launch the bouncing bomb to dam for a succes mission. + +The weather report: + +Severe icing conditions. Flying through storm clouds reduces remaining lives. Your mission is to destroy the enemy dams GOOD LUCK! + 0.30 + 19810101T000000 + South West Research + South West Research + Shoot'em Up + 79 + 1-2 + dambustr.zip + Mame + 270 + 256x224 + media/mixrbv2/dambustr.png + + + + dngrtrck.zip + Danger Track (Rally X bootleg) + In Rally-X, the player drives a car around a maze picking up all of the yellow flags, of which there are ten, before the car's fuel runs out. The game-play has a similar feel to another Namco legend, "Pac-Man"; although in Rally-X, the mazes are much larger and, with each maze having only ten flags to collect, is more sparsely populated than Namco's pill-eating legend. + +In-game opponents consist of red enemy cars that try to ram into and destroy the player's car, a problem compounded by the fact that enemy cars are faster than the player's. A smoke screen can be activated which trails behind the player's car and causes any pursuing enemies to crash. Each maze also has rock formations which, if crashed into, will result in the loss of a player car. A radar display to the right hand side of the playing area shows the positions of both the flags, and the enemy vehicles. + 0.80 + 19800101T000000 + Namco + Namco + Action + 10 + 1-2 + rallyx.zip + Namco Classics + 288x224 + media/mixrbv2/rallyx.png + + + + dangseed.zip + Dangerous Seed (Japan) + The player assumes control of three separate ships. Each ship has a different firing pattern. When the three ships are combined together, they form the Moon Diver. Their mission is to quell an alien invasion which is spanning all of the Milky Way and destroy the alien headquarters: the Danger-Seed. + +The player starts the game with three separate fighters and has to make it through four tubes using the fighters separately. If one gets destroyed, then the next, more powerful ship makes an attempt to get through. If the player makes it to the fifth stage, the three ships combine into a singular composite ship called the "Moon Diver", which has a massive amount of firepower. + 0.70 + 19890101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/dangseed.png + + + + dfeveron.zip + Dangun Feveron (Japan, ver. 98/09/17) + Planet Meruto, a well known powerful military force in the Milky Way, sends out a Flagship under the command of Admiral Gratze, to attack the earth in order to gain one of it's most desired raw materials in the Galaxy: Water +On Planet Fever, a small planet between Meruto and the Earth a base was planned to be installed, from there the attack vessels should start the invasion of Planet Earth. But before Admiral Gratze's plan was fullfilled, a mysterious wave appeared in space and confused the instruments of Meruto's fleet, and disrupted Admiral Gratze's love chat with his wife Irene Catharine. About this he got angry to such an extent that he forced his fleet to land on the source of this wave. So the wheel of fate began to spin... + 0.80 + 19980101T000000 + Cave + Nihon System + Shoot'em up / Vertical + 2851 + 1-2 + feversos.zip + Cave + 270 + 320x240 + media/mixrbv2/feversos.png + + + + dariuse.zip + Darius (Extra) (Japan) + Darius is a horizontally scrolling shoot-em-up that was unique at the time for featuring a game screen that was three times wider than the conventional size, with the arcade cabinet utilizing three CRT screens to accommodate it. + +In the game, the player flies an ornate fighter craft called a Silver Hawk. The craft is equipped with two attack weapons: Missile (forward-firing standard gun) and Bomb (drops from the bottom of the ship). The Silver Hawk is also equipped with the 'Arm' (armor); a green energy shield that can absorb enemy attacks without harm to the ship. + 0.70 + 19860101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius.zip + Taito Classics + 288x224 + media/mixrbv2/darius.png + + + + dariuso.zip + Darius (Japan old version) + Darius is a horizontally scrolling shoot-em-up that was unique at the time for featuring a game screen that was three times wider than the conventional size, with the arcade cabinet utilizing three CRT screens to accommodate it. + +In the game, the player flies an ornate fighter craft called a Silver Hawk. The craft is equipped with two attack weapons: Missile (forward-firing standard gun) and Bomb (drops from the bottom of the ship). The Silver Hawk is also equipped with the 'Arm' (armor); a green energy shield that can absorb enemy attacks without harm to the ship. + 0.70 + 19860101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius.zip + Taito Classics + 288x224 + media/mixrbv2/darius.png + + + + dariusj.zip + Darius (Japan) + Darius is a horizontally scrolling shoot-em-up that was unique at the time for featuring a game screen that was three times wider than the conventional size, with the arcade cabinet utilizing three CRT screens to accommodate it. + +In the game, the player flies an ornate fighter craft called a Silver Hawk. The craft is equipped with two attack weapons: Missile (forward-firing standard gun) and Bomb (drops from the bottom of the ship). The Silver Hawk is also equipped with the 'Arm' (armor); a green energy shield that can absorb enemy attacks without harm to the ship. + 0.70 + 19860101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius.zip + Taito Classics + 288x224 + media/mixrbv2/darius.png + + + + dariusu.zip + Darius (US) + Darius is a horizontally scrolling shoot-em-up that was unique at the time for featuring a game screen that was three times wider than the conventional size, with the arcade cabinet utilizing three CRT screens to accommodate it. + +In the game, the player flies an ornate fighter craft called a Silver Hawk. The craft is equipped with two attack weapons: Missile (forward-firing standard gun) and Bomb (drops from the bottom of the ship). The Silver Hawk is also equipped with the 'Arm' (armor); a green energy shield that can absorb enemy attacks without harm to the ship. + 0.70 + 19860101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius.zip + Taito Classics + 288x224 + media/mixrbv2/darius.png + + + + darius.zip + Darius (World) + Darius is a horizontally scrolling shoot-em-up that was unique at the time for featuring a game screen that was three times wider than the conventional size, with the arcade cabinet utilizing three CRT screens to accommodate it. + +In the game, the player flies an ornate fighter craft called a Silver Hawk. The craft is equipped with two attack weapons: Missile (forward-firing standard gun) and Bomb (drops from the bottom of the ship). The Silver Hawk is also equipped with the 'Arm' (armor); a green energy shield that can absorb enemy attacks without harm to the ship. + 0.70 + 19860101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 288x224 + media/mixrbv2/darius.png + + + + darius2do.zip + Darius II (dual screen) (Japan old version) + Darius II is the direct sequel to the 1986 original, Darius II retained the distinctive 3-screen format of the first game. + +The power-up system of Darius II was changed from that of its parent game, with players having to destroy complete waves of a particular enemy to earn a power-up. 2 new power-ups were also added; the 1st was a new weapon power-up that gave the player green, vertical lasers, the 2nd power-up was a rainbow-colored item that powered up all of the players weapons. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius2.zip + Taito Classics + 288x224 + media/mixrbv2/darius2.png + + + + darius2d.zip + Darius II (dual screen) (Japan) + Darius II is the direct sequel to the 1986 original, Darius II retained the distinctive 3-screen format of the first game. + +The power-up system of Darius II was changed from that of its parent game, with players having to destroy complete waves of a particular enemy to earn a power-up. 2 new power-ups were also added; the 1st was a new weapon power-up that gave the player green, vertical lasers, the 2nd power-up was a rainbow-colored item that powered up all of the players weapons. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius2.zip + Taito Classics + 288x224 + media/mixrbv2/darius2.png + + + + sagaia.zip + Darius II (dual screen) (World) + Darius II is the direct sequel to the 1986 original, Darius II retained the distinctive 3-screen format of the first game. + +The power-up system of Darius II was changed from that of its parent game, with players having to destroy complete waves of a particular enemy to earn a power-up. 2 new power-ups were also added; the 1st was a new weapon power-up that gave the player green, vertical lasers, the 2nd power-up was a rainbow-colored item that powered up all of the players weapons. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + darius2.zip + Taito Classics + 288x224 + media/mixrbv2/darius2.png + + + + darius2.zip + Darius II (triple screen) (Japan) + Darius II is the direct sequel to the 1986 original, Darius II retained the distinctive 3-screen format of the first game. + +The power-up system of Darius II was changed from that of its parent game, with players having to destroy complete waves of a particular enemy to earn a power-up. 2 new power-ups were also added; the 1st was a new weapon power-up that gave the player green, vertical lasers, the 2nd power-up was a rainbow-colored item that powered up all of the players weapons. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 288x224 + media/mixrbv2/darius2.png + + + + darkadv.zip + Dark Adventure + A Gauntlet-type game. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + devilw.zip + Konami Classics + 320x224 + media/mixrbv2/devilw.png + + + + darkplnt.zip + Dark Planet + A 3-D space shoot'em up game that takes place on a mysterious planet. Prevent enemies from building bases. + 0.30 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter + 2646 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/darkplnt.png + + + + darktowr.zip + Dark Tower + Dark Tower is a simple yet playable platform game which is somewhat unique in that while the game itself is original (i.e. not a direct clone of another game) many of the game's component parts are NOT. See 'Trivia' for further details. + 0.50 + 19920101T000000 + Platform + 7 + 1-2 + Taito Classics + 256x240 + media/mixrbv2/darktowr.png + + + + dstlka.zip + Darkstalkers - the night warriors (940705 Asia) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dstlk.zip + Darkstalkers - the night warriors (940705 Euro) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dstlku1d.zip + Darkstalkers - the night warriors (940705 USA Phoenix Edition) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dstlkur1.zip + Darkstalkers - the night warriors (940705 USA) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dstlkh.zip + Darkstalkers - the night warriors (940818 Hispanic) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dstlku.zip + Darkstalkers - the night warriors (940818 USA) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + dwi.zip + DarkWing Duck (FMV Demo) + 20090101T000000 + Sergi + Sergi + Mame + media/mixrbv2/dwi.png + + + dwia.zip + DarkWing Duck (FMV Demo, alt) + 20090101T000000 + Sergi + Sergi + dwi.zip + Mame + media/mixrbv2/dwi.png + + + darwin.zip + Darwin 4078 (Japan) + The game takes place within a gigantic spaceship which has virtually infinite capacity because of its ability to manipulate time and space. The player must deal with enigmatic creatures called EVOL, which consist only of pure energy and need to keep themselves in capsules in order to maintain their existence in the world. + +All of the characters in the game are designed to resemble microscopic organisms, both in their appearance and their quick, tricky movements. The player's ship undergoes over 10 types of transformations throughout the game, each with offensive and defensive maneuvers specific to their design. The sound effects used are minimal, but different types of sounds are used according to the type of shots or their speed. A sound resembling a long scream results when the player's ship is hit and returns to its weakest evolutionary state. + +The player must progress through 16 different levels, defeating the boss at the end of each level. The player controls their ship using an 8-way joystick and 2 buttons (one button targets enemies in the air, and the other targets the enemies on the ground). The power of the player's ship increases as it evolves. + +There are two broad categories that define how enemies attack. The first type only shoots in the forward direction at a constant speed, but the second type shoots bullets that travel at different speeds depending on its distance with the player's ship (the bullets travel quicker if the player is farther away, and slower if the player is close by). This makes it so that staying away from enemies will not necessarily make it easier to avoid attacks. The game's difficulty also does not change over time, and enemies do not become stronger as the player's ship evolves. + 0.50 + 19860101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 240x240 + media/mixrbv2/darwin.png + + + + dquizgo.zip + Date Quiz Go Go (Korea) + 0.70 + 19980101T000000 + SemiCom + SemiCom + Quiz / Korean + 2951 + 1-2 + SemiCom + 320x240 + media/mixrbv2/dquizgo.png + + + + powj.zip + Datsugoku - Prisoners of War (Japan) + Prisoners of War is a horizontally-scrolling run 'n' gun platform game for one or two players in which Special Forces soldiers escape from a POW camp and must fight their way through enemy territory to reach the extraction point and rescue. + +The escaping POWs fight primarily using hand-to-hand combat, but limited-use knives and sub-machine guns can be retrieved from fallen enemy soldiers. The game consists of three action buttons for punching, kicking and jumping. There are also three special attacks performed by pressing two buttons simultaneously: a jump kick (jump, then kick), a back punch (jump and punch simultaneously) and a headbutt (punch and kick simultaneously). + +The controls change when wielding a weapon; the knife is thrown by pressing the punch button, but can preserved by using kicks. When wielding the machine gun, players can fire it by pressing the kick button, or can conserve its ammo by pressing the punch button to gun-whip enemies from close-range. + 0.70 + 19880101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + pow.zip + SNK Classics + 256x224 + media/mixrbv2/pow.png + + + + deadang.zip + Dead Angle + Armed only with your trusty Tommy gun, you must exterminate all the main gangster families in order to reach the main kingpin so you can save your girl. Beware, they are waiting for you and will not go down without put + 0.50 + 19880101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1-2 + Seibu Kaihatsu + 256x224 + media/mixrbv2/deadang.png + + + + dderby.zip + Death Derby + 20030101T000000 + Mame + + + decocass.zip + DECO Cassette System Bios + A 38-year-old Arcade System + +DECO Cassette System © 1980 Data East Corp. + 19810101T000000 + Data East + Various + 39 + 1-2 + non Jeu + 270 + 256x240 + media/mixrbv2/decocass.png + + + decomult.zip + Deco Cassette System Multigame (ROM based) + 20080101T000000 + Mame + 256x240 + media/mixrbv2/decomult.png + + + + defence.zip + Defence Command (Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + redufo.zip + Defend the Terra Attack on the Red UFO + Destroy all the small flying saucers then destroy the mothership. + 0.50 + 19810101T000000 + Artic Computing + Artic + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/redufo.png + + + + redufob.zip + Defend the Terra Attack on the Red UFO (bootleg, set 1) + Destroy all the small flying saucers then destroy the mothership. + 0.50 + 19810101T000000 + Artic Computing + Artic + Shooter / Space Invaders Like + 2900 + 1-2 + redufo.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/redufo.png + + + + redufob2.zip + Defend the Terra Attack on the Red UFO (bootleg, set 2) + Destroy all the small flying saucers then destroy the mothership. + 0.50 + 19810101T000000 + Artic Computing + Artic + Shooter / Space Invaders Like + 2900 + 1-2 + redufo.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/redufo.png + + + + redufob3.zip + Defend the Terra Attack on the Red UFO (bootleg, set 3) + Destroy all the small flying saucers then destroy the mothership. + 0.50 + 19810101T000000 + Artic Computing + Artic + Shooter / Space Invaders Like + 2900 + 1-2 + redufo.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/redufo.png + + + + defenderb.zip + Defender (Blue label) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + defenderg.zip + Defender (Green label) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + defender.zip + Defender (Red label) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + defenderw.zip + Defender (White label) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + defense.zip + Defense (System 16B, FD1089A 317-0028) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + defcmnd.zip + Defense Command (Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + deltrace.zip + Delta Race + Omega Race is a vector-based single-screen shoot-em-up set in the year 2003, in which the Omegan system has developed a way of training its warriors to protect their star colonies against invading alien androids. Players must pilot an Omegan Space Fighter to engage and destroy the aliens and the mines they have planted. + +The Omegan Fighter can rotate through 360 degrees and thrust to move forwards, it's also armed with forward-firing lasers with which to shoot the enemy ships. Battles take place in an enclosed area and when the player's ship reaches the edge of the screen it bounces off an invisible barrier, although the barrier briefly appears when hit or shot. + +As well as firing lasers at the player, some enemy ships also drop mines that must be shot or avoided. As players progress through the waves, the number of enemy attackers and their aggression increases. + 0.90 + 19810101T000000 + Midway + Midway + Fight + 14 + 1-2 + omegrace.zip + Midway Classics + media/mixrbv2/omegrace.png + + + + deluxe4u.zip + Deluxe 4 U (ver. 0107, 07/01/2000) + Five exciting games in one : Blackjack, Bingo, Search Point, Pang and Land Cutter. + 0.60 + 20000101T000000 + ESD + Compilation + 34 + 1-2 + deluxe5.zip + Mame + 320x240 + media/mixrbv2/deluxe5.png + + + + deluxe5.zip + Deluxe 5 (ver. 0107, 07/01/2000, set 1) + Five exciting games in one : Blackjack, Bingo, Search Point, Pang and Land Cutter. + 0.60 + 20000101T000000 + ESD + Compilation + 34 + 1-2 + Mame + 320x240 + media/mixrbv2/deluxe5.png + + + + deluxe5a.zip + Deluxe 5 (ver. 0107, 07/01/2000, set 2) + Five exciting games in one : Blackjack, Bingo, Search Point, Pang and Land Cutter. + 0.60 + 20000101T000000 + ESD + Compilation + 34 + 1-2 + deluxe5.zip + Mame + 320x240 + media/mixrbv2/deluxe5.png + + + + deluxe5b.zip + Deluxe 5 (ver. 0107, 07/01/2000, set 3) + Five exciting games in one : Blackjack, Bingo, Search Point, Pang and Land Cutter. + 0.60 + 20000101T000000 + ESD + Compilation + 34 + 1-2 + deluxe5.zip + Mame + 320x240 + media/mixrbv2/deluxe5.png + + + + demoderb.zip + Demolition Derby + Drive your car in a demolition derby and avoid getting hit in the radiator. Hit other cars in the radiator several times to make them explode. Collect wrenches, screwdrivers and car keys for bonuses. + 0.40 + 19840101T000000 + Bally Midway + Bally Midway + Race, Driving + 28 + 1-4 + Midway Classics + 512x480 + media/mixrbv2/demoderb.png + + + + demoderbc.zip + Demolition Derby (cocktail) + Drive your car in a demolition derby and avoid getting hit in the radiator. Hit other cars in the radiator several times to make them explode. Collect wrenches, screwdrivers and car keys for bonuses. + 0.40 + 19840101T000000 + Bally Midway + Bally Midway + Race, Driving + 28 + 1-4 + demoderb.zip + Midway Classics + 512x480 + media/mixrbv2/demoderb.png + + + + demoderm.zip + Demolition Derby (MCR-3 Mono Board Version) + Drive your car in a demolition derby and avoid getting hit in the radiator. Hit other cars in the radiator several times to make them explode. Collect wrenches, screwdrivers and car keys for bonuses. + 0.40 + 19840101T000000 + Bally Midway + Bally Midway + Race, Driving + 28 + 1-4 + demoderb.zip + Midway Classics + 512x480 + media/mixrbv2/demoderb.png + + + + demonwld.zip + Demon's World / Horror Story (set 1) + Demon's World, released in Japan as "Horror Story", is a platformer arcade game that was developed by Toaplan and published by Taito in 1989. This game is multi-regional, meaning that it can be configured for different regions via the DIP switches. These settings change the legal warnings, can display the Taito licensing message and can change the title between the English version (Demon's World) and the Japanese version (Horror Story). + 0.60 + 19900101T000000 + Toaplan + Toaplan + Platform / Shooter Scrolling + 2887 + 1-2 + Toaplan + 320x240 + media/mixrbv2/demonwld.png + + + + demonwld1.zip + Demon's World / Horror Story (set 2) + Demon's World, released in Japan as "Horror Story", is a platformer arcade game that was developed by Toaplan and published by Taito in 1989. This game is multi-regional, meaning that it can be configured for different regions via the DIP switches. These settings change the legal warnings, can display the Taito licensing message and can change the title between the English version (Demon's World) and the Japanese version (Horror Story). + 0.60 + 19900101T000000 + Toaplan + Toaplan + Platform / Shooter Scrolling + 2887 + 1-2 + demonwld.zip + Toaplan + 320x240 + media/mixrbv2/demonwld.png + + + + demonwld2.zip + Demon's World / Horror Story (set 3) + Demon's World, released in Japan as "Horror Story", is a platformer arcade game that was developed by Toaplan and published by Taito in 1989. This game is multi-regional, meaning that it can be configured for different regions via the DIP switches. These settings change the legal warnings, can display the Taito licensing message and can change the title between the English version (Demon's World) and the Japanese version (Horror Story). + 0.60 + 19900101T000000 + Toaplan + Toaplan + Platform / Shooter Scrolling + 2887 + 1-2 + demonwld.zip + Toaplan + 320x240 + media/mixrbv2/demonwld.png + + + + demonwld3.zip + Demon's World / Horror Story (set 4) + Demon's World, released in Japan as "Horror Story", is a platformer arcade game that was developed by Toaplan and published by Taito in 1989. This game is multi-regional, meaning that it can be configured for different regions via the DIP switches. These settings change the legal warnings, can display the Taito licensing message and can change the title between the English version (Demon's World) and the Japanese version (Horror Story). + 0.60 + 19900101T000000 + Toaplan + Toaplan + Platform / Shooter Scrolling + 2887 + 1-2 + demonwld.zip + Toaplan + 320x240 + media/mixrbv2/demonwld.png + + + + demonwld4.zip + Demon's World / Horror Story (set 5) + Demon's World, released in Japan as "Horror Story", is a platformer arcade game that was developed by Toaplan and published by Taito in 1989. This game is multi-regional, meaning that it can be configured for different regions via the DIP switches. These settings change the legal warnings, can display the Taito licensing message and can change the title between the English version (Demon's World) and the Japanese version (Horror Story). + 0.60 + 19900101T000000 + Toaplan + Toaplan + Platform / Shooter Scrolling + 2887 + 1-2 + demonwld.zip + Toaplan + 320x240 + media/mixrbv2/demonwld.png + + + + denjinmk.zip + Denjin Makai (set 1) + Many years after the third world war, a new country has emerged. This country is not controlled by a god, demon, or man, but by a huge network system, a super computer the computer has a name but I have forgotten what it was called. This super computer controls and monitors the city and everyone in it, and no one can ever escape or get by the computer. Recently there have been people showing up whos actions cannot be seen or monitored by the computer. These people are known as Ghosts. Because of this, the Ghosts have been freely committing crimes across the city. In response to this a Ghost Police Force or Ghost Defence Force has been created, members of this group are known as Ghost Chasers. There are SIX characters to choose from all with their own unique movelist which is quite large and only matched by its sequel, Denjin Makai II: Guardians. + 0.60 + 19940101T000000 + Winky Soft + Banpresto + Beat'em Up + 1 + 1-2 + Seibu Kaihatsu + 320x256 + media/mixrbv2/denjinmk.png + + + + denjinmka.zip + Denjin Makai (set 2) + Many years after the third world war, a new country has emerged. This country is not controlled by a god, demon, or man, but by a huge network system, a super computer the computer has a name but I have forgotten what it was called. This super computer controls and monitors the city and everyone in it, and no one can ever escape or get by the computer. Recently there have been people showing up whos actions cannot be seen or monitored by the computer. These people are known as Ghosts. Because of this, the Ghosts have been freely committing crimes across the city. In response to this a Ghost Police Force or Ghost Defence Force has been created, members of this group are known as Ghost Chasers. There are SIX characters to choose from all with their own unique movelist which is quite large and only matched by its sequel, Denjin Makai II: Guardians. + 0.60 + 19940101T000000 + Winky Soft + Banpresto + Beat'em Up + 1 + 1-2 + denjinmk.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/denjinmk.png + + + + deroon.zip + Deroon DeroDero + A cute and hilarious puzzle game in the vein of Puyo Puyo. + 0.70 + 19950101T000000 + Tecmo + Tecmo + Puzzle-Game / Fall + 2912 + 1-2 + Tecmo + 320x240 + media/mixrbv2/deroon.png + + + + deroona.zip + Deroon DeroDero (alt set) + A cute and hilarious puzzle game in the vein of Puyo Puyo. + 0.70 + 19950101T000000 + Tecmo + Tecmo + Puzzle-Game / Fall + 2912 + 1-2 + deroon.zip + Tecmo + 320x240 + media/mixrbv2/deroon.png + + + + deroon2.zip + Deroon DeroDero (newer) + A cute and hilarious puzzle game in the vein of Puyo Puyo. + 0.70 + 19950101T000000 + Tecmo + Tecmo + Puzzle-Game / Fall + 2912 + 1-2 + deroon.zip + Tecmo + 320x240 + media/mixrbv2/deroon.png + + + + desertbrjd.zip + Desert Breaker (Japan, FD1094 317-0194 decrypted) + Select one of 3 available characters in this vertically-scrolling, futuristic, military-themed shoot'em up. A variety of power-ups can be picked up along the way to aid the player in his or her battle against the many hundreds of troops and tanks that populate the levels. + 0.70 + 19920101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + desertbr.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/desertbr.png + + + + desertbrj.zip + Desert Breaker (Japan, FD1094 317-0194) + Select one of 3 available characters in this vertically-scrolling, futuristic, military-themed shoot'em up. A variety of power-ups can be picked up along the way to aid the player in his or her battle against the many hundreds of troops and tanks that populate the levels. + 0.70 + 19920101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + desertbr.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/desertbr.png + + + + desertbrd.zip + Desert Breaker (World, FD1094 317-0196 decrypted) + Select one of 3 available characters in this vertically-scrolling, futuristic, military-themed shoot'em up. A variety of power-ups can be picked up along the way to aid the player in his or her battle against the many hundreds of troops and tanks that populate the levels. + 0.70 + 19920101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + desertbr.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/desertbr.png + + + + desertbr.zip + Desert Breaker (World, FD1094 317-0196) + Select one of 3 available characters in this vertically-scrolling, futuristic, military-themed shoot'em up. A variety of power-ups can be picked up along the way to aid the player in his or her battle against the many hundreds of troops and tanks that populate the levels. + 0.70 + 19920101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-3 + Sega Classics + 270 + 320x224 + media/mixrbv2/desertbr.png + + + + desertdn.zip + Desert Dan + A platform game where you avoid obstacles + 19820101T000000 + Video Optics + Video Optics + Shoot'em Up + 79 + 1 + Taito Classics + 256x224 + media/mixrbv2/desertdn.png + + + + detatwin.zip + Detana!! Twin Bee (Japan ver. J) + The planet Meru is on the attack by the Iva forces. A plea for help has reached Twinbee and you must guide him through a perilous journey through a colorful world fighting to restore peace. This vertically scrolling shoot'em up game features colorful anime-style graphics, lots of power-ups and a fun challenge. + 0.70 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + blswhstl.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/blswhstl.png + + + + devstors2.zip + Devastators (ver. 2) + Devastators is an early third-person shooter. Up to two players can take control of Rambo-style mercenaries with mullets. + 0.40 + 19880101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + devstors.zip + Konami Classics + 270 + 304x224 + media/mixrbv2/devstors.png + + + + devstorsv.zip + Devastators (ver. V) + Devastators is an early third-person shooter. Up to two players can take control of Rambo-style mercenaries with mullets. + 0.40 + 19880101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + devstors.zip + Konami Classics + 270 + 304x224 + media/mixrbv2/devstors.png + + + + devstorsx.zip + Devastators (ver. X) + Devastators is an early third-person shooter. Up to two players can take control of Rambo-style mercenaries with mullets. + 0.40 + 19880101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + devstors.zip + Konami Classics + 270 + 304x224 + media/mixrbv2/devstors.png + + + + devstors.zip + Devastators (ver. Z) + Devastators is an early third-person shooter. Up to two players can take control of Rambo-style mercenaries with mullets. + 0.40 + 19880101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + Konami Classics + 270 + 304x224 + media/mixrbv2/devstors.png + + + + devilfsh.zip + Devil Fish + The player controls Sea Dog, who must feed Devil Fish in order to make them trap themselves on the several passages of the maze, as they will be too fat to advance. When they are trapped, Sea Dog must touch them. Immediately after that, a little house will appear on the center of the maze. Touch it and a part of a drawing will be revealed. Repeat this procedure until the complete image is revealed and Sea Dog will move on to the next level. + 0.20 + 19820101T000000 + Artic Computing + Artic + Action + 10 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/devilfsh.png + + + + devilfshgb.zip + Devil Fish (Galaxian hardware, bootleg) + The player controls Sea Dog, who must feed Devil Fish in order to make them trap themselves on the several passages of the maze, as they will be too fat to advance. When they are trapped, Sea Dog must touch them. Immediately after that, a little house will appear on the center of the maze. Touch it and a part of a drawing will be revealed. Repeat this procedure until the complete image is revealed and Sea Dog will move on to the next level. + 0.20 + 19820101T000000 + Artic Computing + Artic + Action + 10 + 1-2 + devilfsh.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/devilfsh.png + + + + devilw.zip + Devil World + A Gauntlet-type game. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + Konami Classics + 320x224 + media/mixrbv2/devilw.png + + + + dharma.zip + Dharma Doujou + A puzzle game. +The title of this game translates from Japanese as 'Daruma Dojo - I'll Be The King!'. + 0.70 + 19940101T000000 + Metro 3D + Metro 3D + Various + 39 + 1-2 + Mitchell + 320x224 + media/mixrbv2/dharma.png + + + + dharmag.zip + Dharma Doujou (Germany) + A puzzle game. +The title of this game translates from Japanese as 'Daruma Dojo - I'll Be The King!'. + 0.70 + 19940101T000000 + Metro 3D + Metro 3D + Various + 39 + 1-2 + dharma.zip + Mitchell + 320x224 + media/mixrbv2/dharma.png + + + + dharmaj.zip + Dharma Doujou (Japan) + A puzzle game. +The title of this game translates from Japanese as 'Daruma Dojo - I'll Be The King!'. + 0.70 + 19940101T000000 + Metro 3D + Metro 3D + Various + 39 + 1-2 + dharma.zip + Mitchell + 320x224 + media/mixrbv2/dharma.png + + + + dharmak.zip + Dharma Doujou (Korea) + A puzzle game. +The title of this game translates from Japanese as 'Daruma Dojo - I'll Be The King!'. + 0.70 + 19940101T000000 + Metro 3D + Metro 3D + Various + 39 + 1-2 + dharma.zip + Mitchell + 320x224 + media/mixrbv2/dharma.png + + + + diamond.zip + Diamond Run + An arcade puzzle game in which a single player must tunnel their way through a number of underground caves, collecting the many gems spread throughout the levels. Each cave is littered with rocks which, should they fall onto the player, will result in a loss of life. Carefully planned tunnels can be dug to manipulate the direction in which the rocks fall, however, which makes them an effective weapon against the many enemies that populate the levels. A number of red explosives can be found which can also be used to kill enemies and also to destroy any walls blocking the player's path. Again, like the rocks, these must be used carefully to prevent the explosion from killing the player. + +In order to complete a level, a specified number of gems must be collected. Once a sufficient amount of gems have been collected, an exit will open which the player must enter to proceed to the next cave. + +Diamond Run is heavily based on First Star's Commodore C64 classic, 'Boulder Dash'. + 0.30 + 19890101T000000 + KH Video + KH Video + Action + 10 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/diamond.png + + + + dicegame.zip + Dice - The Dice Game! + 199?0101T000000 + Mame + + + digdugat.zip + Dig Dug (Atari, rev 2) + Dig Dug is single screen action game in which the player must dig horizontal and vertical tunnels to reach and eliminate the underground-dwelling monsters living there. This is achieved by either inflating them with an air pump until they explode, or by dropping rocks onto them. + 0.90 + 19820101T000000 + Namco + Namco + Action + 10 + 1-2 + digdug.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/digdug.png + + + + digdug.zip + Dig Dug (rev 2) + Dig Dug is single screen action game in which the player must dig horizontal and vertical tunnels to reach and eliminate the underground-dwelling monsters living there. This is achieved by either inflating them with an air pump until they explode, or by dropping rocks onto them. + 0.90 + 19820101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/digdug.png + + + + digdug2.zip + Dig Dug II (New Ver.) + For this sequel to the 1982 classic, "Dig Dug", Namco changed the game's perspective from a cutaway side-on viewpoint to an overhead one. The action now takes place on a series of small islands, the gameplay itself retains much from its predecessor, with Dig Dug still being chased by the 'Pookas' (round, goggle-wearing red enemies) and the 'Fygers' (green, fire-breathing dragons). + +As with the first game, Dig Dug is still armed with a pump that allows him to inflate and burst the enemies. For the sequel, however, he is also armed with a jackhammer. This can be used at the round ground-pegs scattered around each island to create and connect up fault lines in the ground. If both ends of a system of faults reaches the water, the ground surrounded by them will sink into the ocean killing all creatures on it, including Dig Dug himself if he is standing on the destroyed section of land. + 0.80 + 19850101T000000 + Namco + Thunder Mountain + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/digdug2.png + + + + digdug2o.zip + Dig Dug II (Old Ver.) + For this sequel to the 1982 classic, "Dig Dug", Namco changed the game's perspective from a cutaway side-on viewpoint to an overhead one. The action now takes place on a series of small islands, the gameplay itself retains much from its predecessor, with Dig Dug still being chased by the 'Pookas' (round, goggle-wearing red enemies) and the 'Fygers' (green, fire-breathing dragons). + +As with the first game, Dig Dug is still armed with a pump that allows him to inflate and burst the enemies. For the sequel, however, he is also armed with a jackhammer. This can be used at the round ground-pegs scattered around each island to create and connect up fault lines in the ground. If both ends of a system of faults reaches the water, the ground surrounded by them will sink into the ocean killing all creatures on it, including Dig Dug himself if he is standing on the destroyed section of land. + 0.80 + 19850101T000000 + Namco + Thunder Mountain + Action + 10 + 1-2 + digdug2.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/digdug2.png + + + + diggerma.zip + Digger Man + Digger Man (c) 1999 The Game Room. - TRIVIA - This game steals many sprites & sounds from Face's "Gururin". - STAFF - Designed by : Kyle Hodgets - SOURCES - Game's rom. + 0.40 + 20000101T000000 + Kyle Hodgetts + Homebrew + Action + 10 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/diggerma.png + + + + dimahoo.zip + Dimahoo (000121 Euro) + The game is set in a futuristic environment with dragons, little turtles with lasers on their back, and little green goblins with red eyes. The player picks one of four friends to travel with. The two characters fly through the levels in the game and collect items. Each item has a point value and the points are used to fill up a chart at the end. The items include: food, swords, armors, boots, etc. Towards the end of the game, the bosses become incredibly hard. The fast backgrounds create a confusing state of mind for the player. + 0.90 + 20000101T000000 + Raizing + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/dimahoo.png + + + + dimahoud.zip + Dimahoo (000121 USA Phoenix Edition) + The game is set in a futuristic environment with dragons, little turtles with lasers on their back, and little green goblins with red eyes. The player picks one of four friends to travel with. The two characters fly through the levels in the game and collect items. Each item has a point value and the points are used to fill up a chart at the end. The items include: food, swords, armors, boots, etc. Towards the end of the game, the bosses become incredibly hard. The fast backgrounds create a confusing state of mind for the player. + 0.90 + 20000101T000000 + Raizing + Capcom + Shoot'em Up + 79 + 1-2 + dimahoo.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/dimahoo.png + + + + dimahoou.zip + Dimahoo (000121 USA) + The game is set in a futuristic environment with dragons, little turtles with lasers on their back, and little green goblins with red eyes. The player picks one of four friends to travel with. The two characters fly through the levels in the game and collect items. Each item has a point value and the points are used to fill up a chart at the end. The items include: food, swords, armors, boots, etc. Towards the end of the game, the bosses become incredibly hard. The fast backgrounds create a confusing state of mind for the player. + 0.90 + 20000101T000000 + Raizing + Capcom + Shoot'em Up + 79 + 1-2 + dimahoo.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/dimahoo.png + + + + dingo.zip + Dingo + A puzzle game by gathering fruits. + 0.50 + 19830101T000000 + Ashby Computers and Graphics + Ashby Computers and Graphics + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/dingo.png + + + + dinohunt.zip + Dinosaur Hunter (Chinese bootleg, 930223 Asia TW) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + dirtfoxj.zip + Dirt Fox (Japan) + Dirtfox is an overhead-view racing game. + 0.70 + 19890101T000000 + Namco + Namco + Race, Driving / Race + 2924 + 1 + Namco Classics + 270 + 288x224 + media/mixrbv2/dirtfoxj.png + + + + discoboy.zip + Disco Boy + Disco Boy is an excessively difficult adult shooter game for one or two players. The player controls a boy shooting and jumping from a platform. The objective is to kill the boss in each stage to progress on through the game. + +Each player stands on his own platform in the two player cooperate game. The platform tilts to the left and right in the direction that the player is moving and inching up the screen as the player switches directions. The player can press down to push the platform back down. After a while in each stage a boss will appear and at this time many bundles of TNT will fill the background. When the player touches the TNT they explode to reveal the nude image that was previously just the girl's silhouette in the background. Once the player kills the boss the stage is over. Each stage features a different background image. + 0.50 + 19930101T000000 + Soft Art Co. + Shooter / Space Invaders Like + 2900 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/discoboy.png + + + + discoboyp.zip + Disco Boy (Promat license?) + Disco Boy is an excessively difficult adult shooter game for one or two players. The player controls a boy shooting and jumping from a platform. The objective is to kill the boss in each stage to progress on through the game. + +Each player stands on his own platform in the two player cooperate game. The platform tilts to the left and right in the direction that the player is moving and inching up the screen as the player switches directions. The player can press down to push the platform back down. After a while in each stage a boss will appear and at this time many bundles of TNT will fill the background. When the player touches the TNT they explode to reveal the nude image that was previously just the girl's silhouette in the background. Once the player kills the boss the stage is over. Each stage features a different background image. + 0.50 + 19930101T000000 + Soft Art Co. + Shooter / Space Invaders Like + 2900 + 1-2 + discoboy.zip + Mame + 270 + 384x240 + media/mixrbv2/discoboy.png + + + + disco.zip + Disco No.1 + You play a 90 pound weakling kid in a roller rink who has to skate around the bad guys in order to win the love admiration of cute chicks. Earn points by completely encircling one or more tough guys and picking up various bonus items that float across the rink. Interesting gameplay mechanics, nice music and decent graphics for 1982. + 0.50 + 19820101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/disco.png + + + + cdiscon1.zip + Disco No.1 (DECO Cassette) (US) + You play a 90 pound weakling kid in a roller rink who has to skate around the bad guys in order to win the love admiration of cute chicks. Earn points by completely encircling one or more tough guys and picking up various bonus items that float across the rink. Interesting gameplay mechanics, nice music and decent graphics for 1982. + 19820101T000000 + Data East + Data East + Puzzle-Game + 26 + 1-2 + Data East Classics + media/mixrbv2/cdiscon1.png + + + + discof.zip + Disco No.1 (Rev.F) + You play a 90 pound weakling kid in a roller rink who has to skate around the bad guys in order to win the love admiration of cute chicks. Earn points by completely encircling one or more tough guys and picking up various bonus items that float across the rink. Interesting gameplay mechanics, nice music and decent graphics for 1982. + 0.50 + 19820101T000000 + Data East + Data East + Action + 10 + 1-2 + disco.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/disco.png + + + + dotrone.zip + Discs of Tron (Environmental) + As Tron, you fling discs at Sark in an attempt to knock him off his platform. Knocking off Sark will advance you to the next level. Other levels vary the level and number of platforms to jump between. + 0.70 + 19830101T000000 + Bally Midway + Bally Midway + Various + 39 + 1-2 + dotron.zip + Midway Classics + 512x480 + media/mixrbv2/dotron.png + + + + dotron.zip + Discs of Tron (Upright, 10/4/83) + As Tron, you fling discs at Sark in an attempt to knock him off his platform. Knocking off Sark will advance you to the next level. Other levels vary the level and number of platforms to jump between. + 0.70 + 19830101T000000 + Bally Midway + Bally Midway + Various + 39 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/dotron.png + + + + dotrona.zip + Discs of Tron (Upright, 9/22/83) + As Tron, you fling discs at Sark in an attempt to knock him off his platform. Knocking off Sark will advance you to the next level. Other levels vary the level and number of platforms to jump between. + 0.70 + 19830101T000000 + Bally Midway + Bally Midway + Various + 39 + 1-2 + dotron.zip + Midway Classics + 512x480 + media/mixrbv2/dotron.png + + + + diverboy.zip + Diver Boy + A reversed "Bomb Jack"-type game. + +All songs of this game are ripped from Data East's "Tumble Pop". + 0.50 + 19920101T000000 + Electronic Devices Italy + Electronic Devices Italy + Platform / Run Jump + 2915 + 1-2 + Mame + 318x240 + media/mixrbv2/diverboy.png + + + + djboyj.zip + DJ Boy (Japan, set 1) + DJ Boy is a side-scrolling Beat 'em up, released in 1989 by Kaneko for the Arcade, and later, Genesis. The game features a uniquely Japanese take on mid-to-late 80s Hip-hop/Urban culture. You play as DJ Boy, a rollerskater hoping to win the "Rollergame" fight-race competition in Cigaretch city. + 0.70 + 19890101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + djboy.zip + Sammy Classics + 256x224 + media/mixrbv2/djboy.png + + + + djboyja.zip + DJ Boy (Japan, set 2) + DJ Boy is a side-scrolling Beat 'em up, released in 1989 by Kaneko for the Arcade, and later, Genesis. The game features a uniquely Japanese take on mid-to-late 80s Hip-hop/Urban culture. You play as DJ Boy, a rollerskater hoping to win the "Rollergame" fight-race competition in Cigaretch city. + 0.70 + 19890101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + djboy.zip + Sammy Classics + 256x224 + media/mixrbv2/djboy.png + + + + djboyu.zip + DJ Boy (US, set 1) + DJ Boy is a side-scrolling Beat 'em up, released in 1989 by Kaneko for the Arcade, and later, Genesis. The game features a uniquely Japanese take on mid-to-late 80s Hip-hop/Urban culture. You play as DJ Boy, a rollerskater hoping to win the "Rollergame" fight-race competition in Cigaretch city. + 0.70 + 19890101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + djboy.zip + Sammy Classics + 256x224 + media/mixrbv2/djboy.png + + + + djboyua.zip + DJ Boy (US, set 2) + DJ Boy is a side-scrolling Beat 'em up, released in 1989 by Kaneko for the Arcade, and later, Genesis. The game features a uniquely Japanese take on mid-to-late 80s Hip-hop/Urban culture. You play as DJ Boy, a rollerskater hoping to win the "Rollergame" fight-race competition in Cigaretch city. + 0.70 + 19890101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + djboy.zip + Sammy Classics + 256x224 + media/mixrbv2/djboy.png + + + + djboy.zip + DJ Boy (World) + DJ Boy is a side-scrolling Beat 'em up, released in 1989 by Kaneko for the Arcade, and later, Genesis. The game features a uniquely Japanese take on mid-to-late 80s Hip-hop/Urban culture. You play as DJ Boy, a rollerskater hoping to win the "Rollergame" fight-race competition in Cigaretch city. + 0.70 + 19890101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + Sammy Classics + 256x224 + media/mixrbv2/djboy.png + + + + dorunrunc.zip + Do! Run Run (Do's Castle hardware, set 1) + A superb final entry into the "Mr Do!" series (not counting the Neo Geo-based "Neo Mr. Do", which was merely a remake of the first game in the series), "Do! Run Run" takes its inspiration from Namco's "Pac-Man". + +As in his previous games, Mr Do! must once again collect coloured dots and/or fruit while avoiding or killing a number of enemies. For the fourth Mr Do! outing, Universal ditched the sideways viewpoint of the series' previous games and switched to an overhead perspective. This allowed the game to give an impression of 'depth', with slopes and steps affecting Mr Do!'s mobility and speed. + +Mr. Do. has two items at his disposal with which he can kill the his enemies. The first is the 'Powerball', which featured in the original 'Mr. Do!' but was dropped from the first two sequels. The Powerball can be shot directly at an enemy to kill it instantly. + +The second offensive option is provided in the form of the large wooden logs that litter the levels. These work in the same way as the apples did in the original game, and can be pushed free of their supporting struts, causing them to roll down the screen and kill everything in their path, including Mr. Do. himself if he strays too near. + +As Mr Do! moves around a screen, he trails a line behind him. Players can join the two ends of the line up to form a rectangle (in a similar fashion to Taito's 1981 classic, "Qix") which will change any dots within the rectangle into cherries. A second rectangle can be drawn around the cherries which in turn will change them into apples. This can be repeated twice more, changing apples into lemons, and lemons into pineapples. The better the fruit, the more bonus points Mr Do! will earn when he collects them. + 0.70 + 19840101T000000 + Universal + Universal + Action + 10 + 1-2 + dorunrun.zip + Universal + 240x192 + media/mixrbv2/dorunrun.png + + + + dorunrunca.zip + Do! Run Run (Do's Castle hardware, set 2) + A superb final entry into the "Mr Do!" series (not counting the Neo Geo-based "Neo Mr. Do", which was merely a remake of the first game in the series), "Do! Run Run" takes its inspiration from Namco's "Pac-Man". + +As in his previous games, Mr Do! must once again collect coloured dots and/or fruit while avoiding or killing a number of enemies. For the fourth Mr Do! outing, Universal ditched the sideways viewpoint of the series' previous games and switched to an overhead perspective. This allowed the game to give an impression of 'depth', with slopes and steps affecting Mr Do!'s mobility and speed. + +Mr. Do. has two items at his disposal with which he can kill the his enemies. The first is the 'Powerball', which featured in the original 'Mr. Do!' but was dropped from the first two sequels. The Powerball can be shot directly at an enemy to kill it instantly. + +The second offensive option is provided in the form of the large wooden logs that litter the levels. These work in the same way as the apples did in the original game, and can be pushed free of their supporting struts, causing them to roll down the screen and kill everything in their path, including Mr. Do. himself if he strays too near. + +As Mr Do! moves around a screen, he trails a line behind him. Players can join the two ends of the line up to form a rectangle (in a similar fashion to Taito's 1981 classic, "Qix") which will change any dots within the rectangle into cherries. A second rectangle can be drawn around the cherries which in turn will change them into apples. This can be repeated twice more, changing apples into lemons, and lemons into pineapples. The better the fruit, the more bonus points Mr Do! will earn when he collects them. + 0.70 + 19840101T000000 + Universal + Universal + Action + 10 + 1-2 + dorunrun.zip + Universal + 240x192 + media/mixrbv2/dorunrun.png + + + + dorunrun.zip + Do! Run Run (set 1) + A superb final entry into the "Mr Do!" series (not counting the Neo Geo-based "Neo Mr. Do", which was merely a remake of the first game in the series), "Do! Run Run" takes its inspiration from Namco's "Pac-Man". + +As in his previous games, Mr Do! must once again collect coloured dots and/or fruit while avoiding or killing a number of enemies. For the fourth Mr Do! outing, Universal ditched the sideways viewpoint of the series' previous games and switched to an overhead perspective. This allowed the game to give an impression of 'depth', with slopes and steps affecting Mr Do!'s mobility and speed. + +Mr. Do. has two items at his disposal with which he can kill the his enemies. The first is the 'Powerball', which featured in the original 'Mr. Do!' but was dropped from the first two sequels. The Powerball can be shot directly at an enemy to kill it instantly. + +The second offensive option is provided in the form of the large wooden logs that litter the levels. These work in the same way as the apples did in the original game, and can be pushed free of their supporting struts, causing them to roll down the screen and kill everything in their path, including Mr. Do. himself if he strays too near. + +As Mr Do! moves around a screen, he trails a line behind him. Players can join the two ends of the line up to form a rectangle (in a similar fashion to Taito's 1981 classic, "Qix") which will change any dots within the rectangle into cherries. A second rectangle can be drawn around the cherries which in turn will change them into apples. This can be repeated twice more, changing apples into lemons, and lemons into pineapples. The better the fruit, the more bonus points Mr Do! will earn when he collects them. + 0.70 + 19840101T000000 + Universal + Universal + Action + 10 + 1-2 + Universal + 240x192 + media/mixrbv2/dorunrun.png + + + + dorunrun2.zip + Do! Run Run (set 2) + A superb final entry into the "Mr Do!" series (not counting the Neo Geo-based "Neo Mr. Do", which was merely a remake of the first game in the series), "Do! Run Run" takes its inspiration from Namco's "Pac-Man". + +As in his previous games, Mr Do! must once again collect coloured dots and/or fruit while avoiding or killing a number of enemies. For the fourth Mr Do! outing, Universal ditched the sideways viewpoint of the series' previous games and switched to an overhead perspective. This allowed the game to give an impression of 'depth', with slopes and steps affecting Mr Do!'s mobility and speed. + +Mr. Do. has two items at his disposal with which he can kill the his enemies. The first is the 'Powerball', which featured in the original 'Mr. Do!' but was dropped from the first two sequels. The Powerball can be shot directly at an enemy to kill it instantly. + +The second offensive option is provided in the form of the large wooden logs that litter the levels. These work in the same way as the apples did in the original game, and can be pushed free of their supporting struts, causing them to roll down the screen and kill everything in their path, including Mr. Do. himself if he strays too near. + +As Mr Do! moves around a screen, he trails a line behind him. Players can join the two ends of the line up to form a rectangle (in a similar fashion to Taito's 1981 classic, "Qix") which will change any dots within the rectangle into cherries. A second rectangle can be drawn around the cherries which in turn will change them into apples. This can be repeated twice more, changing apples into lemons, and lemons into pineapples. The better the fruit, the more bonus points Mr Do! will earn when he collects them. + 0.70 + 19840101T000000 + Universal + Universal + Action + 10 + 1-2 + dorunrun.zip + Universal + 240x192 + media/mixrbv2/dorunrun.png + + + + dockman.zip + Dock Man + Catch the falling luggage and throw it up onto the ship. After that, catch the falling boxes of dynamite for points. The game then repeats the levels with the action becoming faster. + 0.50 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/dockman.png + + + + dodgeman.zip + Dodge Man + After stepping onto the moon's surface from his spaceship, the astronaut DODGE MAN starts exploration of the Moon. + 0.10 + 19830101T000000 + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/dodgeman.png + + + + ddonpacha.zip + DoDonPachi (Arrange Mode version 1.1, hack by Trap15) + A vertical scrolling shoot 'em up developed by the Japanese developer Cave. + 0.90 + 19970101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + ddonpach.zip + Cave + 270 + 320x240 + media/mixrbv2/ddonpach.png + + + + ddonpach.zip + DoDonPachi (International, master ver. 97/02/05) + A vertical scrolling shoot 'em up developed by the Japanese developer Cave. + 0.90 + 19970101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/ddonpach.png + + + + ddonpachj.zip + DoDonPachi (Japan, master ver. 97/02/05) + A vertical scrolling shoot 'em up developed by the Japanese developer Cave. + 0.90 + 19970101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + ddonpach.zip + Cave + 270 + 320x240 + media/mixrbv2/ddonpach.png + + + + dogfight.zip + Dog Fight (Thunderbolt) + An air combat shoot'em up. + 0.50 + 19830101T000000 + Orca Corporation + Orca / Thunderbolt + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/dogfight.png + + + + dogosoke.zip + Dogou Souken + The story directly picks up at the ending of Ikari Warriors. Congratulated by General Kawasaki for rescuing him, Paul and Vince return home to their native country in a plane arranged by the general. A mysterious storm appears and they are hurtled thousands of years into the future. They are met by an alien creature who says that the villain Zang Zip has taken over the land. + 0.70 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + victroad.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/victroad.png + + + + dogosokb.zip + Dogou Souken (Joystick hack bootleg) + The story directly picks up at the ending of Ikari Warriors. Congratulated by General Kawasaki for rescuing him, Paul and Vince return home to their native country in a plane arranged by the general. A mysterious storm appears and they are hurtled thousands of years into the future. They are met by an alien creature who says that the villain Zang Zip has taken over the land. + 0.70 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + victroad.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/victroad.png + + + + dogyuun.zip + Dogyuun + Dogyuun is an arcade Shoot 'em Up. + +The plot is somewhat vague, except that it involves two pilots destroying aliens after an alien mecha kills the reconnaissance ship leading them. + +One interesting feature of the game is the ability in Co-Op Multiplayer for player 1 to combine with player 2, producing a larger ship with better firepower. The game also features loads of homing lasers and large bosses. + 0.70 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/dogyuun.png + + + + dogyuuna.zip + Dogyuun (Licensed to Unite Trading For Korea) + Dogyuun is an arcade Shoot 'em Up. + +The plot is somewhat vague, except that it involves two pilots destroying aliens after an alien mecha kills the reconnaissance ship leading them. + +One interesting feature of the game is the ability in Co-Op Multiplayer for player 1 to combine with player 2, producing a larger ship with better firepower. The game also features loads of homing lasers and large bosses. + 0.70 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + dogyuun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/dogyuun.png + + + + dogyuunb.zip + Dogyuun (oldest set) + Dogyuun is an arcade Shoot 'em Up. + +The plot is somewhat vague, except that it involves two pilots destroying aliens after an alien mecha kills the reconnaissance ship leading them. + +One interesting feature of the game is the ability in Co-Op Multiplayer for player 1 to combine with player 2, producing a larger ship with better firepower. The game also features loads of homing lasers and large bosses. + 0.70 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + dogyuun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/dogyuun.png + + + + dogyuunt.zip + Dogyuun (test location version) + Dogyuun is an arcade Shoot 'em Up. + +The plot is somewhat vague, except that it involves two pilots destroying aliens after an alien mecha kills the reconnaissance ship leading them. + +One interesting feature of the game is the ability in Co-Op Multiplayer for player 1 to combine with player 2, producing a larger ship with better firepower. The game also features loads of homing lasers and large bosses. + 0.70 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + dogyuun.zip + Toaplan + 270 + 320x240 + media/mixrbv2/dogyuun.png + + + + dokaben.zip + Dokaben (Japan) + A Japanese baseball game played using a deck of random cards. Interesting design. + 0.50 + 19890101T000000 + Capcom + Capcom + Playing cards + 42 + 1-2 + Capcom Classics + 384x240 + media/mixrbv2/dokaben.png + + + + dokaben2.zip + Dokaben 2 (Japan) + A Japanese baseball game played using a deck of random cards. + 0.30 + 19890101T000000 + Sports / Baseball + 2853 + Mame + 384x240 + media/mixrbv2/dokaben2.png + + + + dolmen.zip + Dolmen + 0.70 + 19950101T000000 + Afega + Afega + Puzzle-Game / Throw + 2923 + NMK + 256x224 + media/mixrbv2/dolmen.png + + + + domino.zip + Domino Man + The player controls Domino Man, a bespectacled, moustachioed artist who must set up a chain of giant dominoes across the screen, to form a chain of dominoes which can then be toppled. + +The dominoes must be placed on sites marked by black spots, achieved by simply running over each spot. Once all of the spots are covered with a domino, the chain is complete. The player will then have the choice of either knocking them all down to clear the level, or simply wait for a few seconds to continue to the next screen, in hope of completing the chain on THAT level, and so on. In this way, the player can set up several chains and knock them all down in one fell swoop, earning many bonus points in the process. Multiple chains are, of course, very difficult to achieve. + +Domino Man's progress is hampered by a neighborhood bully who walks onto the screen and tries to knock over the first dominoes he comes across. The player must either try to complete and topple the chain of dominoes before the bully knocks them over, or hit the bully with a domino; causing the bully's trousers to fall down and disabling him for a few seconds. A killer bee also appears, and if it manages to sting the player, a life is lost. A bag lady and a boy pushing a shopping cart wander blindly around the levels, occasionally knocking over some of the dominoes. Domino Man can hit them, however, causing them to change direction. + +Once a game is over, a poem is displayed on-screen to evaluate the player's performance on the game. For example: +Roses are red +Or so goes the verse +You set up fifty-two +You could have done worse. + 0.70 + 19820101T000000 + Bally Midway + Bally Midway + Various + 39 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/domino.png + + + + dommy.zip + Dommy + A maze game by pushing oil barrels. + 0.70 + 19830101T000000 + Technos Japan Corp. + Tecmo + Action + 10 + 1-2 + Technos + 270 + 240x240 + media/mixrbv2/dommy.png + + + + dkingjr.zip + Donkey King Jr. (bootleg of Donkey Kong Jr.) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + kong2600.zip + Donkey Kong (2600 graphics, hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongj.zip + Donkey Kong (Japan set 1) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongjo.zip + Donkey Kong (Japan set 2) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongjo1.zip + Donkey Kong (Japan set 3) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongpac.zip + Donkey Kong (Pacman Graphics) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongp.zip + Donkey Kong (Patched) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkong.zip + Donkey Kong (US set 1) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkonghrd.zip + Donkey Kong (US set 1) with Hard kit + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongo.zip + Donkey Kong (US set 2) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkrainbow.zip + Donkey Kong - Arcade Rainbow (hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongpe.zip + Donkey Kong - Pauline Edition (hack, rev 5) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkong3b.zip + Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware) + Stanley is a bugman. Donkey Kong has taken refuge in his greenhouse and it is now up to Stanley to stop the ape from stirring up any more insects that will soon destroy his flowers. Stanley saves the flowers by spraying bug spray on Donkey Kong. + 0.70 + 19830101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkong3.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong3.png + + + + dkong3j.zip + Donkey Kong 3 (Japan) + Stanley is a bugman. Donkey Kong has taken refuge in his greenhouse and it is now up to Stanley to stop the ape from stirring up any more insects that will soon destroy his flowers. Stanley saves the flowers by spraying bug spray on Donkey Kong. + 0.70 + 19830101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkong3.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong3.png + + + + dkong3.zip + Donkey Kong 3 (US) + Stanley is a bugman. Donkey Kong has taken refuge in his greenhouse and it is now up to Stanley to stop the ape from stirring up any more insects that will soon destroy his flowers. Stanley saves the flowers by spraying bug spray on Donkey Kong. + 0.70 + 19830101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong3.png + + + + dkongbp.zip + Donkey Kong Barrelpalooza v1.06 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongbp1.zip + Donkey Kong Barrelpalooza v1.07 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongchm1.zip + Donkey Kong Championship Edition v1.01 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkchrmx.zip + Donkey Kong Christmas Remix (Hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkcbarrel.zip + Donkey Kong Crazy Barrels Edition + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongf.zip + Donkey Kong Foundry (hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkfreerun.zip + Donkey Kong Freerun Edition + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongx11.zip + Donkey Kong II - Jumpman Returns (hack, V1.1) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongx.zip + Donkey Kong II - Jumpman Returns (hack, V1.2) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongitd.zip + Donkey Kong In the Dark v1.02 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongjrb.zip + Donkey Kong Jr. (bootleg) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongjrj.zip + Donkey Kong Jr. (Japan) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongjrm.zip + Donkey Kong Jr. (Moon Cresta hardware) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongjnrj.zip + Donkey Kong Junior (Japan?) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongjr.zip + Donkey Kong Junior (US set F-2) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongjr2.zip + Donkey Kong Junior (US, bootleg?) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + dkongchm.zip + Donkey Kong League Championship v1.00 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongotr.zip + Donkey Kong On the Run v1.02 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkpace.zip + Donkey Kong Pace + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongran1.zip + Donkey Kong Randomized Edition v1.01 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkrdemo.zip + Donkey Kong Remix (Demo) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongrev.zip + Donkey Kong Reverse (Hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongss.zip + Donkey Kong Skip Start v1.00 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkspkyrmx.zip + Donkey Kong Spooky Remix (Hack) + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongst.zip + Donkey Kong Springs Trainer + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongst2.zip + Donkey Kong Springs Trainer 2 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dktrainer.zip + Donkey Kong Trainer 1.01 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + dkongtj.zip + Donkey Kong Twisted Jungle v1.05 + EVERYONE'S GOING APE OVER DONKEY KONG! + +"HELP! HELP!" cries the beautiful maiden as she is dragged up a labyrinth of structural beams by the ominous Donkey Kong. "SNORT. SNORT" Foreboding music warns of the eventual doom that awaits the poor girl, lest she somehow be miraculously rescued. "But, wait! Fear not, fair maiden. Little Mario, the carpenter, is in hot pursuit of you this very moment" + +Throwing fate to the wind, risking life and limb, or worse, little Mario tries desperately to climb the mighty fortress of steel, to save the lovely lady from the evil Mr. Kong. Little Mario must dodge all manner of obstacles - fireballs, plummeting beams and a barrage of exploding barrels fired at him by Donkey Kong. + +Amidst me beautiful girl's constant pleas for help, your challenge is to maneuver little Mario up the steel structure, while helping him to avoid the rapid-fire succession of hazards that come his way. + +As little Mario gallantly battles his way up the barriers, he is taunted and teased by Donkey Kong, who brazenly struts back and forth, beating his chest in joyful exuberance at the prospect of having the beautiful girl all to himself. It is your job to get little Mario to the top. For it is there, and only there, that he can send the mighty Donkey Kong to hit mortal doom. Leaving little Mario and the beautiful girl to live happily ever after. "SIGH. SIGH.” + +So, if you want the most exciting, most fun-filled, most talked about family video game on the market, don't monkey around with anything but the original Donkey Kong. + 0.90 + 19810101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1 + dkong.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkong.png + + + + donpachihk.zip + DonPachi (Hong Kong, ver. 1.10, 95/05/17) + An excellent vertically scrolling shoot'em up. The player assumes the role of a pilot who is sent by their squadron to fight their former allies until one side destroys the other, all of which is a part of a mission to strengthen the military power that controls each side. The player flies their selected fighter over 5 areas of various terrain, encountering a number of land, sea and air enemies. The player's ship has two modes of fire: by tapping the fire button, shots are fired; holding it down produces a concentrated vertical beam, but also reduces the ship's speed. + +The player can choose one of 3 aircraft at the start of the game, or upon continuing: +Type A: A red (or yellow/orange, for player two) fighter, which fires a narrow stream of shots +Type B: A green (or purple, for player two) helicopter, which fires its main guns forward, but has side guns that rotate in the direction of movement +Type C: A blue (or black, for player two) fighter, which fires a wide, three-way spread of shots + 0.95 + 19950101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + donpachi.zip + Cave + 270 + 320x240 + media/mixrbv2/donpachi.png + + + + donpachijs.zip + DonPachi (Japan, ver. 1.01, 95/05/11 satsuei) + An excellent vertically scrolling shoot'em up. The player assumes the role of a pilot who is sent by their squadron to fight their former allies until one side destroys the other, all of which is a part of a mission to strengthen the military power that controls each side. The player flies their selected fighter over 5 areas of various terrain, encountering a number of land, sea and air enemies. The player's ship has two modes of fire: by tapping the fire button, shots are fired; holding it down produces a concentrated vertical beam, but also reduces the ship's speed. + +The player can choose one of 3 aircraft at the start of the game, or upon continuing: +Type A: A red (or yellow/orange, for player two) fighter, which fires a narrow stream of shots +Type B: A green (or purple, for player two) helicopter, which fires its main guns forward, but has side guns that rotate in the direction of movement +Type C: A blue (or black, for player two) fighter, which fires a wide, three-way spread of shots + 0.95 + 19950101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + donpachi.zip + Cave + 270 + 320x240 + media/mixrbv2/donpachi.png + + + + donpachij.zip + DonPachi (Japan, ver. 1.01, 95/05/11) + An excellent vertically scrolling shoot'em up. The player assumes the role of a pilot who is sent by their squadron to fight their former allies until one side destroys the other, all of which is a part of a mission to strengthen the military power that controls each side. The player flies their selected fighter over 5 areas of various terrain, encountering a number of land, sea and air enemies. The player's ship has two modes of fire: by tapping the fire button, shots are fired; holding it down produces a concentrated vertical beam, but also reduces the ship's speed. + +The player can choose one of 3 aircraft at the start of the game, or upon continuing: +Type A: A red (or yellow/orange, for player two) fighter, which fires a narrow stream of shots +Type B: A green (or purple, for player two) helicopter, which fires its main guns forward, but has side guns that rotate in the direction of movement +Type C: A blue (or black, for player two) fighter, which fires a wide, three-way spread of shots + 0.95 + 19950101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + donpachi.zip + Cave + 270 + 320x240 + media/mixrbv2/donpachi.png + + + + donpachikr.zip + DonPachi (Korea, ver. 1.12, 95/05/2x) + An excellent vertically scrolling shoot'em up. The player assumes the role of a pilot who is sent by their squadron to fight their former allies until one side destroys the other, all of which is a part of a mission to strengthen the military power that controls each side. The player flies their selected fighter over 5 areas of various terrain, encountering a number of land, sea and air enemies. The player's ship has two modes of fire: by tapping the fire button, shots are fired; holding it down produces a concentrated vertical beam, but also reduces the ship's speed. + +The player can choose one of 3 aircraft at the start of the game, or upon continuing: +Type A: A red (or yellow/orange, for player two) fighter, which fires a narrow stream of shots +Type B: A green (or purple, for player two) helicopter, which fires its main guns forward, but has side guns that rotate in the direction of movement +Type C: A blue (or black, for player two) fighter, which fires a wide, three-way spread of shots + 0.95 + 19950101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + donpachi.zip + Cave + 270 + 320x240 + media/mixrbv2/donpachi.png + + + + donpachi.zip + DonPachi (USA, ver. 1.12, 95/05/2x) + An excellent vertically scrolling shoot'em up. The player assumes the role of a pilot who is sent by their squadron to fight their former allies until one side destroys the other, all of which is a part of a mission to strengthen the military power that controls each side. The player flies their selected fighter over 5 areas of various terrain, encountering a number of land, sea and air enemies. The player's ship has two modes of fire: by tapping the fire button, shots are fired; holding it down produces a concentrated vertical beam, but also reduces the ship's speed. + +The player can choose one of 3 aircraft at the start of the game, or upon continuing: +Type A: A red (or yellow/orange, for player two) fighter, which fires a narrow stream of shots +Type B: A green (or purple, for player two) helicopter, which fires its main guns forward, but has side guns that rotate in the direction of movement +Type C: A blue (or black, for player two) fighter, which fires a wide, three-way spread of shots + 0.95 + 19950101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/donpachi.png + + + + dorachan.zip + Dora-chan (Japan) + Dorachan is an early maze game. + 0.30 + 19800101T000000 + ADK + Craul Denshi + Action + 10 + 1-2 + Alpha Denshi Co. + 270 + 256x240 + media/mixrbv2/dorachan.png + + + + dorodon.zip + Dorodon (set 1) + Originally an arcade game, DoRoDon is a puzzle game where the player must navigate throughout a playing field eradicating enemies and flipping gates. + 0.70 + 19820101T000000 + UPL + UPL + Action + 10 + 1-2 + Mame + 270 + 240x192 + media/mixrbv2/dorodon.png + + + + dorodon2.zip + Dorodon (set 2) + Originally an arcade game, DoRoDon is a puzzle game where the player must navigate throughout a playing field eradicating enemies and flipping gates. + 0.70 + 19820101T000000 + UPL + UPL + Action + 10 + 1-2 + dorodon.zip + Mame + 270 + 240x192 + media/mixrbv2/dorodon.png + + + + dotrikun.zip + Dottori Kun (new version) + Dottori Kun is a tiny maze game. + 0.10 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1 + Sega Classics + 256x192 + media/mixrbv2/dotrikun.png + + + + dotrikun2.zip + Dottori Kun (old version) + Dottori Kun is a tiny maze game. + 0.10 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1 + dotrikun.zip + Sega Classics + 256x192 + media/mixrbv2/dotrikun.png + + + + dotriman.zip + Dottori-Man Jr. + Dottori Kun is a tiny maze game. + 0.10 + 19900101T000000 + SEGA + SEGA + Action + 10 + 1 + dotrikun.zip + Sega Classics + 256x192 + media/mixrbv2/dotrikun.png + + + + ddragonb.zip + Double Dragon (bootleg with HD6309) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonba.zip + Double Dragon (bootleg with M6803) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonb2.zip + Double Dragon (bootleg) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + doubledrbh.zip + Double Dragon (Boss hack) + Released around the same time as the film of the same name and loosely based on its story, this installment in the Double Dragon series also moves away from the traditional roam-the-streets-fighting to a pure one-on-one fighter. There are ten characters to choose from, including Billy and Jimmy and the game has colorful interactive backgrounds, screen zooming, over-the-top special moves and with the inclusion of double jumps, combos, charges for the losing player and counter hits, there is plenty of room for advanced fighting strategies. + 0.65 + 19950101T000000 + Tecmo + SNK + Fight / Versus + 2885 + 1-2 + doubledr.zip + Neo-Geo + 320x224 + media/mixrbv2/doubledr.png + + + + ddragon.zip + Double Dragon (Japan) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + doubledr.zip + Double Dragon (Neo-Geo) + Released around the same time as the film of the same name and loosely based on its story, this installment in the Double Dragon series also moves away from the traditional roam-the-streets-fighting to a pure one-on-one fighter. There are ten characters to choose from, including Billy and Jimmy and the game has colorful interactive backgrounds, screen zooming, over-the-top special moves and with the inclusion of double jumps, combos, charges for the losing player and counter hits, there is plenty of room for advanced fighting strategies. + 0.65 + 19950101T000000 + Tecmo + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/doubledr.png + + + + doubledrsp.zip + Double Dragon (Special 2017, hack) + Released around the same time as the film of the same name and loosely based on its story, this installment in the Double Dragon series also moves away from the traditional roam-the-streets-fighting to a pure one-on-one fighter. There are ten characters to choose from, including Billy and Jimmy and the game has colorful interactive backgrounds, screen zooming, over-the-top special moves and with the inclusion of double jumps, combos, charges for the losing player and counter hits, there is plenty of room for advanced fighting strategies. + 0.65 + 19950101T000000 + Tecmo + SNK + Fight / Versus + 2885 + 1-2 + doubledr.zip + Neo-Geo + 320x224 + media/mixrbv2/doubledr.png + + + + ddragonu.zip + Double Dragon (US set 1) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonua.zip + Double Dragon (US set 2) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonub.zip + Double Dragon (US set 3) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonw.zip + Double Dragon (World set 1) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragonw1.zip + Double Dragon (World set 2) + Double Dragon is a side-scrolling beat-em-up for one or two players, featuring twin brothers and martial arts masters, "Billy & Jimmy Lee". The brothers must defeat the savage street gang known as the 'Black Warriors' to rescue Billy's kidnapped girlfriend, Marian. Standing between the brothers and Marian are four huge, colorful and varied levels; each populated with a wide variety of thugs. + +Many of the game's enemies carry weapons (knives, baseball bats etc.) and should Billy or Jimmy manage to knock the weapons from the enemies' hands, the heroes can pick the weapons up and use them against the enemies. + +The Black Warriors is made up of six distinct enemy characters- plus Willy, the game's final boss - with each differing in both physical appearance and fighting style. The members of the Black Warriors consist of the following fighters: +Williams - A street punk in a tank top. In addition to the standard punches and jump kicks, his signature technique is a body blow to the stomach. He also wields weapons such as baseball bats, knives and dynamite sticks. +Rowper - A punk who wears matching-colored pants and shirtless vest. He wields all the same weapons as Williams, but can also lift and throw heavy objects such as oildrums, boxes and stones. +Linda - Female punk who usually carries a whip. She's not very strong, as she falls down to ground with a couple of punches or a single kick (because of this, she is the only regular-sized enemy who cannot be placed on a headlock). +Abobo - A tall, big-muscled bald guy. His attacks includes punches, a standing kick and a body toss. He can also lift and throw heavy objects like Rowper. Due to his large size, he cannot be put into a headlock. +Boss 1 - The first boss, a head-swap of Abobo with a Mr. T-style mohawk and beard. Fights just like Abobo, only with an added double-handed slap. Unlike Abobo, he does not use weapons. A green version of him appears as the Mission 3 boss. +Boss 2 - The second boss. A head swap of the player who uses almost all the same techniques. +Willy - The game's final boss, armed, somewhat unfairly, with a machine-gun. + +Double Dragon was a huge success due to the many game-play innovations it brought to the genre (see TRIVIA for details), but it demonstrates its final moment of inspired genius at the very end of the game. Should both players still be alive after the final boss has been defeated, they will then have to fight each OTHER. The winner of this fight will be the one who wins Marian's affections. + 0.80 + 19870101T000000 + Technos Japan Corp. + Taito + Platform + 7 + 1-2 + ddragon.zip + Technos + 256x240 + media/mixrbv2/ddragon.png + + + + ddragon3b.zip + Double Dragon 3 - The Rosetta Stone (bootleg) + A mysterious fortune teller warns Billy & Jimmy Lee about the rise of a powerful enemy in Egypt. Since the Lee brothers are looking for a true challenge to put their martial arts skills to the ultimate test, they agree to face this mysterious new enemy. They embark on a world quest - joining up with new allies in the process - and try to lay claim to the famous 'Rosetta Stone'. + +The 3rd and final arcade entry of the Double Dragon series (not counting the later Neo-Geo fighting game based on the movie) features a completely gameplay system and graphics from the first two installments. The game can played by up to 2 or 3 players, depending on the cabinet and settings. The 3rd player takes control of a yellow-clad Lee brother named Sonny, who is exclusive to this game. Techniques from the previous games such as the hair grab and the elbow punch are gone, but new ones are added such as the belly-to-back throw and the back-to-back hurricane kick, as well as the ability to dash by tapping the joystick left or right twice. + +The game features weapon shops that allows the player to purchase power-ups by inserting additional tokens. The power-ups differ between stages differ between stages and are available as followed. +Extra Guys - Allows the player to control a new character who replaces the current fighter when he dies. There are three character types in addition to the Lee brothers. +The Urquidez Brothers (Roney, Sunny, Jonny) - Tall European grapplers. They have the most energy of the four character types. Up to three fighters can be have in reserve. +The Chin Brothers (Seimei, Taimei, Sinmei) - Chubby Chinese men with powerful attacks. +The Oyama Brothers (Masao, Kunio, Akira) - Japanese karate masters dressed in gis specializing in speedy attacks. +? Tricks - The hurricane kick and the one-armed stand head butt are added to the player's move set. If the player's current character dies, then the new techniques will be inherited by the next character in reserve, if there is one. +Weapons - A nunchaku or sword are given player. Only the Lees can have purchase and wield weapons. +Energy - Restores the current character's life to 150%. +Power-Up - Increases the character's agility. + +There are 5 stages in the game: + +Mission 1 - America - The enemies in this stage are typical thugs and bikers. The first area takes place in a downtown area of city. After defeating the first wave of enemies, the player will enter a warehouse, where they encounter bikers that will try to run over them with their bike. The boss in this is Jim, a red-haired biker wearing a leather jacket. + +Mission 2 - China - The enemies are martial artists that specialize in flying kicks. The stage takes place in a single level set in a countryside near the Great Wall of China. The boss at the end of level is Li Cheng-Long, a Shaolin Martial Arts expert who resembles Bruce Lee. When he's down in life, he will wield out his club. + +Mission 3 - Japan - The enemies are samurai swordsmen. The first area takes place outside a castle, with bamboo traps and enemies coming out of walls. The second area takes place inside a castle, where the player will face a few more swordsmen before taking out on the boss, Ranzou, a ninja. He attacks with throwing stars and smoke bombs and splits into three forms when he's down on his life. + +Mission 4 - Italy - Consists of a single level set in the ruins of a coliseum. The enemies are roman archers. After defeating most of the archers, the boss Giuliano, a man decked in gladiator armor, will attempt to run the player over with his horse. After defeating all the archers, Giuliano will dismount at the end of the level and fight the player. He wields a long hand spear and can block attacks with his shield. + +Mission 5 - Egypt - The final stage is composed of seven levels, which includes a desert field, an underground forest, a trap room with stone pillars and giant hands emerging from the floor, a hall with a flying disc. Enemies include living tree men and rock creatures. + 0.50 + 19900101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-3 + ddragon3.zip + Technos + 320x240 + media/mixrbv2/ddragon3.png + + + + ddragon3j.zip + Double Dragon 3 - The Rosetta Stone (Japan) + A mysterious fortune teller warns Billy & Jimmy Lee about the rise of a powerful enemy in Egypt. Since the Lee brothers are looking for a true challenge to put their martial arts skills to the ultimate test, they agree to face this mysterious new enemy. They embark on a world quest - joining up with new allies in the process - and try to lay claim to the famous 'Rosetta Stone'. + +The 3rd and final arcade entry of the Double Dragon series (not counting the later Neo-Geo fighting game based on the movie) features a completely gameplay system and graphics from the first two installments. The game can played by up to 2 or 3 players, depending on the cabinet and settings. The 3rd player takes control of a yellow-clad Lee brother named Sonny, who is exclusive to this game. Techniques from the previous games such as the hair grab and the elbow punch are gone, but new ones are added such as the belly-to-back throw and the back-to-back hurricane kick, as well as the ability to dash by tapping the joystick left or right twice. + +The game features weapon shops that allows the player to purchase power-ups by inserting additional tokens. The power-ups differ between stages differ between stages and are available as followed. +Extra Guys - Allows the player to control a new character who replaces the current fighter when he dies. There are three character types in addition to the Lee brothers. +The Urquidez Brothers (Roney, Sunny, Jonny) - Tall European grapplers. They have the most energy of the four character types. Up to three fighters can be have in reserve. +The Chin Brothers (Seimei, Taimei, Sinmei) - Chubby Chinese men with powerful attacks. +The Oyama Brothers (Masao, Kunio, Akira) - Japanese karate masters dressed in gis specializing in speedy attacks. +? Tricks - The hurricane kick and the one-armed stand head butt are added to the player's move set. If the player's current character dies, then the new techniques will be inherited by the next character in reserve, if there is one. +Weapons - A nunchaku or sword are given player. Only the Lees can have purchase and wield weapons. +Energy - Restores the current character's life to 150%. +Power-Up - Increases the character's agility. + +There are 5 stages in the game: + +Mission 1 - America - The enemies in this stage are typical thugs and bikers. The first area takes place in a downtown area of city. After defeating the first wave of enemies, the player will enter a warehouse, where they encounter bikers that will try to run over them with their bike. The boss in this is Jim, a red-haired biker wearing a leather jacket. + +Mission 2 - China - The enemies are martial artists that specialize in flying kicks. The stage takes place in a single level set in a countryside near the Great Wall of China. The boss at the end of level is Li Cheng-Long, a Shaolin Martial Arts expert who resembles Bruce Lee. When he's down in life, he will wield out his club. + +Mission 3 - Japan - The enemies are samurai swordsmen. The first area takes place outside a castle, with bamboo traps and enemies coming out of walls. The second area takes place inside a castle, where the player will face a few more swordsmen before taking out on the boss, Ranzou, a ninja. He attacks with throwing stars and smoke bombs and splits into three forms when he's down on his life. + +Mission 4 - Italy - Consists of a single level set in the ruins of a coliseum. The enemies are roman archers. After defeating most of the archers, the boss Giuliano, a man decked in gladiator armor, will attempt to run the player over with his horse. After defeating all the archers, Giuliano will dismount at the end of the level and fight the player. He wields a long hand spear and can block attacks with his shield. + +Mission 5 - Egypt - The final stage is composed of seven levels, which includes a desert field, an underground forest, a trap room with stone pillars and giant hands emerging from the floor, a hall with a flying disc. Enemies include living tree men and rock creatures. + 0.50 + 19900101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-3 + ddragon3.zip + Technos + 320x240 + media/mixrbv2/ddragon3.png + + + + ddragon3p.zip + Double Dragon 3 - The Rosetta Stone (prototype) + A mysterious fortune teller warns Billy & Jimmy Lee about the rise of a powerful enemy in Egypt. Since the Lee brothers are looking for a true challenge to put their martial arts skills to the ultimate test, they agree to face this mysterious new enemy. They embark on a world quest - joining up with new allies in the process - and try to lay claim to the famous 'Rosetta Stone'. + +The 3rd and final arcade entry of the Double Dragon series (not counting the later Neo-Geo fighting game based on the movie) features a completely gameplay system and graphics from the first two installments. The game can played by up to 2 or 3 players, depending on the cabinet and settings. The 3rd player takes control of a yellow-clad Lee brother named Sonny, who is exclusive to this game. Techniques from the previous games such as the hair grab and the elbow punch are gone, but new ones are added such as the belly-to-back throw and the back-to-back hurricane kick, as well as the ability to dash by tapping the joystick left or right twice. + +The game features weapon shops that allows the player to purchase power-ups by inserting additional tokens. The power-ups differ between stages differ between stages and are available as followed. +Extra Guys - Allows the player to control a new character who replaces the current fighter when he dies. There are three character types in addition to the Lee brothers. +The Urquidez Brothers (Roney, Sunny, Jonny) - Tall European grapplers. They have the most energy of the four character types. Up to three fighters can be have in reserve. +The Chin Brothers (Seimei, Taimei, Sinmei) - Chubby Chinese men with powerful attacks. +The Oyama Brothers (Masao, Kunio, Akira) - Japanese karate masters dressed in gis specializing in speedy attacks. +? Tricks - The hurricane kick and the one-armed stand head butt are added to the player's move set. If the player's current character dies, then the new techniques will be inherited by the next character in reserve, if there is one. +Weapons - A nunchaku or sword are given player. Only the Lees can have purchase and wield weapons. +Energy - Restores the current character's life to 150%. +Power-Up - Increases the character's agility. + +There are 5 stages in the game: + +Mission 1 - America - The enemies in this stage are typical thugs and bikers. The first area takes place in a downtown area of city. After defeating the first wave of enemies, the player will enter a warehouse, where they encounter bikers that will try to run over them with their bike. The boss in this is Jim, a red-haired biker wearing a leather jacket. + +Mission 2 - China - The enemies are martial artists that specialize in flying kicks. The stage takes place in a single level set in a countryside near the Great Wall of China. The boss at the end of level is Li Cheng-Long, a Shaolin Martial Arts expert who resembles Bruce Lee. When he's down in life, he will wield out his club. + +Mission 3 - Japan - The enemies are samurai swordsmen. The first area takes place outside a castle, with bamboo traps and enemies coming out of walls. The second area takes place inside a castle, where the player will face a few more swordsmen before taking out on the boss, Ranzou, a ninja. He attacks with throwing stars and smoke bombs and splits into three forms when he's down on his life. + +Mission 4 - Italy - Consists of a single level set in the ruins of a coliseum. The enemies are roman archers. After defeating most of the archers, the boss Giuliano, a man decked in gladiator armor, will attempt to run the player over with his horse. After defeating all the archers, Giuliano will dismount at the end of the level and fight the player. He wields a long hand spear and can block attacks with his shield. + +Mission 5 - Egypt - The final stage is composed of seven levels, which includes a desert field, an underground forest, a trap room with stone pillars and giant hands emerging from the floor, a hall with a flying disc. Enemies include living tree men and rock creatures. + 0.50 + 19900101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-3 + ddragon3.zip + Technos + 320x240 + media/mixrbv2/ddragon3.png + + + + ddragon3.zip + Double Dragon 3 - The Rosetta Stone (US) + A mysterious fortune teller warns Billy & Jimmy Lee about the rise of a powerful enemy in Egypt. Since the Lee brothers are looking for a true challenge to put their martial arts skills to the ultimate test, they agree to face this mysterious new enemy. They embark on a world quest - joining up with new allies in the process - and try to lay claim to the famous 'Rosetta Stone'. + +The 3rd and final arcade entry of the Double Dragon series (not counting the later Neo-Geo fighting game based on the movie) features a completely gameplay system and graphics from the first two installments. The game can played by up to 2 or 3 players, depending on the cabinet and settings. The 3rd player takes control of a yellow-clad Lee brother named Sonny, who is exclusive to this game. Techniques from the previous games such as the hair grab and the elbow punch are gone, but new ones are added such as the belly-to-back throw and the back-to-back hurricane kick, as well as the ability to dash by tapping the joystick left or right twice. + +The game features weapon shops that allows the player to purchase power-ups by inserting additional tokens. The power-ups differ between stages differ between stages and are available as followed. +Extra Guys - Allows the player to control a new character who replaces the current fighter when he dies. There are three character types in addition to the Lee brothers. +The Urquidez Brothers (Roney, Sunny, Jonny) - Tall European grapplers. They have the most energy of the four character types. Up to three fighters can be have in reserve. +The Chin Brothers (Seimei, Taimei, Sinmei) - Chubby Chinese men with powerful attacks. +The Oyama Brothers (Masao, Kunio, Akira) - Japanese karate masters dressed in gis specializing in speedy attacks. +? Tricks - The hurricane kick and the one-armed stand head butt are added to the player's move set. If the player's current character dies, then the new techniques will be inherited by the next character in reserve, if there is one. +Weapons - A nunchaku or sword are given player. Only the Lees can have purchase and wield weapons. +Energy - Restores the current character's life to 150%. +Power-Up - Increases the character's agility. + +There are 5 stages in the game: + +Mission 1 - America - The enemies in this stage are typical thugs and bikers. The first area takes place in a downtown area of city. After defeating the first wave of enemies, the player will enter a warehouse, where they encounter bikers that will try to run over them with their bike. The boss in this is Jim, a red-haired biker wearing a leather jacket. + +Mission 2 - China - The enemies are martial artists that specialize in flying kicks. The stage takes place in a single level set in a countryside near the Great Wall of China. The boss at the end of level is Li Cheng-Long, a Shaolin Martial Arts expert who resembles Bruce Lee. When he's down in life, he will wield out his club. + +Mission 3 - Japan - The enemies are samurai swordsmen. The first area takes place outside a castle, with bamboo traps and enemies coming out of walls. The second area takes place inside a castle, where the player will face a few more swordsmen before taking out on the boss, Ranzou, a ninja. He attacks with throwing stars and smoke bombs and splits into three forms when he's down on his life. + +Mission 4 - Italy - Consists of a single level set in the ruins of a coliseum. The enemies are roman archers. After defeating most of the archers, the boss Giuliano, a man decked in gladiator armor, will attempt to run the player over with his horse. After defeating all the archers, Giuliano will dismount at the end of the level and fight the player. He wields a long hand spear and can block attacks with his shield. + +Mission 5 - Egypt - The final stage is composed of seven levels, which includes a desert field, an underground forest, a trap room with stone pillars and giant hands emerging from the floor, a hall with a flying disc. Enemies include living tree men and rock creatures. + 0.50 + 19900101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-3 + Technos + 320x240 + media/mixrbv2/ddragon3.png + + + + ddragon2j.zip + Double Dragon II - The Revenge (Japan) + Following his defeat at the end of the original Double Dragon, Willy, the leader of the Black Warriors, retaliates against Billy and Jimmy Lee by murdering their friend, Marian, leaving the brothers with the task to avenge her death. + +The sequel to Double Dragon is essentially an upgraded version of the original game, but with with a two-way attacking system similar to one previously used in Technos Japan's 1986 arcade game "Renegade". Many of the attacks and combos from the original "Double Dragon" are retained, as well as new techniques including the invincible Cyclone Kick. + +The stages and weapons are redesigned versions of items previously featured in the original game. There are a few new traps such as a bulldozer in the middle of Mission 3 and all of the transition sequences between stages are now done with the character entering the next level via a lift, making it impossible to carry one weapon to the next area. + +Most of the enemy characters return from the original Double Dragon, with some given facelifts, but the stage bosses are all new. The enemies are as followed: +Williams - Has a wilder face and longer hair. He can now run towards the player and do cartwheels. He throws his knives in mid-air and sometimes carry a shovel which he throws towards the player. +Rowper - Has a beard and eye-patch, but otherwise is more or less identical to his original self. He carries shovels and can sometime pick up large objects. +Linda - She now has a mohawk and face paint. She can also jump off platforms and do the elbow strike against the player. In addition to the ball and chain, she also carries grenades and knives. +Oharra - A strongman with a clean-shaved face. Replaces Abobo from the first game and has the same attacks. +Bolo - A head-swap of Oharra with long hair and beard. Replaces the mohawked head-swap of Abobo from the first game. +Jeff - Same as his original self, but now carries grenades. +Burnov - The boss of Mission 1. An obese wrestler whose face is concealed with a mask. He grabs the player and throws similar punches in the face. After dying, he will stand up and yell, disappearing in front of the player and leaving only his clothes. In later encounters, he will revive himself at least once. +Abore - The boss of Mission 2. A huge suspender-wearing strongman with Terminator-like sunglasses. His slaps and shoulder tackles do massive damage to the player. +Chin Taimei - The boss of Mission 3. A Chinese martial artists armed with twin kali sticks. In addition to his energy-draining stick combo, he also has a jump kick and sweep kick. +Willy - The boss of Mission 4. Looks like he does in the original game, but now dresses in red. He still uses the same machine gun from the first game. +The clone - After defeating Willy, the player will have to fight their character's evil self. This clone has all the techniques the player has, but can also throw energy beams and possess the player's body to drain his energy. + 0.70 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + ddragon2.zip + Technos + 256x240 + media/mixrbv2/ddragon2.png + + + + ddragon2b.zip + Double Dragon II - The Revenge (US bootleg, set 1) + Following his defeat at the end of the original Double Dragon, Willy, the leader of the Black Warriors, retaliates against Billy and Jimmy Lee by murdering their friend, Marian, leaving the brothers with the task to avenge her death. + +The sequel to Double Dragon is essentially an upgraded version of the original game, but with with a two-way attacking system similar to one previously used in Technos Japan's 1986 arcade game "Renegade". Many of the attacks and combos from the original "Double Dragon" are retained, as well as new techniques including the invincible Cyclone Kick. + +The stages and weapons are redesigned versions of items previously featured in the original game. There are a few new traps such as a bulldozer in the middle of Mission 3 and all of the transition sequences between stages are now done with the character entering the next level via a lift, making it impossible to carry one weapon to the next area. + +Most of the enemy characters return from the original Double Dragon, with some given facelifts, but the stage bosses are all new. The enemies are as followed: +Williams - Has a wilder face and longer hair. He can now run towards the player and do cartwheels. He throws his knives in mid-air and sometimes carry a shovel which he throws towards the player. +Rowper - Has a beard and eye-patch, but otherwise is more or less identical to his original self. He carries shovels and can sometime pick up large objects. +Linda - She now has a mohawk and face paint. She can also jump off platforms and do the elbow strike against the player. In addition to the ball and chain, she also carries grenades and knives. +Oharra - A strongman with a clean-shaved face. Replaces Abobo from the first game and has the same attacks. +Bolo - A head-swap of Oharra with long hair and beard. Replaces the mohawked head-swap of Abobo from the first game. +Jeff - Same as his original self, but now carries grenades. +Burnov - The boss of Mission 1. An obese wrestler whose face is concealed with a mask. He grabs the player and throws similar punches in the face. After dying, he will stand up and yell, disappearing in front of the player and leaving only his clothes. In later encounters, he will revive himself at least once. +Abore - The boss of Mission 2. A huge suspender-wearing strongman with Terminator-like sunglasses. His slaps and shoulder tackles do massive damage to the player. +Chin Taimei - The boss of Mission 3. A Chinese martial artists armed with twin kali sticks. In addition to his energy-draining stick combo, he also has a jump kick and sweep kick. +Willy - The boss of Mission 4. Looks like he does in the original game, but now dresses in red. He still uses the same machine gun from the first game. +The clone - After defeating Willy, the player will have to fight their character's evil self. This clone has all the techniques the player has, but can also throw energy beams and possess the player's body to drain his energy. + 0.70 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + ddragon2.zip + Technos + 256x240 + media/mixrbv2/ddragon2.png + + + + ddragon2b2.zip + Double Dragon II - The Revenge (US bootleg, set 2) + Following his defeat at the end of the original Double Dragon, Willy, the leader of the Black Warriors, retaliates against Billy and Jimmy Lee by murdering their friend, Marian, leaving the brothers with the task to avenge her death. + +The sequel to Double Dragon is essentially an upgraded version of the original game, but with with a two-way attacking system similar to one previously used in Technos Japan's 1986 arcade game "Renegade". Many of the attacks and combos from the original "Double Dragon" are retained, as well as new techniques including the invincible Cyclone Kick. + +The stages and weapons are redesigned versions of items previously featured in the original game. There are a few new traps such as a bulldozer in the middle of Mission 3 and all of the transition sequences between stages are now done with the character entering the next level via a lift, making it impossible to carry one weapon to the next area. + +Most of the enemy characters return from the original Double Dragon, with some given facelifts, but the stage bosses are all new. The enemies are as followed: +Williams - Has a wilder face and longer hair. He can now run towards the player and do cartwheels. He throws his knives in mid-air and sometimes carry a shovel which he throws towards the player. +Rowper - Has a beard and eye-patch, but otherwise is more or less identical to his original self. He carries shovels and can sometime pick up large objects. +Linda - She now has a mohawk and face paint. She can also jump off platforms and do the elbow strike against the player. In addition to the ball and chain, she also carries grenades and knives. +Oharra - A strongman with a clean-shaved face. Replaces Abobo from the first game and has the same attacks. +Bolo - A head-swap of Oharra with long hair and beard. Replaces the mohawked head-swap of Abobo from the first game. +Jeff - Same as his original self, but now carries grenades. +Burnov - The boss of Mission 1. An obese wrestler whose face is concealed with a mask. He grabs the player and throws similar punches in the face. After dying, he will stand up and yell, disappearing in front of the player and leaving only his clothes. In later encounters, he will revive himself at least once. +Abore - The boss of Mission 2. A huge suspender-wearing strongman with Terminator-like sunglasses. His slaps and shoulder tackles do massive damage to the player. +Chin Taimei - The boss of Mission 3. A Chinese martial artists armed with twin kali sticks. In addition to his energy-draining stick combo, he also has a jump kick and sweep kick. +Willy - The boss of Mission 4. Looks like he does in the original game, but now dresses in red. He still uses the same machine gun from the first game. +The clone - After defeating Willy, the player will have to fight their character's evil self. This clone has all the techniques the player has, but can also throw energy beams and possess the player's body to drain his energy. + 0.70 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + ddragon2.zip + Technos + 256x240 + media/mixrbv2/ddragon2.png + + + + ddragon2u.zip + Double Dragon II - The Revenge (US) + Following his defeat at the end of the original Double Dragon, Willy, the leader of the Black Warriors, retaliates against Billy and Jimmy Lee by murdering their friend, Marian, leaving the brothers with the task to avenge her death. + +The sequel to Double Dragon is essentially an upgraded version of the original game, but with with a two-way attacking system similar to one previously used in Technos Japan's 1986 arcade game "Renegade". Many of the attacks and combos from the original "Double Dragon" are retained, as well as new techniques including the invincible Cyclone Kick. + +The stages and weapons are redesigned versions of items previously featured in the original game. There are a few new traps such as a bulldozer in the middle of Mission 3 and all of the transition sequences between stages are now done with the character entering the next level via a lift, making it impossible to carry one weapon to the next area. + +Most of the enemy characters return from the original Double Dragon, with some given facelifts, but the stage bosses are all new. The enemies are as followed: +Williams - Has a wilder face and longer hair. He can now run towards the player and do cartwheels. He throws his knives in mid-air and sometimes carry a shovel which he throws towards the player. +Rowper - Has a beard and eye-patch, but otherwise is more or less identical to his original self. He carries shovels and can sometime pick up large objects. +Linda - She now has a mohawk and face paint. She can also jump off platforms and do the elbow strike against the player. In addition to the ball and chain, she also carries grenades and knives. +Oharra - A strongman with a clean-shaved face. Replaces Abobo from the first game and has the same attacks. +Bolo - A head-swap of Oharra with long hair and beard. Replaces the mohawked head-swap of Abobo from the first game. +Jeff - Same as his original self, but now carries grenades. +Burnov - The boss of Mission 1. An obese wrestler whose face is concealed with a mask. He grabs the player and throws similar punches in the face. After dying, he will stand up and yell, disappearing in front of the player and leaving only his clothes. In later encounters, he will revive himself at least once. +Abore - The boss of Mission 2. A huge suspender-wearing strongman with Terminator-like sunglasses. His slaps and shoulder tackles do massive damage to the player. +Chin Taimei - The boss of Mission 3. A Chinese martial artists armed with twin kali sticks. In addition to his energy-draining stick combo, he also has a jump kick and sweep kick. +Willy - The boss of Mission 4. Looks like he does in the original game, but now dresses in red. He still uses the same machine gun from the first game. +The clone - After defeating Willy, the player will have to fight their character's evil self. This clone has all the techniques the player has, but can also throw energy beams and possess the player's body to drain his energy. + 0.70 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + ddragon2.zip + Technos + 256x240 + media/mixrbv2/ddragon2.png + + + + ddragon2.zip + Double Dragon II - The Revenge (World) + Following his defeat at the end of the original Double Dragon, Willy, the leader of the Black Warriors, retaliates against Billy and Jimmy Lee by murdering their friend, Marian, leaving the brothers with the task to avenge her death. + +The sequel to Double Dragon is essentially an upgraded version of the original game, but with with a two-way attacking system similar to one previously used in Technos Japan's 1986 arcade game "Renegade". Many of the attacks and combos from the original "Double Dragon" are retained, as well as new techniques including the invincible Cyclone Kick. + +The stages and weapons are redesigned versions of items previously featured in the original game. There are a few new traps such as a bulldozer in the middle of Mission 3 and all of the transition sequences between stages are now done with the character entering the next level via a lift, making it impossible to carry one weapon to the next area. + +Most of the enemy characters return from the original Double Dragon, with some given facelifts, but the stage bosses are all new. The enemies are as followed: +Williams - Has a wilder face and longer hair. He can now run towards the player and do cartwheels. He throws his knives in mid-air and sometimes carry a shovel which he throws towards the player. +Rowper - Has a beard and eye-patch, but otherwise is more or less identical to his original self. He carries shovels and can sometime pick up large objects. +Linda - She now has a mohawk and face paint. She can also jump off platforms and do the elbow strike against the player. In addition to the ball and chain, she also carries grenades and knives. +Oharra - A strongman with a clean-shaved face. Replaces Abobo from the first game and has the same attacks. +Bolo - A head-swap of Oharra with long hair and beard. Replaces the mohawked head-swap of Abobo from the first game. +Jeff - Same as his original self, but now carries grenades. +Burnov - The boss of Mission 1. An obese wrestler whose face is concealed with a mask. He grabs the player and throws similar punches in the face. After dying, he will stand up and yell, disappearing in front of the player and leaving only his clothes. In later encounters, he will revive himself at least once. +Abore - The boss of Mission 2. A huge suspender-wearing strongman with Terminator-like sunglasses. His slaps and shoulder tackles do massive damage to the player. +Chin Taimei - The boss of Mission 3. A Chinese martial artists armed with twin kali sticks. In addition to his energy-draining stick combo, he also has a jump kick and sweep kick. +Willy - The boss of Mission 4. Looks like he does in the original game, but now dresses in red. He still uses the same machine gun from the first game. +The clone - After defeating Willy, the player will have to fight their character's evil self. This clone has all the techniques the player has, but can also throw energy beams and possess the player's body to drain his energy. + 0.70 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + Technos + 256x240 + media/mixrbv2/ddragon2.png + + + + ddribble.zip + Double Dribble + A basketball game by Konami, originally for the Arcade and ported to home consoles. It is part of Konami's "Exciting" sports series. + 0.50 + 19860101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/ddribble.png + + + + ddribblep.zip + Double Dribble (prototype?) + A basketball game by Konami, originally for the Arcade and ported to home consoles. It is part of Konami's "Exciting" sports series. + 0.50 + 19860101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + ddribble.zip + Konami Classics + 256x224 + media/mixrbv2/ddribble.png + + + + dblpoint.zip + Double Point + An adult puzzle game. + 0.70 + 19950101T000000 + Min Corp. + Puzzle-Game / Equalize + 2864 + 1-2 + Mame + 320x224 + media/mixrbv2/dblpoint.png + + + + dblpointd.zip + Double Point (Dong Bang Electron, bootleg?) + An adult puzzle game. + 0.70 + 19950101T000000 + Min Corp. + Puzzle-Game / Equalize + 2864 + 1-2 + dblpoint.zip + Mame + 320x224 + media/mixrbv2/dblpoint.png + + + + downtownj.zip + DownTown / Mokugeki (Joystick Hack) + Overhead beat'em up. Save the city from the evil criminals and their morbidly obese enforcers! + 0.70 + 19890101T000000 + Beat'em Up + 1 + downtown.zip + Seta + 270 + 384x240 + media/mixrbv2/downtown.png + + + + downtownp.zip + DownTown / Mokugeki (prototype) + Overhead beat'em up. Save the city from the evil criminals and their morbidly obese enforcers! + 0.70 + 19890101T000000 + Beat'em Up + 1 + downtown.zip + Seta + 270 + 384x240 + media/mixrbv2/downtown.png + + + + downtown.zip + DownTown / Mokugeki (Set 1) + Overhead beat'em up. Save the city from the evil criminals and their morbidly obese enforcers! + 0.70 + 19890101T000000 + Beat'em Up + 1 + Seta + 270 + 384x240 + media/mixrbv2/downtown.png + + + + downtown2.zip + DownTown / Mokugeki (Set 2) + Overhead beat'em up. Save the city from the evil criminals and their morbidly obese enforcers! + 0.70 + 19890101T000000 + Beat'em Up + 1 + downtown.zip + Seta + 270 + 384x240 + media/mixrbv2/downtown.png + + + + drmicro.zip + Dr. Micro + An early platform game in which the player must defeat a mad scientist, avoiding and destroying his evil creations in the process. + +The game consists of 3 single-screen levels: + +On the first the player must move from the left to the right of the screen, dropping down onto constantly moving metal pillars and shooting the enemies. + +On the second level, the player must steer a floating ball around the screen, killing as many enemies as possible. Once enough enemies have been killed, an exit will open which the player must enter. The floating ball gradually diminishes and the player will have to drop to the bottom of the screen several times to get a replacement ball. + +The final screen takes place on the scientist's production line; with machinery that must be carefully negotiated. Two large robots bar the route to the scientist and must be destroyed before the scientist can be reached. + 0.70 + 19830101T000000 + Sanritsu Denki + Platform / Run Jump + 2915 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/drmicro.png + + + + drtomy.zip + Dr. Tomy + Dr. Tomy © 1993 Playmark. + +A "Dr. Mario" rip-off featuring adult content. + 0.50 + 19930101T000000 + Playmark + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x240 + media/mixrbv2/drtomy.png + + + + drtoppelu.zip + Dr. Toppel's Adventure (US) + Dr. Toppel's Adventure is a cutesy vertically scrolling shoot'em up where you play as a cute green creature. + 0.90 + 19870101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + drtoppel.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/drtoppel.png + + + + drtoppel.zip + Dr. Toppel's Adventure (World) + Dr. Toppel's Adventure is a cutesy vertically scrolling shoot'em up where you play as a cute green creature. + 0.90 + 19870101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/drtoppel.png + + + + drtoppela.zip + Dr. Toppel's Adventure (World, alt?) + Dr. Toppel's Adventure is a cutesy vertically scrolling shoot'em up where you play as a cute green creature. + 0.90 + 19870101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + drtoppel.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/drtoppel.png + + + + drtoppelj.zip + Dr. Toppel's Tankentai (Japan) + Dr. Toppel's Adventure is a cutesy vertically scrolling shoot'em up where you play as a cute green creature. + 0.90 + 19870101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + drtoppel.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/drtoppel.png + + + + drgnbowl.zip + Dragon Bowl + Dragon Bowl is a straight rip-off of Tecmo's "Ninja Gaiden" with different sprites (This game unofficially uses the Dragon Ball license). + 0.50 + 19920101T000000 + Nics + Nics + Beat'em Up + 1 + 1-2 + Tecmo + 256x224 + media/mixrbv2/drgnbowl.png + + + + drgnbowla.zip + Dragon Bowl (set 2, unencrypted program) + Dragon Bowl is a straight rip-off of Tecmo's "Ninja Gaiden" with different sprites (This game unofficially uses the Dragon Ball license). + 0.50 + 19920101T000000 + Nics + Nics + Beat'em Up + 1 + 1-2 + drgnbowl.zip + Tecmo + 256x224 + media/mixrbv2/drgnbowl.png + + + + dbreedjm72.zip + Dragon Breed (Japan, M72 hardware) + Dragon Breed is a side-scrolling shoot-em-up in which the player controls the game's hero, Kayus, who is riding on the back of a fully articulated dragon named 'Bahamoot'. The dragon is immune to enemy attacks, capable of blocking most projectiles and of damaging and eventually killing enemies on contact. Dragon rider Kayus is armed with a forward-firing crossbow but unlike his steed, is not invulnerable and will be killed by contact with either enemies or their projectiles. + +What separates Dragon Breed from other games in the genre is in how the Dragon can be utilised. Bahamoot's body is flexible and responds to Kayus' movement, enabling Kayus to use Bahamoot as both a mobile shield and a whip-like weapon. It's also possible to encircle the tail around a group of enemies to kill them. The tail of the yellow or blue dragon can be coiled around the dragon's rider to offer almost complete invulnerability for a limited time. + +Bahamoot can also spit fireballs. By holding the fire button down, the dragon will build up fire in its mouth; the longer the button is held down, the more powerful the fireball will be. There are four levels of fireball power and at its strongest, the fireball resembles a dragon's head. + +Power-ups appear in the form of orbs, acquired by shooting small green dragons that appear intermittently throughout stages. There are four different types of orbs, each of will change Bahamoot to a different colour and grant him a new attack power: +Red orb enables the dragon to breathe a flame. +Gold orb enables Bahamoot's body to fire crescents in all directions. +Silver orb enables the dragon to produce up to four miniature dragons, which home in on enemies. +Blue orb enables Bahamoot to fire bolts of electricity downwards from its underside. + +The player can enhance a specific power by picking up the same type of orb, this can be done up to three times. + +Dragon Breed also includes platforming elements. At certain points during a stage horizontal platforms appear, these often have power-ups on them and the dragon rider can dismount and run along the platforms while the dragon waits above. + 0.70 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + dbreed.zip + Irem Classics + 384x256 + media/mixrbv2/dbreed.png + + + + dbreedm72.zip + Dragon Breed (World, M72 hardware) + Dragon Breed is a side-scrolling shoot-em-up in which the player controls the game's hero, Kayus, who is riding on the back of a fully articulated dragon named 'Bahamoot'. The dragon is immune to enemy attacks, capable of blocking most projectiles and of damaging and eventually killing enemies on contact. Dragon rider Kayus is armed with a forward-firing crossbow but unlike his steed, is not invulnerable and will be killed by contact with either enemies or their projectiles. + +What separates Dragon Breed from other games in the genre is in how the Dragon can be utilised. Bahamoot's body is flexible and responds to Kayus' movement, enabling Kayus to use Bahamoot as both a mobile shield and a whip-like weapon. It's also possible to encircle the tail around a group of enemies to kill them. The tail of the yellow or blue dragon can be coiled around the dragon's rider to offer almost complete invulnerability for a limited time. + +Bahamoot can also spit fireballs. By holding the fire button down, the dragon will build up fire in its mouth; the longer the button is held down, the more powerful the fireball will be. There are four levels of fireball power and at its strongest, the fireball resembles a dragon's head. + +Power-ups appear in the form of orbs, acquired by shooting small green dragons that appear intermittently throughout stages. There are four different types of orbs, each of will change Bahamoot to a different colour and grant him a new attack power: +Red orb enables the dragon to breathe a flame. +Gold orb enables Bahamoot's body to fire crescents in all directions. +Silver orb enables the dragon to produce up to four miniature dragons, which home in on enemies. +Blue orb enables Bahamoot to fire bolts of electricity downwards from its underside. + +The player can enhance a specific power by picking up the same type of orb, this can be done up to three times. + +Dragon Breed also includes platforming elements. At certain points during a stage horizontal platforms appear, these often have power-ups on them and the dragon rider can dismount and run along the platforms while the dragon waits above. + 0.70 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + dbreed.zip + Irem Classics + 384x256 + media/mixrbv2/dbreed.png + + + + dbreed.zip + Dragon Breed (World, M81 hardware) + Dragon Breed is a side-scrolling shoot-em-up in which the player controls the game's hero, Kayus, who is riding on the back of a fully articulated dragon named 'Bahamoot'. The dragon is immune to enemy attacks, capable of blocking most projectiles and of damaging and eventually killing enemies on contact. Dragon rider Kayus is armed with a forward-firing crossbow but unlike his steed, is not invulnerable and will be killed by contact with either enemies or their projectiles. + +What separates Dragon Breed from other games in the genre is in how the Dragon can be utilised. Bahamoot's body is flexible and responds to Kayus' movement, enabling Kayus to use Bahamoot as both a mobile shield and a whip-like weapon. It's also possible to encircle the tail around a group of enemies to kill them. The tail of the yellow or blue dragon can be coiled around the dragon's rider to offer almost complete invulnerability for a limited time. + +Bahamoot can also spit fireballs. By holding the fire button down, the dragon will build up fire in its mouth; the longer the button is held down, the more powerful the fireball will be. There are four levels of fireball power and at its strongest, the fireball resembles a dragon's head. + +Power-ups appear in the form of orbs, acquired by shooting small green dragons that appear intermittently throughout stages. There are four different types of orbs, each of will change Bahamoot to a different colour and grant him a new attack power: +Red orb enables the dragon to breathe a flame. +Gold orb enables Bahamoot's body to fire crescents in all directions. +Silver orb enables the dragon to produce up to four miniature dragons, which home in on enemies. +Blue orb enables Bahamoot to fire bolts of electricity downwards from its underside. + +The player can enhance a specific power by picking up the same type of orb, this can be done up to three times. + +Dragon Breed also includes platforming elements. At certain points during a stage horizontal platforms appear, these often have power-ups on them and the dragon rider can dismount and run along the platforms while the dragon waits above. + 0.70 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/dbreed.png + + + + drgnbstr.zip + Dragon Buster + Dragon Buster is a role-playing game in which you travel through various scenery to rescue the princess from an evil dragon. + 0.50 + 19840101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/drgnbstr.png + + + + dsaberj.zip + Dragon Saber (Japan, Rev B) + A vertically scrolling shoot'em up game. + 0.80 + 19900101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + dsaber.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/dsaber.png + + + + dsaber.zip + Dragon Saber (World, DO2) + A vertically scrolling shoot'em up game. + 0.80 + 19900101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/dsaber.png + + + + dsabera.zip + Dragon Saber (World, older?) + A vertically scrolling shoot'em up game. + 0.80 + 19900101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + dsaber.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/dsaber.png + + + + dspirit2.zip + Dragon Spirit (DS2) + Dragon Spirit scorches the screen with a mythical fantasy theme hot enough to thrill players throughout the land. Come with us, and journey to a time long ago when prehistoric beings populated the globe. Where after a millennium of captivity, an ugly serpent demon named 'Zawell' escapes imprisonment and kidnaps Alicia, princess to the kingdom of Mitgult. A young, crafty soldier Amul is selected to rescue the princess and destroy Zawell. In praying to the gods for strength and courage, he points his sword high toward the heavens. Suddenly he is transformed into an all-powerful blue dragon, bestowed with special powers. Though gifted with a lethal air and ground attack, this is not enough. He must locate and obtain extra powers along the way. The demon has instructed nine of the mightiest beasts to stop Amul before reaching his goal. Do not underestimate this soldier, he has the Dragon Spirit! + 0.50 + 19870101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + dspirit.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/dspirit.png + + + + dspirit.zip + Dragon Spirit (new version (DS3)) + Dragon Spirit scorches the screen with a mythical fantasy theme hot enough to thrill players throughout the land. Come with us, and journey to a time long ago when prehistoric beings populated the globe. Where after a millennium of captivity, an ugly serpent demon named 'Zawell' escapes imprisonment and kidnaps Alicia, princess to the kingdom of Mitgult. A young, crafty soldier Amul is selected to rescue the princess and destroy Zawell. In praying to the gods for strength and courage, he points his sword high toward the heavens. Suddenly he is transformed into an all-powerful blue dragon, bestowed with special powers. Though gifted with a lethal air and ground attack, this is not enough. He must locate and obtain extra powers along the way. The demon has instructed nine of the mightiest beasts to stop Amul before reaching his goal. Do not underestimate this soldier, he has the Dragon Spirit! + 0.50 + 19870101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/dspirit.png + + + + dspirit1.zip + Dragon Spirit (old version (DS1)) + Dragon Spirit scorches the screen with a mythical fantasy theme hot enough to thrill players throughout the land. Come with us, and journey to a time long ago when prehistoric beings populated the globe. Where after a millennium of captivity, an ugly serpent demon named 'Zawell' escapes imprisonment and kidnaps Alicia, princess to the kingdom of Mitgult. A young, crafty soldier Amul is selected to rescue the princess and destroy Zawell. In praying to the gods for strength and courage, he points his sword high toward the heavens. Suddenly he is transformed into an all-powerful blue dragon, bestowed with special powers. Though gifted with a lethal air and ground attack, this is not enough. He must locate and obtain extra powers along the way. The demon has instructed nine of the mightiest beasts to stop Amul before reaching his goal. Do not underestimate this soldier, he has the Dragon Spirit! + 0.50 + 19870101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + dspirit.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/dspirit.png + + + + drgnunit.zip + Dragon Unit / Castle of Dragon + The Dragon Master, Darklarza, has been terrorizing the kingdom for many years. The king was forced into exile by this threat. He retreated, with the bravest knight in the kingdom, named Garaden. Darklarza stages an attack on the king's fortress, breaks in and manages to abduct the royal princess. Garaden sets off to vanquish Darklarza and rescue the princess. + 0.30 + 19890101T000000 + Athena + Athena + Beat'em Up + 1 + 1-2 + Seta + 384x240 + media/mixrbv2/drgnunit.png + + + + dragonsh.zip + Dragon's Heaven (development board) + Unreleased fighting game featuring ten selectable characters. + +The game was supposed to feature a unique system called the 'alignment system' (Lawful, Neutral, and Chaotic) in which the character's property would change depending on the path that the player would pick after the end of each battle. + +The game was supposed to change time on each round (morning, noon, evening, night). Lawful would get stronger during the noon and be able to use additional moves, while on the other hand get weaker during the night. Chaotic is just the opposite and get strong during the night and weak during noon. Neutral stays the same at all times. + 19970101T000000 + FACE + FACE + Fight + 14 + Neo-Geo + 320x224 + media/mixrbv2/dragonsh.png + + + + dbza.zip + Dragonball Z (rev A) + Based on the famous manga works by Akira Toriyama, this game enables you to play as many of the famous characters seen in the show. Too bad that's the only highlight in the game folks since only true fans are likely to enjoy the game! + 0.70 + 19930101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + dbz.zip + Banpresto + 384x256 + media/mixrbv2/dbz.png + + + + dbz.zip + Dragonball Z (rev B) + Based on the famous manga works by Akira Toriyama, this game enables you to play as many of the famous characters seen in the show. Too bad that's the only highlight in the game folks since only true fans are likely to enjoy the game! + 0.70 + 19930101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + Banpresto + 384x256 + media/mixrbv2/dbz.png + + + + dbz2.zip + Dragonball Z 2 - Super Battle + Dragon Ball Z 2: Super Battle the sequel to Dragon Ball Z released in 1994, also produced by Banpresto. The gameplay matches the But?den series of games rather than the previous arcade game. The characters are Goku, Gohan, Vegeta, Future Trunks, Piccolo, Cell, Android 16, Android 18, Android 20, and Mr. Satan. + 0.50 + 19940101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + Banpresto + 384x256 + media/mixrbv2/dbz2.png + + + + drakton.zip + Drakton (DK conversion) + A maze / shoot'em up game. + 0.30 + 19840101T000000 + Epos Corporation + Epos Corporation + Shooter + 2646 + 1-2 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/drakton.png + + + + drktnjr.zip + Drakton (DKJr conversion) + A maze / shoot'em up game. + 0.30 + 19840101T000000 + Epos Corporation + Epos Corporation + Shooter + 2646 + 1-2 + drakton.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/drakton.png + + + + dland.zip + Dream Land / Super Dream Land (bootleg of Bubble Bobble) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + dremshpr.zip + Dream Shopper + Dream Shopper is an arcade game which was released by Sanritsu in 1982; it runs on Namco's Pac-Man hardware. The player must use a four-way joystick to take control of a shopper. At the start of the game the text YOUR PRESSING GOAL IS 10000 POINTS will appear on the screen. The screen will then cut to a shot of a room whose floor is comprised of 144 tiles as they flash up and give you a brief idea of what they all are; all except the 66th tile (which is the one with the apple) will then go black, and the Dream Shopper will have to walk around the room and use the Reveal Button to reveal the type of tile he is standing on. + 0.70 + 19820101T000000 + Sanritsu Denki + Sanritsu Denki + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/dremshpr.png + + + + dribling.zip + Dribbling + An early overhead-view soccer game. + 0.50 + 19830101T000000 + Model Racing + Model Racing + Sports / Soccer + 2847 + 1-2 + Mame + 256x216 + media/mixrbv2/dribling.png + + + + driblingbr.zip + Dribbling (bootleg, Brazil) + An early overhead-view soccer game. + 0.50 + 19830101T000000 + Model Racing + Model Racing + Sports / Soccer + 2847 + 1-2 + dribling.zip + Mame + 256x216 + media/mixrbv2/dribling.png + + + + driblingo.zip + Dribbling (Olympia) + An early overhead-view soccer game. + 0.50 + 19830101T000000 + Model Racing + Model Racing + Sports / Soccer + 2847 + 1-2 + dribling.zip + Mame + 256x216 + media/mixrbv2/dribling.png + + + + drivfrcb.zip + Driving Force (Galaxian conversion bootleg) + An early chase-view racing game. + 0.50 + 19840101T000000 + Race, Driving + 28 + 1 + drivfrcp.zip + Namco Classics + 270 + 256x224 + media/mixrbv2/drivfrcp.png + + + + drivfrcg.zip + Driving Force (Galaxian conversion) + An early chase-view racing game. + 0.50 + 19840101T000000 + Race, Driving + 28 + 1 + drivfrcp.zip + Namco Classics + 270 + 256x224 + media/mixrbv2/drivfrcp.png + + + + drivfrcp.zip + Driving Force (Pac-Man conversion) + An early chase-view racing game. + 0.50 + 19840101T000000 + Race, Driving + 28 + 1 + Namco Classics + 270 + 256x224 + media/mixrbv2/drivfrcp.png + + + + cdsteljn.zip + DS Telejan (DECO Cassette) (Japan) + A Mahjong Game. + + 19810101T000000 + Data East + Mahjong + 2869 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cdsteljn.png + + + + dualaslt.zip + Dual Assault + Liberation &copy; 1984 Data East. + +A vertically scrolling shoot&#039;em up game. + 0.50 + 19840101T000000 + Data East + Data East + Shooter / Plane + 2928 + 1-2 + liberate.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/liberate.png + + + + ducki.zip + Duck Tales (FMV Demo) + Neo-Geo + media/mixrbv2/ducki.png + + + dumpmtmt.zip + Dump Matsumoto (Japan, 8751 317-unknown) + Body Slam, called Dump Matsumoto in Japan, is a 1986 arcade wrestling game by Sega. You choose one of two wrestling teams, "Fresh Gals" and "The Evil Alliance", and fight with each of its members, taking turns. + 0.30 + 19860101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + bodyslam.zip + Sega Classics + 320x224 + media/mixrbv2/bodyslam.png + + + + ddsomjr1.zip + Dungeons & Dragons - shadow over mystara (960206 Japan) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomar1.zip + Dungeons & Dragons - shadow over mystara (960208 Asia) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomr3.zip + Dungeons & Dragons - shadow over mystara (960208 Euro) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomr2.zip + Dungeons & Dragons - shadow over mystara (960209 Euro) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomur1.zip + Dungeons & Dragons - shadow over mystara (960209 USA) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomb.zip + Dungeons & Dragons - shadow over mystara (960223 Brazil) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomr1.zip + Dungeons & Dragons - shadow over mystara (960223 Euro) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomh.zip + Dungeons & Dragons - shadow over mystara (960223 Hispanic) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomjr2.zip + Dungeons & Dragons - shadow over mystara (960223 Japan) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsoma.zip + Dungeons & Dragons - shadow over mystara (960619 Asia) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsom.zip + Dungeons & Dragons - shadow over mystara (960619 Euro) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomj.zip + Dungeons & Dragons - shadow over mystara (960619 Japan) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomud.zip + Dungeons & Dragons - shadow over mystara (960619 USA Phoenix Edition) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddsomu.zip + Dungeons & Dragons - shadow over mystara (960619 USA) + Dungeons & Dragons: Shadow over Mystara is an arcade game developed and published by Capcom in 1996 as a sequel to Dungeons & Dragons: Tower of Doom. It was also released on the Sega Saturn, packaged with Tower of Doom, under the title Dungeons & Dragons Collection. The game is set in the Dungeons & Dragons campaign setting of Mystara. It was one of the last 2-D arcade side-scrollers created by Capcom; only Battle Circuit (1997) came after Shadow over Mystara. + 0.60 + 19960101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddsom.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddsom.png + + + + ddtodar1.zip + Dungeons & Dragons - tower of doom (940113 Asia) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodr1.zip + Dungeons & Dragons - tower of doom (940113 Euro) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodhr2.zip + Dungeons & Dragons - tower of doom (940113 Hispanic) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodjr2.zip + Dungeons & Dragons - tower of doom (940113 Japan) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodur1.zip + Dungeons & Dragons - tower of doom (940113 USA) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodhr1.zip + Dungeons & Dragons - tower of doom (940125 Hispanic) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodjr1.zip + Dungeons & Dragons - tower of doom (940125 Japan) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodu.zip + Dungeons & Dragons - tower of doom (940125 USA) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtoda.zip + Dungeons & Dragons - tower of doom (940412 Asia) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodd.zip + Dungeons & Dragons - tower of doom (940412 Euro Phoenix Edition) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtod.zip + Dungeons & Dragons - tower of doom (940412 Euro) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodh.zip + Dungeons & Dragons - tower of doom (940412 Hispanic) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + ddtodj.zip + Dungeons & Dragons - tower of doom (940412 Japan) + Dungeons & Dragons: Tower of Doom is the first of two video games created by Capcom based on the Dungeons & Dragons tabletop role-playing game. The game was also released on the Sega Saturn, packaged with its sequel, Dungeons & Dragons: Shadow over Mystara, under the title Dungeons & Dragons Collection, although the Saturn version limited the gameplay to only 2 players. The game is set in the Mystara campaign setting. + 0.60 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-4 + ddtod.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ddtod.png + + + + dunkshoto.zip + Dunk Shot (FD1089 317-0022) + Dunk Shot is a top-down basketball arcade game released for Sega System 16B hardware by Sega in 1987. It was licensed to Atari Games for release in the United States. + 0.70 + 19870101T000000 + SEGA + SEGA + Sports / Basketball + 2852 + 1-4 + dunkshot.zip + Sega Classics + 320x224 + media/mixrbv2/dunkshot.png + + + + dunkshota.zip + Dunk Shot (Rev A, FD1089 317-0022) + Dunk Shot is a top-down basketball arcade game released for Sega System 16B hardware by Sega in 1987. It was licensed to Atari Games for release in the United States. + 0.70 + 19870101T000000 + SEGA + SEGA + Sports / Basketball + 2852 + 1-4 + dunkshot.zip + Sega Classics + 320x224 + media/mixrbv2/dunkshot.png + + + + dunkshot.zip + Dunk Shot (Rev C, FD1089 317-0022) + Dunk Shot is a top-down basketball arcade game released for Sega System 16B hardware by Sega in 1987. It was licensed to Atari Games for release in the United States. + 0.70 + 19870101T000000 + SEGA + SEGA + Sports / Basketball + 2852 + 1-4 + Sega Classics + 320x224 + media/mixrbv2/dunkshot.png + + + + dyger.zip + Dyger (Korea set 1) + Dyger is a 2D vertically scrolling shoot 'em up game in which you take control of a lone pilot and her spaceship. A commando group known as Dyger is responsible for the protection of Earth. In 2125 a female member of Dyger accidentally detonates an atomic weapon that destroys a city. After four years of feeling guilty, she decides to cryogenically freeze herself. + +In 2188, Earth is invaded by an alien host. After an earthquake in 2189 she awakens. Soon realizing Earth has been overrun, she decides to redeem herself by taking on the alien hordes herself. + +As you make progress and fight off various spacecraft, static guns, tanks, ships and bosses, power-ups come available. The spacecraft has separate weapons for flying and ground-based units/ships. The game can be played solo or with a friend. + 0.50 + 19890101T000000 + Philko + Philko + Shoot'em Up + 79 + 1 + Capcom Classics + 270 + 384x224 + media/mixrbv2/dyger.png + + + + dygera.zip + Dyger (Korea set 2) + Dyger is a 2D vertically scrolling shoot 'em up game in which you take control of a lone pilot and her spaceship. A commando group known as Dyger is responsible for the protection of Earth. In 2125 a female member of Dyger accidentally detonates an atomic weapon that destroys a city. After four years of feeling guilty, she decides to cryogenically freeze herself. + +In 2188, Earth is invaded by an alien host. After an earthquake in 2189 she awakens. Soon realizing Earth has been overrun, she decides to redeem herself by taking on the alien hordes herself. + +As you make progress and fight off various spacecraft, static guns, tanks, ships and bosses, power-ups come available. The spacecraft has separate weapons for flying and ground-based units/ships. The game can be played solo or with a friend. + 0.50 + 19890101T000000 + Philko + Philko + Shoot'em Up + 79 + 1 + dyger.zip + Capcom Classics + 270 + 384x224 + media/mixrbv2/dyger.png + + + + dynablst.zip + Dynablaster / Bomber Man + In the future, fight competitions among robots are the most popular event. Bomber Man & King Bomber are the supreme champions, however King Bomber turns evil and attacks mankind with his loyal minions. Bomber Man & his brother Bomber Man 2 must defeat these henchmen and show King Bomber that crime just doesn't pay! Features cute graphics & music and insanely addictive gameplay. Have a blast, but don't get blasted yourself! + 0.70 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + Irem Classics + 320x240 + media/mixrbv2/dynablst.png + + + + dynamski.zip + Dynamic Ski + Dynamic Ski is a skiing game. + 0.50 + 19840101T000000 + Taiyo + Taiyo + Sports / Skiing + 2902 + 1-2 + Taito Classics + 270 + 288x224 + media/mixrbv2/dynamski.png + + + + dynduke.zip + Dynamite Duke (Europe, 03SEP89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop th + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1 + Seibu Kaihatsu + 256x224 + media/mixrbv2/dynduke.png + + + + dyndukea.zip + Dynamite Duke (Europe, 25JUL89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop th + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1 + dynduke.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/dynduke.png + + + + dyndukej.zip + Dynamite Duke (Japan, 03SEP89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop th + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1 + dynduke.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/dynduke.png + + + + dyndukeja.zip + Dynamite Duke (Japan, 25JUL89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop th + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1 + dynduke.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/dynduke.png + + + + dyndukeu.zip + Dynamite Duke (US, 25JUL89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop th + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1 + dynduke.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/dynduke.png + + + + dduxbl.zip + Dynamite Dux (bootleg) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + ddux.zip + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + ddux1.zip + Dynamite Dux (set 1, World, 8751 317-0095) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + ddux.zip + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + dduxd.zip + Dynamite Dux (set 2, FD1094 317-0096 decrypted) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + ddux.zip + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + ddux.zip + Dynamite Dux (set 2, FD1094 317-0096) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + dduxjd.zip + Dynamite Dux (set 2, Japan, FD1094 317-0094 decrypted) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + ddux.zip + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + dduxj.zip + Dynamite Dux (set 2, Japan, FD1094 317-0094) + Dynamite Dux is a beat 'em up game, though rather than relying purely on one-on-one combat the ducks can equip themselves with a variety of weapons, from water pistols to bazookas. The game is also populated with a variety of odd looking enemies and bosses. Colonel Sanders, for instance, can be seen at the very beginning of the first level. + 0.70 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + ddux.zip + Sega Classics + 320x224 + media/mixrbv2/ddux.png + + + + dleaguej.zip + Dynamite League (Japan) + Dynamite League is a baseball game. + 0.60 + 19900101T000000 + Taito + Taito + Sports / Baseball + 2853 + 1-2 + dleague.zip + Taito Classics + 320x240 + media/mixrbv2/dleague.png + + + + dleague.zip + Dynamite League (US) + Dynamite League is a baseball game. + 0.60 + 19900101T000000 + Taito + Taito + Sports / Baseball + 2853 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/dleague.png + + + + dynwar.zip + Dynasty Wars (US set 1) + This game is a side-scrolling beat-em-up based on Japanese manga books of the same name and is a re-enactment of the historical battles between the Kingdom of Shu and the Yellow Turban rebels. Up to two players assume the roles of one of the four Chinese generals riding on horseback whose goal is to wipe out the 'Huang Ching', the organization responsible for the unrest of the Han Dynasty, and to eventually defeat the tyrant, Dong Zhuo. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/dynwar.png + + + + dynwara.zip + Dynasty Wars (US set 2) + This game is a side-scrolling beat-em-up based on Japanese manga books of the same name and is a re-enactment of the historical battles between the Kingdom of Shu and the Yellow Turban rebels. Up to two players assume the roles of one of the four Chinese generals riding on horseback whose goal is to wipe out the 'Huang Ching', the organization responsible for the unrest of the Han Dynasty, and to eventually defeat the tyrant, Dong Zhuo. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + dynwar.zip + Capcom Play System + 384x224 + media/mixrbv2/dynwar.png + + + + eswatbl.zip + E-Swat - Cyber Police (bootleg) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatj1d.zip + E-Swat - Cyber Police (set 1, Japan, FD1094 317-0131 decrypted) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatj1.zip + E-Swat - Cyber Police (set 1, Japan, FD1094 317-0131) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatjd.zip + E-Swat - Cyber Police (set 2, Japan, FD1094 317-0128 decrypted) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatj.zip + E-Swat - Cyber Police (set 2, Japan, FD1094 317-0128) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatud.zip + E-Swat - Cyber Police (set 3, US, FD1094 317-0129 decrypted) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatu.zip + E-Swat - Cyber Police (set 3, US, FD1094 317-0129) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswatd.zip + E-Swat - Cyber Police (set 4, World, FD1094 317-0130 decrypted) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + eswat.zip + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + eswat.zip + E-Swat - Cyber Police (set 4, World, FD1094 317-0130) + Cyber Police ESWAT is a 1989 scrolling shooter arcade game developed and published by Sega. Players take control of Duke Oda, a member of the Liberty City Cyber Police Force tasked with finding and arresting the city's most wanted criminals, and eventually dismantling a terrorist organization planning world domination. + +The gameplay is very similar to Sega's own Shinobi, as the player has the ability to jump up and down between planes where possible. The goal of each of the game's 15 stages is to find and arrest a specific wanted criminal, who is usually fought at the end of the stage as a boss. Duke is initially armed with only a single-shot pistol, but upon arresting the first three criminals and being promoted to ESWAT, Duke is equipped with a Power Suit with a mounted machine gun for the rest of the game. The suit also has access to limited-use special weapons which can be found within stages. However, both of Duke's standard weapons require ammunition, without which the player can only attack with a kick. Additional ammunition can be found in boxes throughout each stage. + 0.60 + 19890101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/eswat.png + + + + edfbl.zip + E.D.F. : Earth Defense Force (bootleg) + An evil organization, named AGYMA, threatens the 200 years of peace the galaxy has enjoyed. From their base on the far side of the moon they have infiltrated many important locations on Earth. Working for the Earth Defense Force, you are the lone pilot of a special craft designed to fight off AGYMA: the XA-1. + +The game is a side-scrolling shoot 'em up with 6 levels, and a total of 8 state of the art weapons with which to fend off the attacks and thwart AGYMA's plot to destroy Earth and disrupt peace throughout the cosmos. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + edf.zip + Jaleco + 256x224 + media/mixrbv2/edf.png + + + + edfu.zip + E.D.F. : Earth Defense Force (North America) + An evil organization, named AGYMA, threatens the 200 years of peace the galaxy has enjoyed. From their base on the far side of the moon they have infiltrated many important locations on Earth. Working for the Earth Defense Force, you are the lone pilot of a special craft designed to fight off AGYMA: the XA-1. + +The game is a side-scrolling shoot 'em up with 6 levels, and a total of 8 state of the art weapons with which to fend off the attacks and thwart AGYMA's plot to destroy Earth and disrupt peace throughout the cosmos. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + edf.zip + Jaleco + 256x224 + media/mixrbv2/edf.png + + + + edf.zip + E.D.F. : Earth Defense Force (set 1) + An evil organization, named AGYMA, threatens the 200 years of peace the galaxy has enjoyed. From their base on the far side of the moon they have infiltrated many important locations on Earth. Working for the Earth Defense Force, you are the lone pilot of a special craft designed to fight off AGYMA: the XA-1. + +The game is a side-scrolling shoot 'em up with 6 levels, and a total of 8 state of the art weapons with which to fend off the attacks and thwart AGYMA's plot to destroy Earth and disrupt peace throughout the cosmos. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 256x224 + media/mixrbv2/edf.png + + + + edfa.zip + E.D.F. : Earth Defense Force (set 2) + An evil organization, named AGYMA, threatens the 200 years of peace the galaxy has enjoyed. From their base on the far side of the moon they have infiltrated many important locations on Earth. Working for the Earth Defense Force, you are the lone pilot of a special craft designed to fight off AGYMA: the XA-1. + +The game is a side-scrolling shoot 'em up with 6 levels, and a total of 8 state of the art weapons with which to fend off the attacks and thwart AGYMA's plot to destroy Earth and disrupt peace throughout the cosmos. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + edf.zip + Jaleco + 256x224 + media/mixrbv2/edf.png + + + + eagle.zip + Eagle (set 1) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + eagle2.zip + Eagle (set 2) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + eagle3.zip + Eagle (set 3) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + ecofghtra.zip + Eco Fighters (931203 Asia) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + ecofghtr.zip + Eco Fighters (931203 etc) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + ecofghtrh.zip + Eco Fighters (931203 Hispanic) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + ecofghtru1.zip + Eco Fighters (931203 USA) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + ecofghtrd.zip + Eco Fighters (931203 World Phoenix Edition) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + ecofghtru.zip + Eco Fighters (940215 USA) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + eeekk.zip + Eeekk! + A platform game where you play as a ghost running through a haunted house trying to eliminate goblins who are out to destroy the furniture while constantly harassed by a witch. + +There are two versions of this game - one on original hardware where the games logo displays on top of the house during attract mode with a 1983 copyright date. The other version with a 1984 copyright runs on Pac-man hardware with major graphical differences. + 0.20 + 19840101T000000 + Platform + 7 + Namco Classics + 270 + 288x224 + media/mixrbv2/eeekk.png + + + + eeekkp.zip + Eeekk! (Pac-man conversion) + A platform game where you play as a ghost running through a haunted house trying to eliminate goblins who are out to destroy the furniture while constantly harassed by a witch. + +There are two versions of this game - one on original hardware where the games logo displays on top of the house during attract mode with a 1983 copyright date. The other version with a 1984 copyright runs on Pac-man hardware with major graphical differences. + 0.20 + 19840101T000000 + Platform + 7 + eeekk.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/eeekk.png + + + + egghunt.zip + Egg Hunt + Egg Hunt (c) 1995 Invi Image. A puzzle game. - TECHNICAL - Main CPU : (2x) Z80 (@ 6 Mhz) Sound Chips : OKI6295 (@ 8 Khz) Screen orientation : Horizontal Video resolution : 384 x 240 pixels Screen refresh : 60.00 Hz Palette colors : 2048 Players : 2 C + 0.50 + 19950101T000000 + Invi Image + Invi Image + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 384x240 + media/mixrbv2/egghunt.png + + + + eggor.zip + Eggor + Eggor is a multi-directional shooter/maze arcade game. It runs on Namco's Pac-Man hardware and appears to be based on Digitrex Techstar's Eyes, which was released the previous year. The player must use a 4-way joystick to take up control of a baby vulture, Eggor through eight different mazes and use a single button to shoot all the eggs while getting pursued by five adult vultures. If Eggor shoots one of them, they will disappear for a few moments before rehatching. If one of the adult vultures shoots Eggor he will lose a life. Shooting an egg is worth 500 points on the first round and increases by 250 for every subsequent round, while shooting an adult vulture is worth 100 points upon the first round and increases by 100 for every subsequent round. + 0.50 + 19830101T000000 + Telko + Telko + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/eggor.png + + + + eggs.zip + Eggs + A one or two player maze game published and developed by Technos in 1983. The player must run around a maze kicking Eggs into walls to break them open, revealing chicks. Chicks then must be kicked off the screen. + 0.50 + 19830101T000000 + Technos Japan Corp. + Tecmo + Action + 10 + 1-2 + scregg.zip + Technos + 270 + 240x240 + media/mixrbv2/scregg.png + + + + 8ballact.zip + Eight Ball Action (DK conversion) + DO YOU WANT A WINNER +Here it is! +8-BALL ACTION + +It's priced right to give you phenomenal return on investment. It's a simple conversion that enables you to convert quickly and easily those old Donkey Kong and Donkey Kong Jr. games + +No Wiring or Soldering +Don't miss out - Remember Birdie King + +Most operators waited and waited and waited and missed a lot of action with their indecision. This 8-Ball Action game appeals to the same type of player. It's an agressive, competitive exciting sporting game. The only difference: + +Birdie King: $2500 +8-Ball Action: Under $400 + +If you don't believe this game will take the same action as Birdie King, ask your distributor to prove it to you. + +AVAILABLE FOR IMMEDIATE DELIVERY + +Save your old Donkey Kong and Donkey Kong Jr. +We will make them earn for you today! + +PROOF: +Atlas Music Company of Providence tested two games of 8-Ball Action. They now have 25 on location. Louie, the buyer at Atlas made the following comment: Doing Great! Game play Realistic. Will even play against regular poll tables. Has possibility of longevity compared to most videos. Can't believe the price! + 0.50 + 19840101T000000 + Seatongrove Ltd. + Seatongrove Ltd. + Sports / Pool + 3028 + 1-2 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/8ballact.png + + + + 8bpm.zip + Eight Ball Action (Pac-Man conversion) + DO YOU WANT A WINNER +Here it is! +8-BALL ACTION + +It's priced right to give you phenomenal return on investment. It's a simple conversion that enables you to convert quickly and easily those old Donkey Kong and Donkey Kong Jr. games + +No Wiring or Soldering +Don't miss out - Remember Birdie King + +Most operators waited and waited and waited and missed a lot of action with their indecision. This 8-Ball Action game appeals to the same type of player. It's an agressive, competitive exciting sporting game. The only difference: + +Birdie King: $2500 +8-Ball Action: Under $400 + +If you don't believe this game will take the same action as Birdie King, ask your distributor to prove it to you. + +AVAILABLE FOR IMMEDIATE DELIVERY + +Save your old Donkey Kong and Donkey Kong Jr. +We will make them earn for you today! + +PROOF: +Atlas Music Company of Providence tested two games of 8-Ball Action. They now have 25 on location. Louie, the buyer at Atlas made the following comment: Doing Great! Game play Realistic. Will even play against regular poll tables. Has possibility of longevity compared to most videos. Can't believe the price! + 0.50 + 19840101T000000 + Seatongrove Ltd. + Seatongrove Ltd. + Sports / Pool + 3028 + 1-2 + 8ballact.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/8ballact.png + + + + eightfrc.zip + Eight Forces + A vertically scrolling shoot'em up. + 0.50 + 19940101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + Tecmo + 270 + 384x224 + media/mixrbv2/eightfrc.png + + + + eightman.zip + Eight Man (NGM-025)(NGH-025) + The super-hero must stop the destruction of a city at the hands of a giant robot and its maker. The object, as Eightman (or Nineman), is to move left or right punching enemies and fight a boss at the end of the level. In some levels, you are chasing after a vehicle while enemies jump out at you. Power-ups can be collected along the way, which, when collected will make your kicks and punches stronger as well as give you bombs which are used to damage all enemies. If a two-player game is in progress, a spark will be between them and their bomb power will be increased. + 0.65 + 19910101T000000 + SNK + SNK + Platform + 7 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/eightman.png + + + + efdt.zip + El Fin Del Tiempo + 19820101T000000 + Shoot'em Up + 79 + 1-2 + Mame + media/mixrbv2/efdt.png + + + + elevator.zip + Elevator Action (BA3, 4 pcb version, 1.1) + Agent 17 (code name 'Otto') is to secure the top secret documents from the security building. The enemy spies are in pursuit and their orders are to stop him at any cost. Having made it to the top of a 30 story building, Agent 17 has to make his way down to the basement to get to the getaway car and save the documents. Enemy spies are everywhere and the documents are hidden behind the red doors (bonus points awarded). He has to open the door and keep moving. If either of them shoots the lights out there will be a temporary blackout. If Otto finds himself on top of the elevator the player will not be able to control the elevator. If he gets caught in the elevator he is a sitting duck and cannot duck the bullets. By using the escalator he can reach the basement quicker. Otto can defeat his enemy by jump kicking or firing at them. Help Otto to grab all the documents and escape the spies. + 0.70 + 19830101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/elevator.png + + + + elevatorb.zip + Elevator Action (bootleg) + Agent 17 (code name 'Otto') is to secure the top secret documents from the security building. The enemy spies are in pursuit and their orders are to stop him at any cost. Having made it to the top of a 30 story building, Agent 17 has to make his way down to the basement to get to the getaway car and save the documents. Enemy spies are everywhere and the documents are hidden behind the red doors (bonus points awarded). He has to open the door and keep moving. If either of them shoots the lights out there will be a temporary blackout. If Otto finds himself on top of the elevator the player will not be able to control the elevator. If he gets caught in the elevator he is a sitting duck and cannot duck the bullets. By using the escalator he can reach the basement quicker. Otto can defeat his enemy by jump kicking or firing at them. Help Otto to grab all the documents and escape the spies. + 0.70 + 19830101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + elevator.zip + Taito Classics + 256x224 + media/mixrbv2/elevator.png + + + + elevatora.zip + Elevator Action (EA, 5 pcb version, 1.1) + Agent 17 (code name 'Otto') is to secure the top secret documents from the security building. The enemy spies are in pursuit and their orders are to stop him at any cost. Having made it to the top of a 30 story building, Agent 17 has to make his way down to the basement to get to the getaway car and save the documents. Enemy spies are everywhere and the documents are hidden behind the red doors (bonus points awarded). He has to open the door and keep moving. If either of them shoots the lights out there will be a temporary blackout. If Otto finds himself on top of the elevator the player will not be able to control the elevator. If he gets caught in the elevator he is a sitting duck and cannot duck the bullets. By using the escalator he can reach the basement quicker. Otto can defeat his enemy by jump kicking or firing at them. Help Otto to grab all the documents and escape the spies. + 0.70 + 19830101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + elevator.zip + Taito Classics + 256x224 + media/mixrbv2/elevator.png + + + + elim2c.zip + Eliminator (2 Players, cocktail) + Eliminator is a multi-directional shooter in which players must use four buttons to take control of their ship: two to make them rotate left and right, and two more to make them fire and accelerate. Players pilot a space ship around the playfield and must destroy alien drones. The ultimate goal is to evade and destroy the Eliminator, a huge asteroid base. The players fire causes any enemy that is struck (with the exception of the Eliminator itself) to rebound and careen off in another direction. + 0.70 + 19810101T000000 + Gremlin + Shooter + 2646 + elim2.zip + Sega Classics + media/mixrbv2/elim2.png + + + + elim2.zip + Eliminator (2 Players, set 1) + Eliminator is a multi-directional shooter in which players must use four buttons to take control of their ship: two to make them rotate left and right, and two more to make them fire and accelerate. Players pilot a space ship around the playfield and must destroy alien drones. The ultimate goal is to evade and destroy the Eliminator, a huge asteroid base. The players fire causes any enemy that is struck (with the exception of the Eliminator itself) to rebound and careen off in another direction. + 0.70 + 19810101T000000 + Gremlin + Shooter + 2646 + Sega Classics + media/mixrbv2/elim2.png + + + + elim2a.zip + Eliminator (2 Players, set 2) + Eliminator is a multi-directional shooter in which players must use four buttons to take control of their ship: two to make them rotate left and right, and two more to make them fire and accelerate. Players pilot a space ship around the playfield and must destroy alien drones. The ultimate goal is to evade and destroy the Eliminator, a huge asteroid base. The players fire causes any enemy that is struck (with the exception of the Eliminator itself) to rebound and careen off in another direction. + 0.70 + 19810101T000000 + Gremlin + Shooter + 2646 + elim2.zip + Sega Classics + media/mixrbv2/elim2.png + + + + elim4.zip + Eliminator (4 Players) + Eliminator is a multi-directional shooter in which players must use four buttons to take control of their ship: two to make them rotate left and right, and two more to make them fire and accelerate. Players pilot a space ship around the playfield and must destroy alien drones. The ultimate goal is to evade and destroy the Eliminator, a huge asteroid base. The players fire causes any enemy that is struck (with the exception of the Eliminator itself) to rebound and careen off in another direction. + 0.70 + 19810101T000000 + Gremlin + Shooter + 2646 + elim2.zip + Sega Classics + media/mixrbv2/elim2.png + + + + elim4p.zip + Eliminator (4 Players, prototype) + Eliminator is a multi-directional shooter in which players must use four buttons to take control of their ship: two to make them rotate left and right, and two more to make them fire and accelerate. Players pilot a space ship around the playfield and must destroy alien drones. The ultimate goal is to evade and destroy the Eliminator, a huge asteroid base. The players fire causes any enemy that is struck (with the exception of the Eliminator itself) to rebound and careen off in another direction. + 0.70 + 19810101T000000 + Gremlin + Shooter + 2646 + elim2.zip + Sega Classics + media/mixrbv2/elim2.png + + + + empcity.zip + Empire City: 1931 (bootleg?) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + empcityi.zip + Empire City: 1931 (Italy) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + empcityj.zip + Empire City: 1931 (Japan) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + empcityu.zip + Empire City: 1931 (US) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + endurord.zip + Enduro Racer (bootleg of Rev A, YM2151, FD1089B 317-0013A set) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + enduror1d.zip + Enduro Racer (bootleg of YM2203, FD1089B 317-0013A set) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + endurobl.zip + Enduro Racer (bootleg set 1) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + enduror.zip + Enduro Racer (Rev A, YM2151, FD1089B 317-0013A) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + endurora.zip + Enduro Racer (Rev A, YM2151, mask ROM sprites, FD1089B 317-0013A) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + endurorb.zip + Enduro Racer (YM2151, FD1089B 317-0013A) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + enduror1.zip + Enduro Racer (YM2203, FD1089B 317-0013A) + Enduro Racer is an off-road racing game in which players ride a dirt bike across five extremely hilly and twisting courses. Each course is littered with logs, rocks, trees and rival racers that must be either jumped over or avoided. + +Jumps can only be performed at specific locations on each track. These locations feature a dirt ramp that spreads across the width of the track. Players must have the bike in the 'wheelie' position when the ramp is struck, the bike will then be launched into the air. If the bike is not in a wheelie position when the ramps are struck, the bike will still clear the ramp, but will land front-wheel first and crash. + +Enduro Racer is perhaps best remembered for its 'Wheelie' feature, which required the player to physically lift the cabinet's handlebars to raise the front wheel of the game's on-screen counterpart. + 0.70 + 19860101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + enduror.zip + Sega Classics + 320x224 + media/mixrbv2/enduror.png + + + + enmadaio.zip + Enma Daio (Japan) + 0.20 + 19930101T000000 + Taito Classics + 320x240 + media/mixrbv2/enmadaio.png + + + + eprom.zip + Escape from the Planet of the Robot Monsters (set 1) + Escape From The Planet of the Robot Monsters &copy; 1989 Atari Games Corp. + +Escape From The Planet Of The Robot Monsters is a one or two-player game in which the players must rescue Dr. Sarah Bellum from Planet X, where her research facility has been taken over by the evil Reptilons. The game is played from an isometric perspective where players control their avatars using Hall effect joysticks. The Hall effect is the production of a voltage difference (the Hall voltage) across an electrical conductor, transverse to an electric current in the conductor and a magnetic field perpendicular to the current. It was discovered by Edwin Hall in 1879. + +The player must shoot their way through a series of simple maze-like levels, releasing the human hostages along the way. Levers must be found and thrown to activate the escalators which allow access to new areas. Gems can be collected to increase the power of the player&#039;s ray gun, and food lockers may be broken into for a health boost. + +At the end of each level the play switches to an isometric auto-scrolling sequence in which the player controls his character in a small spaceship, and must steer left or right to navigate through a maze of obstacles. If the player reaches the end of this sequence they will progress to the next level. + 0.70 + 19890101T000000 + Atari + Atari + Action + 10 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/eprom.png + + + + esckids.zip + Escape Kids (Asia, 4 Players) + Escape Kids &copy; 1991 Konami Industry Company, Limited. + +An unusual take on the overhead racing genre, Escape Kids has up to 4 players taking on the role of an athletic runner and competing to be the first to cross the finish line in a number of 3-lap races. As well as running, each player has a limited number of &#039;Super Jumps&#039;; these allow the player to leap over both rival runners and obstacles. + +Money is awarded for finishing first, and players can upgrade their runner depending on the amount of money they have available. Runners can be given extra super jumps, an upgrade to stop the runner from skidding when going through a bend in the track, quicker recovery time from falls, or be made stronger (and thus less likely to be knocked over by a rival runner). Special items occasionally appear and can be picked up and used. These range from an item that causes a small earthquake (causing all of the rival runners to tumble along the ground, thus slowing them down) and a bomb, which renders any runner that runs into it unable to move for several seconds. + +Each race has a total of five competitors (either human or computer controlled) and players must finish in first place or are disqualified. Any player who wins all three races in a round will be taken to a bonus screen. Here, the player&#039;s on-screen counterpart rides a bike and the player must collect as much money as possible. + 0.50 + 19910101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/esckids.png + + + + esckidsj.zip + Escape Kids (Japan, 2 Players) + Escape Kids &copy; 1991 Konami Industry Company, Limited. + +An unusual take on the overhead racing genre, Escape Kids has up to 4 players taking on the role of an athletic runner and competing to be the first to cross the finish line in a number of 3-lap races. As well as running, each player has a limited number of &#039;Super Jumps&#039;; these allow the player to leap over both rival runners and obstacles. + +Money is awarded for finishing first, and players can upgrade their runner depending on the amount of money they have available. Runners can be given extra super jumps, an upgrade to stop the runner from skidding when going through a bend in the track, quicker recovery time from falls, or be made stronger (and thus less likely to be knocked over by a rival runner). Special items occasionally appear and can be picked up and used. These range from an item that causes a small earthquake (causing all of the rival runners to tumble along the ground, thus slowing them down) and a bomb, which renders any runner that runs into it unable to move for several seconds. + +Each race has a total of five competitors (either human or computer controlled) and players must finish in first place or are disqualified. Any player who wins all three races in a round will be taken to a bonus screen. Here, the player&#039;s on-screen counterpart rides a bike and the player must collect as much money as possible. + 0.50 + 19910101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + esckids.zip + Konami Classics + 288x224 + media/mixrbv2/esckids.png + + + + espradejo.zip + ESP Ra.De. (Japan, ver. 98/04/14) + ESP Ra.De. is a 1998 arcade game developed by Cave and published by Atlus. It is the first non-DonPachi game released by Cave. ESP Ra.De. received spiritual prequels in the form of the Espgaluda series; however, ESP Ra.De. is related to the Espgaluda series only by shared name and programmer Tsuneki Ikeda. + +By 2018, Tokyo has reached its maximum extension, therefore falling prey of common problems such as overpopulation and criminality. For this reason, an artificial island, aptly named Tokyo-2, is created just offshore, thanks to the support of the shady "Yaksa" corporation, led by elusive billionaire Garra Ono, whose ties with the modern incarnation of Yakuza have not been proven. Another source of instability is given by the rising number of humans exhibiting extrasensory perception, the so-called ESPers, who are constantly hunted down by the Japanese Police Force. Unknown to everyone, Garra herself is an extremely powerful ESPer, bent on using her influence over the government and military to replace every living being in the city with clones (disturbingly enough, these ESPers take the form of a 10 years old girl, named "Alice" and implied to originate from Garra's own DNA). Just as her plans begin to unfold, three children are forced to take action, each one for his or her own personal motives. + +The story takes place in December, during a 24-hour arc; each character has a specific stage which initiates his or her storyline, culminating with the final encounter. + 0.80 + 19980101T000000 + Cave + Atlus + Shoot'em up / Vertical + 2851 + 1-2 + esprade.zip + Cave + 270 + 320x240 + media/mixrbv2/esprade.png + + + + espradej.zip + ESP Ra.De. (Japan, ver. 98/04/21) + ESP Ra.De. is a 1998 arcade game developed by Cave and published by Atlus. It is the first non-DonPachi game released by Cave. ESP Ra.De. received spiritual prequels in the form of the Espgaluda series; however, ESP Ra.De. is related to the Espgaluda series only by shared name and programmer Tsuneki Ikeda. + +By 2018, Tokyo has reached its maximum extension, therefore falling prey of common problems such as overpopulation and criminality. For this reason, an artificial island, aptly named Tokyo-2, is created just offshore, thanks to the support of the shady "Yaksa" corporation, led by elusive billionaire Garra Ono, whose ties with the modern incarnation of Yakuza have not been proven. Another source of instability is given by the rising number of humans exhibiting extrasensory perception, the so-called ESPers, who are constantly hunted down by the Japanese Police Force. Unknown to everyone, Garra herself is an extremely powerful ESPer, bent on using her influence over the government and military to replace every living being in the city with clones (disturbingly enough, these ESPers take the form of a 10 years old girl, named "Alice" and implied to originate from Garra's own DNA). Just as her plans begin to unfold, three children are forced to take action, each one for his or her own personal motives. + +The story takes place in December, during a 24-hour arc; each character has a specific stage which initiates his or her storyline, culminating with the final encounter. + 0.80 + 19980101T000000 + Cave + Atlus + Shoot'em up / Vertical + 2851 + 1-2 + esprade.zip + Cave + 270 + 320x240 + media/mixrbv2/esprade.png + + + + esprade.zip + ESP Ra.De. - A.D.2018 Tokyo (International, ver. 98/04/22) + ESP Ra.De. is a 1998 arcade game developed by Cave and published by Atlus. It is the first non-DonPachi game released by Cave. ESP Ra.De. received spiritual prequels in the form of the Espgaluda series; however, ESP Ra.De. is related to the Espgaluda series only by shared name and programmer Tsuneki Ikeda. + +By 2018, Tokyo has reached its maximum extension, therefore falling prey of common problems such as overpopulation and criminality. For this reason, an artificial island, aptly named Tokyo-2, is created just offshore, thanks to the support of the shady "Yaksa" corporation, led by elusive billionaire Garra Ono, whose ties with the modern incarnation of Yakuza have not been proven. Another source of instability is given by the rising number of humans exhibiting extrasensory perception, the so-called ESPers, who are constantly hunted down by the Japanese Police Force. Unknown to everyone, Garra herself is an extremely powerful ESPer, bent on using her influence over the government and military to replace every living being in the city with clones (disturbingly enough, these ESPers take the form of a 10 years old girl, named "Alice" and implied to originate from Garra's own DNA). Just as her plans begin to unfold, three children are forced to take action, each one for his or her own personal motives. + +The story takes place in December, during a 24-hour arc; each character has a specific stage which initiates his or her storyline, culminating with the final encounter. + 0.80 + 19980101T000000 + Cave + Atlus + Shoot'em up / Vertical + 2851 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/esprade.png + + + + espial.zip + Espial (Europe) + A very good "Xevious" clone with some elements of "Star Force" thrown in as well. Catchy starting music. + 0.40 + 19830101T000000 + Orca Corporation + Orca / Thunderbolt + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/espial.png + + + + espialu.zip + Espial (US?) + A very good "Xevious" clone with some elements of "Star Force" thrown in as well. Catchy starting music. + 0.40 + 19830101T000000 + Orca Corporation + Orca / Thunderbolt + Shoot'em Up + 79 + 1-2 + espial.zip + Mame + 256x224 + media/mixrbv2/espial.png + + + + twcup90ba.zip + Euro League (Italian hack of Tecmo World Cup '90 - alt version) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90b1.zip + Euro League (Italian hack of Tecmo World Cup '90) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + evilston.zip + Evil Stone + Evil Stone is a vertically scrolling beat'em up / platform game. + 0.70 + 19900101T000000 + Spacy Industrial + Spacy Industrial, Ltd. + Platform / Run Jump Scrolling + 2897 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/evilston.png + + + + exctleagd.zip + Excite League (FD1094 317-0079 decrypted) + Excite League (c) 1988 Sega. A baseball game. - TECHNICAL - Sega System 16B hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Screen orientation : Horizontal Video resolution : 320 x 22 + 0.50 + 19880101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + exctleag.zip + Sega Classics + 320x224 + media/mixrbv2/exctleag.png + + + + exctleag.zip + Excite League (FD1094 317-0079) + Excite League (c) 1988 Sega. A baseball game. - TECHNICAL - Sega System 16B hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Screen orientation : Horizontal Video resolution : 320 x 22 + 0.50 + 19880101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/exctleag.png + + + + excthour.zip + Exciting Hour + Mat Mania - The Prowrestling Network also known as "Exciting Hour - The Prowrestling Network" + 0.70 + 19850101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + matmania.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/matmania.png + + + + exedexes.zip + Exed Exes + Exed Exes is an arcade vertical shooter developed by Capcom. It was licensed to Memetron and released outside of Japan in the arcades as Savage Bees Memetron (licensor to the game). It uses similar hardware to Capcom's 1942, but it is more of a spiritual successor to Capcom's earlier shooter Vulgus. It takes place in a science fiction alien hive where you must pilot your ship through many stages protected by insects, some as large as your craft, and some even larger. + +What made Exed Exes stand apart from other shooters, besides the high resolution graphics for its time, and the detailed use of parallax scrolling to indicate depth, was the fact that it was one of the earliest vertical shooters to allow for two player simultaneous play. Rather than waiting for one player to take his turn, two players could enjoy the game at the same time, and even work cooperatively to get further along in the game. + 0.70 + 19850101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/exedexes.png + + + + exerion.zip + Exerion + Exerion is a vertical shooter that is operated with an 8 direction joystick and two fire buttons. The game's biggest features are the parallax scrolling which occurs in the background, and the sensation of inertia that is applied to the motion of the ship. The ship is equipped with two kinds of weapons. You can fire the dual shot gun which can only release one pair of shots on the screen at a time, but has an unlimited supply, by tapping the first fire button. The single shot gun can fire a rapid stream of shots on the screen at one time by holding the second fire button down, but it is limited in ammo according to the number of charges indicated on the bottom. Each weapon is best used in different situations, in order to defeat the enemies which come flying down from the top part of the screen. + +Due to the inertia of the ship, you must input any reverse in direction much sooner in order to cancel the ships momentum. This was not a common feature for similar games that came out around the same time, so it distinguished Exerion from other shooters. Because the Famicom conversion was played on a horizontal screen, the enemies appeared much closer to the player's ship, which changes the feel of the game since you have to react to the enemies' location much sooner. + 0.40 + 19830101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + Jaleco + 270 + 320x224 + media/mixrbv2/exerion.png + + + + exerionb.zip + Exerion (bootleg) + Exerion is a vertical shooter that is operated with an 8 direction joystick and two fire buttons. The game's biggest features are the parallax scrolling which occurs in the background, and the sensation of inertia that is applied to the motion of the ship. The ship is equipped with two kinds of weapons. You can fire the dual shot gun which can only release one pair of shots on the screen at a time, but has an unlimited supply, by tapping the first fire button. The single shot gun can fire a rapid stream of shots on the screen at one time by holding the second fire button down, but it is limited in ammo according to the number of charges indicated on the bottom. Each weapon is best used in different situations, in order to defeat the enemies which come flying down from the top part of the screen. + +Due to the inertia of the ship, you must input any reverse in direction much sooner in order to cancel the ships momentum. This was not a common feature for similar games that came out around the same time, so it distinguished Exerion from other shooters. Because the Famicom conversion was played on a horizontal screen, the enemies appeared much closer to the player's ship, which changes the feel of the game since you have to react to the enemies' location much sooner. + 0.40 + 19830101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + exerion.zip + Jaleco + 270 + 320x224 + media/mixrbv2/exerion.png + + + + exeriont.zip + Exerion (Taito) + Exerion is a vertical shooter that is operated with an 8 direction joystick and two fire buttons. The game's biggest features are the parallax scrolling which occurs in the background, and the sensation of inertia that is applied to the motion of the ship. The ship is equipped with two kinds of weapons. You can fire the dual shot gun which can only release one pair of shots on the screen at a time, but has an unlimited supply, by tapping the first fire button. The single shot gun can fire a rapid stream of shots on the screen at one time by holding the second fire button down, but it is limited in ammo according to the number of charges indicated on the bottom. Each weapon is best used in different situations, in order to defeat the enemies which come flying down from the top part of the screen. + +Due to the inertia of the ship, you must input any reverse in direction much sooner in order to cancel the ships momentum. This was not a common feature for similar games that came out around the same time, so it distinguished Exerion from other shooters. Because the Famicom conversion was played on a horizontal screen, the enemies appeared much closer to the player's ship, which changes the feel of the game since you have to react to the enemies' location much sooner. + 0.40 + 19830101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + exerion.zip + Jaleco + 270 + 320x224 + media/mixrbv2/exerion.png + + + + exerizer.zip + Exerizer (Japan) + At the player's disposal to fight the approaching enemies, some of them made in pseudo-depth 2.5D graphics with scaled sprites, is a small space fighter capable of firing two types of projectiles: the unlimited but slow rockets and the fast laser shots that are limited by draining the ship's power. The power can be refilled and the ship itself upgraded by collecting the power ups that appear after destroying certain enemies. + +Similar to Gorf, the game features several different types of waves. The player progresses through most of them by either destroying all the enemies or alternatively just surviving their attacks for long enough time. For instance, one stage has a Galaga-style gameplay against rows of monsters led by four witches who are vulnerable only when they open their cloaks, while another features enemy warriors saddle perched on either serpent-like Chinese dragons or Western-style winged dragons. The dragons must to be hit repeatedly in the weak point of their heads to be killed, after which the riders themselves can be shot for a bonus. + 0.50 + 19870101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + skyfox.zip + Jaleco + 270 + 320x224 + media/mixrbv2/skyfox.png + + + + exerizerb.zip + Exerizer (Japan) (bootleg) + At the player's disposal to fight the approaching enemies, some of them made in pseudo-depth 2.5D graphics with scaled sprites, is a small space fighter capable of firing two types of projectiles: the unlimited but slow rockets and the fast laser shots that are limited by draining the ship's power. The power can be refilled and the ship itself upgraded by collecting the power ups that appear after destroying certain enemies. + +Similar to Gorf, the game features several different types of waves. The player progresses through most of them by either destroying all the enemies or alternatively just surviving their attacks for long enough time. For instance, one stage has a Galaga-style gameplay against rows of monsters led by four witches who are vulnerable only when they open their cloaks, while another features enemy warriors saddle perched on either serpent-like Chinese dragons or Western-style winged dragons. The dragons must to be hit repeatedly in the weak point of their heads to be killed, after which the riders themselves can be shot for a bonus. + 0.50 + 19870101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + skyfox.zip + Jaleco + 270 + 320x224 + media/mixrbv2/skyfox.png + + + + exodus.zip + Exodus (bootleg?) + Destroy all the small flying saucers then destroy the mothership. + 0.50 + 19810101T000000 + Artic Computing + Artic + Shooter / Space Invaders Like + 2900 + 1-2 + redufo.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/redufo.png + + + + explorer.zip + Explorer + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + cexplore.zip + Explorer (DECO Cassette) (US) + Explorer (c) 1982 Data East. - TECHNICAL - DECO Cassette System hardware [Cassette No.18] Main CPU : M6502 (@ 750 Khz), M6502 (@ 500 Khz), I8X41 (@ 500 Khz) Sound Chips : (2x) AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 240 x 2 + 0.60 + 19820101T000000 + bootleg + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cexplore.png + + + + explbrkrk.zip + Explosive Breaker (Korea) + Explosive Breaker is a up-scrolling space themed shoot 'em up game where you take control of one of six different pilots and their ships. The pilots are Jean, Nigel, Steel, Mai, Mifune and Hanse, each having their own distinct weapons pattern. + +You fight a variety of spacecraft's, static guns and bosses. While playing destroyed enemies drop power-ups. These include: A front weapon power-up (P), missiles (M), homing missiles (H), some kind of flouting bombs (C), Side weapon (S), extra big bomb (B) and instant Max power (P in block). + 0.50 + 19920101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + explbrkr.zip + Kaneko + 270 + 256x224 + media/mixrbv2/explbrkr.png + + + + explbrkr.zip + Explosive Breaker (World) + Explosive Breaker is a up-scrolling space themed shoot 'em up game where you take control of one of six different pilots and their ships. The pilots are Jean, Nigel, Steel, Mai, Mifune and Hanse, each having their own distinct weapons pattern. + +You fight a variety of spacecraft's, static guns and bosses. While playing destroyed enemies drop power-ups. These include: A front weapon power-up (P), missiles (M), homing missiles (H), some kind of flouting bombs (C), Side weapon (S), extra big bomb (B) and instant Max power (P in block). + 0.50 + 19920101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/explbrkr.png + + + + exprraidi.zip + Express Raider (Italy) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + exprraidu.zip + Express Raider (US, rev 5) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + exprraid.zip + Express Raider (World, Rev 4) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + extrmatnj.zip + Extermination (Japan) + Exterminate waves of attacking aliens using your gun and defeat the boss at the end of each stage. Enemies that have been shot release energy pods that can be collected to increase your character's available energy. Destroy rocks to reveal entrances that lead down to shelters that contain special bonus items. + 0.60 + 19870101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + extrmatn.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/extrmatn.png + + + + extrmatnur.zip + Extermination (US, Romstar) + Exterminate waves of attacking aliens using your gun and defeat the boss at the end of each stage. Enemies that have been shot release energy pods that can be collected to increase your character's available energy. Destroy rocks to reveal entrances that lead down to shelters that contain special bonus items. + 0.60 + 19870101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + extrmatn.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/extrmatn.png + + + + extrmatnu.zip + Extermination (US, set 1) + Exterminate waves of attacking aliens using your gun and defeat the boss at the end of each stage. Enemies that have been shot release energy pods that can be collected to increase your character's available energy. Destroy rocks to reveal entrances that lead down to shelters that contain special bonus items. + 0.60 + 19870101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + extrmatn.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/extrmatn.png + + + + extrmatn.zip + Extermination (World) + Exterminate waves of attacking aliens using your gun and defeat the boss at the end of each stage. Enemies that have been shot release energy pods that can be collected to increase your character's available energy. Destroy rocks to reveal entrances that lead down to shelters that contain special bonus items. + 0.60 + 19870101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/extrmatn.png + + + + extdwnhl.zip + Extreme Downhill (v1.5) + A downhill skiing game. + 0.70 + 19950101T000000 + Sammy + Sammy Studios + Sports / Skiing + 2902 + 1-2 + Sammy Classics + 320x240 + media/mixrbv2/extdwnhl.png + + + + exzisusa.zip + Exzisus (Japan, conversion) + In Exzisus the player must use an 8-way joystick to take control of a space astronaut named Exzisus with two buttons to make him fire shots at and drop missiles on enemies, and launch his bird and dog-like robots at them. + 0.40 + 19870101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + exzisus.zip + Taito Classics + 256x224 + media/mixrbv2/exzisus.png + + + + exzisus.zip + Exzisus (Japan, dedicated) + In Exzisus the player must use an 8-way joystick to take control of a space astronaut named Exzisus with two buttons to make him fire shots at and drop missiles on enemies, and launch his bird and dog-like robots at them. + 0.40 + 19870101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/exzisus.png + + + + exzisust.zip + Exzisus (TAD license) + In Exzisus the player must use an 8-way joystick to take control of a space astronaut named Exzisus with two buttons to make him fire shots at and drop missiles on enemies, and launch his bird and dog-like robots at them. + 0.40 + 19870101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + exzisus.zip + Taito Classics + 256x224 + media/mixrbv2/exzisus.png + + + + eyesb.zip + Eyes (bootleg set 1) + The player controls a hat-wearing eyeball in a maze. As in Pac-Man, the goal is to collect all of the dots to advance to next level, but in Eyes you shoot the dots rather than eat them. Computer-controlled eyes chase and shoot at the player. Shooting a computer eye gives points and removes it from the level, but it will reappear a short time later. Being shot by a computer eye is fatal. + +As the game progresses, more computer eyes are added to levels and they take less time to shoot at the player. They also move faster. + 0.70 + 19820101T000000 + Digitrex Techstar + Techstar (Rock-Ola license) + Action + 10 + 1-2 + eyes.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/eyes.png + + + + eyeszacb.zip + Eyes (bootleg set 2, decrypted) + The player controls a hat-wearing eyeball in a maze. As in Pac-Man, the goal is to collect all of the dots to advance to next level, but in Eyes you shoot the dots rather than eat them. Computer-controlled eyes chase and shoot at the player. Shooting a computer eye gives points and removes it from the level, but it will reappear a short time later. Being shot by a computer eye is fatal. + +As the game progresses, more computer eyes are added to levels and they take less time to shoot at the player. They also move faster. + 0.70 + 19820101T000000 + Digitrex Techstar + Techstar (Rock-Ola license) + Action + 10 + 1-2 + eyes.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/eyes.png + + + + eyes.zip + Eyes (Digitrex Techstar) + The player controls a hat-wearing eyeball in a maze. As in Pac-Man, the goal is to collect all of the dots to advance to next level, but in Eyes you shoot the dots rather than eat them. Computer-controlled eyes chase and shoot at the player. Shooting a computer eye gives points and removes it from the level, but it will reappear a short time later. Being shot by a computer eye is fatal. + +As the game progresses, more computer eyes are added to levels and they take less time to shoot at the player. They also move faster. + 0.70 + 19820101T000000 + Digitrex Techstar + Techstar (Rock-Ola license) + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/eyes.png + + + + eyes2.zip + Eyes (Techstar) + The player controls a hat-wearing eyeball in a maze. As in Pac-Man, the goal is to collect all of the dots to advance to next level, but in Eyes you shoot the dots rather than eat them. Computer-controlled eyes chase and shoot at the player. Shooting a computer eye gives points and removes it from the level, but it will reappear a short time later. Being shot by a computer eye is fatal. + +As the game progresses, more computer eyes are added to levels and they take less time to shoot at the player. They also move faster. + 0.70 + 19820101T000000 + Digitrex Techstar + Techstar (Rock-Ola license) + Action + 10 + 1-2 + eyes.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/eyes.png + + + + f1dream.zip + F-1 Dream + You take the role of a newcomer race driver. Beginning in the Formula 3000, you will have to prove yourself worthy of being promoted to Formula 1 and challenge the best drivers of the late eighties. + +F-1 Dream is not one of Capcom's best known games. From a top-down perspective and decorated with cute "deformed" graphics, it may offer a serious challenge. There are essentially two race instances: first you have to beat the clock in a single lap to qualify for a good position in the race, and second you have to beat your opponents. You also have to keep an eye on your car's condition, as the tyres and body wear out, so part of your strategy must consider pit stops. + +Despite its looks, F-1 Dream is not a parody game. Released in 1988, it's in fact very respectful towards the sport, featuring little details which add realism to it. This includes several real brands advertised in the game, and others which have one or two letters changed in the logo, but are very easy to recognize. So it is with your opponents, featuring the great Ayrton Senna, Alain Prost or Nigel Mansell. The car behavior also features skids when speeding at corners, gears, and damage. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/f1dream.png + + + + f1dreamb.zip + F-1 Dream (bootleg, set 1) + You take the role of a newcomer race driver. Beginning in the Formula 3000, you will have to prove yourself worthy of being promoted to Formula 1 and challenge the best drivers of the late eighties. + +F-1 Dream is not one of Capcom's best known games. From a top-down perspective and decorated with cute "deformed" graphics, it may offer a serious challenge. There are essentially two race instances: first you have to beat the clock in a single lap to qualify for a good position in the race, and second you have to beat your opponents. You also have to keep an eye on your car's condition, as the tyres and body wear out, so part of your strategy must consider pit stops. + +Despite its looks, F-1 Dream is not a parody game. Released in 1988, it's in fact very respectful towards the sport, featuring little details which add realism to it. This includes several real brands advertised in the game, and others which have one or two letters changed in the logo, but are very easy to recognize. So it is with your opponents, featuring the great Ayrton Senna, Alain Prost or Nigel Mansell. The car behavior also features skids when speeding at corners, gears, and damage. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + f1dream.zip + Capcom Classics + 256x224 + media/mixrbv2/f1dream.png + + + + f1dreamba.zip + F-1 Dream (bootleg, set 2) + You take the role of a newcomer race driver. Beginning in the Formula 3000, you will have to prove yourself worthy of being promoted to Formula 1 and challenge the best drivers of the late eighties. + +F-1 Dream is not one of Capcom's best known games. From a top-down perspective and decorated with cute "deformed" graphics, it may offer a serious challenge. There are essentially two race instances: first you have to beat the clock in a single lap to qualify for a good position in the race, and second you have to beat your opponents. You also have to keep an eye on your car's condition, as the tyres and body wear out, so part of your strategy must consider pit stops. + +Despite its looks, F-1 Dream is not a parody game. Released in 1988, it's in fact very respectful towards the sport, featuring little details which add realism to it. This includes several real brands advertised in the game, and others which have one or two letters changed in the logo, but are very easy to recognize. So it is with your opponents, featuring the great Ayrton Senna, Alain Prost or Nigel Mansell. The car behavior also features skids when speeding at corners, gears, and damage. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + f1dream.zip + Capcom Classics + 256x224 + media/mixrbv2/f1dream.png + + + + f1gp.zip + F-1 Grand Prix (set 1) + An overhead-view F-1 racing game. + 0.50 + 19910101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1 + Video System Co. + 270 + 320x240 + media/mixrbv2/f1gp.png + + + + f1gpa.zip + F-1 Grand Prix (set 2) + An overhead-view F-1 racing game. + 0.50 + 19910101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1 + f1gp.zip + Video System Co. + 270 + 320x240 + media/mixrbv2/f1gp.png + + + + f1gp2.zip + F-1 Grand Prix Part II + An overhead-view F-1 racing game. + 0.50 + 19920101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1 + Video System Co. + 270 + 320x224 + media/mixrbv2/f1gp2.png + + + + f1gpstr2.zip + F-1 Grand Prix Star II + A F1 motor-racing game. + 0.50 + 19930101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + Jaleco + 256x224 + media/mixrbv2/f1gpstr2.png + + + + fx.zip + F-X (bootleg of S.R.D. Mission) + S.R.D. Mission is a vertically scrolling shoot-em-up viewed from above where the screen scrolls constantly. The alien ships fly at you in waves and need shooting with your laser as well as their ground defences destroying with bombs. As your blasting you will see occasionally men standing in blue suits waving or running down the screen, fly over them and you pick them up but be careful not to shoot or bomb them. If you rescue a man in an orange suit your ship gets an upgrade with better lasers and bombs. Touch an alien or their bullets and you lose one of three lives, lose the lives and it's game over with no continues. Two players can play and they take it in turns to play when the other player loses a life. + 0.50 + 19860101T000000 + Taito + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + srdmissn.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/srdmissn.png + + + + faceoff.zip + Face Off (Japan 2 Players) + Face Off is a 4-player overhead-view hockey game, featuring 8 countries: +U.S.S.R. +CANADA +SWEDEN +CZEKOSLOVAKIA +U.S.A. +FINLAND +FRANCE +JAPAN + 0.30 + 19880101T000000 + Namco + Namco + Sports / Hockey + 2933 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/faceoff.png + + + + falcon.zip + Falcon (bootleg of Phoenix) (8085A CPU) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + falconz.zip + Falcon (bootleg of Phoenix) (Z80 CPU) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + fncywld.zip + Fancy World - Earth of Crisis + A cutesy platform game. + +This game is more like a bootleg or hack than an original game; some game code is taken directly from Data East's "Tumble Pop". + 0.50 + 19960101T000000 + Unico Electronics + Unico + Platform / Run Jump + 2915 + 1-2 + SemiCom + 320x240 + media/mixrbv2/fncywld.png + + + + fantasiaa.zip + Fantasia (940307 PCB) + Fantasia is a "Qix"-style adult puzzle game modeled heavily after the Kaneko game "Gals Panic!". It features photographic images of both Japanese and western models. The objective is to reveal 80% of the silhoue + 19940101T000000 + Comad + Adult + 413 + 1-2 + fantasia.zip + Comad + 90 + 256x224 + media/mixrbv2/fantasia.png + + + + fantasia.zip + Fantasia (940429 PCB, set 1) + Fantasia is a "Qix"-style adult puzzle game modeled heavily after the Kaneko game "Gals Panic!". It features photographic images of both Japanese and western models. The objective is to reveal 80% of the silhoue + 19940101T000000 + Comad + Adult + 413 + 1-2 + Comad + 90 + 256x224 + media/mixrbv2/fantasia.png + + + + fantasiab.zip + Fantasia (940429 PCB, set 2) + Fantasia is a "Qix"-style adult puzzle game modeled heavily after the Kaneko game "Gals Panic!". It features photographic images of both Japanese and western models. The objective is to reveal 80% of the silhoue + 19940101T000000 + Comad + Adult + 413 + 1-2 + fantasia.zip + Comad + 90 + 256x224 + media/mixrbv2/fantasia.png + + + + fantasian.zip + Fantasia (940803 PCB) + Fantasia is a "Qix"-style adult puzzle game modeled heavily after the Kaneko game "Gals Panic!". It features photographic images of both Japanese and western models. The objective is to reveal 80% of the silhoue + 19940101T000000 + Comad + Adult + 413 + 1-2 + fantasia.zip + Comad + 90 + 256x224 + media/mixrbv2/fantasia.png + + + + fantsia2n.zip + Fantasia II (1998) + An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digitis + 19970101T000000 + Comad + Comad + Adult + 413 + 1-2 + fantsia2.zip + Comad + 256x224 + media/mixrbv2/fantsia2.png + + + + fantsia2.zip + Fantasia II (Explicit) + An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digitis + 19970101T000000 + Comad + Comad + Adult + 413 + 1-2 + Comad + 256x224 + media/mixrbv2/fantsia2.png + + + + fantsia2a.zip + Fantasia II (Less Explicit) + An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digitis + 19970101T000000 + Comad + Comad + Adult + 413 + 1-2 + fantsia2.zip + Comad + 256x224 + media/mixrbv2/fantsia2.png + + + + fantastc.zip + Fantastic (Galaga conversion on Galaxian hardware) + This seems to be a bootleg version of Galaga, but it runs on Galaxian's hardware. The game is pretty slow and the movement isn't as realistic. + 0.80 + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 768x224 + media/mixrbv2/fantastc.png + + + + fantsy95.zip + Fantasy '95 + New Fantasia (c) 1995 Comad. An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digiti + 19950101T000000 + Comad + Comad + Adult + 413 + 1-2 + newfant.zip + Comad + 90 + 256x224 + media/mixrbv2/newfant.png + + + + fantasyg.zip + Fantasy (Germany, set 1) + You must rescue your girlfriend from the bad pirate who has stolen her from your island love nest. Then, rescue her from other kidnappers until you are reunited with her for good. + 0.20 + 19810101T000000 + SNK + SNK + Action + 10 + 1 + fantasyu.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/fantasyu.png + + + + fantasyg2.zip + Fantasy (Germany, set 2) + You must rescue your girlfriend from the bad pirate who has stolen her from your island love nest. Then, rescue her from other kidnappers until you are reunited with her for good. + 0.20 + 19810101T000000 + SNK + SNK + Action + 10 + 1 + fantasyu.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/fantasyu.png + + + + fantasyj.zip + Fantasy (Japan) + You must rescue your girlfriend from the bad pirate who has stolen her from your island love nest. Then, rescue her from other kidnappers until you are reunited with her for good. + 0.20 + 19810101T000000 + SNK + SNK + Action + 10 + 1 + fantasyu.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/fantasyu.png + + + + fantasyu.zip + Fantasy (US) + You must rescue your girlfriend from the bad pirate who has stolen her from your island love nest. Then, rescue her from other kidnappers until you are reunited with her for good. + 0.20 + 19810101T000000 + SNK + SNK + Action + 10 + 1 + SNK Classics + 270 + 256x224 + media/mixrbv2/fantasyu.png + + + + fantland.zip + Fantasy Land (set 1) + A side scrolling platform game. + 0.50 + 20190101T000000 + Electronic Devices Italy + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 352x256 + media/mixrbv2/fantland.png + + + + fantlanda.zip + Fantasy Land (set 2) + A side scrolling platform game. + 0.50 + 20190101T000000 + Electronic Devices Italy + Platform / Shooter Scrolling + 2887 + 1-2 + fantland.zip + Mame + 352x256 + media/mixrbv2/fantland.png + + + + fantzonep.zip + Fantasy Zone (317-5000) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzone.zip + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzonee.zip + Fantasy Zone (FD1089B 317-0016) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzone.zip + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzonepr.zip + Fantasy Zone (prototype) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzone.zip + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzone.zip + Fantasy Zone (Rev A, unprotected) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzoneta.zip + Fantasy Zone (Time Attack, bootleg) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzone.zip + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzone1.zip + Fantasy Zone (unprotected) + The Fantasy Zone is under attack by an army of ruthless, yet undeniably cute, alien enemies. A fearless space fighter by the name of 'Opa-opa' (a craft that is as cute as the game's enemies, featuring wings and feet - the latter appearing whenever the player flies down to ground level at the bottom of the screen) must stop the alien invasion to restore peace to the Fantasy Zone, as well as finding his missing father, 'Opapa', in the process. + 0.70 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzone.zip + Sega Classics + 320x224 + media/mixrbv2/fantzone.png + + + + fantzn2.zip + Fantasy Zone II - The Tears of Opa-Opa (MC-8123, 317-0057) + Once again you control Opa-Opa, a pretty colored ship with wings on its side and must destroy the large creatures in each world before moving on to the next. Your task becomes difficult by other small creatures that happen to pass by. If you destroy a large creature, they will drop a dollar bill, which you can pick up and use at the shop to buy items and powerful weapons such as laser beams, x-way shots, and big wings. Another way to get money is to shoot certain kinds of enemies all in a row. + 0.70 + 19880101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1 + Sega Classics + 256x192 + media/mixrbv2/fantzn2.png + + + + fantzn2x.zip + Fantasy Zone II - The Tears of Opa-Opa (System 16C) + Fantasy Zone II: The Tears of Opa-Opa is the sequel to Fantasy Zone, in which you control Opa-Opa, a pretty colored ship with wings on its side. You must destroy the large creatures in each world before moving on to the next. Your task becomes difficult by other small creatures that happen to pass by. If you destroy a large creature, they will drop a dollar bill, which you can pick up and use at the shop to buy items and powerful weapons such as laser beams, x-way shots, and big wings. Another way to get money is to shoot certain kinds of enemies all in a row. More often than not, some large creatures will reveal a warp gate rather than a dollar bill. You can go through the warp gate to get to another part of the land, and destroy more large creatures. Only one of them will have a warp gate in the form of a 'stop' sign - that is your ticket to the round boss, but you must defeat all large creatures in order to pass through it. Also like in the original can you walk on the ground to avoid approaching enemies, and spend money in the shop to get new weapons (but they only last for a limited time). + 20080101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + media/mixrbv2/fantzn2x.png + + + + fantzn2xp.zip + Fantasy Zone II - The Tears of Opa-Opa (System 16C, prototype) + Fantasy Zone II: The Tears of Opa-Opa is the sequel to Fantasy Zone, in which you control Opa-Opa, a pretty colored ship with wings on its side. You must destroy the large creatures in each world before moving on to the next. Your task becomes difficult by other small creatures that happen to pass by. If you destroy a large creature, they will drop a dollar bill, which you can pick up and use at the shop to buy items and powerful weapons such as laser beams, x-way shots, and big wings. Another way to get money is to shoot certain kinds of enemies all in a row. More often than not, some large creatures will reveal a warp gate rather than a dollar bill. You can go through the warp gate to get to another part of the land, and destroy more large creatures. Only one of them will have a warp gate in the form of a 'stop' sign - that is your ticket to the round boss, but you must defeat all large creatures in order to pass through it. Also like in the original can you walk on the ground to avoid approaching enemies, and spend money in the shop to get new weapons (but they only last for a limited time). + 20080101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzn2x.zip + Sega Classics + media/mixrbv2/fantzn2x.png + + + + fantzn2xps2.zip + Fantasy Zone II - The Tears of Opa-Opa (System 16C, PS2 data file) + Fantasy Zone II: The Tears of Opa-Opa is the sequel to Fantasy Zone, in which you control Opa-Opa, a pretty colored ship with wings on its side. You must destroy the large creatures in each world before moving on to the next. Your task becomes difficult by other small creatures that happen to pass by. If you destroy a large creature, they will drop a dollar bill, which you can pick up and use at the shop to buy items and powerful weapons such as laser beams, x-way shots, and big wings. Another way to get money is to shoot certain kinds of enemies all in a row. More often than not, some large creatures will reveal a warp gate rather than a dollar bill. You can go through the warp gate to get to another part of the land, and destroy more large creatures. Only one of them will have a warp gate in the form of a 'stop' sign - that is your ticket to the round boss, but you must defeat all large creatures in order to pass through it. Also like in the original can you walk on the ground to avoid approaching enemies, and spend money in the shop to get new weapons (but they only last for a limited time). + 20080101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzn2x.zip + Sega Classics + media/mixrbv2/fantzn2x.png + + + + fantznta.zip + Fantasy Zone Time Attack (System 16B, PS2 data file) + Fantasy Zone II: The Tears of Opa-Opa is the sequel to Fantasy Zone, in which you control Opa-Opa, a pretty colored ship with wings on its side. You must destroy the large creatures in each world before moving on to the next. Your task becomes difficult by other small creatures that happen to pass by. If you destroy a large creature, they will drop a dollar bill, which you can pick up and use at the shop to buy items and powerful weapons such as laser beams, x-way shots, and big wings. Another way to get money is to shoot certain kinds of enemies all in a row. More often than not, some large creatures will reveal a warp gate rather than a dollar bill. You can go through the warp gate to get to another part of the land, and destroy more large creatures. Only one of them will have a warp gate in the form of a 'stop' sign - that is your ticket to the round boss, but you must defeat all large creatures in order to pass through it. Also like in the original can you walk on the ground to avoid approaching enemies, and spend money in the shop to get new weapons (but they only last for a limited time). + 20080101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + fantzn2x.zip + Sega Classics + media/mixrbv2/fantzn2x.png + + + + fantazia.zip + Fantazia (bootleg?) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + kabukikl.zip + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den + "Kabuki Klash" is a 2D fighting game that features characters from the famous Japanese role-playing series Tengai Makyou, also known as Far East of Eden. The heroes of the three first Tengai Makyou games must participate in a tournament and find out who is the most skillful fighter in the magical land of Jipang (which is very similar to the medieval Japan). The characters include well-known Far East of Eden heroes such as Ziria, Manjimaru, Kabuki, Orochimaru, and others - a total of eight playable characters. During the fights, you can either punch, kick, or use special attacks, that require a precise usage of buttons and also deplete your magic gauge. There are random items (such as healing potions) thrown on the battle field while you are fighting, which you can pick up. + + 0.60 + 19950101T000000 + Red Company + Hudson + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kabukikl.png + + + + kabukiklb.zip + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den (Add hidden characters) + "Kabuki Klash" is a 2D fighting game that features characters from the famous Japanese role-playing series Tengai Makyou, also known as Far East of Eden. The heroes of the three first Tengai Makyou games must participate in a tournament and find out who is the most skillful fighter in the magical land of Jipang (which is very similar to the medieval Japan). The characters include well-known Far East of Eden heroes such as Ziria, Manjimaru, Kabuki, Orochimaru, and others - a total of eight playable characters. During the fights, you can either punch, kick, or use special attacks, that require a precise usage of buttons and also deplete your magic gauge. There are random items (such as healing potions) thrown on the battle field while you are fighting, which you can pick up. + + 0.60 + 19950101T000000 + Red Company + Hudson + Fight + 14 + 1-2 + kabukikl.zip + Neo-Geo + 320x224 + media/mixrbv2/kabukikl.png + + + + farmer.zip + Farmers Rebellion + Set in the ancient medieval Japan, where a poor farming village is planning an insurrection to overthrow their feudal overlord. However, the only participants in the revolt are the player's character, Gonbe, and the optional second-player character, Tago, and the player battles against an army of ninjas, armed samurai a ghosts, and foot soldiers. The game has a great and colorful levels design, inspired in customs and myths Japanese of that time. + +The character's movement is controlled with an 8-way joystick, and pressing the single button allows the player to attack by throwing a sickle. The direction in which the sickle is thrown cannot be determined by the player, and the weapon will automatically head towards the closest enemy. This forces an emphasis on avoiding attacks rather than attacking aggressively. The right side of the screen displays the player's points, along with a map of the level. The location of koban coins is displayed on this map, but players must circumvent walls and other barriers to go to those locations. The level is completed when the player picks up all 8 gold koban coins which are spread throughout the map, or if they capture the daikan (Japanese feudal lord) that can randomly appear during the level. +The player loses a life when they come in contact with any of the enemy characters or projectiles. + +A bonus stage exist and some extras actions gameplay like grab a key to save a prisoner and especial items to increase speed of the character. + 0.50 + 19850101T000000 + Sunsoft + Sunsoft + Action + 10 + 1-2 + ikki.zip + Mame + 240x224 + media/mixrbv2/ikki.png + + + + fastfred.zip + Fast Freddie + Take off on a fantastic video trip. A voyage that simulates the thrills and skills of actual Hang Gliding. Players use the joystick to control Freddie, but good timing and strategy is necessary to successfully negotiate invisible air currents, wind direction and up and down drafts. This game has incredible visual impact for this time, Freddie flies the skies over the Alps--over trains, trees, bridges, through winter and summer seasons; over the Pacific--over a yacht, tropical islands, an aircraft carrier; and over Egypt--camels, Pyramids, the Taj Mahal, the Sphinx, through day and night landscapes. It's a complete global challenge with non-stop action over a continuously changing panorama below. + 0.20 + 19820101T000000 + Kaneko + Kaneko + Race, Driving + 28 + 1-2 + flyboy.zip + Kaneko + 270 + 256x224 + media/mixrbv2/flyboy.png + + + + fastlane.zip + Fast Lane + In this driving/maze game, you control a vehicle who must drive through the entire maze to progress. There is another vehicle who tries to stop you so to aid your progress, you must drive through the beach ladies in order to gain power-ups which you can use on the other vehicle. These power-ups are as follows: +JUMP - Allows you to either jump over the other vehicle or jump on top of it. +SHOOT - Allows you to fire a bullet at the other vehicle. +ATTACK - Allows you to charge into the other vehicle. +? - Can either be Option which fires forwards or Line which shoots vertically. Both also help you complete the maze. +FLASH - Allows you to stun the other vehicle from any distance. + 0.70 + 19870101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 280x224 + media/mixrbv2/fastlane.png + + + + sqbert.zip + Faster, Harder, More Challenging Q*bert (prototype) + This game is an unreleased prototype, never went into production, and no dedicated cabinets are known to exist. + +A Votrax SC-01 speech synthesis chip is used to generate the incoherent speech of Q?bert swearing, Slick and Sam (high pitch) and Wrong Way and Ugg (low pitch). The only true speech ever generated is 'Hello, I'm turned on' when the game is first powered up and 'Bye Bye' after entering your initials at the end of a game. + 0.90 + 19830101T000000 + Mylstar + Platform / Run Jump + 2915 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/sqbert.png + + + + fatfury1bh.zip + Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai (Boss Hack by Yumeji) + Southtown City plays host to the King of Fighters Tournament. Andy & Terry Bogard take part in the tournament cause winning the tournament is the only way they can defeat Geese Howard. Geese Howard controls Southtown City and killed their father several years ago. Also taking part is Joe Higashi, a Japanese kickboxer. Select either Joe, Andy or Terry, visit several locations in Southtown City and win that tournament! + +Fatal Fury is a 2D fighter and is the first game in a series of one-on-one fighting games by SNK. It's a conversion of the original Fatal Fury arcade game. This first game does not yet feature the series' trademark pseudo 3D mode (which allows you to move between the foreground & background while fighting). Includes a two-player vs. mode. + + 0.60 + 19910101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + fatfury1.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfury1.png + + + + fatfury1.zip + Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai (NGM-033)(NGH-033) + Southtown City plays host to the King of Fighters Tournament. Andy & Terry Bogard take part in the tournament cause winning the tournament is the only way they can defeat Geese Howard. Geese Howard controls Southtown City and killed their father several years ago. Also taking part is Joe Higashi, a Japanese kickboxer. Select either Joe, Andy or Terry, visit several locations in Southtown City and win that tournament! + +Fatal Fury is a 2D fighter and is the first game in a series of one-on-one fighting games by SNK. It's a conversion of the original Fatal Fury arcade game. This first game does not yet feature the series' trademark pseudo 3D mode (which allows you to move between the foreground & background while fighting). Includes a two-player vs. mode. + + 0.60 + 19910101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fatfury1.png + + + + fatfury2a.zip + Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047) + Again, the Lone Wolves return! + +Geese Howard may have been defeated, but that doesn't mean all is peaceful. A new opponent, Wolfgang Krauser, has come forth to begin a new Fatal Fury tournament. The Lone Wolves return, with new faces amongst them. Only one can be declared the winner though. + 0.80 + 19920101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + fatfury2.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfury2.png + + + + fatfury2.zip + Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047)(NGH-047) + Again, the Lone Wolves return! + +Geese Howard may have been defeated, but that doesn't mean all is peaceful. A new opponent, Wolfgang Krauser, has come forth to begin a new Fatal Fury tournament. The Lone Wolves return, with new faces amongst them. Only one can be declared the winner though. + 0.80 + 19920101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fatfury2.png + + + + fatfury3bh.zip + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (Ancient Battles Resurgence 2015-03-13) + An adaptation of the Neo-Geo fighting game. 2-D scrolling one-on-one fighter with pseudo-3D aspects (that allows for players to "escape" holds, throws, and other attacks.) Part of the incestuously-popular SNK fighting game pantheon... + + 0.80 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + fatfury3.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfury3.png + + + + fatfury3.zip + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069)(NGH-069) + An adaptation of the Neo-Geo fighting game. 2-D scrolling one-on-one fighter with pseudo-3D aspects (that allows for players to "escape" holds, throws, and other attacks.) Part of the incestuously-popular SNK fighting game pantheon... + + 0.80 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fatfury3.png + + + + fatfury3a.zip + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069)(NGH-069) (alternate set) + An adaptation of the Neo-Geo fighting game. 2-D scrolling one-on-one fighter with pseudo-3D aspects (that allows for players to "escape" holds, throws, and other attacks.) Part of the incestuously-popular SNK fighting game pantheon... + + 0.80 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + fatfury3.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfury3.png + + + + fatfurspbs.zip + Fatal Fury Special / Garou Densetsu Special (Optional Hidden Character Third Edition) + Fatal Fury Special is an improved version of SNK's 2D one-on-one fighter Fatal Fury 2. It's a conversion of the 1993 arcade game of the same name. The objective is still to win the tournament by defeating all other fighters including end boss Wolfgang Krauser. Fatal Fury Special features a fairly large selection of fighters. A new Count Down mode (defeat as many opponents as possible in 3 minutes).Extra color schemes for every character.New & improved background graphics.Dolby Surround Sound support. + 0.85 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + fatfursp.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfursp.png + + + + fatfursp.zip + Fatal Fury Special / Garou Densetsu Special (set 1)(NGM-058)(NGH-058) + Fatal Fury Special is an improved version of SNK's 2D one-on-one fighter Fatal Fury 2. It's a conversion of the 1993 arcade game of the same name. The objective is still to win the tournament by defeating all other fighters including end boss Wolfgang Krauser. Fatal Fury Special features a fairly large selection of fighters. A new Count Down mode (defeat as many opponents as possible in 3 minutes).Extra color schemes for every character.New & improved background graphics.Dolby Surround Sound support. + 0.85 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fatfursp.png + + + + fatfurspa.zip + Fatal Fury Special / Garou Densetsu Special (set 2)(NGM-058)(NGH-058) + Fatal Fury Special is an improved version of SNK's 2D one-on-one fighter Fatal Fury 2. It's a conversion of the 1993 arcade game of the same name. The objective is still to win the tournament by defeating all other fighters including end boss Wolfgang Krauser. Fatal Fury Special features a fairly large selection of fighters. A new Count Down mode (defeat as many opponents as possible in 3 minutes).Extra color schemes for every character.New & improved background graphics.Dolby Surround Sound support. + 0.85 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + fatfursp.zip + Neo-Geo + 320x224 + media/mixrbv2/fatfursp.png + + + + fenix.zip + Fenix (bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + fenixn.zip + Fenix (Niemer bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + feversos.zip + Fever SOS (International, ver. 98/09/25) + Planet Meruto, a well known powerful military force in the Milky Way, sends out a Flagship under the command of Admiral Gratze, to attack the earth in order to gain one of it's most desired raw materials in the Galaxy: Water +On Planet Fever, a small planet between Meruto and the Earth a base was planned to be installed, from there the attack vessels should start the invasion of Planet Earth. But before Admiral Gratze's plan was fullfilled, a mysterious wave appeared in space and confused the instruments of Meruto's fleet, and disrupted Admiral Gratze's love chat with his wife Irene Catharine. About this he got angry to such an extent that he forced his fleet to land on the source of this wave. So the wheel of fate began to spin... + 0.80 + 19980101T000000 + Cave + Nihon System + Shoot'em up / Vertical + 2851 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/feversos.png + + + + fightfev.zip + Fight Fever (set 1) + There are 8 characters to select from and two boss characters (the first boss character is only playable in two player mode). The object of the game is to win two matches out of three. Each character has a set of moves in addition to two basic punches and kicks. Each character also has a super move called a "Danger Move", which are similar to the Desperation Moves from Fatal Fury 2. Players also have the ability to taunt others, but unlike games such as Art of Fighting, this has no effect and would actually leave the player open to attacks. + 0.70 + 19940101T000000 + Viccom + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fightfev.png + + + + fightfeva.zip + Fight Fever (set 2) + There are 8 characters to select from and two boss characters (the first boss character is only playable in two player mode). The object of the game is to win two matches out of three. Each character has a set of moves in addition to two basic punches and kicks. Each character also has a super move called a "Danger Move", which are similar to the Desperation Moves from Fatal Fury 2. Players also have the ability to taunt others, but unlike games such as Art of Fighting, this has no effect and would actually leave the player open to attacks. + 0.70 + 19940101T000000 + Viccom + SNK + Fight / Versus + 2885 + 1-2 + fightfev.zip + Neo-Geo + 320x224 + media/mixrbv2/fightfev.png + + + + fswords.zip + Fighters Swords (Korean release of Samurai Shodown III) + The 12 samurai (and ninja) elite are back, this time to answer the threat of the demon Zankuro, Minazuki. The possessed swordsman has brutally slaughtered innocents in his path, yet could not raise his blade to the cries of an innocent baby. Vowing never to spill innocent blood again, he targets those who live by the way of the sword...but now the hunter becomes the hunted. The third series of Samurai Shodown introduces 2 different techniques for each character. The "Slash" techniques are the original moves of the most of the characters whereas the "Bust" techniques maybe the "darker" version of each character. + 0.85 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho3.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho3.png + + + + fghtbskt.zip + Fighting Basketball + A basketball game. + 0.10 + 19840101T000000 + Paradise Co. Ltd. + Paradise Co. Ltd. + Sports / Basketball + 2852 + 1-2 + Irem Classics + 256x224 + media/mixrbv2/fghtbskt.png + + + + fhawkj.zip + Fighting Hawk (Japan) + In Fighting Hawk the player controls his fighting plane 'Falcon' and fights against enemies in each round of grassy plain, iceberg, glacier, snowfield and city. His final aim is to shoot down the enemy's snowfield newest bomber 'Dragon Hat'. + 0.60 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + fhawk.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/fhawk.png + + + + fhawk.zip + Fighting Hawk (World) + In Fighting Hawk the player controls his fighting plane 'Falcon' and fights against enemies in each round of grassy plain, iceberg, glacier, snowfield and city. His final aim is to shoot down the enemy's snowfield newest bomber 'Dragon Hat'. + 0.60 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/fhawk.png + + + + cfghtice.zip + Fighting Ice Hockey (DECO Cassette) (US) + 0.10 + 19840101T000000 + Data East + Data East + Sports / Hockey + 2933 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cfghtice.png + + + + fightrol.zip + Fighting Roller + In Fighting Roller, You compete in an obstacle race on roller skates. + 0.50 + 19830101T000000 + Kaneko + Taito + Sports + 685 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/fightrol.png + + + + fsoccerj.zip + Fighting Soccer (Japan) + An overhead soccer game. + 0.50 + 19880101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-4 + fsoccer.zip + SNK Classics + 400x224 + media/mixrbv2/fsoccer.png + + + + fsoccerb.zip + Fighting Soccer (Joystick hack bootleg) + An overhead soccer game. + 0.50 + 19880101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-4 + fsoccer.zip + SNK Classics + 400x224 + media/mixrbv2/fsoccer.png + + + + fsoccerba.zip + Fighting Soccer (Joystick hack bootleg, alt) + An overhead soccer game. + 0.50 + 19880101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-4 + fsoccer.zip + SNK Classics + 400x224 + media/mixrbv2/fsoccer.png + + + + fsoccer.zip + Fighting Soccer (version 4) + An overhead soccer game. + 0.50 + 19880101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-4 + SNK Classics + 400x224 + media/mixrbv2/fsoccer.png + + + + fcrash.zip + Final Crash (bootleg (with 2xYM2203 + 2xMSM5205)) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightj1.zip + Final Fight (900112 Japan) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightua.zip + Final Fight (900112 USA) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightj2.zip + Final Fight (900305 Japan) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightj3.zip + Final Fight (900405 Japan) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightub.zip + Final Fight (900424 USA) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightj4.zip + Final Fight (900613 Japan) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightuc.zip + Final Fight (900613 USA) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightbl.zip + Final Fight (bootleg set 1 (with 2xYM2203 + 2xMSM5205), World) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightbla.zip + Final Fight (bootleg set 2 (with 2xYM2203 + 2xMSM5205), World)) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightj.zip + Final Fight (Japan) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightu.zip + Final Fight (USA, set 1) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightu1.zip + Final Fight (USA, set 2) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightu2.zip + Final Fight (USA, set 3) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffight.zip + Final Fight (World, set 1) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffighta.zip + Final Fight (World, set 2) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + ffightae.zip + Final Fight 30th Anniversary Edition + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + finallapjb.zip + Final Lap (Japan, Rev B) + Final Lap is a Formula One racing game featuring several courses. The gameplay is similar in feel to Namco's 1982 legend, "Pole Position", although the steering is much looser than that of its legendary predecessor. Down shifting and brakes play major parts in keeping control of the car on the tight, winding courses. Bumping another car will not cause the player's car to explode - as in "Pole position" - but can send the player OR the rival driver spinning off the track, costing valuable seconds. + 0.70 + 19870101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finallap.zip + Namco Classics + 288x224 + media/mixrbv2/finallap.png + + + + finallapjc.zip + Final Lap (Japan, Rev C) + Final Lap is a Formula One racing game featuring several courses. The gameplay is similar in feel to Namco's 1982 legend, "Pole Position", although the steering is much looser than that of its legendary predecessor. Down shifting and brakes play major parts in keeping control of the car on the tight, winding courses. Bumping another car will not cause the player's car to explode - as in "Pole position" - but can send the player OR the rival driver spinning off the track, costing valuable seconds. + 0.70 + 19870101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finallap.zip + Namco Classics + 288x224 + media/mixrbv2/finallap.png + + + + finallapc.zip + Final Lap (Rev C) + Final Lap is a Formula One racing game featuring several courses. The gameplay is similar in feel to Namco's 1982 legend, "Pole Position", although the steering is much looser than that of its legendary predecessor. Down shifting and brakes play major parts in keeping control of the car on the tight, winding courses. Bumping another car will not cause the player's car to explode - as in "Pole position" - but can send the player OR the rival driver spinning off the track, costing valuable seconds. + 0.70 + 19870101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finallap.zip + Namco Classics + 288x224 + media/mixrbv2/finallap.png + + + + finallapd.zip + Final Lap (Rev D) + Final Lap is a Formula One racing game featuring several courses. The gameplay is similar in feel to Namco's 1982 legend, "Pole Position", although the steering is much looser than that of its legendary predecessor. Down shifting and brakes play major parts in keeping control of the car on the tight, winding courses. Bumping another car will not cause the player's car to explode - as in "Pole position" - but can send the player OR the rival driver spinning off the track, costing valuable seconds. + 0.70 + 19870101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finallap.zip + Namco Classics + 288x224 + media/mixrbv2/finallap.png + + + + finallap.zip + Final Lap (Rev E) + Final Lap is a Formula One racing game featuring several courses. The gameplay is similar in feel to Namco's 1982 legend, "Pole Position", although the steering is much looser than that of its legendary predecessor. Down shifting and brakes play major parts in keeping control of the car on the tight, winding courses. Bumping another car will not cause the player's car to explode - as in "Pole position" - but can send the player OR the rival driver spinning off the track, costing valuable seconds. + 0.70 + 19870101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + Namco Classics + 288x224 + media/mixrbv2/finallap.png + + + + finalap2.zip + Final Lap 2 + Ride with the winners! + 0.70 + 19900101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + Namco Classics + 288x224 + media/mixrbv2/finalap2.png + + + + finalap2j.zip + Final Lap 2 (Japan) + Ride with the winners! + 0.70 + 19900101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finalap2.zip + Namco Classics + 288x224 + media/mixrbv2/finalap2.png + + + + finalap3bl.zip + Final Lap 3 (bootleg) + Final Lap 3 is the 3rd game in the series + 0.70 + 19920101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finalap3.zip + Namco Classics + 288x224 + media/mixrbv2/finalap3.png + + + + finalap3jc.zip + Final Lap 3 (Japan - Rev C) + Final Lap 3 is the 3rd game in the series + 0.70 + 19920101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finalap3.zip + Namco Classics + 288x224 + media/mixrbv2/finalap3.png + + + + finalap3j.zip + Final Lap 3 (Japan) + Final Lap 3 is the 3rd game in the series + 0.70 + 19920101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finalap3.zip + Namco Classics + 288x224 + media/mixrbv2/finalap3.png + + + + finalap3.zip + Final Lap 3 (World, set 1) + Final Lap 3 is the 3rd game in the series + 0.70 + 19920101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + Namco Classics + 288x224 + media/mixrbv2/finalap3.png + + + + finalap3a.zip + Final Lap 3 (World, set 2) + Final Lap 3 is the 3rd game in the series + 0.70 + 19920101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + finalap3.zip + Namco Classics + 288x224 + media/mixrbv2/finalap3.png + + + + fstarfrcj.zip + Final Star Force (Japan) + A sequel to Tehkan's 1984 shoot-em-up classic, "Star Force", featuring improved graphics and sound and a new weapons power-up system. The player's ship is equipped with three smart bombs and the fire button can be held down for rapid fire. At regular intervals, a red ship will appear which will release a power-up capsule; the three power-ups available are as follows: +A-Pulsator: + Fire: Thunder + Homing + Bomb: S-Bomb +B-Pulsator: + Fire: Wide Shot + Missile + Bomb: M-Bomb +C-Pulsator: + Fire: Spraygun + Synch-Fire + Bomb: T-Bomb + 0.50 + 19920101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + fstarfrc.zip + Tecmo + 270 + 256x224 + media/mixrbv2/fstarfrc.png + + + + fstarfrc.zip + Final Star Force (US) + A sequel to Tehkan's 1984 shoot-em-up classic, "Star Force", featuring improved graphics and sound and a new weapons power-up system. The player's ship is equipped with three smart bombs and the fire button can be held down for rapid fire. At regular intervals, a red ship will appear which will release a power-up capsule; the three power-ups available are as follows: +A-Pulsator: + Fire: Thunder + Homing + Bomb: S-Bomb +B-Pulsator: + Fire: Wide Shot + Missile + Bomb: M-Bomb +C-Pulsator: + Fire: Spraygun + Synch-Fire + Bomb: T-Bomb + 0.50 + 19920101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + Tecmo + 270 + 256x224 + media/mixrbv2/fstarfrc.png + + + + fstarfrcw.zip + Final Star Force (World?) + A sequel to Tehkan's 1984 shoot-em-up classic, "Star Force", featuring improved graphics and sound and a new weapons power-up system. The player's ship is equipped with three smart bombs and the fire button can be held down for rapid fire. At regular intervals, a red ship will appear which will release a power-up capsule; the three power-ups available are as follows: +A-Pulsator: + Fire: Thunder + Homing + Bomb: S-Bomb +B-Pulsator: + Fire: Wide Shot + Missile + Bomb: M-Bomb +C-Pulsator: + Fire: Spraygun + Synch-Fire + Bomb: T-Bomb + 0.50 + 19920101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + fstarfrc.zip + Tecmo + 270 + 256x224 + media/mixrbv2/fstarfrc.png + + + + finalttr.zip + Final Tetris + Final Tetris is an unauthoritised Tetris arcade game. Similar to Bloxeed and Tetris Battle Gaiden, players gain special abilities by clearing lines containing special blocks. The game is always played against another player, where the ultimate goal is to force the other player to top out or have a more filled playfield when the timer runs out. + +The game's controls are somewhat awkward. The first button is used to perform a hard drop while the second button is used to rotate the piece counter-clockwise. The game has no ARE and a slippery DAS (potentially due to the fluid movement animation of the tetriminos when they slide into the next column over, alike Bullet Proof Software's early Tetris games), leading to reckless players causing misdrops by sliding their Tetriminos over one more space than intended before hard-dropping their piece. + +Garbage sent to the opponent mimics the lines the player cleared exactly minus the piece that was used to clear the garbage-sending lines. Sending garbage will immediately destroy the opponent's current Tetromino in play, and can even destroy specific power ups. + 0.50 + 19930101T000000 + Jeil Computer System + Jeil Computer System + Puzzle-Game / Fall + 2912 + 1-2 + SemiCom + 256x224 + media/mixrbv2/finalttr.png + + + + finalizrb.zip + Finalizer - Super Transformation (bootleg) + Finalizer - Super Transformation &copy; 1985 Konami Industry Company, Limited. + +You control a jet shooter and fly through several different states in America shooting different enemies. + 0.50 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + finalizr.zip + Konami Classics + 270 + 272x224 + media/mixrbv2/finalizr.png + + + + finalizr.zip + Finalizer - Super Transformation (set 1) + Finalizer - Super Transformation &copy; 1985 Konami Industry Company, Limited. + +You control a jet shooter and fly through several different states in America shooting different enemies. + 0.50 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 272x224 + media/mixrbv2/finalizr.png + + + + finalizra.zip + Finalizer - Super Transformation (set 2) + Finalizer - Super Transformation &copy; 1985 Konami Industry Company, Limited. + +You control a jet shooter and fly through several different states in America shooting different enemies. + 0.50 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + finalizr.zip + Konami Classics + 270 + 272x224 + media/mixrbv2/finalizr.png + + + + finehour.zip + Finest Hour (Japan) + Stomp through the enemy opposition in your very own assault mech! Equipped with a laser beam, Vernier jump-jets, auto-targeting, and automatic cooling system, this mech is a force to be reckoned with. Of course, the enemy doesn't know that yet, do they? Teach 'em a lesson in threat assessment! + 0.50 + 19890101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/finehour.png + + + + finger.zip + Finger (bootleg of Stinger) + The game consists of traveling around a space fortress meanwhile shooting aliens and spaceships. An object called 'Bongo' could be used as a defense method. This object will shoot itself to the enemies for a few seconds. + 0.70 + 19830101T000000 + Seibu Denshi + Seibu Denshi + Shoot'em Up + 79 + 1-2 + stinger.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/stinger.png + + + + fball.zip + Fire Ball (FM Work) + A Korean rip-off of Bomberman. + 0.70 + 19920101T000000 + FM Work + FM Work + Action + 10 + 1-4 + Mame + 256x240 + media/mixrbv2/fball.png + + + + firebatl.zip + Fire Battle + GunForce est la réponse d'Irem à Contra et possède le sous-titre le plus cool de tous les jeux vidéo: Battle Fire Engulfed Terror Island. + 0.50 + 19840101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 288x224 + media/mixrbv2/firebatl.png + + + + firehawk.zip + Fire Hawk (World) / Huohu Chuanshuo (China) (horizontal) + A vertical scrolling jet shoot them up, featuring both single & co-operative gameplay as well as a myriad of power ups. The players get to choose from 5 different jets each with it's own unique attributes & weapons. By collecting varies power ups during the missions the player's jet with be transformed into a stronger, more powerful version. +The jet selection screen music was ripped from the first stage music of the early SNK Neo-Geo MVS shoot-em-up game "Andro Dunos". + 0.60 + 20010101T000000 + Yona Tech + Yona Tech + Shoot'em Up + 79 + 1-2 + spec2k.zip + NMK + 256x224 + media/mixrbv2/spec2k.png + + + + fireshrk.zip + Fire Shark + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + fireshrka.zip + Fire Shark (earlier) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + fireshrkd.zip + Fire Shark (Korea, set 1, easier) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + fireshrkdh.zip + Fire Shark (Korea, set 2, harder) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + firetrapbl.zip + Fire Trap (Japan bootleg) + If you've got cool hands, get ready to climb the burning skyscrapers and dodge the falling bricks, cars, glass and obstacles to rescue the people trapped inside. And watch out - it's a long fall to the street! + 0.70 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + firetrap.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/firetrap.png + + + + firetrapj.zip + Fire Trap (Japan) + If you've got cool hands, get ready to climb the burning skyscrapers and dodge the falling bricks, cars, glass and obstacles to rescue the people trapped inside. And watch out - it's a long fall to the street! + 0.70 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + firetrap.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/firetrap.png + + + + firetrapa.zip + Fire Trap (US) + If you've got cool hands, get ready to climb the burning skyscrapers and dodge the falling bricks, cars, glass and obstacles to rescue the people trapped inside. And watch out - it's a long fall to the street! + 0.70 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + firetrap.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/firetrap.png + + + + firetrap.zip + Fire Trap (US, rev A) + If you've got cool hands, get ready to climb the burning skyscrapers and dodge the falling bricks, cars, glass and obstacles to rescue the people trapped inside. And watch out - it's a long fall to the street! + 0.70 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/firetrap.png + + + + firebeas.zip + Firebeast (prototype) + This game is a prototype that never made it out of production. It's original name was Dragon Rider, and the original concept was based on the Chronicles of Pern. Due to licensing issues, the name was changed to Firebeast, but the game didn't test well and was cancelled. + 0.50 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + Atari Classics + 256x232 + media/mixrbv2/firebeas.png + + + + cfishing.zip + Fishing (DECO Cassette) (Japan) + A fishing game. Position yourself to throw your hook to the best spots and reeling in your catch past hazardous rocks. + 0.30 + 19820101T000000 + Data East + Hunting and Fishing + 2648 + 1-2 + cadanglr.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cadanglr.png + + + + fitter.zip + Fitter + The object of Round-Up is for the player to maneuver his white robot in 1 of 4 directions within a maze, capture a red character robot as they move about the maze, and race to the center to change the 9 white balls located there to red. The player may only change one white ball to red at a time after he has captured a red robot, and must evade 4 chaser monsters in the process. Bonus point may be earned when capturing the elusive 'red king' that appears on the screen. Capture him and momentarily immobilize the chasers, but do not come in contact with the yellow robots--or your much-needed red robots will be changed to white and force you to change strategy. Play is over when the chasers have captured all of the player's robots. But, should the player be successful in changing all of the balls in the center to red, the pattern clears and a different challenge is presented. A 3x3 or 4x4 tri-colored pattern will appear at the bottom of the screen and a slightly different tri-colored cube of corresponding size will appear at the center of the screen. The player may earn bonus points by moving the directional arrow and rearranging the colors of the cube at the center of the screen to match the sample pattern presented at the bottom of the screen. The player is given 90 seconds to rearrange the cube as many times as he can. Action returns to the maze whether you win or lose the cube challenge. All in all, an exciting and challenging game where patience and skill are required. + 0.50 + 19810101T000000 + Taito + Action + 10 + 1-2 + roundup.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/roundup.png + + + + fitterbl.zip + Fitter (bootleg of Round-Up) + The object of Round-Up is for the player to maneuver his white robot in 1 of 4 directions within a maze, capture a red character robot as they move about the maze, and race to the center to change the 9 white balls located there to red. The player may only change one white ball to red at a time after he has captured a red robot, and must evade 4 chaser monsters in the process. Bonus point may be earned when capturing the elusive 'red king' that appears on the screen. Capture him and momentarily immobilize the chasers, but do not come in contact with the yellow robots--or your much-needed red robots will be changed to white and force you to change strategy. Play is over when the chasers have captured all of the player's robots. But, should the player be successful in changing all of the balls in the center to red, the pattern clears and a different challenge is presented. A 3x3 or 4x4 tri-colored pattern will appear at the bottom of the screen and a slightly different tri-colored cube of corresponding size will appear at the center of the screen. The player may earn bonus points by moving the directional arrow and rearranging the colors of the cube at the center of the screen to match the sample pattern presented at the bottom of the screen. The player is given 90 seconds to rearrange the cube as many times as he can. Action returns to the maze whether you win or lose the cube challenge. All in all, an exciting and challenging game where patience and skill are required. + 0.50 + 19810101T000000 + Taito + Action + 10 + 1-2 + roundup.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/roundup.png + + + + fixeight.zip + FixEight (Europe) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightt.zip + FixEight (Europe, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeighth.zip + FixEight (Hong Kong) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightht.zip + FixEight (Hong Kong, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightj.zip + FixEight (Japan) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightjt.zip + FixEight (Japan, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightk.zip + FixEight (Korea) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightkt.zip + FixEight (Korea, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeighta.zip + FixEight (Southeast Asia) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightat.zip + FixEight (Southeast Asia, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeighttw.zip + FixEight (Taiwan) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeighttwt.zip + FixEight (Taiwan, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightu.zip + FixEight (USA) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + fixeightut.zip + FixEight (USA, Taito license) + The plot is rather simple: Your character is sent to the alien planet Fortune to destroy it, and with it the Gozzu invasion of our universe. +As a follow-up to Out Zone, Fixeight fixes many of the problems that its predecessor had. The main gimmick of the game are the eight unique characters, each of which have different weapons in their arsenal. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-3 + fixeight.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fixeight.png + + + + flkatck.zip + Flak Attack (Japan) + A vertically scrolling shoot-em-up by Konami featuring good music, big explosions and lots of power-ups. + 0.50 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + mx5000.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/mx5000.png + + + + flkatcka.zip + Flak Attack (Japan, PWB 450593 sub-board) + A vertically scrolling shoot-em-up by Konami featuring good music, big explosions and lots of power-ups. + 0.50 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + mx5000.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/mx5000.png + + + + cfboy0a1.zip + Flash Boy (vertical) [DECO Cassette MD] (No.12/Ver.0/Set.1,Japan) + 0.30 + 19810101T000000 + Data East Classics + 270 + 256x240 + media/mixrbv2/cfboy0a1.png + + + + fpointbj.zip + Flash Point (Japan, bootleg) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + fpoint.zip + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + fpoint1d.zip + Flash Point (set 1, Japan, FD1094 317-0127A decrypted) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + fpoint.zip + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + fpoint1.zip + Flash Point (set 1, Japan, FD1094 317-0127A) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + fpoint.zip + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + fpointd.zip + Flash Point (set 2, Japan, FD1094 317-0127A decrypted) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + fpoint.zip + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + fpoint.zip + Flash Point (set 2, Japan, FD1094 317-0127A) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + fpointbl.zip + Flash Point (World, bootleg) + Flash Point is an unlicensed Tetris variant released only in Japan. Unlike Tetris, which is usually a pure survival, your goal is to eliminate all golden blocks from the field. + 0.60 + 19890101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + fpoint.zip + Sega Classics + 320x224 + media/mixrbv2/fpoint.png + + + + flashgal.zip + Flashgal (set 1) + Take a stand against crime! As the hyperactive female crime fighter (she just can't stand still!) known as the Flashgal, you'll face many dangers such as helicopters, dogs, thugs & ninjas in order to protect peace, lots of different game styles (beat-em up, shooting, hack & slash, etc.) give this fun game lots of variety! + 0.50 + 19850101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 288x224 + media/mixrbv2/flashgal.png + + + + flashgalk.zip + Flashgal (set 1, Kyugo logo) + Take a stand against crime! As the hyperactive female crime fighter (she just can't stand still!) known as the Flashgal, you'll face many dangers such as helicopters, dogs, thugs & ninjas in order to protect peace, lots of different game styles (beat-em up, shooting, hack & slash, etc.) give this fun game lots of variety! + 0.50 + 19850101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + flashgal.zip + Sega Classics + 288x224 + media/mixrbv2/flashgal.png + + + + flashgala.zip + Flashgal (set 2) + Take a stand against crime! As the hyperactive female crime fighter (she just can't stand still!) known as the Flashgal, you'll face many dangers such as helicopters, dogs, thugs & ninjas in order to protect peace, lots of different game styles (beat-em up, shooting, hack & slash, etc.) give this fun game lots of variety! + 0.50 + 19850101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + flashgal.zip + Sega Classics + 288x224 + media/mixrbv2/flashgal.png + + + + flicky.zip + Flicky (128k Version, 315-5051) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickya.zip + Flicky (128k Version, 315-5051, larger roms)) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickys2.zip + Flicky (128k Version, not encrypted) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickyg.zip + Flicky (128k Version, System 2, 315-5051, alt graphics) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickys2g.zip + Flicky (128k Version, System 2, not encrypted, alt graphics) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickyo.zip + Flicky (64k Version, 315-5051, set 1) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickys1.zip + Flicky (64k Version, 315-5051, set 2) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flickyup.zip + Flicky (64k Version, on Up'n Down boardset) + Flicky is a side-scrolling platform game in which the player controls 'Flicky', a flightless bird who must collect her lost chicks - called 'chirps' - and guide them safely to the exit, represented as a door with Flicky's name shown above it. + +Flicky must watch out for the house cats that emerge from cat-flaps and start roam the levels, as any contact with a cat results in the loss of a life. Any chicks that are touched by a cat will be separated from Flicky and must again be retrieved. + 0.70 + 19840101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + flicky.zip + Sega Classics + 512x224 + media/mixrbv2/flicky.png + + + + flipjack.zip + Flipper Jack + Flipper Jack (c) 198? Jackson Co., Ltd. - SOURCES - See Manual section. Game's ROM. + 0.30 + 19830101T000000 + Jackson Co., Ltd. + Pinball + 31 + 1-2 + Mame + 270 + 256x192 + media/mixrbv2/flipjack.png + + + + flipull.zip + Flipull (Japan) + Export version. for more information about the game itself please see the original Japanese version entry; "Flipull". + 0.80 + 19890101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + plotting.zip + Taito Classics + 320x224 + media/mixrbv2/plotting.png + + + + floritas.zip + Floritas (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + floritasm.zip + Floritas (Multivideo Spanish Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + flowerj.zip + Flower (Japan) + Flower is a vertical shoot'em up that is set in outer space. Eliminate attacking flowers and a variety of end-bosses. Shoot daisy-chains and comets for power-up items. + 19860101T000000 + Clarue + Clarue (Komax license) + Shoot'em Up + 79 + 1-2 + flower.zip + Sega Classics + 272x224 + media/mixrbv2/flower.png + + + + flower.zip + Flower (US) + Flower is a vertical shoot'em up that is set in outer space. Eliminate attacking flowers and a variety of end-bosses. Shoot daisy-chains and comets for power-up items. + 19860101T000000 + Clarue + Clarue (Komax license) + Shoot'em Up + 79 + 1-2 + Sega Classics + 272x224 + media/mixrbv2/flower.png + + + + flyboy.zip + Fly-Boy + Take off on a fantastic video trip. A voyage that simulates the thrills and skills of actual Hang Gliding. Players use the joystick to control Freddie, but good timing and strategy is necessary to successfully negotiate invisible air currents, wind direction and up and down drafts. This game has incredible visual impact for this time, Freddie flies the skies over the Alps--over trains, trees, bridges, through winter and summer seasons; over the Pacific--over a yacht, tropical islands, an aircraft carrier; and over Egypt--camels, Pyramids, the Taj Mahal, the Sphinx, through day and night landscapes. It's a complete global challenge with non-stop action over a continuously changing panorama below. + 0.20 + 19820101T000000 + Kaneko + Kaneko + Race, Driving + 28 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/flyboy.png + + + + flyboyb.zip + Fly-Boy (bootleg) + Take off on a fantastic video trip. A voyage that simulates the thrills and skills of actual Hang Gliding. Players use the joystick to control Freddie, but good timing and strategy is necessary to successfully negotiate invisible air currents, wind direction and up and down drafts. This game has incredible visual impact for this time, Freddie flies the skies over the Alps--over trains, trees, bridges, through winter and summer seasons; over the Pacific--over a yacht, tropical islands, an aircraft carrier; and over Egypt--camels, Pyramids, the Taj Mahal, the Sphinx, through day and night landscapes. It's a complete global challenge with non-stop action over a continuously changing panorama below. + 0.20 + 19820101T000000 + Kaneko + Kaneko + Race, Driving + 28 + 1-2 + flyboy.zip + Kaneko + 270 + 256x224 + media/mixrbv2/flyboy.png + + + + fnshark.zip + Flyin' Shark (bootleg of Hishou Zame) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + cflyball.zip + Flying Ball (DECO Cassette) (US) + 0.30 + 19850101T000000 + Data East + Data East + Action / Breakout games + 2917 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cflyball.png + + + + fsharkbt.zip + Flying Shark (bootleg with 8741) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + fshark.zip + Flying Shark (World) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + flytiger.zip + Flying Tiger (set 1) + A vertically scrolling shoot-em-up. + 0.50 + 19920101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/flytiger.png + + + + flytigera.zip + Flying Tiger (set 2) + A vertically scrolling shoot-em-up. + 0.50 + 19920101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + flytiger.zip + Mame + 270 + 384x240 + media/mixrbv2/flytiger.png + + + + foodfc.zip + Food Fight (cocktail) + Food Fight &copy; 1982 Atari. + +The player, as Charley Chuck, must dodge all kinds of flying fruit and vegetables and try to eat an ice cream cone before it melts. How many ice cream cones can he eat? Your players will soon find out in this incredible video feast. As an ice cream cone melts on the other side of the screen, Charley Chuck just naturally has to go for it, But he must get past Oscar, Angelo, Jacques and Zorba, four chefs who unexpectedly pop out of holes, chase Charley Chuck and throw food at him. They all have different personalities and they&#039;re all out to stop Charley Chuck if he isn&#039;t fast enough. There are piles of tomatoes, peas, bananas, pies and watermelon Charley Chuck can use to defend himself from the persistent chefs. The player controls Charley Chuck with an analog joystick which allows 360 degree movement on the playfield, and a Throw button, used when Charley Chuck needs to throw food at one of the chefs. + 0.40 + 19820101T000000 + Atari + General Computer Corporation + Shooter + 2646 + 1-2 + foodf.zip + Atari Classics + 256x224 + media/mixrbv2/foodf.png + + + + foodf1.zip + Food Fight (rev 1) + Food Fight &copy; 1982 Atari. + +The player, as Charley Chuck, must dodge all kinds of flying fruit and vegetables and try to eat an ice cream cone before it melts. How many ice cream cones can he eat? Your players will soon find out in this incredible video feast. As an ice cream cone melts on the other side of the screen, Charley Chuck just naturally has to go for it, But he must get past Oscar, Angelo, Jacques and Zorba, four chefs who unexpectedly pop out of holes, chase Charley Chuck and throw food at him. They all have different personalities and they&#039;re all out to stop Charley Chuck if he isn&#039;t fast enough. There are piles of tomatoes, peas, bananas, pies and watermelon Charley Chuck can use to defend himself from the persistent chefs. The player controls Charley Chuck with an analog joystick which allows 360 degree movement on the playfield, and a Throw button, used when Charley Chuck needs to throw food at one of the chefs. + 0.40 + 19820101T000000 + Atari + General Computer Corporation + Shooter + 2646 + 1-2 + foodf.zip + Atari Classics + 256x224 + media/mixrbv2/foodf.png + + + + foodf2.zip + Food Fight (rev 2) + Food Fight &copy; 1982 Atari. + +The player, as Charley Chuck, must dodge all kinds of flying fruit and vegetables and try to eat an ice cream cone before it melts. How many ice cream cones can he eat? Your players will soon find out in this incredible video feast. As an ice cream cone melts on the other side of the screen, Charley Chuck just naturally has to go for it, But he must get past Oscar, Angelo, Jacques and Zorba, four chefs who unexpectedly pop out of holes, chase Charley Chuck and throw food at him. They all have different personalities and they&#039;re all out to stop Charley Chuck if he isn&#039;t fast enough. There are piles of tomatoes, peas, bananas, pies and watermelon Charley Chuck can use to defend himself from the persistent chefs. The player controls Charley Chuck with an analog joystick which allows 360 degree movement on the playfield, and a Throw button, used when Charley Chuck needs to throw food at one of the chefs. + 0.40 + 19820101T000000 + Atari + General Computer Corporation + Shooter + 2646 + 1-2 + foodf.zip + Atari Classics + 256x224 + media/mixrbv2/foodf.png + + + + foodf.zip + Food Fight (rev 3) + Food Fight &copy; 1982 Atari. + +The player, as Charley Chuck, must dodge all kinds of flying fruit and vegetables and try to eat an ice cream cone before it melts. How many ice cream cones can he eat? Your players will soon find out in this incredible video feast. As an ice cream cone melts on the other side of the screen, Charley Chuck just naturally has to go for it, But he must get past Oscar, Angelo, Jacques and Zorba, four chefs who unexpectedly pop out of holes, chase Charley Chuck and throw food at him. They all have different personalities and they&#039;re all out to stop Charley Chuck if he isn&#039;t fast enough. There are piles of tomatoes, peas, bananas, pies and watermelon Charley Chuck can use to defend himself from the persistent chefs. The player controls Charley Chuck with an analog joystick which allows 360 degree movement on the playfield, and a Throw button, used when Charley Chuck needs to throw food at one of the chefs. + 0.40 + 19820101T000000 + Atari + General Computer Corporation + Shooter + 2646 + 1-2 + Atari Classics + 256x224 + media/mixrbv2/foodf.png + + + + fbfrenzy.zip + Football Frenzy (NGM-034)(NGH-034) + You'll never play another football game again, after you play Football Frenzy! Football Frenzy, with on-going play-by-play announcing, is hard-hitting action at its best! You will hear, in full stereo, every bone-crushing tackle and helmet-to-helmet, metal-on-metal hit. The piercing grunts and groans of players sacrificing their bodies for the team puts you right on the field with them! The camera zooms give you the most dazzling close-ups ever seen. So, bring your pads and helmet! Tournament mode, cinematic displays and over 10 teams to choose from make this football package complete. Play against the computer or a friend in this 46-MEG bone-jarring gridiron great... Football Frenzy! + 0.50 + 19920101T000000 + SNK + SNK + Sports / Football + 2846 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/fbfrenzy.png + + + + forcebrk.zip + Force Break (bootleg) + This is a horizontally scrolling shoot'em up in which the player drives an armoured car, equipped with a front-mounted gun and super jump capability. The aim of the game is to fight through five enemy-controlled zones to retrieve a stolen top-secret fighter plane, the PK430. + +The game's levels force-scroll from right to left, although the vehicle's speed - and rate of scrolling - can be slowed down and speeded up to some degree. As well as a forward-firing gun, the car can be made to jump huge distances. This is necessary to avoid background obstacles such as rock falls and broken bridges. It can also be used to avoid incoming enemy fire and vehicles. Land mines also litter the levels and need to be shot or avoided. + 0.70 + 19860101T000000 + Data East + Data East + Shooter / Vehicle, Horizontal + 2938 + 1-2 + brkthru.zip + Data East Classics + 240x240 + media/mixrbv2/brkthru.png + + + + forgottnj.zip + Forgotten Worlds (Japan) (English prototype) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottnua.zip + Forgotten Worlds (US, B-Board 88618B-2, rev A) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottnuaa.zip + Forgotten Worlds (US, B-Board 88618B-2, rev AA) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottnuc.zip + Forgotten Worlds (US, B-Board 88618B-2, Rev C) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottnue.zip + Forgotten Worlds (US, B-Board 88618B-2, Rev E) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottnu.zip + Forgotten Worlds (US, B-Board 88621B-2, rev C) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottna.zip + Forgotten Worlds (World) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + forgottn.zip + Forgotten Worlds (World, newer) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + formatz.zip + Formation Z + Taking place in the year 2701, the player controls a robot which can transform into an aero fighter on a mission to stop an alien super weapon from reaching the Earth. The robot may move forwards, backwards and jump, and the aero fighter may travel anywhere on screen but has limited fuel in which to do so. A combination of the two must be used to avoid obstacles, as well as to destroy any on-screen enemies for extra points. + 0.50 + 19840101T000000 + Jaleco + Jaleco + Shooter / Horizontal + 2876 + 1-2 + Jaleco + 248x224 + media/mixrbv2/formatz.png + + + + fourtraxj.zip + Four Trax (Japan) + The player must take control for four quad bikes (red for Player 1, white for Player 2, yellow for Player 3, and green for Player 4), which are competing in an "off-road" race - and they all have a preset amount of time in which to complete a full lap of the track. For each lap of the track that is successfully completed, the players' time is extended. However, if one of the players cannot manage to successfully complete his current lap of the track before the time runs out, his or her game will instantly be over and the race will continue without them. + +The players must complete between three and six full laps of the track in order to win (the number is dependent on how both of the cabinets are set, as with Namco's own Final Lap). The players will also encounter between four and seven blue CPU-controlled bikes on the track, as the number is dependent on how many people are playing (seven for one player, six for two players, five for three, and four for four). + 0.70 + 19890101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + fourtrax.zip + Namco Classics + 288x224 + media/mixrbv2/fourtrax.png + + + + fourtraxa.zip + Four Trax (US?, censored banners) + The player must take control for four quad bikes (red for Player 1, white for Player 2, yellow for Player 3, and green for Player 4), which are competing in an "off-road" race - and they all have a preset amount of time in which to complete a full lap of the track. For each lap of the track that is successfully completed, the players' time is extended. However, if one of the players cannot manage to successfully complete his current lap of the track before the time runs out, his or her game will instantly be over and the race will continue without them. + +The players must complete between three and six full laps of the track in order to win (the number is dependent on how both of the cabinets are set, as with Namco's own Final Lap). The players will also encounter between four and seven blue CPU-controlled bikes on the track, as the number is dependent on how many people are playing (seven for one player, six for two players, five for three, and four for four). + 0.70 + 19890101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + fourtrax.zip + Namco Classics + 288x224 + media/mixrbv2/fourtrax.png + + + + fourtrax.zip + Four Trax (World) + The player must take control for four quad bikes (red for Player 1, white for Player 2, yellow for Player 3, and green for Player 4), which are competing in an "off-road" race - and they all have a preset amount of time in which to complete a full lap of the track. For each lap of the track that is successfully completed, the players' time is extended. However, if one of the players cannot manage to successfully complete his current lap of the track before the time runs out, his or her game will instantly be over and the race will continue without them. + +The players must complete between three and six full laps of the track in order to win (the number is dependent on how both of the cabinets are set, as with Namco's own Final Lap). The players will also encounter between four and seven blue CPU-controlled bikes on the track, as the number is dependent on how many people are playing (seven for one player, six for two players, five for three, and four for four). + 0.70 + 19890101T000000 + Namco + Namco + Race 3rd Pers. view + 2888 + 1 + Namco Classics + 288x224 + media/mixrbv2/fourtrax.png + + + + freekickb1.zip + Free Kick (bootleg set 1) + Free Kick is a ball and paddle game with a soccer theme. + 0.70 + 19870101T000000 + Nihon Systems + Nihon Systems + Action / Breakout games + 2917 + 1-2 + freekick.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/freekick.png + + + + freekickb3.zip + Free Kick (bootleg set 3) + Free Kick is a ball and paddle game with a soccer theme. + 0.70 + 19870101T000000 + Nihon Systems + Nihon Systems + Action / Breakout games + 2917 + 1-2 + freekick.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/freekick.png + + + + freekick.zip + Free Kick (NS6201-A 1987.10) + Free Kick is a ball and paddle game with a soccer theme. + 0.70 + 19870101T000000 + Nihon Systems + Nihon Systems + Action / Breakout games + 2917 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/freekick.png + + + + freekicka.zip + Free Kick (NS6201-A 1987.9) + Free Kick is a ball and paddle game with a soccer theme. + 0.70 + 19870101T000000 + Nihon Systems + Nihon Systems + Action / Breakout games + 2917 + 1-2 + freekick.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/freekick.png + + + + freeze.zip + Freeze + A man trapped in the Arctic tries to make his escape armed with only a flamethrower and a jetpack. He must remember to recharge his flamethrower and jetpack by collecting gems. + 0.50 + 19840101T000000 + Cinematronics + Cinematronics + Platform + 7 + Cinematronics + 270 + 256x224 + media/mixrbv2/freeze.png + + + + frenzy.zip + Frenzy (revision RA1) + A sequel to the 1980 game, "Berzerk", Frenzy once again has the player battling through a maze of rooms, populated by robotic skeletons, robotic octopi and walls. Everything in each room, except walls is deadly to the touch. + +The object is to shoot all the robots, and then escape out of the room through one of the doorways. Like its prequel, Frenzy consist of 64000 levels. Once all 64000 have been cleared the game will crash. + 0.30 + 19810101T000000 + Stern Electronics, Inc. + Stern Electronics + Action + 10 + 1-2 + Mame + 256x224 + media/mixrbv2/frenzy.png + + + + friskyt.zip + Frisky Tom (set 1) + You play the plumber Frisky Tom who is trying to get water from the top tank to a shower tank below. Mice interfere with your plans by stealing pipes blowing-up pipes and by biting Tom. If Tom fills enough water the shower tank, he advances to the next level. Depending upon how much water is in the tank, a woman in a bath tub will appear as an interlude between levels. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1 + Nichibutsu + 256x224 + media/mixrbv2/friskyt.png + + + + friskyta.zip + Frisky Tom (set 2) + You play the plumber Frisky Tom who is trying to get water from the top tank to a shower tank below. Mice interfere with your plans by stealing pipes blowing-up pipes and by biting Tom. If Tom fills enough water the shower tank, he advances to the next level. Depending upon how much water is in the tank, a woman in a bath tub will appear as an interlude between levels. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1 + friskyt.zip + Nichibutsu + 256x224 + media/mixrbv2/friskyt.png + + + + friskytb.zip + Frisky Tom (set 3, encrypted) + You play the plumber Frisky Tom who is trying to get water from the top tank to a shower tank below. Mice interfere with your plans by stealing pipes blowing-up pipes and by biting Tom. If Tom fills enough water the shower tank, he advances to the next level. Depending upon how much water is in the tank, a woman in a bath tub will appear as an interlude between levels. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1 + friskyt.zip + Nichibutsu + 256x224 + media/mixrbv2/friskyt.png + + + + froggers.zip + Frog + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + fspiderb.zip + Frog & Spiders (bootleg?) + Frog & Spiders is a fixed screen shooter released in 1981 by Taito for Arcades. The game plays similarly to Space Invaders, with the Core Cannon replaced by a frog and the invaders replaced by spiders. The playfield is a large spider web between two trees. + +Players move the frog left and right, having one button to shoot and one for jumping. Shooting a spider once knocks it down from the web, at which point the player can shoot it again or jump to eat it, which grants bonus points. You also get bonus points at the end of each round for protecting other insects caught on the web and receiving a 200 point penalty for each other insect shot down. + 0.30 + 19810101T000000 + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/fspiderb.png + + + + frogg.zip + Frog (bootleg on Galaxian hardware) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + frogf.zip + Frog (Falcon bootleg) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + cps1frog.zip + Frog Feast (CPS-1) + Home Made game. Frog Feast is an adaptation of the Intellvision game "Frog Bog". +The game concept is pretty simple: 2 Frogs who have to eat as much insects as possible in a limited time. + 0.50 + 20060101T000000 + Rastersoft + Rastersoft + Platform + 7 + 1-2 + Capcom Play System + media/mixrbv2/cps1frog.png + + + + ngfrog.zip + Frog Feast (Neo Geo) + Home Made game. Frog Feast is an adaptation of the Intellvision game "Frog Bog". +The game concept is pretty simple: 2 Frogs who have to eat as much insects as possible in a limited time. + 20060101T000000 + Rastersoft (Ho + Homebrew + Various + 39 + 1-2 + Neo-Geo + media/mixrbv2/ngfrog.png + + + + frogger.zip + Frogger + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + froggermc.zip + Frogger (Moon Cresta hardware) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + froggrs.zip + Frogger (Scramble hardware) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + froggers1.zip + Frogger (Sega set 1) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + froggers2.zip + Frogger (Sega set 2) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + froggers3.zip + Frogger (Sega set 3) + Frogger is a one or two-player game in which players must overcome a number of hazards to safely guide the green amphibian from the bottom of the screen to one of five home bases situated at the top of the screen. + +A round is completed once five frogs have been guided safely home, after which the next round begins with an increased level of difficulty. This includes faster-moving vehicles on the road section and new, deadly hazards on the river section, including crocodiles, otters and snakes. + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + frogger.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/frogger.png + + + + frontlin.zip + Front Line (set 1) + Front Line is Taito America Corporation's action war game. Traveling through enemy territory the player must accomplish the ultimate mission or meet a violent end: capture the enemy fort and win total victory. + +The journey begins slowly with the player armed with a gun (special Gun Control) and hand grenades. Quickly he becomes a target for enemy soldiers who also have guns and grenades. Moving faster, he races past trees that hide the enemy who now unleash an ambush barrage of bullets and bombs. Even the ground he races over has been booby-trapped with land mines. + 0.70 + 19820101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/frontlin.png + + + + frontlina.zip + Front Line (set 2) + Front Line is Taito America Corporation's action war game. Traveling through enemy territory the player must accomplish the ultimate mission or meet a violent end: capture the enemy fort and win total victory. + +The journey begins slowly with the player armed with a gun (special Gun Control) and hand grenades. Quickly he becomes a target for enemy soldiers who also have guns and grenades. Moving faster, he races past trees that hide the enemy who now unleash an ambush barrage of bullets and bombs. Even the ground he races over has been booby-trapped with land mines. + 0.70 + 19820101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + frontlin.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/frontlin.png + + + + fjbuster.zip + Fujiyama Buster (Japan) + Shogun Warriors plays similarly to some other 2D versus fighting games during its release, which the player's character fights against his or her opponent in best two-out-of-three matches in a single player tournament mode with the computer or against another human player. It is controlled with an 8-way joystick and 4 buttons that perform weak and strong versions of punches and kicks. In one player mode, after selecting a character, the arcade randomly selects an opponent. The opponent order goes randomly and always leaves the last four bosses in a certain order. Some characters stabbed by ones armed with katanas or other sharp weapons can cause blood to spurt out, which became popularized a few months later by Midway's Mortal Kombat. The main unique feature of Shogun Warriors is its "grabbing system". When the player is grabbed by the opponent, the grabber must move the joystick left and right to make it more difficult for his opponent to escape, while the one being grabbed must rapidly press any or all buttons to make it easier to escape. + 0.40 + 19920101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + shogwarr.zip + Kaneko + 256x224 + media/mixrbv2/shogwarr.png + + + + fullthrl.zip + Full Throttle (Japan) + A driving game very similar to "Out Run", except for the addition of the nitro boost button. + 0.50 + 19870101T000000 + Taito + Taito + Race 3rd Pers. view + 2888 + 1 + topspeed.zip + Taito Classics + 320x240 + media/mixrbv2/topspeed.png + + + + funkybee.zip + Funky Bee + In this game, the player is a bee with a stinger. You fly over flowers for points and must avoid the trees and fires as well as the enemy bugs. You may use your stinger to kill bugs, but only one stinger is allowed on the screen at a time. + 0.50 + 19820101T000000 + Orca Corporation + Orca + Shoot'em Up + 79 + 1-2 + Mame + 270 + 236x224 + media/mixrbv2/funkybee.png + + + + funkybeeb.zip + Funky Bee (bootleg, harder) + In this game, the player is a bee with a stinger. You fly over flowers for points and must avoid the trees and fires as well as the enemy bugs. You may use your stinger to kill bugs, but only one stinger is allowed on the screen at a time. + 0.50 + 19820101T000000 + Orca Corporation + Orca + Shoot'em Up + 79 + 1-2 + funkybee.zip + Mame + 270 + 236x224 + media/mixrbv2/funkybee.png + + + + fnkyfish.zip + Funky Fish + Funky Fish &copy; 1981 Sun Electronics. + +Our &#039;fishy&#039; protagonist must attack groups of small fish that are defending a monster. Shoot bubbles at the fish until they change to fruit. If you don&#039;t eat the fruit it will fall to the seabed and awaken a sleeping seashell that releases a sea horse to attack you. + 0.50 + 19810101T000000 + Sunsoft + Sunsoft + Shooter / Horizontal + 2876 + 1-2 + Atari Classics + 270 + 512x240 + media/mixrbv2/fnkyfish.png + + + + funybubl.zip + Funny Bubble + Funny Bubble is an adult version of "Puzz Loop" with various backgrounds featuring topless girls. + 19990101T000000 + In Chang Electronic Co + Puzzle-Game / Throw + 2923 + 1-2 + Comad + 320x224 + media/mixrbv2/funybubl.png + + + + funybublc.zip + Funny Bubble (Comad version) + Funny Bubble is an adult version of "Puzz Loop" with various backgrounds featuring topless girls. + 19990101T000000 + In Chang Electronic Co + Puzzle-Game / Throw + 2923 + 1-2 + funybubl.zip + Comad + 320x224 + media/mixrbv2/funybubl.png + + + + funnymou.zip + Funny Mouse (Japan) + In Super Mouse, you are a mouse collecting a stash of food that happens to be scattered around the house. Opposing you are cats and cobras, which pop up out of nowhere. You're not exactly helpless, though. You have balloon bombs which you can lay and detonate, rocks on top of the house to drop, floors that move across when you step on them and pools of water under bridges which you open by walking over them. All these can kill cats and cobras, if you use them right. + 0.70 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + suprmous.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/suprmous.png + + + + futspy.zip + Future Spy + Future Spy is an arcade game released by Sega in 1984 that runs on Sega Zaxxon hardware. + +Like Zaxxon it is a isometric shoot-'em-up, but unlike Zaxxon the player does not spend time adjusting the height of his ship (or plane in this circumstance). One button fires at air targets while another drops bombs on ground targets. + 0.50 + 19840101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/futspy.png + + + + glocu.zip + G-LOC Air Battle (US) + G-Loc - Air Battle is a direct sequel to 1987's "After Burner", G-loc adopts its predecessor's action-packed, if somewhat limited, gameplay, although the game's pace has been noticeably reduced, making survival more a matter of skill than the shoot-and-hope gameplay of "After Burner". + +The object of the game is to shoot a set number of enemy planes as they approach from front and behind; rolling and swerving to avoid incoming enemy fire. Certain stages feature ground-based enemy installations which must also be destroyed. The player's jet fighter is armed with both a machine gun, and a limited supply of missiles which can be 'locked-on' to enemy targets. G-Loc's levels take the player through a variety of different landscapes, including wide, rolling plains and rock-strewn canyons. Later in the game, the player must attempt to land their fighter onto an aircraft carrier. Failure to do so results in the game ending. + 0.80 + 19900101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + gloc.zip + Sega Classics + 320x224 + media/mixrbv2/gloc.png + + + + gloc.zip + G-LOC Air Battle (World) + G-Loc - Air Battle is a direct sequel to 1987's "After Burner", G-loc adopts its predecessor's action-packed, if somewhat limited, gameplay, although the game's pace has been noticeably reduced, making survival more a matter of skill than the shoot-and-hope gameplay of "After Burner". + +The object of the game is to shoot a set number of enemy planes as they approach from front and behind; rolling and swerving to avoid incoming enemy fire. Certain stages feature ground-based enemy installations which must also be destroyed. The player's jet fighter is armed with both a machine gun, and a limited supply of missiles which can be 'locked-on' to enemy targets. G-Loc's levels take the player through a variety of different landscapes, including wide, rolling plains and rock-strewn canyons. Later in the game, the player must attempt to land their fighter onto an aircraft carrier. Failure to do so results in the game ending. + 0.80 + 19900101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + Sega Classics + 320x224 + media/mixrbv2/gloc.png + + + + glocr360j.zip + G-LOC R360 (Japan) + G-Loc - Air Battle is a direct sequel to 1987's "After Burner", G-loc adopts its predecessor's action-packed, if somewhat limited, gameplay, although the game's pace has been noticeably reduced, making survival more a matter of skill than the shoot-and-hope gameplay of "After Burner". + +The object of the game is to shoot a set number of enemy planes as they approach from front and behind; rolling and swerving to avoid incoming enemy fire. Certain stages feature ground-based enemy installations which must also be destroyed. The player's jet fighter is armed with both a machine gun, and a limited supply of missiles which can be 'locked-on' to enemy targets. G-Loc's levels take the player through a variety of different landscapes, including wide, rolling plains and rock-strewn canyons. Later in the game, the player must attempt to land their fighter onto an aircraft carrier. Failure to do so results in the game ending. + 0.80 + 19900101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + gloc.zip + Sega Classics + 320x224 + media/mixrbv2/gloc.png + + + + glocr360.zip + G-LOC R360 (World) + G-Loc - Air Battle is a direct sequel to 1987's "After Burner", G-loc adopts its predecessor's action-packed, if somewhat limited, gameplay, although the game's pace has been noticeably reduced, making survival more a matter of skill than the shoot-and-hope gameplay of "After Burner". + +The object of the game is to shoot a set number of enemy planes as they approach from front and behind; rolling and swerving to avoid incoming enemy fire. Certain stages feature ground-based enemy installations which must also be destroyed. The player's jet fighter is armed with both a machine gun, and a limited supply of missiles which can be 'locked-on' to enemy targets. G-Loc's levels take the player through a variety of different landscapes, including wide, rolling plains and rock-strewn canyons. Later in the game, the player must attempt to land their fighter onto an aircraft carrier. Failure to do so results in the game ending. + 0.80 + 19900101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + gloc.zip + Sega Classics + 320x224 + media/mixrbv2/gloc.png + + + + gijoea.zip + G.I. Joe (Asia, AA) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + gijoe.zip + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gijoej.zip + G.I. Joe (Japan, JAA) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + gijoe.zip + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gijoeua.zip + G.I. Joe (US, UAA) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + gijoe.zip + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gijoeu.zip + G.I. Joe (US, UAB) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + gijoe.zip + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gijoe.zip + G.I. Joe (World, EAB, set 1) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gijoeea.zip + G.I. Joe (World, EB8, prototype?) + Soldiers fight in a futuristic war against the army of an evil emperor. Unlike most army themed games, even trees and buildings can be destroyed if enough bullets are pumped into them. + 0.70 + 19920101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-4 + gijoe.zip + Konami Classics + 288x224 + media/mixrbv2/gijoe.png + + + + gaia.zip + Gaia Crusaders + Gaia Crusaders is a one or two-player side-scrolling beat-em-up in which players must battle Satan and his army of demons that have captured and taken over the world. Players select a character from a choice of five combatants known as 'Elemental Warriors'. Each of the characters possesses either Wind strength, Fire strength, or a mix of the two. + +The game has the standard punch and kick attack moves as well as magical special moves. Combos can be strung together by switching quickly between kicking and punching. Players can also perform a 'super attack' by pressing the jump, punch and kick buttons simultaneously, this hits many enemies at once but costs the player character some health. It's also possible to raise a shield by pressing jump and kick simultaneously. + +At regular intervals coloured spheres appear, players can pick these up to gain a magical attack. The effects of the magic attack differs depending on the player character. If the magic matches the character's elemental attribute (fire, wind or both), they will gain a special, screen-clearing attack. Otherwise, they earn a powerful special attack. + +In addition to the elemental spheres, there are two types of bombs that also appear, both of which detonate immediately once picked up. The first is an earthquake that hits all on-screen enemies and inflicts a large amount of damage. The second is a random bomb that sends out pillars of fire, hurting any enemies they come into contact with. There are also explosive boxes that can be kicked at enemies to keep them at bay. One last notable item is the sword, which functions much like weapons that can be found on the ground in many other beat 'em ups. A boss battle awaits players at the end of each stage. + +Gaia Crusaders is heavily influenced by another scrolling beat-em-up, Capcom's 1989 classic, Final Fight and also, to a lesser degree, by Sega's Golden Axe (the latter being the use of the Magical Attack acting as a smart bomb). + + + 0.80 + 19990101T000000 + Noise Factory + Noise Factory + Fight / 2.5D + 2874 + 1-2 + Atlus + 320x224 + media/mixrbv2/gaia.png + + + + gaiapols.zip + Gaiapolis (ver EAF) + A far away land filled with monsters and under the hand of an evil king is on the edge of destruction. Only a small group of brave heroes (a dragon warrior, a fairy & a prince) dare to step forth to look for the legendary sword of the Golden Hawk hidden in the flying citadel known as Gaiapolis in order to topple the evil king and bring peace to this troubled land. Features some very nice 2-D graphics, awesome character & enemy artwork designs, a superb soundtrack and addicting hack & slash action with some RPG characteristics (characters & weapons level up, plenty of magic spells & summons). If you enjoyed Taito's Cadash, this game is for you! + +This game features a password system that allows players to continue the game where they left it. + 0.60 + 19930101T000000 + Konami + Konami + Fight / Vertical + 2922 + 1-2 + Konami Classics + 270 + 376x224 + media/mixrbv2/gaiapols.png + + + + gaiapolsj.zip + Gaiapolis (ver JAF) + A far away land filled with monsters and under the hand of an evil king is on the edge of destruction. Only a small group of brave heroes (a dragon warrior, a fairy & a prince) dare to step forth to look for the legendary sword of the Golden Hawk hidden in the flying citadel known as Gaiapolis in order to topple the evil king and bring peace to this troubled land. Features some very nice 2-D graphics, awesome character & enemy artwork designs, a superb soundtrack and addicting hack & slash action with some RPG characteristics (characters & weapons level up, plenty of magic spells & summons). If you enjoyed Taito's Cadash, this game is for you! + +This game features a password system that allows players to continue the game where they left it. + 0.60 + 19930101T000000 + Konami + Konami + Fight / Vertical + 2922 + 1-2 + gaiapols.zip + Konami Classics + 270 + 376x224 + media/mixrbv2/gaiapols.png + + + + gaiapolsu.zip + Gaiapolis (ver UAF) + A far away land filled with monsters and under the hand of an evil king is on the edge of destruction. Only a small group of brave heroes (a dragon warrior, a fairy & a prince) dare to step forth to look for the legendary sword of the Golden Hawk hidden in the flying citadel known as Gaiapolis in order to topple the evil king and bring peace to this troubled land. Features some very nice 2-D graphics, awesome character & enemy artwork designs, a superb soundtrack and addicting hack & slash action with some RPG characteristics (characters & weapons level up, plenty of magic spells & summons). If you enjoyed Taito's Cadash, this game is for you! + +This game features a password system that allows players to continue the game where they left it. + 0.60 + 19930101T000000 + Konami + Konami + Fight / Vertical + 2922 + 1-2 + gaiapols.zip + Konami Classics + 270 + 376x224 + media/mixrbv2/gaiapols.png + + + + gwarrior.zip + Galactic Warriors + An early fighter where 3 selectable robots do battle against various space enemies. + 0.30 + 19850101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/gwarrior.png + + + + galaga88.zip + Galaga '88 + Galaga '88 is an updated version of the old favorite, "Galaga", with more invaders and more player firepower. Galaga '88 gives players a chance to once again repel the invaders from the Galagan Kingdom. One or two players can try their hand at fighting the invaders. This time the Galagans have four more allies, each with unique weapons and defenses that a player must overcome. + +By destroying special enemies or obstacles the player can get 'items'. When a player has two items, they can warp to another dimension to confront more Galagan ships with new strategies. In the Challenging Stages (labelled in this game as 'That's Galactic Dancin'), the player shoots down as many invaders as possible as the Galagans dance to a waltz, tango, march or jazz tune. + +The player selects single or dual ship power. The objective is to destroy all the Galagan foes in each of the 29 sectors of the galaxy, with each sector more difficult than the last. + +Unique Features: +More opponents. In addition to Boss, Goei and Zako, the original Galagan crew, Don, Nin, Ban, and Gan have been added. Each of the Galagans has a unique way of challenging the players. +Different types of ships. Players can choose single or dual ships (if the game option is set for dual and single). When the player retrieves a dual ship from the Boss's tractor beam, it turns into a triple ship with ten times the power of a single ship. +Challenging Stages. In the 'That's Galactic Dancin' stages, the Galagan invaders dance to a waltz, tango, Sousa march or jazz tune, while the player shoots down Galagans to earn bonus points. +Warping to a new dimension. By destroying particular enemies or obstacles and capturing two of their items, the player can warp to the next dimension. +Player challenge. Each dimension has different mix of Galagans with different strategies to be overcome. +Win back captured ships. The player can win back ships captured in the Boss Galaga's tractor beam. When the player destroys the Boss, the ships are released. If the player retrieves them, the ships become dual ships if they were single and triple if they were dual. +High Score Mode. Upon completing a game, a player can enter his initials if they are among the top eight scorers on the game. + 0.90 + 19870101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga88.png + + + + galaga88a.zip + Galaga '88 (02-03-88) + Galaga '88 is an updated version of the old favorite, "Galaga", with more invaders and more player firepower. Galaga '88 gives players a chance to once again repel the invaders from the Galagan Kingdom. One or two players can try their hand at fighting the invaders. This time the Galagans have four more allies, each with unique weapons and defenses that a player must overcome. + +By destroying special enemies or obstacles the player can get 'items'. When a player has two items, they can warp to another dimension to confront more Galagan ships with new strategies. In the Challenging Stages (labelled in this game as 'That's Galactic Dancin'), the player shoots down as many invaders as possible as the Galagans dance to a waltz, tango, march or jazz tune. + +The player selects single or dual ship power. The objective is to destroy all the Galagan foes in each of the 29 sectors of the galaxy, with each sector more difficult than the last. + +Unique Features: +More opponents. In addition to Boss, Goei and Zako, the original Galagan crew, Don, Nin, Ban, and Gan have been added. Each of the Galagans has a unique way of challenging the players. +Different types of ships. Players can choose single or dual ships (if the game option is set for dual and single). When the player retrieves a dual ship from the Boss's tractor beam, it turns into a triple ship with ten times the power of a single ship. +Challenging Stages. In the 'That's Galactic Dancin' stages, the Galagan invaders dance to a waltz, tango, Sousa march or jazz tune, while the player shoots down Galagans to earn bonus points. +Warping to a new dimension. By destroying particular enemies or obstacles and capturing two of their items, the player can warp to the next dimension. +Player challenge. Each dimension has different mix of Galagans with different strategies to be overcome. +Win back captured ships. The player can win back ships captured in the Boss Galaga's tractor beam. When the player destroys the Boss, the ships are released. If the player retrieves them, the ships become dual ships if they were single and triple if they were dual. +High Score Mode. Upon completing a game, a player can enter his initials if they are among the top eight scorers on the game. + 0.90 + 19870101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + galaga88.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga88.png + + + + galaga88j.zip + Galaga '88 (Japan) + Galaga '88 is an updated version of the old favorite, "Galaga", with more invaders and more player firepower. Galaga '88 gives players a chance to once again repel the invaders from the Galagan Kingdom. One or two players can try their hand at fighting the invaders. This time the Galagans have four more allies, each with unique weapons and defenses that a player must overcome. + +By destroying special enemies or obstacles the player can get 'items'. When a player has two items, they can warp to another dimension to confront more Galagan ships with new strategies. In the Challenging Stages (labelled in this game as 'That's Galactic Dancin'), the player shoots down as many invaders as possible as the Galagans dance to a waltz, tango, march or jazz tune. + +The player selects single or dual ship power. The objective is to destroy all the Galagan foes in each of the 29 sectors of the galaxy, with each sector more difficult than the last. + +Unique Features: +More opponents. In addition to Boss, Goei and Zako, the original Galagan crew, Don, Nin, Ban, and Gan have been added. Each of the Galagans has a unique way of challenging the players. +Different types of ships. Players can choose single or dual ships (if the game option is set for dual and single). When the player retrieves a dual ship from the Boss's tractor beam, it turns into a triple ship with ten times the power of a single ship. +Challenging Stages. In the 'That's Galactic Dancin' stages, the Galagan invaders dance to a waltz, tango, Sousa march or jazz tune, while the player shoots down Galagans to earn bonus points. +Warping to a new dimension. By destroying particular enemies or obstacles and capturing two of their items, the player can warp to the next dimension. +Player challenge. Each dimension has different mix of Galagans with different strategies to be overcome. +Win back captured ships. The player can win back ships captured in the Boss Galaga's tractor beam. When the player destroys the Boss, the ships are released. If the player retrieves them, the ships become dual ships if they were single and triple if they were dual. +High Score Mode. Upon completing a game, a player can enter his initials if they are among the top eight scorers on the game. + 0.90 + 19870101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + galaga88.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga88.png + + + + galagamf.zip + Galaga (Midway set 1 with fast shoot hack) + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + galagamw.zip + Galaga (Midway set 1) + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + galagamk.zip + Galaga (Midway set 2) + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + galaga.zip + Galaga (Namco rev. B) + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + galagao.zip + Galaga (Namco) + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + galaga3a.zip + Galaga 3 (GP3 rev. C) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + galaga3.zip + Galaga 3 (GP3 rev. D) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + galaga3b.zip + Galaga 3 (GP3) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + galaga3c.zip + Galaga 3 (set 4) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + galaga3m.zip + Galaga 3 (set 5) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + neogalag.zip + Galaga Demo (set 1) + Neo-Geo + media/mixrbv2/neogalag.png + + + neogalaga.zip + Galaga Demo (set 2) + neogalag.zip + Neo-Geo + media/mixrbv2/neogalag.png + + + galaktron.zip + Galaktron (Petaco S.A.) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxbsf.zip + Galaxian (bootleg, set 1) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianbl.zip + Galaxian (bootleg, set 2) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxbsf2.zip + Galaxian (bootleg, set 3) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianbl2.zip + Galaxian (bootleg, set 4) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxcirsa.zip + Galaxian (Cirsa Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianem.zip + Galaxian (Electromar Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxiani.zip + Galaxian (Irem) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianm.zip + Galaxian (Midway set 1) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianmo.zip + Galaxian (Midway set 2) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxian.zip + Galaxian (Namco set 1) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxiana.zip + Galaxian (Namco set 2) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxrf.zip + Galaxian (Recreativos Franco S.A. Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianrp.zip + Galaxian (Rene Pierre bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxianbl3.zip + Galaxian (Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxiant.zip + Galaxian (Taito) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxrcgg.zip + Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Covadonga Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galaxrfgg.zip + Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galap4.zip + Galaxian Part 4 (hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galapx.zip + Galaxian Part X (moonaln hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + tst_galx.zip + Galaxian Test ROM + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galturbo.zip + Galaxian Turbo (superg hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galemp.zip + Galaxy Empire (bootleg?) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + galaxyfg.zip + Galaxy Fight - Universal Warriors + People have prayed to the gods, but the devil descends from the sky. Your mission is to defeat Felden Kryse, ruler of the underworld. The fantastic challenge ferociously unfolds on eight different planets. Screen image changes on-the-fly to zoom in and out based on how the battle unfolds. Use Dash to your utmost advantage, and speed through the field of infinity. + 0.75 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/galaxyfg.png + + + + gforce2.zip + Galaxy Force 2 + Galaxy Force II is a superb sprite-scaling shoot-em-up from Sega, in which a single player must battle their way through a number of superbly rendered, space-themed levels. Action switches between open space battles and planet-based levels; with tight, enemy packed tunnel sections (enemy bases) seperating each level. + 0.70 + 19880101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + Sega Classics + 320x224 + media/mixrbv2/gforce2.png + + + + gforce2j.zip + Galaxy Force 2 (Japan) + Galaxy Force II is a superb sprite-scaling shoot-em-up from Sega, in which a single player must battle their way through a number of superbly rendered, space-themed levels. Action switches between open space battles and planet-based levels; with tight, enemy packed tunnel sections (enemy bases) seperating each level. + 0.70 + 19880101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + gforce2.zip + Sega Classics + 320x224 + media/mixrbv2/gforce2.png + + + + gforce2ja.zip + Galaxy Force 2 (Japan, Rev A) + Galaxy Force II is a superb sprite-scaling shoot-em-up from Sega, in which a single player must battle their way through a number of superbly rendered, space-themed levels. Action switches between open space battles and planet-based levels; with tight, enemy packed tunnel sections (enemy bases) seperating each level. + 0.70 + 19880101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + gforce2.zip + Sega Classics + 320x224 + media/mixrbv2/gforce2.png + + + + gforce2sd.zip + Galaxy Force 2 (Super Deluxe unit) + Galaxy Force II is a superb sprite-scaling shoot-em-up from Sega, in which a single player must battle their way through a number of superbly rendered, space-themed levels. Action switches between open space battles and planet-based levels; with tight, enemy packed tunnel sections (enemy bases) seperating each level. + 0.70 + 19880101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + gforce2.zip + Sega Classics + 320x224 + media/mixrbv2/gforce2.png + + + + galaxygn.zip + Galaxy Gunners + In Galaxy Gunners you must pilot a powerful spacecraft over alien cities and planets, moving at incredible speeds and blasting the hell out of anything you see! Fight a one man war against the evil forces and save the galaxy from total destruction as you blast enemies to pieces and collect awesome bonuses to further your campaign of destruction. + 0.50 + 19890101T000000 + Electronic Devices Italy + Electronic Devices Italy + Shoot'em Up + 79 + 1-2 + Mame + 270 + 352x256 + media/mixrbv2/galaxygn.png + + + + galwars2.zip + Galaxy Wars II (Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + galaxyx.zip + Galaxy X (bootleg of Galaxian) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + gallag.zip + Gallag + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + gallop.zip + Gallop - Armed police Unit (Japan, M72 hardware) + Hi-octane side-scrolling action, a spin-off from the popular R-Type series + 0.50 + 19910101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + cosmccop.zip + Irem Classics + 384x256 + media/mixrbv2/cosmccop.png + + + + galmedes.zip + Galmedes (Japan) + Galmedes is a vertical scrolling shooter arcade game released only in Japan.. The ship has two types of attack: the standard firing weapon and a charge attack. Once the player collects all three weapons, the player can select any of those weapons during combat. + +On the alien planet of Gaston, a dictator named Gildy rose to absolute power. Gildy started a plan to take over his home solar system, but upon doing so, he decided to spread his influence. After conquering his home galaxy, the next galaxy that Gildy planned on invading was the Galmedes Galaxy. In response, the unified forces of the planets of the Galmedes Galaxy have created a powerful space fighter known as the LEPTON (Launched Electro-Projectile Thermal Osmotic Nullifier). Two pilots, Foo and Bar, are selected to launch the LEPTON fighters against the invading Gastonian Forces. + 0.50 + 19920101T000000 + Visco + Visco + Shoot'em Up + 79 + 1-2 + Visco + 270 + 320x240 + media/mixrbv2/galmedes.png + + + + galhustl.zip + Gals Hustler + 19960101T000000 + A.C.E. + A.C.E. + Sports / Pool + 3028 + pgalvip.zip + Comad + 256x224 + media/mixrbv2/pgalvip.png + + + + galpanic.zip + Gals Panic (Unprotected) + Gals Panic! is a "Qix"-style adult puzzle game. The objective is to reveal 80% of the silhouetted girl's image within the time limit while avoiding the enemies. + +To complicate things, there is a bar with a pointer at the top of the screen. If the pointer dips below a certain level (indicated by the change in color) the image will change to that of a monster. The pointer slowly creeps towards the monster side of the bar over time and whenever the player reveals a significant piece of the silhouette. Revealing the un-silhouetted part of the image moves the pointer back towards the girl side of the bar. If a round is completed while the monster's image is shown then the round must be repeated. + +After every round there is a roulette game where the player can earn rewards or penalties that will take effect in the following round. + +After winning three rounds against a girl, the graphic becomes a photographic image of that girl. + 0.70 + 19900101T000000 + Kaneko + Kaneko + Puzzle-Game + 26 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/galpanic.png + + + + galspnbl.zip + Gals Pinball + Gals Pinball (c) 1996 Comad. A video-pinball game with girls... lots of girls. - TECHNICAL - Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : YM3812 (@ 3.579545 Mhz), OKI6295 (@ 8 Khz) Screen orientation : Vertical Video resolution + 19960101T000000 + Comad + Pinball + 31 + 1 + Comad + 90 + 512x224 + media/mixrbv2/galspnbl.png + + + + usg182.zip + Games V18.2 + Games (c) 1991 U.S. Games. - TECHNICAL - Main CPU : M6809 (@ 2 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 400 x 248 pixels Screen refresh : 60.00 Hz Palette colors : 16 Players : 1 Buttons : 5 - SOURCES - + 19920101T000000 + U.S. Games + Casino + 320 + 1-4 + usgames.zip + Mame + 400x248 + media/mixrbv2/usgames.png + + + + usg185.zip + Games V18.5 + Games (c) 1991 U.S. Games. - TECHNICAL - Main CPU : M6809 (@ 2 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 400 x 248 pixels Screen refresh : 60.00 Hz Palette colors : 16 Players : 1 Buttons : 5 - SOURCES - + 19920101T000000 + U.S. Games + Casino + 320 + 1-4 + usgames.zip + Mame + 400x248 + media/mixrbv2/usgames.png + + + + usg187c.zip + Games V18.7C + Games (c) 1991 U.S. Games. - TECHNICAL - Main CPU : M6809 (@ 2 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 400 x 248 pixels Screen refresh : 60.00 Hz Palette colors : 16 Players : 1 Buttons : 5 - SOURCES - + 19920101T000000 + U.S. Games + Casino + 320 + 1-4 + usgames.zip + Mame + 400x248 + media/mixrbv2/usgames.png + + + + usgames.zip + Games V25.4X + Games (c) 1991 U.S. Games. - TECHNICAL - Main CPU : M6809 (@ 2 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 400 x 248 pixels Screen refresh : 60.00 Hz Palette colors : 16 Players : 1 Buttons : 5 - SOURCES - + 19920101T000000 + U.S. Games + Casino + 320 + 1-4 + Mame + 400x248 + media/mixrbv2/usgames.png + + + + ginkun.zip + Ganbare Ginkun + The title of this mini-game pack can be translated from Japanese as 'Good Luck, Ginkun - Action Minigame Meet'. +The bike minigame (where you must stop your bike) has the Boss music from "Final Star Force" (1992, Tecmo). + 0.70 + 19950101T000000 + Tecmo + Tecmo + Compilation + 34 + 1-2 + Tecmo + 256x224 + media/mixrbv2/ginkun.png + + + + ganbare.zip + Ganbare! Marine Kun (Marine 2K0411 JPN) + Ganbare Marin-kun is the final and probably rarest game released on CPS1. I don't know anyone who had even heard of it until it showed up for sale. It's a medal game but along with Tobikose Jumpman and Alien, the best of them I have seen. The music rips off several things including the Indiana Jones theme song. + 0.70 + 20000101T000000 + Capcom + Capcom + Shooter / 3rd person + 2899 + 1 + Capcom Play System + 384x224 + media/mixrbv2/ganbare.png + + + + gbusters.zip + Gang Busters (set 1) + Collect criminals while gunning down hundreds of others in this shooter from Konami. + 0.70 + 19880101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/gbusters.png + + + + gbustersa.zip + Gang Busters (set 2) + Collect criminals while gunning down hundreds of others in this shooter from Konami. + 0.70 + 19880101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + gbusters.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/gbusters.png + + + + ghunter.zip + Gang Hunter / Dead Angle + Armed only with your trusty Tommy gun, you must exterminate all the main gangster families in order to reach the main kingpin so you can save your girl. Beware, they are waiting for you and will not go down without put + 0.50 + 19880101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1-2 + deadang.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/deadang.png + + + + ghunters.zip + Gang Hunter / Dead Angle (Spain) + Armed only with your trusty Tommy gun, you must exterminate all the main gangster families in order to reach the main kingpin so you can save your girl. Beware, they are waiting for you and will not go down without put + 0.50 + 19880101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1-2 + deadang.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/deadang.png + + + + gangwars.zip + Gang Wars + 2 street brawlers fight their way through a gang of hoodlums that like to laugh incessantly at you while they're beating you up! Features customizable statistics for your fighter. + 0.70 + 19890101T000000 + ADK + SNK + Beat'em Up + 1 + 1-2 + Alpha Denshi Co. + 256x224 + media/mixrbv2/gangwars.png + + + + gangwarsb.zip + Gang Wars (bootleg) + 2 street brawlers fight their way through a gang of hoodlums that like to laugh incessantly at you while they're beating you up! Features customizable statistics for your fighter. + 0.70 + 19890101T000000 + ADK + SNK + Beat'em Up + 1 + 1-2 + gangwars.zip + Alpha Denshi Co. + 256x224 + media/mixrbv2/gangwars.png + + + + gangwarsj.zip + Gang Wars (Japan) + 2 street brawlers fight their way through a gang of hoodlums that like to laugh incessantly at you while they're beating you up! Features customizable statistics for your fighter. + 0.70 + 19890101T000000 + ADK + SNK + Beat'em Up + 1 + 1-2 + gangwars.zip + Alpha Denshi Co. + 256x224 + media/mixrbv2/gangwars.png + + + + gangwarsu.zip + Gang Wars (US) + 2 street brawlers fight their way through a gang of hoodlums that like to laugh incessantly at you while they're beating you up! Features customizable statistics for your fighter. + 0.70 + 19890101T000000 + ADK + SNK + Beat'em Up + 1 + 1-2 + gangwars.zip + Alpha Denshi Co. + 256x224 + media/mixrbv2/gangwars.png + + + + ganryu.zip + Ganryu / Musashi Ganryuki + One month has passed since Musashi defeated his sworn enemy, Kojiro. Musashi was on the way to Kyoto, where his beloved Otsu was waiting for him. Around this time, many abductions had occurred by a mysterious group of ninjas, and Otsu was one of the missing. What is the true purpose of these ninjas? The time to fight has come again for Musashi!! + +You must guide Musashi or his sister, Suzame, around several locations defeating a horde of ninjas with only a sword. Weapon power-ups and life bonuses can be collected along the way. You can jump high and use your grappling hook to attach to and climb some ceilings, as well as attaching yourself to faraway objects. At the end of each location, you must defeat a guardian in order to continue the game. Cut-scenes are viewed between locations. + 0.60 + 19990101T000000 + Visco + SNK + Platform + 7 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ganryu.png + + + + gaplusd.zip + Gaplus (GP2 rev D, alternate hardware) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + gaplus.zip + Gaplus (GP2 rev. B) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + gaplusa.zip + Gaplus (GP2) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + gaplust.zip + Gaplus (Tecfri PCB) + Gaplus is the third game in Namco's classic "Galaxian" series, Gaplus picks up where 1981's "Galaga" left off. While maintaining the same classic 'look' of its predecessor, Gaplus's graphics are a definite improvement over those of "Galaga"; the game's increased color palette and subtle use of shading making the attacking aliens look rather more solid. + 0.90 + 19840101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + gaplus.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/gaplus.png + + + + gardia.zip + Gardia (317-0006) + Gardia is extremely similar to Namco's Xevious. The player controls a space ship capable of firing at air targets with one button, and ground targets with another. There are weapon powerups and end bosses. + 0.50 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/gardia.png + + + + garogun.zip + Garogun Seroyang (Korea) + 0.70 + 20000101T000000 + Yun Sung + Yun Sung + Puzzle-Game + 26 + 1 + Mame + 320x240 + media/mixrbv2/garogun.png + + + + garoubl.zip + Garou - Mark of the Wolves (bootleg) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + garou.zip + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garoub.zip + Garou - Mark of the Wolves (Enable hidden characters) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + garou.zip + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garouha.zip + Garou - Mark of the Wolves (NGH-2530) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + garou.zip + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garou.zip + Garou - Mark of the Wolves (NGM-2530) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garouh.zip + Garou - Mark of the Wolves (NGM-2530) (NGH-2530) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + garou.zip + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garoup.zip + Garou - Mark of the Wolves (prototype) + It's been several years since Geese Howard was defeated in a battle with Terry Bogard, a young man looking to avenge his father. Rather than looking to be saved from death after falling off his office balcony, Geese instead decided to die, and left behind his young son, Rock. Terry took Rock in and became like a big brother to him, raising the boy throughout his life. + +Now Rock is a teenager, and Terry is a man in his 30s, and both are about to come together in a new clash...new faces and old come together for the greatest battle yet! + + 0.95 + 19990101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + garou.zip + Neo-Geo + 320x224 + media/mixrbv2/garou.png + + + + garuka.zip + Garuka (Japan ver. W) + Devastators is an early third-person shooter. Up to two players can take control of Rambo-style mercenaries with mullets. + 0.40 + 19880101T000000 + Konami + Konami + Shooter / 3rd person + 2899 + 1-2 + devstors.zip + Konami Classics + 270 + 304x224 + media/mixrbv2/devstors.png + + + + garyoret.zip + Garyo Retsuden (Japan) + Choose one of 3 characters and shoot at all advancing enemies. Collect items to increase your speed and firepower. + 0.50 + 19870101T000000 + Data East + Data East + Shooter / Run and Gun + 2903 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/garyoret.png + + + + gauntlet2pg1.zip + Gauntlet (2 Players, German, rev 1) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet2pg.zip + Gauntlet (2 Players, German, rev 4) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet2pj2.zip + Gauntlet (2 Players, Japanese rev 2) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet2pj.zip + Gauntlet (2 Players, Japanese, rev 5) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet2pr3.zip + Gauntlet (2 Players, rev 3) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet2p.zip + Gauntlet (2 Players, rev 6) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletg.zip + Gauntlet (German, rev 10) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletgr3.zip + Gauntlet (German, rev 3) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletgr6.zip + Gauntlet (German, rev 6) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletgr8.zip + Gauntlet (German, rev 8) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletj12.zip + Gauntlet (Japanese, rev 12) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletj.zip + Gauntlet (Japanese, rev 13) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr1.zip + Gauntlet (rev 1) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlet.zip + Gauntlet (rev 14) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr2.zip + Gauntlet (rev 2) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr4.zip + Gauntlet (rev 4) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr5.zip + Gauntlet (rev 5) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr7.zip + Gauntlet (rev 7) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntletr9.zip + Gauntlet (rev 9) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gauntlets.zip + Gauntlet (Spanish, rev 15) + Gauntlet is a maze-based shoot-em-up for up to four players. Heavily influenced by classic fantasy conventions, players take on the role of either Thor the Warrior, Thyra the Valkyrie, Merlin the Wizard, or Questor the Elf and must play cooperatively as they explore and fight their way through the enemy-packed mazes. Competitive play is encouraged as players must fight for the limited amount of food, treasure, magic potions and power-up items that litter the dungeons. + +Each of Gauntlet's four characters have different strengths and weaknesses: Thyra has the strongest armour, Thor is best at hand-to-hand combat, Questor has the fastest speed and Merlin has the most powerful magic attacks. The object of the game is simply to survive as long as possible while exploring Gauntlet's mazes in search of treasure, food, magic potions and, ultimately, the exit that leads to the next dungeon. + +The potions - shown as blue bottles - that litter the levels offer either improved character abilities (such as 'speed' or 'extra shot power') or can be used as a 'smart bomb', destroying some or all of the on-screen monsters. Potions are also the only way to kill the game's 'Death' character that appears in many of the stages. Magic potions can be kept and used at the player's discretion by pressing 'Magic' button, although each potion can only be used once. + +The first seven mazes are always the same, but from level 8 onwards, players will find themselves on any one of over a hundred different mazes. If players survive for long enough, the mazes will be repeated in a different order. How long a player lasts depends upon the player's 'health' level. Health continually depletes as time progresses and further health is lost by contact with various monsters or their projectiles. Health can be replenished by consuming the food found in the mazes or by inserting more credits. The many treasure chests that litter the levels can be plundered for points, and collecting treasure increases a player's score multiplier when two or more players are playing the game. + 0.70 + 19850101T000000 + Atari + Atari + Action + 10 + 1-4 + gauntlet.zip + Atari Classics + 336x240 + media/mixrbv2/gauntlet.png + + + + gaunt2.zip + Gauntlet II + Gauntlet II is a direct sequel to the legendary maze-based fantasy themed shoot-em-up, released a year earlier. Atari chose not to tinker with the core game-play mechanic to any great degree, opting instead to enhance the already excellent multi-player action that had created such a stir upon the original game's release. + +As with its prequel, up to four players once again take on the role of either 'Thor the Warrior', 'Thyra the Valkyrie', 'Merlin the Wizard', or 'Questor the Elf' and must play cooperatively as they explore and fight their way through the enemy-packed mazes, collecting potions, food and treasure as they searched for the exit that would lead them to the next dungeon. + +Changes to the sequel included the ability for players to play whatever character they wanted, even if that character was already in play. Characters were now colour-coded and players would find themselves taking on the role of 'Blue Elf', 'Green Wizard', etc. New in-game speech was added to allow for the new player definitions. + +Other changes included the ability to 'bounce' shots off walls - known as 'Reflective Shots' - providing the correct potion was picked up. As well as new potions, Gauntlet II also featured several new monsters. The most notorious of the new additions was the Fire-breathing Dragon that guards the exit to some dungeons. This powerful creature takes multiple hits to kill and defeating it would see the players rewarded with a permanent potion and a bag of treasure. + +Another notable addition was the 'It' monster: any player who was tagged by the creature would suddenly find that all of that level's monsters would ONLY chase the tagged player, completely ignoring the presence of all other players. The only way to remove this curse was to tag another player, thus making them 'it'. + +New level elements were also added to further increase variety. These included dungeons with entirely invisible walls, magical walls (which changed into monsters or items when hit), stun tiles (which stunned any player that walked on them) and exits that flashed between functioning and non-functioning. + 0.70 + 19860101T000000 + Atari + Atari + Action + 10 + 1-4 + Atari Classics + 336x240 + media/mixrbv2/gaunt2.png + + + + gaunt22pg.zip + Gauntlet II (2 Players, German) + Gauntlet II is a direct sequel to the legendary maze-based fantasy themed shoot-em-up, released a year earlier. Atari chose not to tinker with the core game-play mechanic to any great degree, opting instead to enhance the already excellent multi-player action that had created such a stir upon the original game's release. + +As with its prequel, up to four players once again take on the role of either 'Thor the Warrior', 'Thyra the Valkyrie', 'Merlin the Wizard', or 'Questor the Elf' and must play cooperatively as they explore and fight their way through the enemy-packed mazes, collecting potions, food and treasure as they searched for the exit that would lead them to the next dungeon. + +Changes to the sequel included the ability for players to play whatever character they wanted, even if that character was already in play. Characters were now colour-coded and players would find themselves taking on the role of 'Blue Elf', 'Green Wizard', etc. New in-game speech was added to allow for the new player definitions. + +Other changes included the ability to 'bounce' shots off walls - known as 'Reflective Shots' - providing the correct potion was picked up. As well as new potions, Gauntlet II also featured several new monsters. The most notorious of the new additions was the Fire-breathing Dragon that guards the exit to some dungeons. This powerful creature takes multiple hits to kill and defeating it would see the players rewarded with a permanent potion and a bag of treasure. + +Another notable addition was the 'It' monster: any player who was tagged by the creature would suddenly find that all of that level's monsters would ONLY chase the tagged player, completely ignoring the presence of all other players. The only way to remove this curse was to tag another player, thus making them 'it'. + +New level elements were also added to further increase variety. These included dungeons with entirely invisible walls, magical walls (which changed into monsters or items when hit), stun tiles (which stunned any player that walked on them) and exits that flashed between functioning and non-functioning. + 0.70 + 19860101T000000 + Atari + Atari + Action + 10 + 1-4 + gaunt2.zip + Atari Classics + 336x240 + media/mixrbv2/gaunt2.png + + + + gaunt22p1.zip + Gauntlet II (2 Players, rev 1) + Gauntlet II is a direct sequel to the legendary maze-based fantasy themed shoot-em-up, released a year earlier. Atari chose not to tinker with the core game-play mechanic to any great degree, opting instead to enhance the already excellent multi-player action that had created such a stir upon the original game's release. + +As with its prequel, up to four players once again take on the role of either 'Thor the Warrior', 'Thyra the Valkyrie', 'Merlin the Wizard', or 'Questor the Elf' and must play cooperatively as they explore and fight their way through the enemy-packed mazes, collecting potions, food and treasure as they searched for the exit that would lead them to the next dungeon. + +Changes to the sequel included the ability for players to play whatever character they wanted, even if that character was already in play. Characters were now colour-coded and players would find themselves taking on the role of 'Blue Elf', 'Green Wizard', etc. New in-game speech was added to allow for the new player definitions. + +Other changes included the ability to 'bounce' shots off walls - known as 'Reflective Shots' - providing the correct potion was picked up. As well as new potions, Gauntlet II also featured several new monsters. The most notorious of the new additions was the Fire-breathing Dragon that guards the exit to some dungeons. This powerful creature takes multiple hits to kill and defeating it would see the players rewarded with a permanent potion and a bag of treasure. + +Another notable addition was the 'It' monster: any player who was tagged by the creature would suddenly find that all of that level's monsters would ONLY chase the tagged player, completely ignoring the presence of all other players. The only way to remove this curse was to tag another player, thus making them 'it'. + +New level elements were also added to further increase variety. These included dungeons with entirely invisible walls, magical walls (which changed into monsters or items when hit), stun tiles (which stunned any player that walked on them) and exits that flashed between functioning and non-functioning. + 0.70 + 19860101T000000 + Atari + Atari + Action + 10 + 1-4 + gaunt2.zip + Atari Classics + 336x240 + media/mixrbv2/gaunt2.png + + + + gaunt22p.zip + Gauntlet II (2 Players, rev 2) + Gauntlet II is a direct sequel to the legendary maze-based fantasy themed shoot-em-up, released a year earlier. Atari chose not to tinker with the core game-play mechanic to any great degree, opting instead to enhance the already excellent multi-player action that had created such a stir upon the original game's release. + +As with its prequel, up to four players once again take on the role of either 'Thor the Warrior', 'Thyra the Valkyrie', 'Merlin the Wizard', or 'Questor the Elf' and must play cooperatively as they explore and fight their way through the enemy-packed mazes, collecting potions, food and treasure as they searched for the exit that would lead them to the next dungeon. + +Changes to the sequel included the ability for players to play whatever character they wanted, even if that character was already in play. Characters were now colour-coded and players would find themselves taking on the role of 'Blue Elf', 'Green Wizard', etc. New in-game speech was added to allow for the new player definitions. + +Other changes included the ability to 'bounce' shots off walls - known as 'Reflective Shots' - providing the correct potion was picked up. As well as new potions, Gauntlet II also featured several new monsters. The most notorious of the new additions was the Fire-breathing Dragon that guards the exit to some dungeons. This powerful creature takes multiple hits to kill and defeating it would see the players rewarded with a permanent potion and a bag of treasure. + +Another notable addition was the 'It' monster: any player who was tagged by the creature would suddenly find that all of that level's monsters would ONLY chase the tagged player, completely ignoring the presence of all other players. The only way to remove this curse was to tag another player, thus making them 'it'. + +New level elements were also added to further increase variety. These included dungeons with entirely invisible walls, magical walls (which changed into monsters or items when hit), stun tiles (which stunned any player that walked on them) and exits that flashed between functioning and non-functioning. + 0.70 + 19860101T000000 + Atari + Atari + Action + 10 + 1-4 + gaunt2.zip + Atari Classics + 336x240 + media/mixrbv2/gaunt2.png + + + + gaunt2g.zip + Gauntlet II (German) + Gauntlet II is a direct sequel to the legendary maze-based fantasy themed shoot-em-up, released a year earlier. Atari chose not to tinker with the core game-play mechanic to any great degree, opting instead to enhance the already excellent multi-player action that had created such a stir upon the original game's release. + +As with its prequel, up to four players once again take on the role of either 'Thor the Warrior', 'Thyra the Valkyrie', 'Merlin the Wizard', or 'Questor the Elf' and must play cooperatively as they explore and fight their way through the enemy-packed mazes, collecting potions, food and treasure as they searched for the exit that would lead them to the next dungeon. + +Changes to the sequel included the ability for players to play whatever character they wanted, even if that character was already in play. Characters were now colour-coded and players would find themselves taking on the role of 'Blue Elf', 'Green Wizard', etc. New in-game speech was added to allow for the new player definitions. + +Other changes included the ability to 'bounce' shots off walls - known as 'Reflective Shots' - providing the correct potion was picked up. As well as new potions, Gauntlet II also featured several new monsters. The most notorious of the new additions was the Fire-breathing Dragon that guards the exit to some dungeons. This powerful creature takes multiple hits to kill and defeating it would see the players rewarded with a permanent potion and a bag of treasure. + +Another notable addition was the 'It' monster: any player who was tagged by the creature would suddenly find that all of that level's monsters would ONLY chase the tagged player, completely ignoring the presence of all other players. The only way to remove this curse was to tag another player, thus making them 'it'. + +New level elements were also added to further increase variety. These included dungeons with entirely invisible walls, magical walls (which changed into monsters or items when hit), stun tiles (which stunned any player that walked on them) and exits that flashed between functioning and non-functioning. + 0.70 + 19860101T000000 + Atari + Atari + Action + 10 + 1-4 + gaunt2.zip + Atari Classics + 336x240 + media/mixrbv2/gaunt2.png + + + + geebeeb.zip + Gee Bee (Europe) + Gee Bee is a Pinball-flavored ball-and-paddle game. + 0.30 + 19780101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + geebee.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/geebee.png + + + + geebee.zip + Gee Bee (Japan) + Gee Bee is a Pinball-flavored ball-and-paddle game. + 0.30 + 19780101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/geebee.png + + + + geebeea.zip + Gee Bee (UK) + Gee Bee is a Pinball-flavored ball-and-paddle game. + 0.30 + 19780101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + geebee.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/geebee.png + + + + geebeeg.zip + Gee Bee (US) + Gee Bee is a Pinball-flavored ball-and-paddle game. + 0.30 + 19780101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + geebee.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/geebee.png + + + + geminij.zip + Gemini Wing (Japan) + A vertically scrolling shooter. Destroy enemies and collect items, such as speed, that are stored in a tail behind your ship. Press the second button to activate them one by one in the order they were collected. + 0.50 + 19870101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + gemini.zip + Tecmo + 270 + 256x224 + media/mixrbv2/gemini.png + + + + gemini.zip + Gemini Wing (World) + A vertically scrolling shooter. Destroy enemies and collect items, such as speed, that are stored in a tail behind your ship. Press the second button to activate them one by one in the order they were collected. + 0.50 + 19870101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + Tecmo + 270 + 256x224 + media/mixrbv2/gemini.png + + + + geminib.zip + Gemini Wing (World, bootleg) + A vertically scrolling shooter. Destroy enemies and collect items, such as speed, that are stored in a tail behind your ship. Press the second button to activate them one by one in the order they were collected. + 0.50 + 19870101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + gemini.zip + Tecmo + 270 + 256x224 + media/mixrbv2/gemini.png + + + + genix.zip + Genix Family + A rip-off of Mitchell's "Pang" set in the Far-West. + 0.50 + 19940101T000000 + NIX + NIX + Shooter / 3rd person + 2899 + 1-2 + Mame + 288x224 + media/mixrbv2/genix.png + + + + genpeitd.zip + Genpei ToumaDen + Genpei Touma Den is a multi-genre birds-eye view action, 2D side-scroller beat 'em up, and 2D side-scroller platform arcade game that was released by Namco in 1986 only in Japan. + +The character controlled by the player is that of a real Japanese samurai, Taira no Kagekiyo, who fell at the Battle of Dan-no-ura at the end of the Genpei War in 1185. Over eight hundred years later he is resurrected and has to make his way over the Imperial Regalia of Japan - fighting other characters who actually existed such as Minamoto no Yoshitsune and Saito Musashibo Benkei on his travels, as well as collecting the three sacred game items and defeating his arch-enemy Minamoto no Yoritomo. + 0.50 + 19860101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/genpeitd.png + + + + gensitou.zip + Genshi-Tou 1930's (Japan) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + prehisle.zip + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + getstarb1.zip + Get Star (bootleg set 1) + Fight your way across various planetscapes and defeat a boss character to clear that planet. Then move on to another planet, each with a different theme. + 19860101T000000 + Toaplan + Fight + 14 + 1-2 + grdian.zip + Taito Classics + 280x240 + media/mixrbv2/grdian.png + + + + getstarb2.zip + Get Star (bootleg set 2) + Fight your way across various planetscapes and defeat a boss character to clear that planet. Then move on to another planet, each with a different theme. + 19860101T000000 + Toaplan + Fight + 14 + 1-2 + grdian.zip + Taito Classics + 280x240 + media/mixrbv2/grdian.png + + + + getstarj.zip + Get Star (Japan) + Fight your way across various planetscapes and defeat a boss character to clear that planet. Then move on to another planet, each with a different theme. + 19860101T000000 + Toaplan + Fight + 14 + 1-2 + grdian.zip + Taito Classics + 280x240 + media/mixrbv2/grdian.png + + + + ghostbi.zip + Ghost Busters (FMV Demo) + Neo-Geo + media/mixrbv2/ghostbi.png + + + ghostmun.zip + Ghost Muncher + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + gpilotsh.zip + Ghost Pilots (NGH-020)(US) + Ghost Pilots is an overhead military plane shooter, in which you must shoot down fighter jets by either using bullets or bombs. Once you have killed enough fighter jets, you will have to defeat a boss fighter jet in order to continue. After some stages, you must select a route to continue your journey on. Power-ups can be collected that will increase your firepower, and stars can be obtained for extra points. + 0.80 + 19910101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + gpilots.zip + Neo-Geo + 320x224 + media/mixrbv2/gpilots.png + + + + gpilots.zip + Ghost Pilots (NGM-020)(NGH-020) + Ghost Pilots is an overhead military plane shooter, in which you must shoot down fighter jets by either using bullets or bombs. Once you have killed enough fighter jets, you will have to defeat a boss fighter jet in order to continue. After some stages, you must select a route to continue your journey on. Power-ups can be collected that will increase your firepower, and stars can be obtained for extra points. + 0.80 + 19910101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/gpilots.png + + + + gpilotsp.zip + Ghost Pilots (prototype) + Ghost Pilots is an overhead military plane shooter, in which you must shoot down fighter jets by either using bullets or bombs. Once you have killed enough fighter jets, you will have to defeat a boss fighter jet in order to continue. After some stages, you must select a route to continue your journey on. Power-ups can be collected that will increase your firepower, and stars can be obtained for extra points. + 0.80 + 19910101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + gpilots.zip + Neo-Geo + 320x224 + media/mixrbv2/gpilots.png + + + + ghostlop.zip + Ghostlop (prototype) + Ghost Lop is an excellent Ghostbusters themed puzzle game by Data East from 1996. It combines the fast action of an Arkanoid style game, with the quick thinking of a Bust-A-Move type game. The game was re-considered for release in 2001, but SNK's untimely demise later that same year may have ended that possibility. Data East was best known for its' Chain Reaction / Magical Drop series of puzzle games, and even later included the Ghostlop characters in one of the later releases for modern home game systems. + 0.70 + 19960101T000000 + Data East + Data East + Puzzle-Game / Throw + 2923 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ghostlop.png + + + + gmgalax.zip + Ghostmuncher Galaxian (bootleg) + This is a copy of Pac-Man / Puck-Man except the colors have been changed, as have the sounds and names of the ghosts. Eat all the dots while avoiding the ghosts. Eat power pellets so you can eat ghosts. Collect fruit for bonus points. + 0.30 + 19810101T000000 + bootleg + bootleg + Compilation + 34 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/gmgalax.png + + + + gngbl.zip + Ghosts'n Goblins (bootleg with Cross) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gngbla.zip + Ghosts'n Goblins (bootleg, harder) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gngblita.zip + Ghosts'n Goblins (Italian bootleg, harder) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gngprot.zip + Ghosts'n Goblins (prototype) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gngt.zip + Ghosts'n Goblins (US) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gngc.zip + Ghosts'n Goblins (World Revision C) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gng.zip + Ghosts'n Goblins (World? set 1) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + gnga.zip + Ghosts'n Goblins (World? set 2) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + ghoulsu.zip + Ghouls'n Ghosts (US) + Three years have passed since the events of "Ghosts'n Goblins" and the knight Arthur finds himself once again facing the horrible creatures of Demon World. This time the demons have invaded the kingdom and upon his return, Arthur is the only survivor, his beloved Genever having been killed by Lucifer. Arthur embarks once again on a quest to defeat the demonic invaders and save Genever's soul. + 0.90 + 19880101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + ghouls.zip + Capcom Play System + 384x224 + media/mixrbv2/ghouls.png + + + + ghouls.zip + Ghouls'n Ghosts (World) + Three years have passed since the events of "Ghosts'n Goblins" and the knight Arthur finds himself once again facing the horrible creatures of Demon World. This time the demons have invaded the kingdom and upon his return, Arthur is the only survivor, his beloved Genever having been killed by Lucifer. Arthur embarks once again on a quest to defeat the demonic invaders and save Genever's soul. + 0.90 + 19880101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/ghouls.png + + + + ghoxj.zip + Ghox (joystick) + Under the spell of the evil Magician Jagula, who plots to conquer the world, Lucia, the goddess of light, is confined by the gates of the Netherworld. A dark age is ushered in and evil spirits from mountains and rivers roam throughout the world. + +Deeply affected by the horror of the world, King Gitane of the Akura Empire summons two burly and brave men from the Eastern Country and orders them to subdue Jagula. + +These 2 heroes journey through the evil spirits' lair which is cut off from the exclusive pious area. Freely manipulating their magic balls, Axis and Bilious plung into action. + 0.90 + 19910101T000000 + Toaplan + Toaplan + Action / Breakout games + 2917 + 1-2 + ghox.zip + Toaplan + 270 + 320x240 + media/mixrbv2/ghox.png + + + + ghoxjo.zip + Ghox (joystick, older) + Under the spell of the evil Magician Jagula, who plots to conquer the world, Lucia, the goddess of light, is confined by the gates of the Netherworld. A dark age is ushered in and evil spirits from mountains and rivers roam throughout the world. + +Deeply affected by the horror of the world, King Gitane of the Akura Empire summons two burly and brave men from the Eastern Country and orders them to subdue Jagula. + +These 2 heroes journey through the evil spirits' lair which is cut off from the exclusive pious area. Freely manipulating their magic balls, Axis and Bilious plung into action. + 0.90 + 19910101T000000 + Toaplan + Toaplan + Action / Breakout games + 2917 + 1-2 + ghox.zip + Toaplan + 270 + 320x240 + media/mixrbv2/ghox.png + + + + ghox.zip + Ghox (spinner) + Under the spell of the evil Magician Jagula, who plots to conquer the world, Lucia, the goddess of light, is confined by the gates of the Netherworld. A dark age is ushered in and evil spirits from mountains and rivers roam throughout the world. + +Deeply affected by the horror of the world, King Gitane of the Akura Empire summons two burly and brave men from the Eastern Country and orders them to subdue Jagula. + +These 2 heroes journey through the evil spirits' lair which is cut off from the exclusive pious area. Freely manipulating their magic balls, Axis and Bilious plung into action. + 0.90 + 19910101T000000 + Toaplan + Toaplan + Action / Breakout games + 2917 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/ghox.png + + + + gigawinga.zip + Giga Wing (990222 Asia) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawingb.zip + Giga Wing (990222 Brazil) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawingh.zip + Giga Wing (990222 Hispanic) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawingd.zip + Giga Wing (990222 USA Phoenix Edition) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawing.zip + Giga Wing (990222 USA) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawingjd.zip + Giga Wing (990223 Japan Phoenix Edition) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigawingj.zip + Giga Wing (990223 Japan) + 'Medallions' are mystic stones sent from heaven, brought evolution to human technology and lead tremendous progress to the armories. To gain their powers which the 'Stones' hold for the promised victory, many nations fought over the mystic stones and reheated the world of war. Within all the 'Stones' is the 'Medallion of Wisdom', known as the power source of all mystic stones, it had enough energy to terminate humanity. The whole world was in despair. And now, four brave worriers have risen to fly straight into the combat zone! All four had different reasons, but their ultimate goal was the same: to destroy the Medallion of Wisdom! Fight to save the humanity! + +Giga Wing is a shoot-em-up set during a fictional war. The player controls one of four different futuristic aircraft and must destroy enemy aircraft, tanks, ships, and buildings using both guns and missiles mounted on the aircraft and a limited supply of bombs which damage or destroy all enemies on-screen when used. + 0.85 + 19990101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + gigawing.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/gigawing.png + + + + gigaman2.zip + Gigaman 2: The Power Fighters (bootleg) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + gigandes.zip + Gigandes + A horizontal shooter with a twist. If you die, you get to keep your weapons and power-ups, but at the beginning of each stage you lose everything. + 0.60 + 19890101T000000 + East Technology + East Technology + Shoot'em Up + 79 + 1-2 + Taito Classics + 384x240 + media/mixrbv2/gigandes.png + + + + gigandesa.zip + Gigandes (earlier) + A horizontal shooter with a twist. If you die, you get to keep your weapons and power-ups, but at the beginning of each stage you lose everything. + 0.60 + 19890101T000000 + East Technology + East Technology + Shoot'em Up + 79 + 1-2 + gigandes.zip + Taito Classics + 384x240 + media/mixrbv2/gigandes.png + + + + gigasb.zip + Gigas (bootleg) + Gigas is a 'breakout'-style from Sega. + 0.80 + 19860101T000000 + SEGA + SEGA + Action / Breakout games + 2917 + 1-2 + gigas.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/gigas.png + + + + gigas.zip + Gigas (MC-8123, 317-5002) + Gigas is a 'breakout'-style from Sega. + 0.80 + 19860101T000000 + SEGA + SEGA + Action / Breakout games + 2917 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/gigas.png + + + + gigasm2b.zip + Gigas Mark II + Gigas Mark II is a ball and paddle game from Sega featuring 32 levels. + 0.70 + 19860101T000000 + bootleg + bootleg + Action / Breakout games + 2917 + 1-2 + gigasm2.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/gigasm2.png + + + + gigasm2.zip + Gigas Mark II (MC-8123, 317-5002) + Gigas Mark II is a ball and paddle game from Sega featuring 32 levels. + 0.70 + 19860101T000000 + bootleg + bootleg + Action / Breakout games + 2917 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/gigasm2.png + + + + ginganin.zip + Ginga NinkyouDen (set 1) + Fight through enemies to rescue your kidnapped girlfriend. + 0.50 + 19870101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + Jaleco + 256x224 + media/mixrbv2/ginganin.png + + + + ginganina.zip + Ginga NinkyouDen (set 2) + Fight through enemies to rescue your kidnapped girlfriend. + 0.50 + 19870101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + ginganin.zip + Jaleco + 256x224 + media/mixrbv2/ginganin.png + + + + gteikoku.zip + Gingateikoku No Gyakushu + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + gteikokub.zip + Gingateikoku No Gyakushu (bootleg set 1) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + gteikokub2.zip + Gingateikoku No Gyakushu (bootleg set 2) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + gladiatr.zip + Gladiator (US) + The player controls a gladiator/knight named Great Guaranos as he walks through a castle. Moving the joystick left and right moves Great Guaranos left and right, and up and down is used to position Great Guaranos's shield. The game's three buttons correspond to a high, medium, and low attack with Great Guaranos's sword. Gladiator consists of 4 Stages. The first level is the 'Underground Chamber', 2nd is the 'Brick Corridor', 3rd is the 'Roof Top' stage, and the 4th stage is called the 'Mysterious 4-D World'. Your reward for completing the game is to enter the "Treasure Place". + 0.40 + 19860101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/gladiatr.png + + + + sgladiat.zip + Gladiator 1984 + Ride on your horse and jump over obstacles or avoid them with your chariot. + 0.70 + 19840101T000000 + SNK + SNK + Platform / Run Jump + 2915 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/sgladiat.png + + + + glass10.zip + Glass (Ver 1.0, Break Edition) (set 1) + SERIE +Splash! (1992) +Glass (1993) + 0.60 + 19940101T000000 + OMK Software + Shooter + 2646 + 1-2 + glass.zip + Gaelco + 368x240 + media/mixrbv2/glass.png + + + + glass10a.zip + Glass (Ver 1.0, Break Edition) (set 2) + SERIE +Splash! (1992) +Glass (1993) + 0.60 + 19940101T000000 + OMK Software + Shooter + 2646 + 1-2 + glass.zip + Gaelco + 368x240 + media/mixrbv2/glass.png + + + + glass.zip + Glass (Ver 1.1, Break Edition, Version 1994) + SERIE +Splash! (1992) +Glass (1993) + 0.60 + 19940101T000000 + OMK Software + Shooter + 2646 + 1-2 + Gaelco + 368x240 + media/mixrbv2/glass.png + + + + glasskr.zip + Glass (Ver 1.1, Break Edition, Version 1994) (censored, unprotected) + SERIE +Splash! (1992) +Glass (1993) + 0.60 + 19940101T000000 + OMK Software + Shooter + 2646 + 1-2 + glass.zip + Gaelco + 368x240 + media/mixrbv2/glass.png + + + + go2000.zip + Go 2000 + 0.50 + 20000101T000000 + Saba Videoplay + SunA + Hanafuda + 2882 + 1 + Mame + 384x224 + media/mixrbv2/go2000.png + + + + gogold.zip + Go For The Gold (Japan) + Recordbreaker is an Olympic sports game from Taito. Compete in different events and go for the gold medal. + 0.50 + 19880101T000000 + Taito + Taito + Sports / Running trails + 2877 + 1-2 + recordbr.zip + Taito Classics + 320x240 + media/mixrbv2/recordbr.png + + + + yamagchi.zip + Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun + In Go Go Mr. Yamaguchi - Jungle Survival, you control a jungle explorer named Mr. Yamaguchi who shoots at natives and other enemies. + 0.50 + 19850101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/yamagchi.png + + + + goalx3.zip + Goal! Goal! Goal! + A soccer game with all the right ingredients, skill, flair, passion, and of course, GOALS! With 28 national teams to choose from, compete in a tournament to become the best soccer nation in the world. Get past the opening group stage and go on to a round-robin elimination stage where failure is not an option. To help you on your way, hold down the shoot button until the power bar fills up and you can do a POWERFUL SUPER SHOT! + 0.50 + 19950101T000000 + Visco + SNK + Sports / Soccer + 2847 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/goalx3.png + + + + godzilla.zip + Godzilla (Japan) + This arcade game has a few monsters that are playable, a few that can't be played as and a few that make cameos. All playable monsters in the 1 Player game (except for the one you play as) have many more abilities than what can be accessed in Battle Mode. All monsters can jump, jump and kick/punch, do a tail swipe, grab and throw, punch and kick, and block. Most have a beam weapon, though some don't. All playable monsters have alternate colors to distinguish between the same monster in muliplayer mode. + 0.60 + 19930101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + Banpresto + 320x224 + media/mixrbv2/godzilla.png + + + + goindolj.zip + Goindol (Japan) + Let's Smash Blocks! Fighting between primitive 'Goindol' guardian blocks in eolithic age and adventurers of civilized world 100 rounds full of variety and excitement 16 pictures added for bonus. + 19870101T000000 + SunA + SunA + Action / Breakout games + 2917 + 1-2 + goindol.zip + Mame + 270 + 256x224 + media/mixrbv2/goindol.png + + + + goindolu.zip + Goindol (US) + Let's Smash Blocks! Fighting between primitive 'Goindol' guardian blocks in eolithic age and adventurers of civilized world 100 rounds full of variety and excitement 16 pictures added for bonus. + 19870101T000000 + SunA + SunA + Action / Breakout games + 2917 + 1-2 + goindol.zip + Mame + 270 + 256x224 + media/mixrbv2/goindol.png + + + + goindol.zip + Goindol (World) + Let's Smash Blocks! Fighting between primitive 'Goindol' guardian blocks in eolithic age and adventurers of civilized world 100 rounds full of variety and excitement 16 pictures added for bonus. + 19870101T000000 + SunA + SunA + Action / Breakout games + 2917 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/goindol.png + + + + goldmedlb.zip + Gold Medalist (bootleg) + Based on the Seoul Olympics, this is a multi-event track and field game for up to four players and featuring nine different events. Despite being heavily influenced by Konami's own "Track and Field" series, Gold Medalist lacks both the addictiveness and tight gameplay mechanics of the games upon which it is based. The nine disciplines, which can be attempted in any order, are: +100 Metre Sprint +Long Jump +Horizontal Bars +Freestyle Swimming +Boxing +Discus +110m Hurdles +High Jump +400m Relay + 0.50 + 19880101T000000 + SNK + SNK + Sports / Running trails + 2877 + 1-4 + goldmedl.zip + SNK Classics + 256x224 + media/mixrbv2/goldmedl.png + + + + goldmedl.zip + Gold Medalist (set 1) + Based on the Seoul Olympics, this is a multi-event track and field game for up to four players and featuring nine different events. Despite being heavily influenced by Konami's own "Track and Field" series, Gold Medalist lacks both the addictiveness and tight gameplay mechanics of the games upon which it is based. The nine disciplines, which can be attempted in any order, are: +100 Metre Sprint +Long Jump +Horizontal Bars +Freestyle Swimming +Boxing +Discus +110m Hurdles +High Jump +400m Relay + 0.50 + 19880101T000000 + SNK + SNK + Sports / Running trails + 2877 + 1-4 + SNK Classics + 256x224 + media/mixrbv2/goldmedl.png + + + + goldmedla.zip + Gold Medalist (set 2) + Based on the Seoul Olympics, this is a multi-event track and field game for up to four players and featuring nine different events. Despite being heavily influenced by Konami's own "Track and Field" series, Gold Medalist lacks both the addictiveness and tight gameplay mechanics of the games upon which it is based. The nine disciplines, which can be attempted in any order, are: +100 Metre Sprint +Long Jump +Horizontal Bars +Freestyle Swimming +Boxing +Discus +110m Hurdles +High Jump +400m Relay + 0.50 + 19880101T000000 + SNK + SNK + Sports / Running trails + 2877 + 1-4 + goldmedl.zip + SNK Classics + 256x224 + media/mixrbv2/goldmedl.png + + + + goldnaxe1d.zip + Golden Axe (set 1, World, FD1094 317-0110 decrypted) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxe1.zip + Golden Axe (set 1, World, FD1094 317-0110) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxe2.zip + Golden Axe (set 2, US, 8751 317-0112) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxe3d.zip + Golden Axe (set 3, World, FD1094 317-0120 decrypted) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxe3.zip + Golden Axe (set 3, World, FD1094 317-0120) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxejd.zip + Golden Axe (set 4, Japan, FD1094 317-0121 decrypted) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxej.zip + Golden Axe (set 4, Japan, FD1094 317-0121) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxeud.zip + Golden Axe (set 5, US, FD1094 317-0122 decrypted) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxeu.zip + Golden Axe (set 5, US, FD1094 317-0122) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + goldnaxe.zip + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + goldnaxe.zip + Golden Axe (set 6, US, 8751 317-123A) + Golden Axe is a sideways scrolling beat-em-up set in a traditional fantasy world, in which up to three warriors take up arms to rescue the kidnapped King and his Queen from the evil Death Adder. + +The game's three different playable characters are an Amazonian warrior named Tyris Flare, a Barbarian hero named Ax Battler, and a Viking dwarf named Gilius Thunderhead. Each character has a special attack move that is activated by pressing both JUMP and ATTACK at the same time. Also, double-tapping the joystick right or left will make the character charge and smash into opponents. + 0.80 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/goldnaxe.png + + + + gfire2.zip + Golden Fire II + Golden Fire II is a video game for arcade, released by Topis in 1992. It is a board game with 7 for 7 spaces, you choose between 3 great leaders of ancient Japan, caricatured, to autoact, and play against other; it begins Each one of the sides with two jewels. If you advance the adjacent space with a jewel, you produce other one; if you advance two spaces, you only make it take away of place. When a piece is put near to that of the enemy, her adjacent pieces become other of your own pieces. There gains who to fill out the board with more of his pieces or to remove all the pieces of the adversary. To the end of each phase, an erotic photo is shown like prize. + 0.50 + 19920101T000000 + Topis Corp + Various + 39 + 1-2 + Mame + 320x224 + media/mixrbv2/gfire2.png + + + + gollygho.zip + Golly! Ghost! + Golly! Ghost! is a video ticket/redemption game. Shoot a specific amount of ghosts before time runs out. + 0.70 + 19900101T000000 + Namco + Lightgun Shooter + 32 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/gollygho.png + + + + imsorryj.zip + Gonbee no I'm Sorry (315-5110, Japan) + Rabid-Media rates this game: 4/5This one's just plain rediculous! you are some fat guy in a suit. there is a small screen filled with other suited guys, a rolling barrel, and bars of gold. your job is to get those bars of gold and bring them to the building with the word, "IN" on it. Kinda like flicky, you can bring some over to it, then get the rest seperately, but you will get less points this way. +the graphics are nice and vivid (for an 80's sega arcade game.) and the animations are just plain silly, and sometimes disturbing (when you get caught by a suited man, he then is in a black bikini beating you with a whip!) +you can combat these perverst by punching them, sometimes repeatedly. you must jump over the barrel to avoid it most of the time. +as far as arcade games go, it's definately a fun, challenging product of Japanese insanity! try it! + 0.70 + 19850101T000000 + Coreland + SEGA + Action + 10 + 1-2 + imsorry.zip + Sega Classics + 512x224 + media/mixrbv2/imsorry.png + + + + gondou.zip + Gondomania (US) + Arcade game released by Data East in 1987. Top-down shooter featuring rotating joysticks. + 0.50 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + gondo.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/gondo.png + + + + gondo.zip + Gondomania (World) + Arcade game released by Data East in 1987. Top-down shooter featuring rotating joysticks. + 0.50 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/gondo.png + + + + goori.zip + Goori Goori + A Korean arcade puzzle game where advancing gameplay reveals background images of bikini models. + 19990101T000000 + Puzzle-Game + 26 + Mame + media/mixrbv2/goori.png + + + + gorkans.zip + Gorkans + Move along lines, erasing them as you go, to collect flashing or spinning items. If you collide with one of the yellow dots that are moving around erasing lines or if you end up at a dead end with nowhere to go, you lose a life. You cannot go back, only forward. + 0.50 + 19830101T000000 + Techstar (Telko license) + Techstar (Telko license) + Action + 10 + 1-2 + mrtnt.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/mrtnt.png + + + + gotcha.zip + Got-cha Mini Game Festival + It's a collection of nineteen minigames that you can either choose to play one-by-one in an attempt to clear them all without running out of lives, or by selecting your favourites from a list. +You've got three colour-coded buttons: red on the left, green in the middle and blue on the right. The majority of Got-Cha's minigames involve pressing the correct colour at the right moment, so try to fix the position of each colour firmly in you mind. Occasionally red and blue work as left and right, too. + 0.50 + 19970101T000000 + Dong Sung + Dong Sung + Compilation + 34 + 1-3 + Mame + 320x240 + media/mixrbv2/gotcha.png + + + + plegends.zip + Gouketsuji Gaiden Legends (USA, ver. 95/06/20) + Otane Goketsuji, leader of the Goketsuji clan, was kidnapped. A new tournament was held to find a successor. Otane managed to arrive at the tournament to defend her title as clan leader against the winner of the tournament. Unfortunately to Otane, she was too tired to fight and was defeated by Kokuin Kanji! + +After his victory in the Goketsuji tournament, Kanji thought that would be fun to test the strength of the Goketsuji family members, so he invited them for a new tournament. + 0.70 + 19950101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + Atlus + 320x240 + media/mixrbv2/plegends.png + + + + plegendsj.zip + Gouketsuji Gaiden Saikyou Densetsu (Japan, ver. 95/06/20) + Otane Goketsuji, leader of the Goketsuji clan, was kidnapped. A new tournament was held to find a successor. Otane managed to arrive at the tournament to defend her title as clan leader against the winner of the tournament. Unfortunately to Otane, she was too tired to fight and was defeated by Kokuin Kanji! + +After his victory in the Goketsuji tournament, Kanji thought that would be fun to test the strength of the Goketsuji family members, so he invited them for a new tournament. + 0.70 + 19950101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + plegends.zip + Atlus + 320x240 + media/mixrbv2/plegends.png + + + + powerinsj.zip + Gouketsuji Ichizoku (Japan) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + powerinspj.zip + Gouketsuji Ichizoku (Japan, prototype) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + pwrinst2j.zip + Gouketsuji Ichizoku 2 (Japan, ver. 94/04/08) + Oume Goketsuji, Leader of the Goketsuji clan for the last 60 years, finally was defeated by her younger sister, Otane, the day where she surpassed her older sister finally had arrived. + +One night, Oshima Goketsuji unexpectedly appeared in front of Oume and offered her help to take revenge of Otane. + +According to the rules of the clan, if the leader dies or quits, one new tournament should be held immediately to find a successor. + +That same night Oshima and Oume sent their servants to dispose of Otane, so while Otane slept, she was kidnapped and thrown to the ocean. + +Next day Kuroko found a letter supposedly written by Otane, where she declined to her right to be the leader of the clan. + +One week later all the competitors from the previous tournament and other family members were convoked to be informed about Otane's decision and the beginning of a new tournament. + 0.80 + 19940101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + pwrinst2.zip + Atlus + 320x240 + media/mixrbv2/pwrinst2.png + + + + gpriderjs.zip + GP Rider (Japan, FD1094 317-0161) + GP Rider is a lap-based and demanding motorcycle racing game from Sega which allow for 2-player head-to-head racing. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + gprider.zip + Sega Classics + 320x224 + media/mixrbv2/gprider.png + + + + gpriderj.zip + GP Rider (Japan, FD1094 317-0161) (Twin setup) + GP Rider is a lap-based and demanding motorcycle racing game from Sega which allow for 2-player head-to-head racing. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + gprider.zip + Sega Classics + 320x224 + media/mixrbv2/gprider.png + + + + gpriderus.zip + GP Rider (US, FD1094 317-0162) + GP Rider is a lap-based and demanding motorcycle racing game from Sega which allow for 2-player head-to-head racing. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + gprider.zip + Sega Classics + 320x224 + media/mixrbv2/gprider.png + + + + gprideru.zip + GP Rider (US, FD1094 317-0162) (Twin setup) + GP Rider is a lap-based and demanding motorcycle racing game from Sega which allow for 2-player head-to-head racing. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + gprider.zip + Sega Classics + 320x224 + media/mixrbv2/gprider.png + + + + gprider.zip + GP Rider (World, FD1094 317-0163) (Twin setup) + GP Rider is a lap-based and demanding motorcycle racing game from Sega which allow for 2-player head-to-head racing. + 0.70 + 19900101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 320x224 + media/mixrbv2/gprider.png + + + + gradiusb.zip + Gradius (Bubble System) + Gradius / Nemesis is a horizontally-scrolling shoot-em-up in which the player pilots a spacecraft known as the Vic Viper as they search through unexplored galaxies looking for a lost armada. These new galaxies are teaming with alien life set upon destroying the Viper. + +The game features a power-up system based on a selection meter at the bottom of the screen called a 'power meter', this allows players to 'buy' weapons and upgrades. To achieve this, players must destroy special individual enemies - usually red in colour - or enemy waves that then drop orange capsules. These capsules can be collected and used to upgrade the Viper's weapons. Each collected capsule advances the power meter by one step. Players can activate the highlighted item at any point, after which the power meter resets. + 0.90 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + nemesis.zip + Konami Classics + 256x224 + media/mixrbv2/nemesis.png + + + + gradius.zip + Gradius (Japan, ROM version) + Gradius / Nemesis is a horizontally-scrolling shoot-em-up in which the player pilots a spacecraft known as the Vic Viper as they search through unexplored galaxies looking for a lost armada. These new galaxies are teaming with alien life set upon destroying the Viper. + +The game features a power-up system based on a selection meter at the bottom of the screen called a 'power meter', this allows players to 'buy' weapons and upgrades. To achieve this, players must destroy special individual enemies - usually red in colour - or enemy waves that then drop orange capsules. These capsules can be collected and used to upgrade the Viper's weapons. Each collected capsule advances the power meter by one step. Players can activate the highlighted item at any point, after which the power meter resets. + 0.90 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + nemesis.zip + Konami Classics + 256x224 + media/mixrbv2/nemesis.png + + + + gradius2.zip + Gradius II - GOFER no Yabou (Japan New ver.) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + vulcan.zip + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + gradius2a.zip + Gradius II - GOFER no Yabou (Japan Old ver.) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + vulcan.zip + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + gradius2b.zip + Gradius II - GOFER no Yabou (Japan Older ver.) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + vulcan.zip + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + gradius3a.zip + Gradius III (Asia) + In the darkest reaches of infinite space, pure evil lies in wait ... The Dark Forces led by the god of destruction, Bacterian, prepare to launch a massive onslaught against the planet Gradius. Possessing unstoppable power, the Dark Forces threaten to plunge the Universe into total war and complete annihilation. + +Their invasion force smashes the Gradius defenses, and the surrounding planets soon fall like dominoes. Now Bacterian's evil grasp reaches for the heart of the resistance...planet Gradius itself... + +To counter the oncoming threat the United Gradius World Forces gather all their fighter craft. Half of them form a defensive net - the other half a strike team. But they are badly outnumbered and The Dark Forces easily tear through their thin frontline. No fighters survive the slaughter.... + +In a last gasp move, the United Gradius World Forces send out two fighters, previously considered too dangerous for combat missions: The InterDimensional VIC VIPER fighters. + +The Fighters take off for the heart of darkness to join the fray that will decide the fate of the Universe... + 0.60 + 19890101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + gradius3.zip + Konami Classics + 320x224 + media/mixrbv2/gradius3.png + + + + gradius3j.zip + Gradius III (Japan, program code S) + In the darkest reaches of infinite space, pure evil lies in wait ... The Dark Forces led by the god of destruction, Bacterian, prepare to launch a massive onslaught against the planet Gradius. Possessing unstoppable power, the Dark Forces threaten to plunge the Universe into total war and complete annihilation. + +Their invasion force smashes the Gradius defenses, and the surrounding planets soon fall like dominoes. Now Bacterian's evil grasp reaches for the heart of the resistance...planet Gradius itself... + +To counter the oncoming threat the United Gradius World Forces gather all their fighter craft. Half of them form a defensive net - the other half a strike team. But they are badly outnumbered and The Dark Forces easily tear through their thin frontline. No fighters survive the slaughter.... + +In a last gasp move, the United Gradius World Forces send out two fighters, previously considered too dangerous for combat missions: The InterDimensional VIC VIPER fighters. + +The Fighters take off for the heart of darkness to join the fray that will decide the fate of the Universe... + 0.60 + 19890101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + gradius3.zip + Konami Classics + 320x224 + media/mixrbv2/gradius3.png + + + + gradius3js.zip + Gradius III (Japan, program code S, split) + In the darkest reaches of infinite space, pure evil lies in wait ... The Dark Forces led by the god of destruction, Bacterian, prepare to launch a massive onslaught against the planet Gradius. Possessing unstoppable power, the Dark Forces threaten to plunge the Universe into total war and complete annihilation. + +Their invasion force smashes the Gradius defenses, and the surrounding planets soon fall like dominoes. Now Bacterian's evil grasp reaches for the heart of the resistance...planet Gradius itself... + +To counter the oncoming threat the United Gradius World Forces gather all their fighter craft. Half of them form a defensive net - the other half a strike team. But they are badly outnumbered and The Dark Forces easily tear through their thin frontline. No fighters survive the slaughter.... + +In a last gasp move, the United Gradius World Forces send out two fighters, previously considered too dangerous for combat missions: The InterDimensional VIC VIPER fighters. + +The Fighters take off for the heart of darkness to join the fray that will decide the fate of the Universe... + 0.60 + 19890101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + gradius3.zip + Konami Classics + 320x224 + media/mixrbv2/gradius3.png + + + + gradius3.zip + Gradius III (World, program code R) + In the darkest reaches of infinite space, pure evil lies in wait ... The Dark Forces led by the god of destruction, Bacterian, prepare to launch a massive onslaught against the planet Gradius. Possessing unstoppable power, the Dark Forces threaten to plunge the Universe into total war and complete annihilation. + +Their invasion force smashes the Gradius defenses, and the surrounding planets soon fall like dominoes. Now Bacterian's evil grasp reaches for the heart of the resistance...planet Gradius itself... + +To counter the oncoming threat the United Gradius World Forces gather all their fighter craft. Half of them form a defensive net - the other half a strike team. But they are badly outnumbered and The Dark Forces easily tear through their thin frontline. No fighters survive the slaughter.... + +In a last gasp move, the United Gradius World Forces send out two fighters, previously considered too dangerous for combat missions: The InterDimensional VIC VIPER fighters. + +The Fighters take off for the heart of darkness to join the fray that will decide the fate of the Universe... + 0.60 + 19890101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 320x224 + media/mixrbv2/gradius3.png + + + + f1gpstar2.zip + Grand Prix Star (ver 2.0) + Find yourself at the wheel of a Formula One in this game with fairly neat graphics but fairly sensitive handling. + 0.70 + 19910101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + f1gpstar.zip + Jaleco + 256x224 + media/mixrbv2/f1gpstar.png + + + + f1gpstar3.zip + Grand Prix Star (ver 3.0) + Find yourself at the wheel of a Formula One in this game with fairly neat graphics but fairly sensitive handling. + 0.70 + 19910101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + f1gpstar.zip + Jaleco + 256x224 + media/mixrbv2/f1gpstar.png + + + + f1gpstar.zip + Grand Prix Star (ver 4.0) + Find yourself at the wheel of a Formula One in this game with fairly neat graphics but fairly sensitive handling. + 0.70 + 19910101T000000 + Jaleco + Jaleco + Race 3rd Pers. view + 2888 + 1 + Jaleco + 256x224 + media/mixrbv2/f1gpstar.png + + + + gstrik2.zip + Grand Striker 2 (Europe and Oceania) + A soccer game from Human with more teams to choose from and better graphics from the original. + 0.70 + 19960101T000000 + Human Amusement + Human Amusement + Sports / Soccer + 2847 + 1-2 + Mitchell + 304x224 + media/mixrbv2/gstrik2.png + + + + grndtour.zip + Grand Tour + A "Columns" style game where you are rewarded with pictures of beautiful women for each level you clear. + 0.50 + 19930101T000000 + IGS + Puzzle-Game / Fall + 2912 + 1-2 + IGS + 512x240 + media/mixrbv2/grndtour.png + + + + cgraplop2.zip + Graplop (no title screen) (DECO Cassette) (US) + The ball is used to dislodge an ever-changing array of 'grapes' in this souped-up breakout proto-Arkanoid style game. Cluster Buster or Graplop was released in November 1983. + 0.70 + 19830101T000000 + Data East + Action / Breakout games + 2917 + 1-2 + cgraplop.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cgraplop.png + + + + grasspin.zip + Grasspin + 0.50 + 19830101T000000 + Jaleco + Zilec Electronics + Action + 10 + 1-2 + Midway Classics + 270 + 256x224 + media/mixrbv2/grasspin.png + + + + gravitar1.zip + Gravitar (version 1) + Gravitar is a 1- or 2-player game with a color X-Y video display. This new display, with its three color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling colors and unique visual effects. + +The player controls a space ship in three different solar systems. Each solar system consists of a home base, a death star, a red alien planet and four regular planets. Each planet has its own unique terrain. + +The red alien planet is the home of shooting alien ships. Some of the regular planets may have flying alien rammers to be avoided or shot down. The four planets all have fuel cells to be retrieved with a tractor beam and alien bunkers that fire shells. Successfully destroying all of the bunkers results in a 'MISSION COMPLETE' message at the top of the screen. Achieving 'MISSION COMPLETE' allows the player to collect bonus if he can evade the rammers when leaving the planet. If successful, he will be placed back in the solar system. + +A player has two ways to advance to the next solar system. The first is to successfully complete a mission on all four regular planets. The second way is to complete a mission on the red alien planet, which establishes a link into the next solar system. + + + 0.50 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + gravitar.zip + Atari Classics + media/mixrbv2/gravitar.png + + + + gravitar2.zip + Gravitar (version 2) + Gravitar is a 1- or 2-player game with a color X-Y video display. This new display, with its three color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling colors and unique visual effects. + +The player controls a space ship in three different solar systems. Each solar system consists of a home base, a death star, a red alien planet and four regular planets. Each planet has its own unique terrain. + +The red alien planet is the home of shooting alien ships. Some of the regular planets may have flying alien rammers to be avoided or shot down. The four planets all have fuel cells to be retrieved with a tractor beam and alien bunkers that fire shells. Successfully destroying all of the bunkers results in a 'MISSION COMPLETE' message at the top of the screen. Achieving 'MISSION COMPLETE' allows the player to collect bonus if he can evade the rammers when leaving the planet. If successful, he will be placed back in the solar system. + +A player has two ways to advance to the next solar system. The first is to successfully complete a mission on all four regular planets. The second way is to complete a mission on the red alien planet, which establishes a link into the next solar system. + + + 0.50 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + gravitar.zip + Atari Classics + media/mixrbv2/gravitar.png + + + + gravitar.zip + Gravitar (version 3) + Gravitar is a 1- or 2-player game with a color X-Y video display. This new display, with its three color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling colors and unique visual effects. + +The player controls a space ship in three different solar systems. Each solar system consists of a home base, a death star, a red alien planet and four regular planets. Each planet has its own unique terrain. + +The red alien planet is the home of shooting alien ships. Some of the regular planets may have flying alien rammers to be avoided or shot down. The four planets all have fuel cells to be retrieved with a tractor beam and alien bunkers that fire shells. Successfully destroying all of the bunkers results in a 'MISSION COMPLETE' message at the top of the screen. Achieving 'MISSION COMPLETE' allows the player to collect bonus if he can evade the rammers when leaving the planet. If successful, he will be placed back in the solar system. + +A player has two ways to advance to the next solar system. The first is to successfully complete a mission on all four regular planets. The second way is to complete a mission on the red alien planet, which establishes a link into the next solar system. + + + 0.50 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + Atari Classics + media/mixrbv2/gravitar.png + + + + gtmr2u.zip + Great 1000 Miles Rally 2 USA (95/05/18) + You have 60 seconds to get from the starting line to the finish line. Finishing within 60 seconds allows you to go on to the next race. If you lose, a continue option is available. The screen scrolls fast. The only way you know about a turn coming up is by a little indicator that flashes with a picture of the turn. There are zig-zags, hairpins and all other cool turns, most of which you have to steer into in order to make it though. + 0.80 + 19950101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1 + gtmr2.zip + Kaneko + 320x240 + media/mixrbv2/gtmr2.png + + + + gtmre.zip + Great 1000 Miles Rally: Evolution Model!!! (94/09/06) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + gtmr.zip + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + gtmrusa.zip + Great 1000 Miles Rally: U.S.A Version! (94/09/06) + Great 1000 Miles Rally &copy; 1994 Kaneko. + +A racing game featuring classic cars from Ferrari, Alfa Romeo, Mercedes Benz and more. + 0.90 + 19940101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1-2 + gtmr.zip + Kaneko + 320x240 + media/mixrbv2/gtmr.png + + + + gmahou.zip + Great Mahou Daisakusen (000121 Japan) + The game is set in a futuristic environment with dragons, little turtles with lasers on their back, and little green goblins with red eyes. The player picks one of four friends to travel with. The two characters fly through the levels in the game and collect items. Each item has a point value and the points are used to fill up a chart at the end. The items include: food, swords, armors, boots, etc. Towards the end of the game, the bosses become incredibly hard. The fast backgrounds create a confusing state of mind for the player. + 0.90 + 20000101T000000 + Raizing + Capcom + Shoot'em Up + 79 + 1-2 + dimahoo.zip + Capcom Play System 2 + 270 + 384x224 + media/mixrbv2/dimahoo.png + + + + gberet.zip + Green Beret + Green Beret is a sideways-scrolling action/platform game set during the Cold War, in which a US Special Forces Marine must infiltrate a Russian military base to save four POW's from being executed by firing squad. + +Initially, the soldier is armed with only a combat knife, but by killing the certain enemy troops, players can obtain either a three-shot flamethrower, a four-shot RPG, or a three-pack of hand grenades. + +The Marine can jump or lie down to avoid the enemy bullets, as well as climbing ladders to avoid enemies and projectiles, as well as the flashing land mines that litter the levels. While it's possible to remain still in one area to rack up points, if players take too long to proceed, the game will start sending out tougher enemies and eventually a stealth-like bomber will appear to take out the player. There is also an unseen time limit that will kill off players if they take too long to complete the stage. + +The game has four stages in total: a missile base, a harbour, an air Base and a Siberian POW Camp. At the end of each stage the Marine will face a group of enemies specific to that stage: Stage 1 ends with a truckload of running and jump-kicking soldiers, Stage 2 with a pack of fierce dogs and their handlers, Stage 3 with three Gyro-copters and Stage 4 with a number of multi-shot flamethrower operators. + +The game is completed once the captives have been rescued at the end of the fourth stage, after which the action starts over with an increased level of difficulty. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + Konami Classics + 240x224 + media/mixrbv2/gberet.png + + + + gberetb.zip + Green Beret (bootleg) + Green Beret is a sideways-scrolling action/platform game set during the Cold War, in which a US Special Forces Marine must infiltrate a Russian military base to save four POW's from being executed by firing squad. + +Initially, the soldier is armed with only a combat knife, but by killing the certain enemy troops, players can obtain either a three-shot flamethrower, a four-shot RPG, or a three-pack of hand grenades. + +The Marine can jump or lie down to avoid the enemy bullets, as well as climbing ladders to avoid enemies and projectiles, as well as the flashing land mines that litter the levels. While it's possible to remain still in one area to rack up points, if players take too long to proceed, the game will start sending out tougher enemies and eventually a stealth-like bomber will appear to take out the player. There is also an unseen time limit that will kill off players if they take too long to complete the stage. + +The game has four stages in total: a missile base, a harbour, an air Base and a Siberian POW Camp. At the end of each stage the Marine will face a group of enemies specific to that stage: Stage 1 ends with a truckload of running and jump-kicking soldiers, Stage 2 with a pack of fierce dogs and their handlers, Stage 3 with three Gyro-copters and Stage 4 with a number of multi-shot flamethrower operators. + +The game is completed once the captives have been rescued at the end of the fourth stage, after which the action starts over with an increased level of difficulty. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + gberet.zip + Konami Classics + 240x224 + media/mixrbv2/gberet.png + + + + griffon.zip + Griffon (bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + grindstm.zip + Grind Stormer + A rather obscure vertical scrolling shooter, guide your ship in a battle against aliens using three different weapons. This game is known in Japan as V-Five and is also the first game from Tsuneki Ikeda. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/grindstm.png + + + + grindstma.zip + Grind Stormer (older set) + A rather obscure vertical scrolling shooter, guide your ship in a battle against aliens using three different weapons. This game is known in Japan as V-Five and is also the first game from Tsuneki Ikeda. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + grindstm.zip + Toaplan + 270 + 320x240 + media/mixrbv2/grindstm.png + + + + grobda.zip + Grobda (New Ver.) + Grobda is a tank-like game that uses an overhead view. Enemy tanks attack in waves and they must be destroyed before they do the same to you. + 0.60 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/grobda.png + + + + grobda2.zip + Grobda (Old Ver. set 1) + Grobda is a tank-like game that uses an overhead view. Enemy tanks attack in waves and they must be destroyed before they do the same to you. + 0.60 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + grobda.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/grobda.png + + + + grobda3.zip + Grobda (Old Ver. set 2) + Grobda is a tank-like game that uses an overhead view. Enemy tanks attack in waves and they must be destroyed before they do the same to you. + 0.60 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + grobda.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/grobda.png + + + + gryzor.zip + Gryzor (Set 1) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + gryzor1.zip + Gryzor (Set 2) + In 2631, a meteorite strikes the Galuga archipelago near New Zealand, carrying with it a dormant alien being. Two years later, a terrorist organization calling themselves Red Falcon takes over the island as part of their plot to invade the Earth. Bill Rizer and Lance Bean, of the Contra unit, are sent to the Oceania island to stop the evil threat. + +'Contra' is a hectic one or two player platform shoot-em-up featuring 10 stages. In addition to the standard side-view levels, there are also "3D maze" stages in which the player must proceed through a series of corridors inside an enemy base, destroying various sensors, in order to reach the core of the base. + +Each player's character is equipped with a semi-automatic machine gun with an unlimited amount of ammunition and can jump, move and fire in all eight cardinal directions. Players can also move and jump simultaneously while firing. Co-ordination of the character's movement is essential as a single hit from any enemy, bullet, or other hazard will instantly kill the player's character and also eliminate the current weapon from the player's inventory. + + + 0.70 + 19870101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + contra.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/contra.png + + + + grdian.zip + Guardian (US) + Fight your way across various planetscapes and defeat a boss character to clear that planet. Then move on to another planet, each with a different theme. + 19860101T000000 + Toaplan + Fight + 14 + 1-2 + Taito Classics + 280x240 + media/mixrbv2/grdian.png + + + + grdnstrmg.zip + Guardian Storm (Germany) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + grdnstrmau.zip + Guardian Storm (horizontal, Australia) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + grdnstrm.zip + Guardian Storm (horizontal, not encrypted) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + grdnstrmv.zip + Guardian Storm (vertical) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + gwarb.zip + Guerrilla War (Joystick hack bootleg) + The country is struggling under the cruel domination of its evil King. The rebel guerilla leader and his comrades attempt to secretly land on shore. The King's military is waiting for them, however, and the players must fight their way inland to reach and destroy the King's palace stronghold. + +In this, the pseudo-sequel to SNK's own superb "Ikari Warriors" (released two years earlier), players must once again shoot their way through a number of vertically scrolling levels, all packed with large numbers of enemy soldiers, gun emplacements and vehicles. Each level also contains a number of captured prisoners tied to wooden stakes, and these can be rescued for extra points. + +The players' weapons have only a limited amount of ammunition and additional ammo/grenades must be picked up along the way. A number of gun upgrades can also be found. At various points in the game, players can also enter unoccupied enemy tanks, which provide increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode - this is proceeded by a warning flash to allow the player to exit the tank before the explosion occurs. Should the player be caught inside or near the tank when it explodes, a life is lost. + +As with "Ikari Warriors", Guerrilla War features full 360 degree gameplay with attacking troops appearing from all directions. The players' on-screen counterparts are able to rotate themselves accordingly. + 0.70 + 19870101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + gwar.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/gwar.png + + + + gwar.zip + Guerrilla War (US) + The country is struggling under the cruel domination of its evil King. The rebel guerilla leader and his comrades attempt to secretly land on shore. The King's military is waiting for them, however, and the players must fight their way inland to reach and destroy the King's palace stronghold. + +In this, the pseudo-sequel to SNK's own superb "Ikari Warriors" (released two years earlier), players must once again shoot their way through a number of vertically scrolling levels, all packed with large numbers of enemy soldiers, gun emplacements and vehicles. Each level also contains a number of captured prisoners tied to wooden stakes, and these can be rescued for extra points. + +The players' weapons have only a limited amount of ammunition and additional ammo/grenades must be picked up along the way. A number of gun upgrades can also be found. At various points in the game, players can also enter unoccupied enemy tanks, which provide increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode - this is proceeded by a warning flash to allow the player to exit the tank before the explosion occurs. Should the player be caught inside or near the tank when it explodes, a life is lost. + +As with "Ikari Warriors", Guerrilla War features full 360 degree gameplay with attacking troops appearing from all directions. The players' on-screen counterparts are able to rotate themselves accordingly. + 0.70 + 19870101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 270 + 400x224 + media/mixrbv2/gwar.png + + + + gwara.zip + Guerrilla War (Version 1) + The country is struggling under the cruel domination of its evil King. The rebel guerilla leader and his comrades attempt to secretly land on shore. The King's military is waiting for them, however, and the players must fight their way inland to reach and destroy the King's palace stronghold. + +In this, the pseudo-sequel to SNK's own superb "Ikari Warriors" (released two years earlier), players must once again shoot their way through a number of vertically scrolling levels, all packed with large numbers of enemy soldiers, gun emplacements and vehicles. Each level also contains a number of captured prisoners tied to wooden stakes, and these can be rescued for extra points. + +The players' weapons have only a limited amount of ammunition and additional ammo/grenades must be picked up along the way. A number of gun upgrades can also be found. At various points in the game, players can also enter unoccupied enemy tanks, which provide increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode - this is proceeded by a warning flash to allow the player to exit the tank before the explosion occurs. Should the player be caught inside or near the tank when it explodes, a life is lost. + +As with "Ikari Warriors", Guerrilla War features full 360 degree gameplay with attacking troops appearing from all directions. The players' on-screen counterparts are able to rotate themselves accordingly. + 0.70 + 19870101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + gwar.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/gwar.png + + + + gwarab.zip + Guerrilla War (Version 1, set 2) + The country is struggling under the cruel domination of its evil King. The rebel guerilla leader and his comrades attempt to secretly land on shore. The King's military is waiting for them, however, and the players must fight their way inland to reach and destroy the King's palace stronghold. + +In this, the pseudo-sequel to SNK's own superb "Ikari Warriors" (released two years earlier), players must once again shoot their way through a number of vertically scrolling levels, all packed with large numbers of enemy soldiers, gun emplacements and vehicles. Each level also contains a number of captured prisoners tied to wooden stakes, and these can be rescued for extra points. + +The players' weapons have only a limited amount of ammunition and additional ammo/grenades must be picked up along the way. A number of gun upgrades can also be found. At various points in the game, players can also enter unoccupied enemy tanks, which provide increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode - this is proceeded by a warning flash to allow the player to exit the tank before the explosion occurs. Should the player be caught inside or near the tank when it explodes, a life is lost. + +As with "Ikari Warriors", Guerrilla War features full 360 degree gameplay with attacking troops appearing from all directions. The players' on-screen counterparts are able to rotate themselves accordingly. + 0.70 + 19870101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + gwar.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/gwar.png + + + + gwarj.zip + Guevara (Japan) + The country is struggling under the cruel domination of its evil King. The rebel guerilla leader and his comrades attempt to secretly land on shore. The King's military is waiting for them, however, and the players must fight their way inland to reach and destroy the King's palace stronghold. + +In this, the pseudo-sequel to SNK's own superb "Ikari Warriors" (released two years earlier), players must once again shoot their way through a number of vertically scrolling levels, all packed with large numbers of enemy soldiers, gun emplacements and vehicles. Each level also contains a number of captured prisoners tied to wooden stakes, and these can be rescued for extra points. + +The players' weapons have only a limited amount of ammunition and additional ammo/grenades must be picked up along the way. A number of gun upgrades can also be found. At various points in the game, players can also enter unoccupied enemy tanks, which provide increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode - this is proceeded by a warning flash to allow the player to exit the tank before the explosion occurs. Should the player be caught inside or near the tank when it explodes, a life is lost. + +As with "Ikari Warriors", Guerrilla War features full 360 degree gameplay with attacking troops appearing from all directions. The players' on-screen counterparts are able to rotate themselves accordingly. + 0.70 + 19870101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + gwar.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/gwar.png + + + + gulfstrmk.zip + Gulf Storm (Korea) + A vertically scrolling shooter from Korean-based company Dooyong. +Dooyong was the first Korean video game company to export in Japan, USA and Europe. + +Also licensed to Media Shoji for distribution. + +Initially, the game subject wasn't 'Gulf War' but after the Gulf War breaks out, game's subject was changed to the Gulf War. + +This game was sold very well, and it was exported very well. Dooyong took the 'export prize' and set up sisterhood relationship with U.S.A. and Japan Company. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + gulfstrm.zip + Mame + 270 + 384x240 + media/mixrbv2/gulfstrm.png + + + + gulfstrmm.zip + Gulf Storm (Media Shoji) + A vertically scrolling shooter from Korean-based company Dooyong. +Dooyong was the first Korean video game company to export in Japan, USA and Europe. + +Also licensed to Media Shoji for distribution. + +Initially, the game subject wasn't 'Gulf War' but after the Gulf War breaks out, game's subject was changed to the Gulf War. + +This game was sold very well, and it was exported very well. Dooyong took the 'export prize' and set up sisterhood relationship with U.S.A. and Japan Company. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + gulfstrm.zip + Mame + 270 + 384x240 + media/mixrbv2/gulfstrm.png + + + + gulfstrm.zip + Gulf Storm (set 1) + A vertically scrolling shooter from Korean-based company Dooyong. +Dooyong was the first Korean video game company to export in Japan, USA and Europe. + +Also licensed to Media Shoji for distribution. + +Initially, the game subject wasn't 'Gulf War' but after the Gulf War breaks out, game's subject was changed to the Gulf War. + +This game was sold very well, and it was exported very well. Dooyong took the 'export prize' and set up sisterhood relationship with U.S.A. and Japan Company. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/gulfstrm.png + + + + gulfstrma.zip + Gulf Storm (set 2) + A vertically scrolling shooter from Korean-based company Dooyong. +Dooyong was the first Korean video game company to export in Japan, USA and Europe. + +Also licensed to Media Shoji for distribution. + +Initially, the game subject wasn't 'Gulf War' but after the Gulf War breaks out, game's subject was changed to the Gulf War. + +This game was sold very well, and it was exported very well. Dooyong took the 'export prize' and set up sisterhood relationship with U.S.A. and Japan Company. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + gulfstrm.zip + Mame + 270 + 384x240 + media/mixrbv2/gulfstrm.png + + + + gulfstrmb.zip + Gulf Storm (set 3) + A vertically scrolling shooter from Korean-based company Dooyong. +Dooyong was the first Korean video game company to export in Japan, USA and Europe. + +Also licensed to Media Shoji for distribution. + +Initially, the game subject wasn't 'Gulf War' but after the Gulf War breaks out, game's subject was changed to the Gulf War. + +This game was sold very well, and it was exported very well. Dooyong took the 'export prize' and set up sisterhood relationship with U.S.A. and Japan Company. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + gulfstrm.zip + Mame + 270 + 384x240 + media/mixrbv2/gulfstrm.png + + + + gulfwar2.zip + Gulf War II (set 1) + A vertically scrolling shoot-em-up from Comad. + +Gulf War-II is more like a bootleg or hack than an original game; a LOT of the game code is taken directly from Taito's "Twin Cobra". The gameplay is nearly identical but the theme and all the GFX have been changed. + +Like many game from Korea, Comad used the Gulf war theme in the 90's. This was a great theme, because based on the actuality, and the game sold very well (hundred thousand of boards) + + 0.50 + 19910101T000000 + Comad + Comad + Shoot'em Up + 79 + 1-2 + Comad + 270 + 320x240 + media/mixrbv2/gulfwar2.png + + + + gulfwar2a.zip + Gulf War II (set 2) + A vertically scrolling shoot-em-up from Comad. + +Gulf War-II is more like a bootleg or hack than an original game; a LOT of the game code is taken directly from Taito's "Twin Cobra". The gameplay is nearly identical but the theme and all the GFX have been changed. + +Like many game from Korea, Comad used the Gulf war theme in the 90's. This was a great theme, because based on the actuality, and the game sold very well (hundred thousand of boards) + + 0.50 + 19910101T000000 + Comad + Comad + Shoot'em Up + 79 + 1-2 + gulfwar2.zip + Comad + 270 + 320x240 + media/mixrbv2/gulfwar2.png + + + + gulunpa.zip + Gulun.Pa! (Japan 931220 L) + The Gulun.Pa!game was released on 1993 developed and published by Capcom. +Unreleased puzzle game on the Capcom CPS1 hardware. +Gulun Pa! is a CPS1 prototype, it seems to have been cancelled fairly early in development tho, as while this is playable only the bare bones of the game exist, there are a handful of what appear to be unused assets that suggest there were to be other stages, but while the program ROM has an English title of Piyo Piyo no resources at all exist in the graphic data for an English version. No copyright is displayed so this is guessed to be a Capcom development. + 19930101T000000 + Capcom + Capcom + Puzzle-Game + 26 + 1-2 + Capcom Play System + media/mixrbv2/gulunpa.png + + + + gumbo.zip + Gumbo + Gumbo is a "Columns"-style adult puzzle game featuring nude photographic and hand drawn images as a background to the playing field. Columns of three blocks fall from the sky and the player can move the block left or right and shift the order of the blocks column falls. The objective is to match three or more blocks of the same type in vertical, horizontal, or diagonal rows in order to clear them from the play area. As the player clears more blocks the columns begin to descend at a more rapid rate. + +As time progresses entire rows of blocks are added to the bottom of the play area. Occasionally after clearing a set of blocks (and more often after setting off chains of removing blocks) the bottom row of blocks will be removed from the play area. If necessary, the player can use a help which will change all of the blocks in the currently falling column into 'P' blocks. When the column lands on the stack of blocks, whichever block it falls on will be cleared from the screen, along with all blocks that match that block. When the bottom row is removed from play a section is added to the progress bar at the bottom of the screen. When the progress bar is filled the stage is complete. + +After clearing a stage, all of the remaining blocks are momentarily removed from the board and a bonus game begins. In the bonus game the background image is broken up and shuffled around in a sliding puzzle game. The progress bar at the bottom of the screen counts down the time left to return the tiles to their proper place and points are awarded for any extra time left after the game is completed. Once the bonus game is over the background image is changed, the blocks remaining from the previous stage are returned to the screen and the game continues. + +If the blocks reach the top of the screen where the columns are dropped from then the game is over. Upon continuing all of the blocks are removed from play and the columns fall at the original speed. + 0.50 + 19940101T000000 + Min Corp. + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x224 + media/mixrbv2/gumbo.png + + + + gundl94.zip + Gun Dealer '94 + A puzzle game where you have to arrange colored number-blocks so that they disappear. + 0.50 + 19940101T000000 + Dooyong + Casino + 320 + 1-2 + Mame + 384x256 + media/mixrbv2/gundl94.png + + + + bangj.zip + Gun Gabacho (Japan) + A cartoony first-person 2-D wild west shoot'em up game. + 0.70 + 19980101T000000 + Bit Managers + Gaelco + Lightgun Shooter + 32 + 1-2 + bang.zip + Gaelco + 320x240 + media/mixrbv2/bang.png + + + + gunmast.zip + Gun Master + GunMaster is a beat 'em up game consisting of fourteen stages where the objective is to defeat one or two specific boss enemies using whatever means possible - punching, kicking, throwing or shooting. Except for the introductory and final stage, you can choose the order in which to tackle the twelve other stages. Though it only uses two buttons (shot and jump) there's quite a few fighting game-esque special moves the player can execute. The game supports single player, as well as two player co-op. + 0.70 + 19940101T000000 + Metro 3D + Metro 3D + Beat'em Up + 1 + 1-2 + Mitchell + 320x224 + media/mixrbv2/gunmast.png + + + + gunsmokeg.zip + Gun.Smoke (Germany, censored) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmokej.zip + Gun.Smoke (Japan, 851115) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmokeua.zip + Gun.Smoke (US, 851115, set 1) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmokeub.zip + Gun.Smoke (US, 851115, set 2) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmokeu.zip + Gun.Smoke (US, 860408) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmoke.zip + Gun.Smoke (World, 851115) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunsmokeb.zip + Gun.Smoke (World, 851115) (bootleg) + Gun.Smoke is a vertically-scrolling shoot-em-up set in the Wild West, in which the player takes the role of a Billy; a young Sheriff charged with hunting down and killing a number of infamous 'Wanted' outlaws. + +Each level is packed with gun-toting bandits and the Sheriff must shoot his way through the stage, before finally taking on the wanted outlaw 'boss' character at the end. Each outlaw wields a special weapon unique to them, such as a Winchester rifle, knives, darts or boomerangs. + +Shooting the barrels that litter the levels reveals power-ups such as boots (for extra speed), rifles (for increased range) and bullets (for rapid fire). The game's 3 directional fire buttons (for firing left, right or ahead) can be combined (pressed Simultaneously) to create a total of 8 different firing directions. + 0.70 + 19850101T000000 + Capcom + Capcom + Shooter / Run and Gun + 2903 + 1-2 + gunsmoke.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/gunsmoke.png + + + + gunbirdj.zip + Gunbird (Japan) + Gunbird is a vertically scrolling shoot 'em up developed and published by Psikyo and released in Japanese arcades in 1994. It has been re-released multiple times, including on the Sega Saturn, PlayStation, and Steam. When originally localized outside Japan by XS Games, Gunbird was retitled Mobile Light Force. The game was followed by Gunbird 2 in 1998 and was included in Gunbird Special Edition. + +When a player collides with the body of an enemy unit, the player loses a shot power level, and a power up flies around the screen and disappears as soon as it reaches the edge. If a player is at the lowest level of shot, the player loses a bomb instead. +There are seven stages in each of the game's two loops. The first four stages are randomly chosen from possible five. In the second loop enemies fire denser bullet patterns moving at faster speeds. Stage 2-1 takes place at the only stage not available on the first loop, instead of the 1-1 counterpart. The remaining three stages are chosen at random, but does not include the replaced stage. After completing first loop with only one player, the player can choose one of two choices for a wish with a magic potion, with unique endings for each choice. If the first loop is completed with two players, a combination-specific ending is played. +The cutscenes between the battles with two players fighting cooperatively are frequently packed with hilarious dialogue and situations. This is often a recurring theme with Psikyo games, the Gunbird games being no exception. There are no cutscenes when playing second loop stages. The Korean arcade version contains English dialog but some sound samples are missing during play. + +Gunbird uses manga-styled character as the player's chosen craft. A story plays out in between levels and before boss fights, telling a tale of how the protagonists are trying to collect pieces of a magic mirror to make a wish. +Ash: A 28-year-old German man with a jet pack on his back, who in some of the scenes between battles is discovered to be an inventor, and when two players choose Marion and Ash as cooperative partners, he takes an unhealthy interest in her. Voiced by Ry?tar? Okiayu. +Marion: A 13-year-old witch from England who flies on a broomstick. She is accompanied by her talking pet rabbit, Pom-Pom, and frequently abuses the poor creature verbally and physically. Marion is fun-loving and thrill-seeking but also selfish, and has a mean streak (which Pom-Pom is often witness to). Voiced by Chiharu Tanaka. +Valnus: A big robot created in Russia six months ago that has some of the best firepower in the game. Secretly wishes to be human. Voiced by Kazuya Tatekabe. +Yuan Nang: A strong-willed and courageous woman whose character design is highly influenced by that of Sun Wukong from the Chinese classical story Journey to the West, including a cloud-somersault parody, Ruyi Jingu Bang, and the size-changing headband that was used by the monk Xuánzàng. Voiced by Naoko Matsui. +Tetsu: A strong, white-haired old man of 60 years. He is homosexual in a rather uncloseted manner and rides in a man-powered helicopter. Voiced by Sakunosuke Maya. +The Trump: A group of sky pirates consist of Ace (voiced by J?ji Yanami), Claude (voiced by Kazuya Tatekabe), and their female leader Rouge (voiced by Noriko Ohara). They are not playable and serve as the players' rivals in the story. + 0.70 + 19940101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + gunbird.zip + Psikyo + 270 + 320x224 + media/mixrbv2/gunbird.png + + + + gunbirdk.zip + Gunbird (Korea) + Gunbird is a vertically scrolling shoot 'em up developed and published by Psikyo and released in Japanese arcades in 1994. It has been re-released multiple times, including on the Sega Saturn, PlayStation, and Steam. When originally localized outside Japan by XS Games, Gunbird was retitled Mobile Light Force. The game was followed by Gunbird 2 in 1998 and was included in Gunbird Special Edition. + +When a player collides with the body of an enemy unit, the player loses a shot power level, and a power up flies around the screen and disappears as soon as it reaches the edge. If a player is at the lowest level of shot, the player loses a bomb instead. +There are seven stages in each of the game's two loops. The first four stages are randomly chosen from possible five. In the second loop enemies fire denser bullet patterns moving at faster speeds. Stage 2-1 takes place at the only stage not available on the first loop, instead of the 1-1 counterpart. The remaining three stages are chosen at random, but does not include the replaced stage. After completing first loop with only one player, the player can choose one of two choices for a wish with a magic potion, with unique endings for each choice. If the first loop is completed with two players, a combination-specific ending is played. +The cutscenes between the battles with two players fighting cooperatively are frequently packed with hilarious dialogue and situations. This is often a recurring theme with Psikyo games, the Gunbird games being no exception. There are no cutscenes when playing second loop stages. The Korean arcade version contains English dialog but some sound samples are missing during play. + +Gunbird uses manga-styled character as the player's chosen craft. A story plays out in between levels and before boss fights, telling a tale of how the protagonists are trying to collect pieces of a magic mirror to make a wish. +Ash: A 28-year-old German man with a jet pack on his back, who in some of the scenes between battles is discovered to be an inventor, and when two players choose Marion and Ash as cooperative partners, he takes an unhealthy interest in her. Voiced by Ry?tar? Okiayu. +Marion: A 13-year-old witch from England who flies on a broomstick. She is accompanied by her talking pet rabbit, Pom-Pom, and frequently abuses the poor creature verbally and physically. Marion is fun-loving and thrill-seeking but also selfish, and has a mean streak (which Pom-Pom is often witness to). Voiced by Chiharu Tanaka. +Valnus: A big robot created in Russia six months ago that has some of the best firepower in the game. Secretly wishes to be human. Voiced by Kazuya Tatekabe. +Yuan Nang: A strong-willed and courageous woman whose character design is highly influenced by that of Sun Wukong from the Chinese classical story Journey to the West, including a cloud-somersault parody, Ruyi Jingu Bang, and the size-changing headband that was used by the monk Xuánzàng. Voiced by Naoko Matsui. +Tetsu: A strong, white-haired old man of 60 years. He is homosexual in a rather uncloseted manner and rides in a man-powered helicopter. Voiced by Sakunosuke Maya. +The Trump: A group of sky pirates consist of Ace (voiced by J?ji Yanami), Claude (voiced by Kazuya Tatekabe), and their female leader Rouge (voiced by Noriko Ohara). They are not playable and serve as the players' rivals in the story. + 0.70 + 19940101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + gunbird.zip + Psikyo + 270 + 320x224 + media/mixrbv2/gunbird.png + + + + gunbird.zip + Gunbird (World) + Gunbird is a vertically scrolling shoot 'em up developed and published by Psikyo and released in Japanese arcades in 1994. It has been re-released multiple times, including on the Sega Saturn, PlayStation, and Steam. When originally localized outside Japan by XS Games, Gunbird was retitled Mobile Light Force. The game was followed by Gunbird 2 in 1998 and was included in Gunbird Special Edition. + +When a player collides with the body of an enemy unit, the player loses a shot power level, and a power up flies around the screen and disappears as soon as it reaches the edge. If a player is at the lowest level of shot, the player loses a bomb instead. +There are seven stages in each of the game's two loops. The first four stages are randomly chosen from possible five. In the second loop enemies fire denser bullet patterns moving at faster speeds. Stage 2-1 takes place at the only stage not available on the first loop, instead of the 1-1 counterpart. The remaining three stages are chosen at random, but does not include the replaced stage. After completing first loop with only one player, the player can choose one of two choices for a wish with a magic potion, with unique endings for each choice. If the first loop is completed with two players, a combination-specific ending is played. +The cutscenes between the battles with two players fighting cooperatively are frequently packed with hilarious dialogue and situations. This is often a recurring theme with Psikyo games, the Gunbird games being no exception. There are no cutscenes when playing second loop stages. The Korean arcade version contains English dialog but some sound samples are missing during play. + +Gunbird uses manga-styled character as the player's chosen craft. A story plays out in between levels and before boss fights, telling a tale of how the protagonists are trying to collect pieces of a magic mirror to make a wish. +Ash: A 28-year-old German man with a jet pack on his back, who in some of the scenes between battles is discovered to be an inventor, and when two players choose Marion and Ash as cooperative partners, he takes an unhealthy interest in her. Voiced by Ry?tar? Okiayu. +Marion: A 13-year-old witch from England who flies on a broomstick. She is accompanied by her talking pet rabbit, Pom-Pom, and frequently abuses the poor creature verbally and physically. Marion is fun-loving and thrill-seeking but also selfish, and has a mean streak (which Pom-Pom is often witness to). Voiced by Chiharu Tanaka. +Valnus: A big robot created in Russia six months ago that has some of the best firepower in the game. Secretly wishes to be human. Voiced by Kazuya Tatekabe. +Yuan Nang: A strong-willed and courageous woman whose character design is highly influenced by that of Sun Wukong from the Chinese classical story Journey to the West, including a cloud-somersault parody, Ruyi Jingu Bang, and the size-changing headband that was used by the monk Xuánzàng. Voiced by Naoko Matsui. +Tetsu: A strong, white-haired old man of 60 years. He is homosexual in a rather uncloseted manner and rides in a man-powered helicopter. Voiced by Sakunosuke Maya. +The Trump: A group of sky pirates consist of Ace (voiced by J?ji Yanami), Claude (voiced by Kazuya Tatekabe), and their female leader Rouge (voiced by Noriko Ohara). They are not playable and serve as the players' rivals in the story. + 0.70 + 19940101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + Psikyo + 270 + 320x224 + media/mixrbv2/gunbird.png + + + + gundhara.zip + Gundhara + A two players vertical top-view shoot em up. + +In a near future a group of children disappeared from a town, a secret investigator woman named 'Sarah' entered secretly into the hideout of the kidnappers, to find the reasons, children were brainwashing. It was preparation for a World War III, commanded by a tyrant transhumanist to rule the world. The government opened a emergency meeting to chose two of their best soldiers, to stop this evil plan and rescue all the hostages children's. + +The players choose one of two soldiers 'Jerry Scott' from USA and 'Jinn Ayakawa' from Japan and must rescue all childrens on each level, while defeat all the enemies on the way using a variety of weapons, such as the Vulcan a shotgun a laser and a bazooka also a fire may obtained by collecting items. + 0.80 + 19950101T000000 + Banpresto + Banpresto + Shooter / Run and Gun + 2903 + 1-2 + Banpresto + 270 + 384x240 + media/mixrbv2/gundhara.png + + + + gundharac.zip + Gundhara (Chinese, bootleg?) + A two players vertical top-view shoot em up. + +In a near future a group of children disappeared from a town, a secret investigator woman named 'Sarah' entered secretly into the hideout of the kidnappers, to find the reasons, children were brainwashing. It was preparation for a World War III, commanded by a tyrant transhumanist to rule the world. The government opened a emergency meeting to chose two of their best soldiers, to stop this evil plan and rescue all the hostages children's. + +The players choose one of two soldiers 'Jerry Scott' from USA and 'Jinn Ayakawa' from Japan and must rescue all childrens on each level, while defeat all the enemies on the way using a variety of weapons, such as the Vulcan a shotgun a laser and a bazooka also a fire may obtained by collecting items. + 0.80 + 19950101T000000 + Banpresto + Banpresto + Shooter / Run and Gun + 2903 + 1-2 + gundhara.zip + Banpresto + 270 + 384x240 + media/mixrbv2/gundhara.png + + + + gunnail.zip + GunNail (28th May. 1992) + A vertically scrolling shoot 'em up. + 0.50 + 19930101T000000 + Shoot'em Up + 79 + 1-2 + NMK + 270 + 384x224 + media/mixrbv2/gunnail.png + + + + gunnailp.zip + GunNail (location test) + A vertically scrolling shoot 'em up. + 0.50 + 19930101T000000 + Shoot'em Up + 79 + 1-2 + gunnail.zip + NMK + 270 + 384x224 + media/mixrbv2/gunnail.png + + + + gururin.zip + Gururin + Your goal is to make three people of the same color line up and disappear--but to do that, you won't flip the people around as they fall but rather rotate the entire pit once they've landed. Like clothes in a dryer, you've got to flip the whole playfield around and try to match up the midgets as they slide down to the bottom of the screen, reorganizing themselves as they go. + 0.70 + 19940101T000000 + FACE + FACE + Puzzle-Game / Fall + 2912 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/gururin.png + + + + gussun.zip + Gussun Oyoyo (Japan) + Manipulate the blocks and guide the character walking around freely to the exit while protecting it from obstacles such as enemies. + 0.70 + 19930101T000000 + Irem + Irem + Puzzle-Game / Fall + 2912 + 1-2 + riskchal.zip + Irem Classics + 320x240 + media/mixrbv2/riskchal.png + + + + gutangtn.zip + Guttang Gottong + Loco-Motion is a puzzle-style arcade game in which a train is riding on a grid of movable track pieces. The goal is to guide the train through the train stations located around the edge of the playfield. An empty section in the grid allows the player to shift adjacent track pieces into that section to alter the train's path, and a tracing light shows the path the train is taking as it moves. An accelerator button moves the train more quickly on its path, and a panic button will switch the piece of track the train is on with a random track piece on the grid. + + + 0.70 + 19820101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + locomotn.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/locomotn.png + + + + guwange.zip + Guwange (Japan, Master Ver. 99/06/24) + The story of Guwange is set during the Muromachi period of Japan. During this time, increasing numbers of people suffer possession by shikigami. Although the shikigami grant great spiritual powers, the strain inflicted on the host causes them to die exactly one year after possession. However, a legend has sprung up regarding Guwange, the malevolent god trapped in Mt. Gokumon (i.e. Hell Gate). If one possessed by a shikigami can gather talismans of the five Chinese elements?wood, fire, earth, metal, water?from five demons serving Guwange, then infiltrate Gokumon and slay Guwange, the shikigami will be destroyed and the one possessed will not suffer a premature death. + 0.90 + 19990101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + Cave + 270 + 320x240 + media/mixrbv2/guwange.png + + + + guwanges.zip + Guwange (Japan, Special Ver. 00/01/01) + The story of Guwange is set during the Muromachi period of Japan. During this time, increasing numbers of people suffer possession by shikigami. Although the shikigami grant great spiritual powers, the strain inflicted on the host causes them to die exactly one year after possession. However, a legend has sprung up regarding Guwange, the malevolent god trapped in Mt. Gokumon (i.e. Hell Gate). If one possessed by a shikigami can gather talismans of the five Chinese elements?wood, fire, earth, metal, water?from five demons serving Guwange, then infiltrate Gokumon and slay Guwange, the shikigami will be destroyed and the one possessed will not suffer a premature death. + 0.90 + 19990101T000000 + Cave + Atlus + Shoot'em Up + 79 + 1-2 + guwange.zip + Cave + 270 + 320x240 + media/mixrbv2/guwange.png + + + + guzzler.zip + Guzzler + Each level is a maze of varying openness. Monsters spawn from colorful fires that must be extinguished to complete the level. The character can attack with three blasts of liquid before becoming empty. With each blast of liquid, the character moves faster and gets closer to being an empty outline with pink shoes. When empty the character is a shell of a sprite, but can move more quickly. Liquid is replenished by drinking (guzzling) from puddles. Occasionally, an alcoholic beverage will appear in the center of the screen. If the player picks up this beverage, liquid supply fills to maximum and the fires temporarily freeze. + 0.50 + 19830101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/guzzler.png + + + + pbancho.zip + Gyakuten!! Puzzle Bancho (Japan) + Line up 3 or more blocks of the same color so they touch, left to right or top to bottom or any combo of this. The large ones will disappear and the small ones will become large. If they reach the top of the screen, game is over. + 0.70 + 19960101T000000 + Fuuki + Fuuki + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x240 + media/mixrbv2/pbancho.png + + + + gyrodine.zip + Gyrodine + Gyrodine is a vertically scrolling shoot 'em up. + 0.60 + 19840101T000000 + Crux + Taito + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 288x224 + media/mixrbv2/gyrodine.png + + + + gyrodinet.zip + Gyrodine (Taito Corporation license) + Gyrodine is a vertically scrolling shoot 'em up. + 0.60 + 19840101T000000 + Crux + Taito + Shoot'em Up + 79 + 1-2 + gyrodine.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/gyrodine.png + + + + gyruss.zip + Gyruss + Gyruss is a single-player shoot-em-up in which the purpose is to fly through the solar system, destroying waves of alien attackers, before finally reaching Earth. Planets that must be passed before Earth is reached are Neptune, Uranus, Saturn, Jupiter, and Mars. + +It only takes two warps to reach Neptune, but all of the others, including Earth, take three warps to get to. Each time the player reaches a planet, they will be faced with a 'Chance Stage', a bonus stage in which players try to destroy as many aliens as possible to accrue points. After reaching Earth, there is a Chance Stage, followed by a very fast '3 Warps to Neptune' stage. After this, the levels and the background music start over. + +Gyruss' superb gameplay, in which the player ship rotates around the edges of the screen and fires 'inwards', is heavily influenced by Atari's 1981 classic, "Tempest". While the design of the alien ships themselves is similar to those of Namco's also-legendary "Galaga" series. + 0.90 + 19830101T000000 + Konami + Konami + Shooter / Plane, 3rd person + 2881 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/gyruss.png + + + + gyrussb.zip + Gyruss (bootleg?) + Gyruss is a single-player shoot-em-up in which the purpose is to fly through the solar system, destroying waves of alien attackers, before finally reaching Earth. Planets that must be passed before Earth is reached are Neptune, Uranus, Saturn, Jupiter, and Mars. + +It only takes two warps to reach Neptune, but all of the others, including Earth, take three warps to get to. Each time the player reaches a planet, they will be faced with a 'Chance Stage', a bonus stage in which players try to destroy as many aliens as possible to accrue points. After reaching Earth, there is a Chance Stage, followed by a very fast '3 Warps to Neptune' stage. After this, the levels and the background music start over. + +Gyruss' superb gameplay, in which the player ship rotates around the edges of the screen and fires 'inwards', is heavily influenced by Atari's 1981 classic, "Tempest". While the design of the alien ships themselves is similar to those of Namco's also-legendary "Galaga" series. + 0.90 + 19830101T000000 + Konami + Konami + Shooter / Plane, 3rd person + 2881 + 1-2 + gyruss.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/gyruss.png + + + + gyrussce.zip + Gyruss (Centuri) + Gyruss is a single-player shoot-em-up in which the purpose is to fly through the solar system, destroying waves of alien attackers, before finally reaching Earth. Planets that must be passed before Earth is reached are Neptune, Uranus, Saturn, Jupiter, and Mars. + +It only takes two warps to reach Neptune, but all of the others, including Earth, take three warps to get to. Each time the player reaches a planet, they will be faced with a 'Chance Stage', a bonus stage in which players try to destroy as many aliens as possible to accrue points. After reaching Earth, there is a Chance Stage, followed by a very fast '3 Warps to Neptune' stage. After this, the levels and the background music start over. + +Gyruss' superb gameplay, in which the player ship rotates around the edges of the screen and fires 'inwards', is heavily influenced by Atari's 1981 classic, "Tempest". While the design of the alien ships themselves is similar to those of Namco's also-legendary "Galaga" series. + 0.90 + 19830101T000000 + Konami + Konami + Shooter / Plane, 3rd person + 2881 + 1-2 + gyruss.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/gyruss.png + + + + hachamf.zip + Hacha Mecha Fighter (19th Sep. 1991, protected, set 1) + A cutesy horizontal scrolling shooter from NMK. + 0.50 + 19910101T000000 + NMK + Shoot'em Up + 79 + 1-2 + NMK + 256x224 + media/mixrbv2/hachamf.png + + + + hachamfa.zip + Hacha Mecha Fighter (19th Sep. 1991, protected, set 2) + A cutesy horizontal scrolling shooter from NMK. + 0.50 + 19910101T000000 + NMK + Shoot'em Up + 79 + 1-2 + hachamf.zip + NMK + 256x224 + media/mixrbv2/hachamf.png + + + + hachamfb.zip + Hacha Mecha Fighter (19th Sep. 1991, unprotected, bootleg Thunder Dragon conversion) + A cutesy horizontal scrolling shooter from NMK. + 0.50 + 19910101T000000 + NMK + Shoot'em Up + 79 + 1-2 + hachamf.zip + NMK + 256x224 + media/mixrbv2/hachamf.png + + + + hachamfp.zip + Hacha Mecha Fighter (Location Test Prototype, 19th Sep. 1991) + A cutesy horizontal scrolling shooter from NMK. + 0.50 + 19910101T000000 + NMK + Shoot'em Up + 79 + 1-2 + hachamf.zip + NMK + 256x224 + media/mixrbv2/hachamf.png + + + + hachoo.zip + Hachoo! + In ancient China, a wizard named Tyouraidoushi is trying to resurrect some ancient evil and two martial artists must fight their way through his monster-filled army to stop that from happening. + 0.50 + 19890101T000000 + Jaleco + Jaleco + Beat'em Up + 1 + 1-2 + Jaleco + 256x224 + media/mixrbv2/hachoo.png + + + + hal21.zip + HAL21 + A vertically scrolling shoot 'em up from SNK. + 0.50 + 19850101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/hal21.png + + + + hal21j.zip + HAL21 (Japan) + A vertically scrolling shoot 'em up from SNK. + 0.50 + 19850101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + hal21.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/hal21.png + + + + halfway.zip + Halfway To Hell: Progear Red Label (2016-1-17 Red label ver) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + chamburger.zip + Hamburger (DECO Cassette) (Japan) + The player is chef Peter Pepper, who must walk over hamburger ingredients located across a maze of platforms while avoiding pursuing characters. The game's original Japanese title, Hamburger , was changed to BurgerTime before its introduction to the United States. + 0.90 + 19830101T000000 + cbtime.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cbtime.png + + + + hamaway.zip + Hammer Away (prototype) + Hammer Away is a vertical shoot'em up developed by Santos and produced by Sega. + 0.60 + 19910101T000000 + SEGA + SEGA + Shoot'em Up + 79 + Sega Classics + 270 + 320x224 + media/mixrbv2/hamaway.png + + + + hharryu.zip + Hammerin' Harry (US, M84 hardware) + This was released in Japanese Arcade's in 1990, and for the NES on November 15th 1991 and sometime in 1992 in Europe. + 0.70 + 19900101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + hharry.zip + Irem Classics + 384x256 + media/mixrbv2/hharry.png + + + + hharry.zip + Hammerin' Harry (World, M81 hardware)) + This was released in Japanese Arcade's in 1990, and for the NES on November 15th 1991 and sometime in 1992 in Europe. + 0.70 + 19900101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/hharry.png + + + + hharryb.zip + Hammerin' Harry (World, M84 hardware bootleg) + This was released in Japanese Arcade's in 1990, and for the NES on November 15th 1991 and sometime in 1992 in Europe. + 0.70 + 19900101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + hharry.zip + Irem Classics + 384x256 + media/mixrbv2/hharry.png + + + + hangon1.zip + Hang-On + Hang-On is a superb point-to-point sprite scaling racing game in which the player takes control of a superbike and must race over five twisting circuits, avoiding rival bikers and trying to reach the end of each stage before the time limit expires. + +Hang-On's handling and superb graphics were unlike anything seen before in the arcades and, like many Yu Suzuki games that followed, revolutionised the racing genre. + 0.90 + 19850101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + hangon.zip + Sega Classics + 320x224 + media/mixrbv2/hangon.png + + + + hangon.zip + Hang-On (rev A) + Hang-On is a superb point-to-point sprite scaling racing game in which the player takes control of a superbike and must race over five twisting circuits, avoiding rival bikers and trying to reach the end of each stage before the time limit expires. + +Hang-On's handling and superb graphics were unlike anything seen before in the arcades and, like many Yu Suzuki games that followed, revolutionised the racing genre. + 0.90 + 19850101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 320x224 + media/mixrbv2/hangon.png + + + + hangon2.zip + Hang-On (Rev A, ride-on) + Hang-On is a superb point-to-point sprite scaling racing game in which the player takes control of a superbike and must race over five twisting circuits, avoiding rival bikers and trying to reach the end of each stage before the time limit expires. + +Hang-On's handling and superb graphics were unlike anything seen before in the arcades and, like many Yu Suzuki games that followed, revolutionised the racing genre. + 0.90 + 19850101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + hangon.zip + Sega Classics + 320x224 + media/mixrbv2/hangon.png + + + + hangonjr.zip + Hang-On Jr. Rev.B + Hang-On Jr. is a cut-down version of its legendary parent, 'Hang-On Jr' features similar gameplay to "Hang-On", but is rendered in more primitive graphics due to the vastly inferior host hardware. + 0.70 + 19850101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 256x192 + media/mixrbv2/hangonjr.png + + + + hangly.zip + Hangly-Man (set 1) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + hangly2.zip + Hangly-Man (set 2) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + hangly3.zip + Hangly-Man (set 3) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + hardhead.zip + Hard Head + Players control the character Hard Head, who can use a bubble gun to entrap enemies, then jump on their heads to defeat them. Often compared to Nintendo's Super Mario Bros., the game met with some favorable reviews on release and its offbeat sense of humor has been noted. Enemies include monsters and ducks. Hard Head can use his head to break bricks, some of which contain power-ups. Levels are completed by finding a soccer ball and kicking it through a goal to finish the stage. There are 16 levels in total. A two-player simultaneous mode is also available, allowing another player to control the second Hard Head twin. + +SunA subsequently released a sequel to the game, Hard Head 2, which featured the same characters but different gameplay. + 19880101T000000 + SunA + SunA + Platform / Run Jump Scrolling + 2897 + 1-2 + Mame + 256x224 + media/mixrbv2/hardhead.png + + + + hardhea2a.zip + Hard Head 2 (v2.0, Music Program v2.0) + A platform game + 0.50 + 19910101T000000 + SunA + SunA + Platform / Run Jump Scrolling + 2897 + 1-2 + hardhea2.zip + Mame + 256x224 + media/mixrbv2/hardhea2.png + + + + hardhea2.zip + Hard Head 2 (v2.0, Music Program v2.4) + A platform game + 0.50 + 19910101T000000 + SunA + SunA + Platform / Run Jump Scrolling + 2897 + 1-2 + Mame + 256x224 + media/mixrbv2/hardhea2.png + + + + hpuncher.zip + Hard Puncher (Japan) + Boxing Game. You play the role of Jabbin Jim who fights his way through different opponnents each tougher than the last. Some of the opponents are recognisable from the Rocky movies. Your boxer has three attributes: strength, speed, and staminia, and these all contribute to his overall power rating. The attributes can be improved by taking part in mini games between the rounds. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Boxing + 2929 + 1-2 + fround.zip + Konami Classics + 320x224 + media/mixrbv2/fround.png + + + + harem.zip + Harem + You are a sheik in a harem with some tent. You have to rescue the odalisques by taking them from tents to some chambers at the bottom of the screen and throwing stones at some guys dressed like Rambo without weapons. Beware the giant, fast, pink snake! + 0.30 + 19830101T000000 + I.G.R. + I.G.R. + Shooter + 2646 + 1 + Century Electronics + 270 + 256x224 + media/mixrbv2/harem.png + + + + hasamu.zip + Hasamu (Japan) + An interesting twist on solitaire mahjong, with movable tiles in certain circumstances. You must clear 2 tiles of the same suit, but they have to be either right next to each other or on the same row. + 0.50 + 19910101T000000 + Irem + Irem + Asiatic board game + 2647 + 1-2 + Irem Classics + 384x240 + media/mixrbv2/hasamu.png + + + + htchctch.zip + Hatch Catch + Shoot coloured blocks at the top of the screen. When 3 or more same colored blocks draw a line, they disappear. By terminating all blocks, the stage is clear. + 0.50 + 19950101T000000 + SemiCom + SemiCom + Puzzle-Game / Throw + 2923 + 1-2 + SemiCom + 320x240 + media/mixrbv2/htchctch.png + + + + hatrisj.zip + Hatris (Japan) + Hatris is a Tetris-type game where instead of blocks descending, there are hats; top hats, wizard hats, beanines and the like. The game is played by making vertical stacks of hats. When a stack of five hats of the same type and color is created, it disappears. The challenge of the game is that different styles of hats will stack differently. The game ends when one of your stacks of hats reaches the top of the screen. Occasionally, a red or a blue flame will appear. One burns just the top type of hat on a stack. The other will burn a stack to the ground. + 0.60 + 19900101T000000 + Video System + Video System + Puzzle-Game / Fall + 2912 + 1-2 + hatris.zip + Video System Co. + 352x240 + media/mixrbv2/hatris.png + + + + hatris.zip + Hatris (US) + Hatris is a Tetris-type game where instead of blocks descending, there are hats; top hats, wizard hats, beanines and the like. The game is played by making vertical stacks of hats. When a stack of five hats of the same type and color is created, it disappears. The challenge of the game is that different styles of hats will stack differently. The game ends when one of your stacks of hats reaches the top of the screen. Occasionally, a red or a blue flame will appear. One burns just the top type of hat on a stack. The other will burn a stack to the ground. + 0.60 + 19900101T000000 + Video System + Video System + Puzzle-Game / Fall + 2912 + 1-2 + Video System Co. + 352x240 + media/mixrbv2/hatris.png + + + + hcastlee.zip + Haunted Castle (ver. E) + Count Dracula sleeps for a long hundred of years. During this time, peace exists at the village and Dracula is nothing but a mere legend. + +However, one day a young couple named Simon and Serena were celebrating their wedding at the village's church. + +The couple were enveloped with happiness, as the wedding bells rang, their future seemed blessed... + +Suddenly, the empty sky was covered with dark clouds and with a rolling thunder that shook the earth, Dracula has once again awakened. Asking for the beautiful girl's blood, he flew down during the middle of the wedding and suddenly took the bride with him. + +Now in order to save Serena, Simon heads to the demon castle + 0.70 + 19880101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + hcastle.zip + Konami Classics + 256x224 + media/mixrbv2/hcastle.png + + + + hcastlek.zip + Haunted Castle (ver. K) + Count Dracula sleeps for a long hundred of years. During this time, peace exists at the village and Dracula is nothing but a mere legend. + +However, one day a young couple named Simon and Serena were celebrating their wedding at the village's church. + +The couple were enveloped with happiness, as the wedding bells rang, their future seemed blessed... + +Suddenly, the empty sky was covered with dark clouds and with a rolling thunder that shook the earth, Dracula has once again awakened. Asking for the beautiful girl's blood, he flew down during the middle of the wedding and suddenly took the bride with him. + +Now in order to save Serena, Simon heads to the demon castle + 0.70 + 19880101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + hcastle.zip + Konami Classics + 256x224 + media/mixrbv2/hcastle.png + + + + hcastle.zip + Haunted Castle (ver. M) + Count Dracula sleeps for a long hundred of years. During this time, peace exists at the village and Dracula is nothing but a mere legend. + +However, one day a young couple named Simon and Serena were celebrating their wedding at the village's church. + +The couple were enveloped with happiness, as the wedding bells rang, their future seemed blessed... + +Suddenly, the empty sky was covered with dark clouds and with a rolling thunder that shook the earth, Dracula has once again awakened. Asking for the beautiful girl's blood, he flew down during the middle of the wedding and suddenly took the bride with him. + +Now in order to save Serena, Simon heads to the demon castle + 0.70 + 19880101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/hcastle.png + + + + hayaosi1.zip + Hayaoshi Quiz Ouza Ketteisen - The King Of Quiz + A quiz game . + 19930101T000000 + Jaleco + Quiz / Japanese + 2894 + 1-3 + Jaleco + 256x224 + media/mixrbv2/hayaosi1.png + + + + headon1.zip + Head On (1 player) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headon.zip + Head On (2 players) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headonb.zip + Head On (bootleg on dedicated hardware) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headonmz.zip + Head On (bootleg, alt maze) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headons.zip + Head On (Sidam bootleg, set 1) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headonsa.zip + Head On (Sidam bootleg, set 2) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + headonn.zip + Head On N + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + hedpanic.zip + Head Panic (ver. 0117, 17/01/2000) + Follow Polly & Sally as they go round the world defeating monsters, complete with landscapes & landmarks from all around the world. + 0.70 + 20000101T000000 + ESD + Fuuki + Platform / Run Jump + 2915 + 1-2 + Mame + 320x240 + media/mixrbv2/hedpanic.png + + + + hedpanicf.zip + Head Panic (ver. 0315, 15/03/2000) + Follow Polly & Sally as they go round the world defeating monsters, complete with landscapes & landmarks from all around the world. + 0.70 + 20000101T000000 + ESD + Fuuki + Platform / Run Jump + 2915 + 1-2 + hedpanic.zip + Mame + 320x240 + media/mixrbv2/hedpanic.png + + + + hedpanica.zip + Head Panic (ver. 0702, 02/07/1999) + Follow Polly & Sally as they go round the world defeating monsters, complete with landscapes & landmarks from all around the world. + 0.70 + 20000101T000000 + ESD + Fuuki + Platform / Run Jump + 2915 + 1-2 + hedpanic.zip + Mame + 320x240 + media/mixrbv2/hedpanic.png + + + + heatbrle.zip + Heated Barrel (Electronic Devices license) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + heatbrl.zip + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + heatbrlu.zip + Heated Barrel (US) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + heatbrl.zip + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + heatbrlo.zip + Heated Barrel (World old version) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + heatbrl.zip + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + heatbrl2.zip + Heated Barrel (World version 2) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + heatbrl.zip + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + heatbrl.zip + Heated Barrel (World version 3) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + heatbrl3.zip + Heated Barrel (World version ?) + A cartoon style shoot-em'up featuring four wacky western characters: Howdy Pardner, a tough rootin 'tooting' sheriff with a big gun, Chi Chi Gringo, a boomerang toting bearded Mexican, Little Plum, a stereotype Indian brave and Billy Six Guns, a willy quick-on-the-draw roving Clint Eastwood type chap. These four hombres have pledged to rid Dodgem City of outlaws, ne'er-do-wells and, erm, ghosts. Each character has their chosen weapon which may be powered up by collecting the right item until the stage is set for a feast of doom and death. + 0.60 + 19920101T000000 + Tad Corporation + Tad Corporation + Shooter / Run and Gun + 2903 + 1-4 + heatbrl.zip + Mame + 256x256 + media/mixrbv2/heatbrl.png + + + + hvymetal.zip + Heavy Metal (315-5135) + Watch as your transport vessel cruises up to the docks and you drive your powerful tank through the enemy territory to wage a massive war against a plentiful and deadly enemy! In the mighty Heavy Metal you must command a cool tank and use your machine guns and huge missiles to fight through the waves and waves of enemy vehicles structures and troops to destroy their forces to win the war for your people! + 19800101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/hvymetal.png + + + + hvyunitja.zip + Heavy Unit (Japan, Alternate ROM format) + A side-scrolling shooter for the PC-Engine, developed and published by Taito in 1989. + 0.60 + 19880101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + hvyunit.zip + Taito Classics + 256x224 + media/mixrbv2/hvyunit.png + + + + hvyunitj.zip + Heavy Unit (Japan, Newer) + A side-scrolling shooter for the PC-Engine, developed and published by Taito in 1989. + 0.60 + 19880101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + hvyunit.zip + Taito Classics + 256x224 + media/mixrbv2/hvyunit.png + + + + hvyunitjo.zip + Heavy Unit (Japan, Older) + A side-scrolling shooter for the PC-Engine, developed and published by Taito in 1989. + 0.60 + 19880101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + hvyunit.zip + Taito Classics + 256x224 + media/mixrbv2/hvyunit.png + + + + hvyunit.zip + Heavy Unit (World) + A side-scrolling shooter for the PC-Engine, developed and published by Taito in 1989. + 0.60 + 19880101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/hvyunit.png + + + + hvyunitu.zip + Heavy Unit -U.S.A. Version- (US) + A side-scrolling shooter for the PC-Engine, developed and published by Taito in 1989. + 0.60 + 19880101T000000 + Kaneko + Kaneko + Shoot'em Up + 79 + 1-2 + hvyunit.zip + Taito Classics + 256x224 + media/mixrbv2/hvyunit.png + + + + hwchampjd.zip + Heavyweight Champ (Japan, FD1094 317-0046 decrypted) + Heavyweight Champ is a first person boxing game where you guide a boxer named 'Kid Crusher' up the rankings and towards a World Heavyweight Title bout. Win and defend your belt successfully to become a true champion. + 0.50 + 19870101T000000 + SEGA + SEGA + Sports / Boxing + 2929 + 1 + hwchamp.zip + Sega Classics + 320x224 + media/mixrbv2/hwchamp.png + + + + hwchampj.zip + Heavyweight Champ (Japan, FD1094 317-0046) + Heavyweight Champ is a first person boxing game where you guide a boxer named 'Kid Crusher' up the rankings and towards a World Heavyweight Title bout. Win and defend your belt successfully to become a true champion. + 0.50 + 19870101T000000 + SEGA + SEGA + Sports / Boxing + 2929 + 1 + hwchamp.zip + Sega Classics + 320x224 + media/mixrbv2/hwchamp.png + + + + hwchamp.zip + Heavyweight Champ (set 1) + Heavyweight Champ is a first person boxing game where you guide a boxer named 'Kid Crusher' up the rankings and towards a World Heavyweight Title bout. Win and defend your belt successfully to become a true champion. + 0.50 + 19870101T000000 + SEGA + SEGA + Sports / Boxing + 2929 + 1 + Sega Classics + 320x224 + media/mixrbv2/hwchamp.png + + + + hwchampa.zip + Heavyweight Champ (set 2) + Heavyweight Champ is a first person boxing game where you guide a boxer named 'Kid Crusher' up the rankings and towards a World Heavyweight Title bout. Win and defend your belt successfully to become a true champion. + 0.50 + 19870101T000000 + SEGA + SEGA + Sports / Boxing + 2929 + 1 + hwchamp.zip + Sega Classics + 320x224 + media/mixrbv2/hwchamp.png + + + + heberpop.zip + Hebereke no Popoon (Japan) + A cute puzzle game. + 0.70 + 19940101T000000 + Sunsoft + Sunsoft + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 384x224 + media/mixrbv2/heberpop.png + + + + heiankyo.zip + Heiankyo Alien + You control a man who walks around in a maze digging holes to trap the aliens. + 0.10 + 19790101T000000 + Denki Onkyo + Denki Onkyo + Action + 10 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/heiankyo.png + + + + hellfire1.zip + Hellfire (1P set) + Hellfire is a nice horizontal shoot'em up feature a selectable shooting direction. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + hellfire.zip + Taito Classics + 320x240 + media/mixrbv2/hellfire.png + + + + hellfire1a.zip + Hellfire (1P set, older) + Hellfire is a nice horizontal shoot'em up feature a selectable shooting direction. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + hellfire.zip + Taito Classics + 320x240 + media/mixrbv2/hellfire.png + + + + hellfire.zip + Hellfire (2P set) + Hellfire is a nice horizontal shoot'em up feature a selectable shooting direction. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/hellfire.png + + + + hellfire2a.zip + Hellfire (2P set, older) + Hellfire is a nice horizontal shoot'em up feature a selectable shooting direction. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + hellfire.zip + Taito Classics + 320x240 + media/mixrbv2/hellfire.png + + + + herbiedk.zip + Herbie at the Olympics (DK conversion) + The Games of the XXIII Olympiad were held in Los Angeles in 1984 and for the first time since the advent of the video game industry, this king of sporting competitions was to be held in a first-world nation. In simpler times, this might have inspired people to head out to a track or gymnasium to try their stuff, but now for the first time an industry was poised to let the hands of the middle-class masses do all the work virtually, through joysticks, needing no facilities or specialised equipment (beyond a video game console) to try the whole gamut of events. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Sports / Running trails + 2877 + 1-2 + huncholy.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/huncholy.png + + + + hero.zip + Hero + Wander through a maze and collect the heart, diamond, spade, club and in later stages 'J' to move to the next level on your way to rescuing Esmeralda. Avoid the fireballs and arrows. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Action + 10 + 1-2 + Century Electronics + 270 + 240x248 + media/mixrbv2/hero.png + + + + herodku.zip + Hero in the Castle of Doom (DK conversion not encrypted) + Wander through a maze and collect the heart, diamond, spade, club and in later stages 'J' to move to the next level on your way to rescuing Esmeralda. Avoid the fireballs and arrows. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Action + 10 + 1-2 + hero.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/hero.png + + + + herodk.zip + Hero in the Castle of Doom (DK conversion) + Wander through a maze and collect the heart, diamond, spade, club and in later stages 'J' to move to the next level on your way to rescuing Esmeralda. Avoid the fireballs and arrows. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Action + 10 + 1-2 + hero.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/hero.png + + + + heuksun.zip + Heuk Sun Baek Sa (Korea) + Heuk sun baek sa (c) 1997 F2 System. - TRIVIA - The title of this game translates from Korean as 'Black first, kill white'. - SOURCES - Game's rom. + 0.50 + 19970101T000000 + Oksan / F2 System + Go + 2958 + 1-2 + Mame + 320x240 + media/mixrbv2/heuksun.png + + + + hexpoola.zip + Hex Pool (Senko) + Rack + Roll &copy; 1986 Status Games. + +The object of the game is to clear a rack with limited shots. + 0.50 + 19860101T000000 + Senko Industries + Sports / Pool + 3028 + 1-2 + racknrol.zip + Konami Classics + 256x224 + media/mixrbv2/racknrol.png + + + + hexpool.zip + Hex Pool (Shinkai) + Rack + Roll &copy; 1986 Status Games. + +The object of the game is to clear a rack with limited shots. + 0.50 + 19860101T000000 + Senko Industries + Sports / Pool + 3028 + 1-2 + racknrol.zip + Konami Classics + 256x224 + media/mixrbv2/racknrol.png + + + + hexa.zip + Hexa + Hexa is a clone of Sega's "Columns", released in 1990. + 0.50 + 19900101T000000 + D.R. Korea + Puzzle-Game / Fall + 2912 + 1 + Taito Classics + 256x224 + media/mixrbv2/hexa.png + + + + hexionb.zip + Hexion (Bootleg, Asia ver. AAA) + A good tetris game. This game has hexagonal atoms-based block instead of the normal tetragonal atoms-based blocks. + 0.70 + 19920101T000000 + Konami + Konami + Puzzle-Game / Fall + 2912 + 1-2 + hexion.zip + Konami Classics + 512x256 + media/mixrbv2/hexion.png + + + + hexion.zip + Hexion (Japan ver. JAB) + A good tetris game. This game has hexagonal atoms-based block instead of the normal tetragonal atoms-based blocks. + 0.70 + 19920101T000000 + Konami + Konami + Puzzle-Game / Fall + 2912 + 1-2 + Konami Classics + 512x256 + media/mixrbv2/hexion.png + + + + hwrace.zip + High Way Race + High Way Race is an overhead driving game from Taito. + 0.70 + 19830101T000000 + Taito + Taito + Race, Driving / Race + 2924 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/hwrace.png + + + + chwy.zip + Highway Chase (DECO Cassette) (US) + A "Galaxian" type game. Shoot all the cars on the screen the clear the level. + 0.50 + 19800101T000000 + Data East + Data East + Shooter / Vehicle, Vertical + 2921 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/chwy.png + + + + himesiki.zip + Himeshikibu (Japan) + Himeshikibu (c) 1989 Hi-Soft. - SOURCES - Game's ROM. + 0.50 + 19890101T000000 + Hi-Soft + Hi-Soft + Hanafuda + 2882 + 1-2 + Mame + 270 + 256x192 + media/mixrbv2/himesiki.png + + + + hipoly.zip + Hipoly (bootleg of Hyper Olympic) + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + hishouza.zip + Hishou Zame (Japan) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + buraiken.zip + Hissatsu Buraiken (Japan) + Avenger takes place in Paradise City, where the villain, "Geshita", has captured six girls from the city. The player's objective (as Ryu or Ko) is to banish "Geshita" from Paradise City once and for all. During the game, the player can pick up powerups like the "Speed Up", the Super Punch, Grenades, Shurikens, Nunchaku and extra health. + 0.70 + 19870101T000000 + Capcom + Capcom + Fight / Vertical + 2922 + 1-2 + avengers.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/avengers.png + + + + hiticej.zip + Hit the Ice (Japan) + Welcome to no holds barred hockey brought to you by the Video Hockey League. It's the Reds versus the Blues, the VHL's biggest rivalry. + +The same hockey rules apply, pass the puck around around the ice rink and shoot it past the opposite goalie to score. You can also check your opponent just like real hockey, only each character has their own bone-crushing way of checking, each with maximum impact and zero tolerance for your well-being. Players can also start fights with one another to really spice things up. + +For an additional credit, players can purchase a 'power drink' that will make them 'Skate Faster and Shoot Harder' at the start of the period for one minute. + +Now get to the action and DROP THAT PUCK! + 0.70 + 19900101T000000 + Williams + Taito + Sports / Hockey + 2933 + 1-4 + hitice.zip + Taito Classics + 320x224 + media/mixrbv2/hitice.png + + + + hitice.zip + Hit the Ice (US) + Welcome to no holds barred hockey brought to you by the Video Hockey League. It's the Reds versus the Blues, the VHL's biggest rivalry. + +The same hockey rules apply, pass the puck around around the ice rink and shoot it past the opposite goalie to score. You can also check your opponent just like real hockey, only each character has their own bone-crushing way of checking, each with maximum impact and zero tolerance for your well-being. Players can also start fights with one another to really spice things up. + +For an additional credit, players can purchase a 'power drink' that will make them 'Skate Faster and Shoot Harder' at the start of the period for one minute. + +Now get to the action and DROP THAT PUCK! + 0.70 + 19900101T000000 + Williams + Taito + Sports / Hockey + 2933 + 1-4 + Taito Classics + 320x224 + media/mixrbv2/hitice.png + + + + hoccer.zip + Hoccer (set 1) + You are Andrew, the one man team. Ord and Clee are robots whose goal is to destroy you any way they can (by driving you against the boards, into a spinner, or by hitting you with a supercharged ball). Knock out Ord and Clee with your ball or by hitting them against the sides. Points are also scored by hitting the goal and hitting the targets on the sides. + 0.50 + 19830101T000000 + Eastern Micro Electronics + Eastern Micro Electronics + Sports / Hockey + 2933 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/hoccer.png + + + + hoccer2.zip + Hoccer (set 2) + You are Andrew, the one man team. Ord and Clee are robots whose goal is to destroy you any way they can (by driving you against the boards, into a spinner, or by hitting you with a supercharged ball). Knock out Ord and Clee with your ball or by hitting them against the sides. Points are also scored by hitting the goal and hitting the targets on the sides. + 0.50 + 19830101T000000 + Eastern Micro Electronics + Eastern Micro Electronics + Sports / Hockey + 2933 + 1-2 + hoccer.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/hoccer.png + + + + hiryuken.zip + Hokuha Syourin Hiryu no Ken + A fighting game from 1985, notable for being the first to implement a combo system. + 0.50 + 19850101T000000 + Taiyo + Taiyo + Fight / Versus + 2885 + 1-2 + shangkid.zip + Data East Classics + 288x224 + media/mixrbv2/shangkid.png + + + + holeland.zip + Hole Land (Japan) + Destroy all the enemies that pop out of the ground. If they get to the bottom you will need to jump to prevent them from damaging you. + 0.50 + 19840101T000000 + Tecfri + Tecfri + Shooter / 3rd person + 2899 + 1-2 + Mame + 512x448 + media/mixrbv2/holeland.png + + + + holeland2.zip + Hole Land (Spain) + Destroy all the enemies that pop out of the ground. If they get to the bottom you will need to jump to prevent them from damaging you. + 0.50 + 19840101T000000 + Tecfri + Tecfri + Shooter / 3rd person + 2899 + 1-2 + holeland.zip + Mame + 512x448 + media/mixrbv2/holeland.png + + + + homo.zip + Homo + Let's Smash Blocks! Fighting between primitive 'Goindol' guardian blocks in eolithic age and adventurers of civilized world 100 rounds full of variety and excitement 16 pictures added for bonus. + 19870101T000000 + SunA + SunA + Action / Breakout games + 2917 + 1-2 + goindol.zip + Mame + 270 + 256x224 + media/mixrbv2/goindol.png + + + + honeydol.zip + Honey Dolls + Honey Dolls (c) 1995 Barko. - TECHNICAL - Main CPU : 68000 (@ 16 Mhz), Z80 (@ 4 Mhz) Sound Chips : YM3812 (@ 3 Mhz), OKI6295 (@ 7.575 Khz) Screen orientation : Horizontal Video resolution : 256 x 224 pixels Screen refresh : 57.50 Hz Palette colors : 10 + 0.50 + 19950101T000000 + Barco + Barko Corp. + Puzzle-Game / Equalize + 2864 + 1-2 + SemiCom + 256x224 + media/mixrbv2/honeydol.png + + + + redfoxwp2.zip + Hong Hu Zhanji II (China, set 1) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + redfoxwp2a.zip + Hong Hu Zhanji II (China, set 2) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + hopprobo.zip + Hopper Robo + Hopper Robo is a platform game in which the player must use a two-way joystick to take up control of a robot named Hopper Robo, and a single button to make him jump. His objective is to collect the numbered boxes on each round in numerical order (the one he should collect next will flash), then drop them onto one of the two conveyor belts at the bottom of the screen. There are several kinds of enemy robots that guard some of the boxes; they all move in preset patterns and you will have to learn their movements in order to figure out the best moment to sneak past them. If any of them touch Hopper Robo he will die. He must also avoid other obstacles such as flying hammers and springs. To aid Hopper Robo, there are springboards to reach higher platforms, and pipes to slide back down. If Hopper Robo should run out of energy, it will cost him a life - but when he clears a round, his remaining energy will be awarded to the player, as bonus points. There are eight unique levels, after which the game loops indefinitely. + 0.50 + 19830101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/hopprobo.png + + + + hopmappy.zip + Hopping Mappy + In Hopping Mappy players control the Micro Police mouse, Mappy as he bounces on a pogo stick to run circles around pink cats, called Meowkies, who patrol either vertically or horizontally. There is also Nyamco, a cat who patrols in a zigzag pattern, but he needs to take occasional breaks. There are eight treasures that a player must grab to complete a round, except on the bonus round where the player will just want to collect all the balloons that he can. The main intrigue here is getting past a blockade of Meowkies. + 0.50 + 19860101T000000 + Namco + Namco + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/hopmappy.png + + + + horizon.zip + Horizon + A horizontally scrolling shooter, Horizon is the sequel to Moon Patrol. Both were developed by Irem; Moon Patrol was licensed to Williams. + +Players take control of hover vehicle armed with a turret and a cannon, rolling over the terrain and alternating their position and perspective on three different lanes to destroy enemies and dodge attacks while avoiding obstacles and picking up fuel and other items. + 0.40 + 19850101T000000 + Irem + Irem + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Irem Classics + 256x256 + media/mixrbv2/horizon.png + + + + hotbubla.zip + Hot Bubble (Korea) + A "Puzzle Bobble"-like game where you get nude pictures of women with every level you complete. + 0.50 + 19980101T000000 + Tuning + Puzzle-Game / Throw + 2923 + 1-2 + bubl2000.zip + NMK + 256x224 + media/mixrbv2/bubl2000.png + + + + hotbubl.zip + Hot Bubble (Korea, with adult pictures) + A "Puzzle Bobble"-like game where you get nude pictures of women with every level you complete. + 0.50 + 19980101T000000 + Tuning + Puzzle-Game / Throw + 2923 + 1-2 + bubl2000.zip + NMK + 256x224 + media/mixrbv2/bubl2000.png + + + + hotchase.zip + Hot Chase (set 1) + An action-packed driving game in which the player must drive a stolen enemy 'Super-car' - which has a bomb strapped to the underside of its chassis - and get to the country's border before the timer runs down and the bomb explodes. Enemy troops, road-blocks, planes and helicopters must all be avoided. + 0.70 + 19880101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + Konami Classics + 320x224 + media/mixrbv2/hotchase.png + + + + hotchasea.zip + Hot Chase (set 2) + An action-packed driving game in which the player must drive a stolen enemy 'Super-car' - which has a bomb strapped to the underside of its chassis - and get to the country's border before the timer runs down and the bomb explodes. Enemy troops, road-blocks, planes and helicopters must all be avoided. + 0.70 + 19880101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + hotchase.zip + Konami Classics + 320x224 + media/mixrbv2/hotchase.png + + + + hotminda.zip + Hot Mind (adjustable prize) + A puzzle game. + 0.50 + 19950101T000000 + Playmark + Playmark + Various + 39 + 1 + hotmind.zip + Mame + 320x224 + media/mixrbv2/hotmind.png + + + + hotpinbl.zip + Hot Pinball + Hot Pinball (c) 1995 Comad. A video-pinball game with girls... lots of girls. - TECHNICAL - Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : YM3812 (@ 3.579545 Mhz), OKI6295 (@ 8 Khz) Players : 1 Buttons : 3 - SERIES - 1. Hot Pinb + 19950101T000000 + Comad + Pinball + 31 + 1 + Comad + 90 + 512x224 + media/mixrbv2/hotpinbl.png + + + + hotshock.zip + Hot Shocker + Dudley must change the color of the web by walking on it while being chased. + 0.40 + 19820101T000000 + E.G. Felaco + E.G. Felaco (Domino license) + Action + 10 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/hotshock.png + + + + hotshockb.zip + Hot Shocker (bootleg) + Dudley must change the color of the web by walking on it while being chased. + 0.40 + 19820101T000000 + E.G. Felaco + E.G. Felaco (Domino license) + Action + 10 + 1-2 + hotshock.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/hotshock.png + + + + hotdogst.zip + Hotdog Storm - The First Supersonics (korea) + Hot Dog Storm plays like any typical vertical scrolling shoot 'em up from the early-to-mid 90's. The player takes the role of the pilot of a futuristic space fighter, waging war against a horde of giant robots, tanks, mechs, and massive gunships. Similar to games like Strikers 1945 or Raiden, enemies often attack with extremely fast volleys of projectiles, in contrast to proto-bullet hell games such as DonPachi that started appearing the previous year. +The game has five stages, each ending in a boss fight. Bosses have destructible parts that can be blown apart piece by piece for more points, and each boss also has a telegraphed super weapon that fires periodically and must be avoided. +The game never explains its unusual title. + 0.75 + 19960101T000000 + Marble + ACE International + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/hotdogst.png + + + + hunchbkg.zip + Hunchback (Galaxian hardware) + Hunchback is a classic and much-copied platform game in which the player takes on the role of the eponymous bell-ringer, Quasimodo, in his quest to rescue the beautiful Esmeralda from the tower of the castle fortress. + +To reach Esmeralda, Quasi must run and jump through a number of screens - each representing part of a castle wall - to reach the tower and complete his rescue. Each screen presents the player with a different set of platform-based obstacles. These range from spear-toting guards, to ramparts and fiery chasms (the latter of which is cleared by carefully timed jumps onto and off a constantly swinging rope). + +Most of the game's screens also feature projectiles - in the form of fireballs and arrows - that must be avoided. These can appear from both the left and right-hand side of the screen and can be moving at one of two different heights and speeds. Some of the trickier screens contain more than one of these projectiles and contact with either a projectile or guard will result in Quasi falling from the castle wall, resulting in the loss of a player life. + +To complicate matters further, each screen must be completed within a strict time limit. This takes the form of an enemy guard climbing the castle walls; if the guard reaches the top of the wall, he will walk towards Quasi to burn the Hunchback with his torch. If Quasi rings the bell before the guard has scaled the wall, a bonus score is rewarded. If five screens are completed without a life being lost, a 'Super Bonus' is awarded. + +A meter at the bottom left corner of the screen - displaying a cutaway of castle ramparts - shows Quasi's progress towards the tower and his beloved Esmeralda. Upon reaching Esmeralda, players must complete a bonus screen - involving using moving ropes to collect bells from a series of platforms - to complete the rescue. + +Once completed, the game starts over with a much higher level of difficulty and tighter time limits. + 0.30 + 19830101T000000 + Century Electronics + Century Electronics + Platform / Run Jump Scrolling + 2897 + 1-2 + hunchbak.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/hunchbak.png + + + + hunchbks.zip + Hunchback (Scramble hardware) + Hunchback is a classic and much-copied platform game in which the player takes on the role of the eponymous bell-ringer, Quasimodo, in his quest to rescue the beautiful Esmeralda from the tower of the castle fortress. + +To reach Esmeralda, Quasi must run and jump through a number of screens - each representing part of a castle wall - to reach the tower and complete his rescue. Each screen presents the player with a different set of platform-based obstacles. These range from spear-toting guards, to ramparts and fiery chasms (the latter of which is cleared by carefully timed jumps onto and off a constantly swinging rope). + +Most of the game's screens also feature projectiles - in the form of fireballs and arrows - that must be avoided. These can appear from both the left and right-hand side of the screen and can be moving at one of two different heights and speeds. Some of the trickier screens contain more than one of these projectiles and contact with either a projectile or guard will result in Quasi falling from the castle wall, resulting in the loss of a player life. + +To complicate matters further, each screen must be completed within a strict time limit. This takes the form of an enemy guard climbing the castle walls; if the guard reaches the top of the wall, he will walk towards Quasi to burn the Hunchback with his torch. If Quasi rings the bell before the guard has scaled the wall, a bonus score is rewarded. If five screens are completed without a life being lost, a 'Super Bonus' is awarded. + +A meter at the bottom left corner of the screen - displaying a cutaway of castle ramparts - shows Quasi's progress towards the tower and his beloved Esmeralda. Upon reaching Esmeralda, players must complete a bonus screen - involving using moving ropes to collect bells from a series of platforms - to complete the rescue. + +Once completed, the game starts over with a much higher level of difficulty and tighter time limits. + 0.30 + 19830101T000000 + Century Electronics + Century Electronics + Platform / Run Jump Scrolling + 2897 + 1-2 + hunchbak.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/hunchbak.png + + + + hunchbak.zip + Hunchback (set 1) + Hunchback is a classic and much-copied platform game in which the player takes on the role of the eponymous bell-ringer, Quasimodo, in his quest to rescue the beautiful Esmeralda from the tower of the castle fortress. + +To reach Esmeralda, Quasi must run and jump through a number of screens - each representing part of a castle wall - to reach the tower and complete his rescue. Each screen presents the player with a different set of platform-based obstacles. These range from spear-toting guards, to ramparts and fiery chasms (the latter of which is cleared by carefully timed jumps onto and off a constantly swinging rope). + +Most of the game's screens also feature projectiles - in the form of fireballs and arrows - that must be avoided. These can appear from both the left and right-hand side of the screen and can be moving at one of two different heights and speeds. Some of the trickier screens contain more than one of these projectiles and contact with either a projectile or guard will result in Quasi falling from the castle wall, resulting in the loss of a player life. + +To complicate matters further, each screen must be completed within a strict time limit. This takes the form of an enemy guard climbing the castle walls; if the guard reaches the top of the wall, he will walk towards Quasi to burn the Hunchback with his torch. If Quasi rings the bell before the guard has scaled the wall, a bonus score is rewarded. If five screens are completed without a life being lost, a 'Super Bonus' is awarded. + +A meter at the bottom left corner of the screen - displaying a cutaway of castle ramparts - shows Quasi's progress towards the tower and his beloved Esmeralda. Upon reaching Esmeralda, players must complete a bonus screen - involving using moving ropes to collect bells from a series of platforms - to complete the rescue. + +Once completed, the game starts over with a much higher level of difficulty and tighter time limits. + 0.30 + 19830101T000000 + Century Electronics + Century Electronics + Platform / Run Jump Scrolling + 2897 + 1-2 + Century Electronics + 270 + 240x248 + media/mixrbv2/hunchbak.png + + + + huncholy.zip + Hunchback Olympic + The Games of the XXIII Olympiad were held in Los Angeles in 1984 and for the first time since the advent of the video game industry, this king of sporting competitions was to be held in a first-world nation. In simpler times, this might have inspired people to head out to a track or gymnasium to try their stuff, but now for the first time an industry was poised to let the hands of the middle-class masses do all the work virtually, through joysticks, needing no facilities or specialised equipment (beyond a video game console) to try the whole gamut of events. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Sports / Running trails + 2877 + 1-2 + Century Electronics + 270 + 240x248 + media/mixrbv2/huncholy.png + + + + hncholms.zip + Hunchback Olympic (Scramble hardware) + The Games of the XXIII Olympiad were held in Los Angeles in 1984 and for the first time since the advent of the video game industry, this king of sporting competitions was to be held in a first-world nation. In simpler times, this might have inspired people to head out to a track or gymnasium to try their stuff, but now for the first time an industry was poised to let the hands of the middle-class masses do all the work virtually, through joysticks, needing no facilities or specialised equipment (beyond a video game console) to try the whole gamut of events. + 0.30 + 19840101T000000 + Century Electronics + Century Electronics + Sports / Running trails + 2877 + 1-2 + huncholy.zip + Century Electronics + 270 + 240x248 + media/mixrbv2/huncholy.png + + + + hustle.zip + Hustle + HUSTLE is a 1- or 2-player video game which challenges players' reaction time as they attempt to build up a high score. The object of the game is to maneuver a moving arrow into targets which appear randomly on the screen. Each arrow is accompanied by a tail, which can be used to block the opponent from scoring targets. + +TARGETS: The targets appear randomly on the playfield. The position of a target, the value of a target, the time a target stays on the screen, and the time before a target appears are all unpredictable: There are never more than two targets on the screen at any time. + +To add to the unpredictability, some targets appear with a value of ???. These are mystery targets, and can have a value from -900 points to +900 points. Players go after the mystery targets at their own risk since the only way to determine whether or not a mystery target is positive or negative is to hit the target. Whenever a target is scored, the game pauses while the appropriate player's score is tallied. Two distinctive sounds accompany the scoring, depending on whether the target score is positive or negative. All non-mystery targets (which are all positive), and all mystery targets (which have positive values) are scored with an attention-getting warble sound. All mystery targets which prove to be negative are scored with a distinctive penalty sound. + + + 0.30 + 19770101T000000 + Gremlin Interactive + Gremlin Interactive + Action + 10 + 1-2 + Mame + 256x224 + media/mixrbv2/hustle.png + + + + hydra.zip + Hydra + An abstract racing game in which the player takes on the role of a special government courier, who must deliver a number of secret cargoes to their various destinations at the end of each stage. Gameplay consists of piloting a heavily-armed hovercraft over a series of waterways, avoiding or destroying the enemy craft and barriers that litter each level. Progress is hampered by mines, enemy hovercraft, logs and other obstacles. Money bags can be collected as well as extra fuel. + +On-board fuel depletes at a steady pace and players must keep a look out for additional fuel cells. In addition to a forward-firing gun, the hovercraft is equipped with a 'Boost' function. Providing the player has enough boost fuel, the craft can be made to fly in the air for a limited time; useful for avoiding enemies and barriers, as well as for gaining access to certain bonus items. + 0.80 + 19900101T000000 + Atari + Atari + Shooter / Vehicle, 3rd person + 2910 + 1 + Atari Classics + 336x240 + media/mixrbv2/hydra.png + + + + hydrap.zip + Hydra (prototype 5/14/90) + An abstract racing game in which the player takes on the role of a special government courier, who must deliver a number of secret cargoes to their various destinations at the end of each stage. Gameplay consists of piloting a heavily-armed hovercraft over a series of waterways, avoiding or destroying the enemy craft and barriers that litter each level. Progress is hampered by mines, enemy hovercraft, logs and other obstacles. Money bags can be collected as well as extra fuel. + +On-board fuel depletes at a steady pace and players must keep a look out for additional fuel cells. In addition to a forward-firing gun, the hovercraft is equipped with a 'Boost' function. Providing the player has enough boost fuel, the craft can be made to fly in the air for a limited time; useful for avoiding enemies and barriers, as well as for gaining access to certain bonus items. + 0.80 + 19900101T000000 + Atari + Atari + Shooter / Vehicle, 3rd person + 2910 + 1 + hydra.zip + Atari Classics + 336x240 + media/mixrbv2/hydra.png + + + + hcrashc.zip + Hyper Crash (version C) + +Drive through a course and reach the goal by crashing into other cars and destroying them. + 0.50 + 19870101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + hcrash.zip + Konami Classics + 256x224 + media/mixrbv2/hcrash.png + + + + hcrash.zip + Hyper Crash (version D) + +Drive through a course and reach the goal by crashing into other cars and destroying them. + 0.50 + 19870101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + Konami Classics + 256x224 + media/mixrbv2/hcrash.png + + + + hyprduel.zip + Hyper Duel (Japan set 1) + A horizontal-scrolling shoot-em-up for 1 or 2 players, Hyper Duel features 7 challenging levels. The game also has an impressive array of power-ups, including one that is essentially a second 'drone' ship that is almost identical to the players' own. Hyper Duel also has a unique feature in that players can hold down a button and transform their ships in large robots; In robot form the players' firepower is drastically increased but the weapon no longer only fires forwards, and will track the players' joystick movements. The robots will return to ship form once the button is released. + 0.70 + 19930101T000000 + Technosoft + Technosoft + Shoot'em Up + 79 + 1-2 + Mame + 320x224 + media/mixrbv2/hyprduel.png + + + + hyprduel2.zip + Hyper Duel (Japan set 2) + A horizontal-scrolling shoot-em-up for 1 or 2 players, Hyper Duel features 7 challenging levels. The game also has an impressive array of power-ups, including one that is essentially a second 'drone' ship that is almost identical to the players' own. Hyper Duel also has a unique feature in that players can hold down a button and transform their ships in large robots; In robot form the players' firepower is drastically increased but the weapon no longer only fires forwards, and will track the players' joystick movements. The robots will return to ship form once the button is released. + 0.70 + 19930101T000000 + Technosoft + Technosoft + Shoot'em Up + 79 + 1-2 + hyprduel.zip + Mame + 320x224 + media/mixrbv2/hyprduel.png + + + + hyprolym.zip + Hyper Olympic + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + hpolym84.zip + Hyper Olympic '84 + Hyper Sports is a multi-event sports game and is the sequel to 1983's seminal "Track and Field". As with "Track and Field", the game supports up to four players and is controlled by two RUN buttons (renamed GO for this sequel) and one action - or UP - button. + +Tap GO and player will accelerate, shoot or lift. Push UP and player will jump or shoot. The game offers seven different Olympic-based events, and players must achieve qualification in each event in order to progress to the next. Game is over if you fail to qualify in an event. + + + 0.90 + 19840101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + hyperspt.zip + Konami Classics + 256x224 + media/mixrbv2/hyperspt.png + + + + hyprolymb.zip + Hyper Olympic (bootleg, set 1) + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + hyprolymba.zip + Hyper Olympic (bootleg, set 2) + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + hyperpac.zip + Hyper Pacman + This is an updated version of Namco's seminal "Pac-Man", featuring forced-perspective 3-D graphics that allow the players to jump over the enemy ghosts; in a similar fashion to Namco's "Pac-Mania", released in 1987. There are secret items and food to be found on each level that increases the player's power and score. The power-ups themselves consist of a shield, helmet lasers, speed and jump shoes. Players will face a boss encounter every ten stages and the game ends after the 30th stage. + 0.50 + 19950101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + SemiCom + 256x224 + media/mixrbv2/hyperpac.png + + + + hyperpacb.zip + Hyper Pacman (bootleg) + This is an updated version of Namco's seminal "Pac-Man", featuring forced-perspective 3-D graphics that allow the players to jump over the enemy ghosts; in a similar fashion to Namco's "Pac-Mania", released in 1987. There are secret items and food to be found on each level that increases the player's power and score. The power-ups themselves consist of a shield, helmet lasers, speed and jump shoes. Players will face a boss encounter every ten stages and the game ends after the 30th stage. + 0.50 + 19950101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + hyperpac.zip + SemiCom + 256x224 + media/mixrbv2/hyperpac.png + + + + hyperspt.zip + Hyper Sports + Hyper Sports is a multi-event sports game and is the sequel to 1983's seminal "Track and Field". As with "Track and Field", the game supports up to four players and is controlled by two RUN buttons (renamed GO for this sequel) and one action - or UP - button. + +Tap GO and player will accelerate, shoot or lift. Push UP and player will jump or shoot. The game offers seven different Olympic-based events, and players must achieve qualification in each event in order to progress to the next. Game is over if you fail to qualify in an event. + + + 0.90 + 19840101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + Konami Classics + 256x224 + media/mixrbv2/hyperspt.png + + + + hypersptb.zip + Hyper Sports (bootleg) + Hyper Sports is a multi-event sports game and is the sequel to 1983's seminal "Track and Field". As with "Track and Field", the game supports up to four players and is controlled by two RUN buttons (renamed GO for this sequel) and one action - or UP - button. + +Tap GO and player will accelerate, shoot or lift. Push UP and player will jump or shoot. The game offers seven different Olympic-based events, and players must achieve qualification in each event in order to progress to the next. Game is over if you fail to qualify in an event. + + + 0.90 + 19840101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + hyperspt.zip + Konami Classics + 256x224 + media/mixrbv2/hyperspt.png + + + + hypsptsp.zip + Hyper Sports Special (Japan) + Konami '88 (also known as '88 Games or Hyper Sports Special) is the third in the Track & Field game series by Konami, where you test your Olympic skills against other world-class athletes. As the name implies, it is loosely based on (and not licensed by) the 1988 Summer Olympics in Seoul, South Korea. Bronze or silver medals are not good enough - you have to go for the gold to get to the next event. However, you must at least qualify in each event in order to compete in the next event. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-2 + 88games.zip + Konami Classics + 304x224 + media/mixrbv2/88games.png + + + + hsf2pp.zip + Hyper Street Fighter II Plus Plus + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2j1.zip + Hyper Street Fighter II: The Anniversary Edition (031222 Japan) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2d.zip + Hyper Street Fighter II: The Anniversary Edition (040202 Asia Phoenix Edition) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2da.zip + Hyper Street Fighter II: The Anniversary Edition (040202 Asia Phoenix Edition, alt) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2a.zip + Hyper Street Fighter II: The Anniversary Edition (040202 Asia) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2j.zip + Hyper Street Fighter II: The Anniversary Edition (040202 Japan) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + hsf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hsf2.zip + Hyper Street Fighter II: The Anniversary Edition (040202 USA) + Hyper Street Fighter II: The Anniversary Edition is a competitive fighting game by Capcom that was originally released for the PlayStation 2 in 2003 in Japan and in 2004 in North America and Asia. Released to commemorate the 15th anniversary of the Street Fighter series, Hyper Street Fighter II is a modified port of Super Street Fighter II Turbo in which players can control any versions of the main characters from the five Street Fighter II games previously released for the arcades. Although, originally released as a home console game, an arcade port was released shortly afterwards in limited quantities, turning it into the sixth and final arcade iteration. + 0.80 + 20040101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/hsf2.png + + + + hypernoid.zip + Hypernoid (Ver. 20211128) + 20210101T000000 + Mame + + + hyperspc.zip + Hyperspace (bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + imsorry.zip + I'm Sorry (315-5110, US) + Rabid-Media rates this game: 4/5This one's just plain rediculous! you are some fat guy in a suit. there is a small screen filled with other suited guys, a rolling barrel, and bars of gold. your job is to get those bars of gold and bring them to the building with the word, "IN" on it. Kinda like flicky, you can bring some over to it, then get the rest seperately, but you will get less points this way. +the graphics are nice and vivid (for an 80's sega arcade game.) and the animations are just plain silly, and sometimes disturbing (when you get caught by a suited man, he then is in a black bikini beating you with a whip!) +you can combat these perverst by punching them, sometimes repeatedly. you must jump over the barrel to avoid it most of the time. +as far as arcade games go, it's definately a fun, challenging product of Japanese insanity! try it! + 0.70 + 19850101T000000 + Coreland + SEGA + Action + 10 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/imsorry.png + + + + froman2b.zip + Idol Mahjong - final romance 2 (Neo CD Conversion) + Taisen Idol-Mahjong Final Romance 2 is strip mahjong game featuring nine different girls with three strip sequences each. + 0.75 + 19950101T000000 + Hack + Hack + Mahjong + 2869 + 1-2 + Neo-Geo + 352x240 + media/mixrbv2/froman2b.png + + + + iganinju.zip + Iga Ninjyutsuden (Japan) + Export release of Iga Ninjutsuden - Goshin no Sho". + +Iga is one of the two famous schools of ninjutsu (the ninja martial art), the other being Kouga. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + kazan.zip + Jaleco + 256x224 + media/mixrbv2/kazan.png + + + + igmo.zip + IGMO + A platform game where you control a rather odd character who must avoid or destroy a variety of enemies. + 0.30 + 19840101T000000 + Epos Corporation + Epos Corporation + Action + 10 + 1-2 + Mame + 270 + 272x236 + media/mixrbv2/igmo.png + + + + ikarijp.zip + Ikari (Japan No Continues) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikarijpb.zip + Ikari (Joystick hack bootleg) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikari3.zip + Ikari III - The Rescue (8-Way Joystick) + Two shirtless Rambo-type players fight their way behind enemy lines to rescue a kidnapped hostage. Various military types must be killed by fist, knife, foot or gun. The players are occasionally marauded by tanks and + 0.80 + 19890101T000000 + SNK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/ikari3.png + + + + ikari3k.zip + Ikari III - The Rescue (Korea, 8-Way Joystick) + Two shirtless Rambo-type players fight their way behind enemy lines to rescue a kidnapped hostage. Various military types must be killed by fist, knife, foot or gun. The players are occasionally marauded by tanks and + 0.80 + 19890101T000000 + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari3.zip + SNK Classics + 256x224 + media/mixrbv2/ikari3.png + + + + ikari3u.zip + Ikari III - The Rescue (US, Rotary Joystick) + Two shirtless Rambo-type players fight their way behind enemy lines to rescue a kidnapped hostage. Various military types must be killed by fist, knife, foot or gun. The players are occasionally marauded by tanks and + 0.80 + 19890101T000000 + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari3.zip + SNK Classics + 256x224 + media/mixrbv2/ikari3.png + + + + ikari3w.zip + Ikari III - The Rescue (World, Rotary Joystick) + Two shirtless Rambo-type players fight their way behind enemy lines to rescue a kidnapped hostage. Various military types must be killed by fist, knife, foot or gun. The players are occasionally marauded by tanks and + 0.80 + 19890101T000000 + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari3.zip + SNK Classics + 256x224 + media/mixrbv2/ikari3.png + + + + ikari3j.zip + Ikari Three - The Rescue (Japan, Rotary Joystick) + Two shirtless Rambo-type players fight their way behind enemy lines to rescue a kidnapped hostage. Various military types must be killed by fist, knife, foot or gun. The players are occasionally marauded by tanks and + 0.80 + 19890101T000000 + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari3.zip + SNK Classics + 256x224 + media/mixrbv2/ikari3.png + + + + ikari.zip + Ikari Warriors (US JAMMA) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikarinc.zip + Ikari Warriors (US No Continues) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikaria.zip + Ikari Warriors (US, set 1) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikaria2.zip + Ikari Warriors (US, set 2) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + ikki.zip + Ikki (Japan) + Set in the ancient medieval Japan, where a poor farming village is planning an insurrection to overthrow their feudal overlord. However, the only participants in the revolt are the player's character, Gonbe, and the optional second-player character, Tago, and the player battles against an army of ninjas, armed samurai a ghosts, and foot soldiers. The game has a great and colorful levels design, inspired in customs and myths Japanese of that time. + +The character's movement is controlled with an 8-way joystick, and pressing the single button allows the player to attack by throwing a sickle. The direction in which the sickle is thrown cannot be determined by the player, and the weapon will automatically head towards the closest enemy. This forces an emphasis on avoiding attacks rather than attacking aggressively. The right side of the screen displays the player's points, along with a map of the level. The location of koban coins is displayed on this map, but players must circumvent walls and other barriers to go to those locations. The level is completed when the player picks up all 8 gold koban coins which are spread throughout the map, or if they capture the daikan (Japanese feudal lord) that can randomly appear during the level. +The player loses a life when they come in contact with any of the enemy characters or projectiles. + +A bonus stage exist and some extras actions gameplay like grab a key to save a prisoner and especial items to increase speed of the character. + 0.50 + 19850101T000000 + Sunsoft + Sunsoft + Action + 10 + 1-2 + Mame + 240x224 + media/mixrbv2/ikki.png + + + + imgfightj.zip + Image Fight (Japan) + Image Fight is a vertically scrolling shoot-em-up with an original premise. The game's first five stages are supposed to be a 'simulation' and serve as training to test the player's abilities. Player's will receive a penalty if their hit-ratio is too low. + +Once players have proved themselves on the opening stages, they will progress to the game's last three stages, blasting off into space on a mission to destroy the alien vegetation surrounding the Moon's main computer. If the player fails in the mission, they must endure the dreaded 'Penalty Zone'. Features a high level of challenge, a wide variety of weapons and the ability to change speed. + +If the player's ship is equipped with one or more red/blue extra guns, pushing both Action buttons simultaneously will sling the guns forward in a boomerang-like fashion. This is a powerful and destructive method and can be done an unlimited number of times. + 0.80 + 19880101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + imgfight.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/imgfight.png + + + + imgfight.zip + Image Fight (World) + Image Fight is a vertically scrolling shoot-em-up with an original premise. The game's first five stages are supposed to be a 'simulation' and serve as training to test the player's abilities. Player's will receive a penalty if their hit-ratio is too low. + +Once players have proved themselves on the opening stages, they will progress to the game's last three stages, blasting off into space on a mission to destroy the alien vegetation surrounding the Moon's main computer. If the player fails in the mission, they must endure the dreaded 'Penalty Zone'. Features a high level of challenge, a wide variety of weapons and the ability to change speed. + +If the player's ship is equipped with one or more red/blue extra guns, pushing both Action buttons simultaneously will sling the guns forward in a boomerang-like fashion. This is a powerful and destructive method and can be done an unlimited number of times. + 0.80 + 19880101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 270 + 384x256 + media/mixrbv2/imgfight.png + + + + imago.zip + Imago (cocktail set) + Imago is a vertical shoot 'em up. + 0.60 + 19840101T000000 + Acom + Acom + Shooter / Space Invaders Like + 2900 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/imago.png + + + + imagoa.zip + Imago (no cocktail set) + Imago is a vertical shoot 'em up. + 0.60 + 19840101T000000 + Acom + Acom + Shooter / Space Invaders Like + 2900 + 1-2 + imago.zip + Kaneko + 270 + 256x224 + media/mixrbv2/imago.png + + + + scrambp.zip + Impacto (Billport S.A., Spanish bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + inyourfa.zip + In Your Face (North America, prototype) + In Your Face is a one-on-one (or two-on-two) half court street basketball game. It appears to be based on a previous basketball game published by Jaleco on the NES known as Hoops. + 0.60 + 19910101T000000 + Jaleco + Jaleco + Sports / Basketball + 2852 + 1-2 + Mame + 256x224 + media/mixrbv2/inyourfa.png + + + + turbobl.zip + Indianapolis (bootleg of Turbo) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + insector.zip + Insector (prototype) + You are a can of bug spray. Collect the jewels on the screen and destroy all the bugs. + 0.70 + 19820101T000000 + Gottlieb + Gottlieb + Shooter + 2646 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/insector.png + + + + insectxj.zip + Insector X (Japan) + Battle against the insect army with your special insecticide weapons. + +The Burgoid, a tribe of midgets with dreams of conquest, have turned insects into cyborgs and formed them into a vast army which is now on the move and intending to invade planet Earth! + +To wipe out these mega-insects - which are invulnerable to ordinary weapons - humans have created an insect-sized warrior called Yanmer. The warrior wears a suit, giving him special powers and wings that are more efficient than a jet engine. + +You are Yanmer, and your mission is to destroy the Burgoid Monarch and save mankind from disaster! + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + insectx.zip + Taito Classics + 256x224 + media/mixrbv2/insectx.png + + + + insectx.zip + Insector X (World) + Battle against the insect army with your special insecticide weapons. + +The Burgoid, a tribe of midgets with dreams of conquest, have turned insects into cyborgs and formed them into a vast army which is now on the move and intending to invade planet Earth! + +To wipe out these mega-insects - which are invulnerable to ordinary weapons - humans have created an insect-sized warrior called Yanmer. The warrior wears a suit, giving him special powers and wings that are more efficient than a jet engine. + +You are Yanmer, and your mission is to destroy the Burgoid Monarch and save mankind from disaster! + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/insectx.png + + + + intrepidb.zip + Intrepid (Elsys bootleg, set 1) + Intrepid © 1983 Nova Games. + +Intrepid is a game in which the player must use a 4-way joystick to take up control of a secret agent Intrepid whose objective is to enter an embassy, find and retrieve a secret plan, then escape as fast as he can. There are eight items that Spy 001 must find by looking around the rooms these doors lead to which are all worth 300 points when collected: a key (which unlocks the locked door on the fourth floor), a combination (which is needed to open the locked safe), an ID card (which allows Spy 001 to bypass the embassy's security systems without electrocution), a disguise (this allows Spy 001 to bypass the sentry, without getting recognized), an umbrella (which allows Spy 001 to jump off the embassy roof without falling to his death), a wrench (which is to sabotage the elevator, and trap the guards at the bottom of its shaft), a map (which shows the locations of the remaining items) and a pair of running shoes (which allow Spy 001 to move faster). + +If Spy 001 should fall down the elevator shaft, get caught by the guards, or get recognized by the sentry at the safe, he'll lose a life. If he should jump off the roof before he's opened the safe (but after he's sabotaged the elevator), it is physically impossible for him to reenter the embassy. Should this happen, the bonus timer shall immediately decrease to 0 and cost him a life. Once Spy 001 accomplishes his mission, he'll proceed to his next mission which has more guards. + 0.50 + 19830101T000000 + Nova Games Ltd. + Nova Games Ltd. + Action + 10 + 1-2 + intrepid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/intrepid.png + + + + intrepidb3.zip + Intrepid (Elsys bootleg, set 2) + Intrepid © 1983 Nova Games. + +Intrepid is a game in which the player must use a 4-way joystick to take up control of a secret agent Intrepid whose objective is to enter an embassy, find and retrieve a secret plan, then escape as fast as he can. There are eight items that Spy 001 must find by looking around the rooms these doors lead to which are all worth 300 points when collected: a key (which unlocks the locked door on the fourth floor), a combination (which is needed to open the locked safe), an ID card (which allows Spy 001 to bypass the embassy's security systems without electrocution), a disguise (this allows Spy 001 to bypass the sentry, without getting recognized), an umbrella (which allows Spy 001 to jump off the embassy roof without falling to his death), a wrench (which is to sabotage the elevator, and trap the guards at the bottom of its shaft), a map (which shows the locations of the remaining items) and a pair of running shoes (which allow Spy 001 to move faster). + +If Spy 001 should fall down the elevator shaft, get caught by the guards, or get recognized by the sentry at the safe, he'll lose a life. If he should jump off the roof before he's opened the safe (but after he's sabotaged the elevator), it is physically impossible for him to reenter the embassy. Should this happen, the bonus timer shall immediately decrease to 0 and cost him a life. Once Spy 001 accomplishes his mission, he'll proceed to his next mission which has more guards. + 0.50 + 19830101T000000 + Nova Games Ltd. + Nova Games Ltd. + Action + 10 + 1-2 + intrepid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/intrepid.png + + + + intrepidb2.zip + Intrepid (Loris bootleg) + Intrepid © 1983 Nova Games. + +Intrepid is a game in which the player must use a 4-way joystick to take up control of a secret agent Intrepid whose objective is to enter an embassy, find and retrieve a secret plan, then escape as fast as he can. There are eight items that Spy 001 must find by looking around the rooms these doors lead to which are all worth 300 points when collected: a key (which unlocks the locked door on the fourth floor), a combination (which is needed to open the locked safe), an ID card (which allows Spy 001 to bypass the embassy's security systems without electrocution), a disguise (this allows Spy 001 to bypass the sentry, without getting recognized), an umbrella (which allows Spy 001 to jump off the embassy roof without falling to his death), a wrench (which is to sabotage the elevator, and trap the guards at the bottom of its shaft), a map (which shows the locations of the remaining items) and a pair of running shoes (which allow Spy 001 to move faster). + +If Spy 001 should fall down the elevator shaft, get caught by the guards, or get recognized by the sentry at the safe, he'll lose a life. If he should jump off the roof before he's opened the safe (but after he's sabotaged the elevator), it is physically impossible for him to reenter the embassy. Should this happen, the bonus timer shall immediately decrease to 0 and cost him a life. Once Spy 001 accomplishes his mission, he'll proceed to his next mission which has more guards. + 0.50 + 19830101T000000 + Nova Games Ltd. + Nova Games Ltd. + Action + 10 + 1-2 + intrepid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/intrepid.png + + + + intrepid.zip + Intrepid (set 1) + Intrepid © 1983 Nova Games. + +Intrepid is a game in which the player must use a 4-way joystick to take up control of a secret agent Intrepid whose objective is to enter an embassy, find and retrieve a secret plan, then escape as fast as he can. There are eight items that Spy 001 must find by looking around the rooms these doors lead to which are all worth 300 points when collected: a key (which unlocks the locked door on the fourth floor), a combination (which is needed to open the locked safe), an ID card (which allows Spy 001 to bypass the embassy's security systems without electrocution), a disguise (this allows Spy 001 to bypass the sentry, without getting recognized), an umbrella (which allows Spy 001 to jump off the embassy roof without falling to his death), a wrench (which is to sabotage the elevator, and trap the guards at the bottom of its shaft), a map (which shows the locations of the remaining items) and a pair of running shoes (which allow Spy 001 to move faster). + +If Spy 001 should fall down the elevator shaft, get caught by the guards, or get recognized by the sentry at the safe, he'll lose a life. If he should jump off the roof before he's opened the safe (but after he's sabotaged the elevator), it is physically impossible for him to reenter the embassy. Should this happen, the bonus timer shall immediately decrease to 0 and cost him a life. Once Spy 001 accomplishes his mission, he'll proceed to his next mission which has more guards. + 0.50 + 19830101T000000 + Nova Games Ltd. + Nova Games Ltd. + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/intrepid.png + + + + intrepid2.zip + Intrepid (set 2) + Intrepid © 1983 Nova Games. + +Intrepid is a game in which the player must use a 4-way joystick to take up control of a secret agent Intrepid whose objective is to enter an embassy, find and retrieve a secret plan, then escape as fast as he can. There are eight items that Spy 001 must find by looking around the rooms these doors lead to which are all worth 300 points when collected: a key (which unlocks the locked door on the fourth floor), a combination (which is needed to open the locked safe), an ID card (which allows Spy 001 to bypass the embassy's security systems without electrocution), a disguise (this allows Spy 001 to bypass the sentry, without getting recognized), an umbrella (which allows Spy 001 to jump off the embassy roof without falling to his death), a wrench (which is to sabotage the elevator, and trap the guards at the bottom of its shaft), a map (which shows the locations of the remaining items) and a pair of running shoes (which allow Spy 001 to move faster). + +If Spy 001 should fall down the elevator shaft, get caught by the guards, or get recognized by the sentry at the safe, he'll lose a life. If he should jump off the roof before he's opened the safe (but after he's sabotaged the elevator), it is physically impossible for him to reenter the embassy. Should this happen, the bonus timer shall immediately decrease to 0 and cost him a life. Once Spy 001 accomplishes his mission, he'll proceed to his next mission which has more guards. + 0.50 + 19830101T000000 + Nova Games Ltd. + Nova Games Ltd. + Action + 10 + 1-2 + intrepid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/intrepid.png + + + + iqblock.zip + IQ-Block + 0.50 + 19930101T000000 + IGS + IGS + Puzzle-Game / Fall + 2912 + 1-2 + IGS + 512x240 + media/mixrbv2/iqblock.png + + + + irion.zip + Irion + Exerion is a vertical shooter that is operated with an 8 direction joystick and two fire buttons. The game's biggest features are the parallax scrolling which occurs in the background, and the sensation of inertia that is applied to the motion of the ship. The ship is equipped with two kinds of weapons. You can fire the dual shot gun which can only release one pair of shots on the screen at a time, but has an unlimited supply, by tapping the first fire button. The single shot gun can fire a rapid stream of shots on the screen at one time by holding the second fire button down, but it is limited in ammo according to the number of charges indicated on the bottom. Each weapon is best used in different situations, in order to defeat the enemies which come flying down from the top part of the screen. + +Due to the inertia of the ship, you must input any reverse in direction much sooner in order to cancel the ships momentum. This was not a common feature for similar games that came out around the same time, so it distinguished Exerion from other shooters. Because the Famicom conversion was played on a horizontal screen, the enemies appeared much closer to the player's ship, which changes the feel of the game since you have to react to the enemies' location much sooner. + 0.40 + 19830101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + exerion.zip + Jaleco + 270 + 320x224 + media/mixrbv2/exerion.png + + + + ironhors.zip + Iron Horse + Iron Horse is a horizontally-scrolling platform run 'n' gun game set in the Wild West in which the player takes on the role of a train-robber. The cowboy can use either his fists, pistols or a whip and must work his way along a moving train, killing enemy cowboys and collecting money bags. + +The action takes place either inside a moving train or on its rooftop, with ladders allowing players to move between the two. Player and enemy movement is on three planes and players can duck to both avoid enemy fire and shoot crouching enemies. + +The weapon option the player chooses at the start of the games significantly alters the way it plays, with weapons arranged by ease of use. The three weapons and their qualities are: + +The whip has good range and can knock out several enemies at once, making it the ideal beginner's pick. +The pistol fires bullets that have longer reach and is the only weapon that can be used while still running, but each bullet can kill only a single enemy. +Fists have the shortest range but can lay out several enemies in one punch with a domino effect. Double points are awarded for each hit. + +In addition to the main weapons, sub-weapons can be collected by killing special, box-carrying enemies. Lanterns create a wave of fire which burns enemies to cinders, bombs destroy everything within a ten-foot radius and lassos tie up enemy varmints. + 0.60 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + Konami Classics + 240x224 + media/mixrbv2/ironhors.png + + + + isgsm.zip + ISG Selection Master Type 2006 System BIOS + 20060101T000000 + bootleg + Various + 39 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/isgsm.png + + + itaten.zip + Itazura Tenshi (Japan) + A shoot 'em up with an angel that has to make a constelation. Win the heart of a lovely angel who draws the beautiful constellations in the sky. A fanciful game of romance with a touch of fairy tales. + 0.60 + 19840101T000000 + Nichibutsu + Puzzle-Game + 26 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/itaten.png + + + + ixion.zip + Ixion (prototype) + Ixion is a shoot 'em up game where the player has to collect letters for points. + +All the letters must be collected to reach the KAILO round. The player receives 500 to 8000 points for collecting gold letters. Enemies are worth 200 points & crystals are worth 1000 points. The KAILO ball heals tiles while the OLIAK ball destroys tiles. A bonus ship is awarded every 100000 points. + 0.70 + 19830101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/ixion.png + + + + jjsquawk.zip + J. J. Squawkers + J.J. Squawkers is a scrolling run 'n' gun platform shoot-em-up for one or two players in which several residents from the peaceful village of Pistachio have been kidnapped. Most of the remaining villagers have fallen under a mysterious spell, making them violent. Players take on the roles of two ducks called 'Ani Karasukun' and 'Ototo Karasukun' who set out to defeat the enemy minions and restore peace to their village. + +The ducks can fire projectiles to defeat the abstract enemies they face, with their default weapon being tomatoes. Other weapons - as well as bonus and health power-ups - become available when certain enemies are killed. Available weapons include pumpkins, watermelon seeds, screws and slinkys wearing red sneakers. + +Each weapon has different strengths and weaknesses; for example the slinkys simply walk in a straight line until they either meet obstacles or the edge of screen, making it easy to deal with enemies from a distance. On the other hand, watermelon seeds can only be thrown a short distance but several are thrown at once. This effectively gives players a 'spread shot' and is more effective when multiple enemies are attacking from several directions at once. + +J.J. Squawkers consists of five stages with a powerful end-of-level guardian waiting at the end of each. + 0.70 + 19930101T000000 + Athena + Platform / Shooter Scrolling + 2887 + 1-2 + Seta + 384x240 + media/mixrbv2/jjsquawk.png + + + + jjsquawkb.zip + J. J. Squawkers (bootleg) + J.J. Squawkers is a scrolling run 'n' gun platform shoot-em-up for one or two players in which several residents from the peaceful village of Pistachio have been kidnapped. Most of the remaining villagers have fallen under a mysterious spell, making them violent. Players take on the roles of two ducks called 'Ani Karasukun' and 'Ototo Karasukun' who set out to defeat the enemy minions and restore peace to their village. + +The ducks can fire projectiles to defeat the abstract enemies they face, with their default weapon being tomatoes. Other weapons - as well as bonus and health power-ups - become available when certain enemies are killed. Available weapons include pumpkins, watermelon seeds, screws and slinkys wearing red sneakers. + +Each weapon has different strengths and weaknesses; for example the slinkys simply walk in a straight line until they either meet obstacles or the edge of screen, making it easy to deal with enemies from a distance. On the other hand, watermelon seeds can only be thrown a short distance but several are thrown at once. This effectively gives players a 'spread shot' and is more effective when multiple enemies are attacking from several directions at once. + +J.J. Squawkers consists of five stages with a powerful end-of-level guardian waiting at the end of each. + 0.70 + 19930101T000000 + Athena + Platform / Shooter Scrolling + 2887 + 1-2 + jjsquawk.zip + Seta + 384x240 + media/mixrbv2/jjsquawk.png + + + + jjsquawkb2.zip + J. J. Squawkers (bootleg, Blandia conversion) + J.J. Squawkers is a scrolling run 'n' gun platform shoot-em-up for one or two players in which several residents from the peaceful village of Pistachio have been kidnapped. Most of the remaining villagers have fallen under a mysterious spell, making them violent. Players take on the roles of two ducks called 'Ani Karasukun' and 'Ototo Karasukun' who set out to defeat the enemy minions and restore peace to their village. + +The ducks can fire projectiles to defeat the abstract enemies they face, with their default weapon being tomatoes. Other weapons - as well as bonus and health power-ups - become available when certain enemies are killed. Available weapons include pumpkins, watermelon seeds, screws and slinkys wearing red sneakers. + +Each weapon has different strengths and weaknesses; for example the slinkys simply walk in a straight line until they either meet obstacles or the edge of screen, making it easy to deal with enemies from a distance. On the other hand, watermelon seeds can only be thrown a short distance but several are thrown at once. This effectively gives players a 'spread shot' and is more effective when multiple enemies are attacking from several directions at once. + +J.J. Squawkers consists of five stages with a powerful end-of-level guardian waiting at the end of each. + 0.70 + 19930101T000000 + Athena + Platform / Shooter Scrolling + 2887 + 1-2 + jjsquawk.zip + Seta + 384x240 + media/mixrbv2/jjsquawk.png + + + + jjsquawko.zip + J. J. Squawkers (older) + J.J. Squawkers is a scrolling run 'n' gun platform shoot-em-up for one or two players in which several residents from the peaceful village of Pistachio have been kidnapped. Most of the remaining villagers have fallen under a mysterious spell, making them violent. Players take on the roles of two ducks called 'Ani Karasukun' and 'Ototo Karasukun' who set out to defeat the enemy minions and restore peace to their village. + +The ducks can fire projectiles to defeat the abstract enemies they face, with their default weapon being tomatoes. Other weapons - as well as bonus and health power-ups - become available when certain enemies are killed. Available weapons include pumpkins, watermelon seeds, screws and slinkys wearing red sneakers. + +Each weapon has different strengths and weaknesses; for example the slinkys simply walk in a straight line until they either meet obstacles or the edge of screen, making it easy to deal with enemies from a distance. On the other hand, watermelon seeds can only be thrown a short distance but several are thrown at once. This effectively gives players a 'spread shot' and is more effective when multiple enemies are attacking from several directions at once. + +J.J. Squawkers consists of five stages with a powerful end-of-level guardian waiting at the end of each. + 0.70 + 19930101T000000 + Athena + Platform / Shooter Scrolling + 2887 + 1-2 + jjsquawk.zip + Seta + 384x240 + media/mixrbv2/jjsquawk.png + + + + jack.zip + Jack the Giantkiller (set 1) + This game plays a lot like "Donkey Kong" except that the controls are not quite as smooth. There are 5 screens to master if you want to help Jack in his mission. You do not get to play each screen at first, they are added on as you progress through the game. The first time through the game skips from screen 1 right to screen 4. +The 1st screen is fairly simple, you just have to climb to the top of the beanstalk. There are a few enemies, but they can be defeated by simply tossing beans at them. You can find the beans scattered all around the stalk, and picking one up adds one to your ammunition count (or two, depending on the dip switch settings). +In the 2nd screen, Jack manuevers through the clouds and attempts to cross the drawbridge into the castle, but lions and birds stand in his way. +The 3rd screen has Jack climbing the castle stairway in a scene that was obviously inspired by "Donkey Kong". Avoid the cat and the mouse and you can make it to the top. +On the 4th screen you have to jump from platform to platform until you reach the giant's lair. There will be several treasures, grab the flashing one and try to make your escape. +The 5th screen is the first one again, except that this time you are climbing down the beanstalk, and you have falling rocks to dodge, and the giant himself may even be after you (that one depends on the level). + +After making it back to your house you get to watch a little intermission before going after the next treasure. There are four different treasures altogether. The last one is the princess, when you have her the giant himself will follow you down the beanstalk, and you must chop it down to defeat him. After rescuing the princess the game starts over with increased difficulty. + 0.60 + 19820101T000000 + Cinematronics + Hara Industries (Cinematronics license) + Action + 10 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/jack.png + + + + jack2.zip + Jack the Giantkiller (set 2) + This game plays a lot like "Donkey Kong" except that the controls are not quite as smooth. There are 5 screens to master if you want to help Jack in his mission. You do not get to play each screen at first, they are added on as you progress through the game. The first time through the game skips from screen 1 right to screen 4. +The 1st screen is fairly simple, you just have to climb to the top of the beanstalk. There are a few enemies, but they can be defeated by simply tossing beans at them. You can find the beans scattered all around the stalk, and picking one up adds one to your ammunition count (or two, depending on the dip switch settings). +In the 2nd screen, Jack manuevers through the clouds and attempts to cross the drawbridge into the castle, but lions and birds stand in his way. +The 3rd screen has Jack climbing the castle stairway in a scene that was obviously inspired by "Donkey Kong". Avoid the cat and the mouse and you can make it to the top. +On the 4th screen you have to jump from platform to platform until you reach the giant's lair. There will be several treasures, grab the flashing one and try to make your escape. +The 5th screen is the first one again, except that this time you are climbing down the beanstalk, and you have falling rocks to dodge, and the giant himself may even be after you (that one depends on the level). + +After making it back to your house you get to watch a little intermission before going after the next treasure. There are four different treasures altogether. The last one is the princess, when you have her the giant himself will follow you down the beanstalk, and you must chop it down to defeat him. After rescuing the princess the game starts over with increased difficulty. + 0.60 + 19820101T000000 + Cinematronics + Hara Industries (Cinematronics license) + Action + 10 + 1-2 + jack.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/jack.png + + + + jack3.zip + Jack the Giantkiller (set 3) + This game plays a lot like "Donkey Kong" except that the controls are not quite as smooth. There are 5 screens to master if you want to help Jack in his mission. You do not get to play each screen at first, they are added on as you progress through the game. The first time through the game skips from screen 1 right to screen 4. +The 1st screen is fairly simple, you just have to climb to the top of the beanstalk. There are a few enemies, but they can be defeated by simply tossing beans at them. You can find the beans scattered all around the stalk, and picking one up adds one to your ammunition count (or two, depending on the dip switch settings). +In the 2nd screen, Jack manuevers through the clouds and attempts to cross the drawbridge into the castle, but lions and birds stand in his way. +The 3rd screen has Jack climbing the castle stairway in a scene that was obviously inspired by "Donkey Kong". Avoid the cat and the mouse and you can make it to the top. +On the 4th screen you have to jump from platform to platform until you reach the giant's lair. There will be several treasures, grab the flashing one and try to make your escape. +The 5th screen is the first one again, except that this time you are climbing down the beanstalk, and you have falling rocks to dodge, and the giant himself may even be after you (that one depends on the level). + +After making it back to your house you get to watch a little intermission before going after the next treasure. There are four different treasures altogether. The last one is the princess, when you have her the giant himself will follow you down the beanstalk, and you must chop it down to defeat him. After rescuing the princess the game starts over with increased difficulty. + 0.60 + 19820101T000000 + Cinematronics + Hara Industries (Cinematronics license) + Action + 10 + 1-2 + jack.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/jack.png + + + + jackalbl.zip + Jackal (bootleg, Rotary Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + jackal.zip + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + jackal.zip + Jackal (World, 8-way Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + jackalr.zip + Jackal (World, Rotary Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + jackal.zip + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + zaxxonb.zip + Jackson + Zaxxon is an isometric scrolling shoot-em-up in which the player pilots an armed spaceship and must penetrate heavily-fortified enemy bases, destroying enemy ships and installations before reaching the final confrontation with a giant armoured robot. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + zaxxon.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/zaxxon.png + + + + jailbrek.zip + Jail Break + A mass prison breakout has occurred and the prison warden has been kidnapped in this sideways scrolling shoot-em-up from Konami. The player controls a lonely police officer whose job it is to kill the hordes of escaped convicts and, eventually, rescue the kidnapped warden. Each level also has a number of civilian hostages that also roam the levels and need to be rescued. + +The player begins the game with only a pistol, but 2 extra weapons, in the form of a bazooka and a tear gas gun, can be collected. The 'Weapon Select' button cycles through the player's weapons via a display at the bottom of the screen. When the desired weapon is highlighted, pressing the Fire button will select and fire the desired weapon. + +Hostages will randomly run across the screen and can be rescued by running into them. Should the player accidentally shoot a hostage, all extra weapons will be lost leaving only the pistol. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + Konami Classics + 240x224 + media/mixrbv2/jailbrek.png + + + + jailbrekb.zip + Jail Break (bootleg) + A mass prison breakout has occurred and the prison warden has been kidnapped in this sideways scrolling shoot-em-up from Konami. The player controls a lonely police officer whose job it is to kill the hordes of escaped convicts and, eventually, rescue the kidnapped warden. Each level also has a number of civilian hostages that also roam the levels and need to be rescued. + +The player begins the game with only a pistol, but 2 extra weapons, in the form of a bazooka and a tear gas gun, can be collected. The 'Weapon Select' button cycles through the player's weapons via a display at the bottom of the screen. When the desired weapon is highlighted, pressing the Fire button will select and fire the desired weapon. + +Hostages will randomly run across the screen and can be rescued by running into them. Should the player accidentally shoot a hostage, all extra weapons will be lost leaving only the pistol. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + jailbrek.zip + Konami Classics + 240x224 + media/mixrbv2/jailbrek.png + + + + grdnstrmk.zip + Jeon Sin - Guardian Storm (Korea) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + samesamecn.zip + Jiao! Jiao! Jiao! (China, 2P set) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + cultures.zip + Jibun wo Migaku Culture School Mahjong Hen + An adult mahjong game featuring eight female opponents. After every mahjong match there is a bonus game where the player can win items to help him cheat in the following match. + 19940101T000000 + FACE + Mahjong + 2869 + 1 + Mame + 384x240 + media/mixrbv2/cultures.png + + + + jigkmgri.zip + Jigoku Meguri (Japan) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + bonzeadv.zip + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + jigkmgria.zip + Jigoku Meguri (Japan, hack?) + The player controls a Buddhist monk, Bonze Kackremboh. His weapons are Buddhist prayer beads, called "mala" beads, which can be powered up until they become almost as large as the player. The monk battles snakes, giant eyeballs, ghosts and other enemy creatures. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Shooter Scrolling + 2887 + 1-2 + bonzeadv.zip + Taito Classics + 320x224 + media/mixrbv2/bonzeadv.png + + + + jin.zip + Jin + A "Qix" rip-off, very slow paced, dull graphics, and sounds straight from "Defender". + 0.50 + 19820101T000000 + Falcon + Falcon + Puzzle-Game + 26 + 1-2 + Midway Classics + 270 + 316x239 + media/mixrbv2/jin.png + + + + jitsupro.zip + Jitsuryoku!! Pro Yakyuu (Japan) + Japanese professional baseball game with fake player names. This is the arcade version of the popular NES baseball game. + 0.50 + 19890101T000000 + Jaleco + Sports / Baseball + 2853 + 1-2 + Jaleco + 256x224 + media/mixrbv2/jitsupro.png + + + + jockeygp.zip + Jockey Grand Prix (set 1) + Jockey Grand Prix on Neo Geo is a particular riding game because it only deals with the prognoses. So bet on one or more horses and pray during the race that he'll win the victory. The title introduces a rating system for each horse that determines the chances to see it win the race. + 20010101T000000 + BrezzaSoft + BrezzaSoft + Sports with Animals + 2650 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/jockeygp.png + + + + jockeygpa.zip + Jockey Grand Prix (set 2) + Jockey Grand Prix on Neo Geo is a particular riding game because it only deals with the prognoses. So bet on one or more horses and pray during the race that he'll win the victory. The title introduces a rating system for each horse that determines the chances to see it win the race. + 20010101T000000 + BrezzaSoft + BrezzaSoft + Sports with Animals + 2650 + 1-2 + jockeygp.zip + Neo-Geo + 320x224 + media/mixrbv2/jockeygp.png + + + + joinem.zip + Joinem + 0.50 + 19830101T000000 + Global Corporation + Global Corporation + Action + 10 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/joinem.png + + + + jollyjgr.zip + Jolly Jogger + It's a nice day to go jogging, and you feel like covering the whole city. So what could go wrong? Oh yeah, three bullies out to beat you up. Thankfully some blocks have things that scare them and allow you to knock them out. + 0.70 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/jollyjgr.png + + + + ltorb.zip + Jonas Indiana and the Lost Temple of RA (20050717) + Jonas Indiana and the Lost Temple of Ra is a small homebrew platform game + 20070101T000000 + Blastar + Homebrew + Platform + 7 + 1 + Neo-Geo + media/mixrbv2/ltorb.png + + + + jongpute.zip + Jongputer + 19810101T000000 + Asiatic board game + 2647 + Mame + media/mixrbv2/jongpute.png + + + journey.zip + Journey + The Play mode begins when either the 1-PLAYER or the 2-PLAYER START button is pressed. The Play mode ends when all of your performers have been eliminated. When this happens, GAME OVER is written across the center of the monitor screen. + +ON THE SCREEN: The game is made up of groups of 5 sequences for each rack. When play begins, all the performers run onto the screen and jump aboard their transport ship, the Scarab. The Scarab then lifts off and heads for a point in space that is at the center of a grouping of five planets. (The song that is played in the background during this scene is 'Lights'.) Each group member's instrument is on a different planet. + +At the beginning of each sequence, when a 2-PLAYER game has been selected, the game tells which player is up. + + 0.80 + 19830101T000000 + Bally Midway + Bally Midway + Action + 10 + 1-2 + Midway Classics + 270 + 512x480 + media/mixrbv2/journey.png + + + + joustr.zip + Joust (Solid Red label) + Joust is a platform-based action combat game for one or two-players (with the two-player game offering either team-up OR head-to-head combat; the first time arcade gamers were given this choice) in which each player controls a knight riding on the back of a flying ostrich. + +The object of the game is to progress through platform-based levels by defeating groups of buzzard-riding enemy knights. This is achieved by 'jousting'; both enemy and player knights carry a lance and must fly around the level (actioned by repeatedly hitting the 'Flap' button) trying to oust rival knights from their steeds by ramming them with the lance. This can only be achieved if the attacking rider is above the enemy knight when the lance connects. A collision of equal elevations results in the two knights bouncing off each other, but if a player is lower than their enemy at the instant of contact, they themselves will be knocked from their steed and lose a life. + +A defeated enemy will turn into an egg that falls to the bottom of the screen. This must be quickly collected by players as if the egg lands on a platform and isn't retrieved in time, it will eventually hatch into another enemy knight that must be defeated again. + +Joust features three different types of enemy knights - Bounder, Hunter, and Shadow Lord - with each earning players different points values when defeated. A pterodactyl will appear after a predetermined time to hunt the players. + +Accurately navigating the player Knights can be initially quite difficult as control is strongly affected by both gravity and inertia. Players can lose a life by either being knocked from their steed by an enemy knight, or by falling into the lava pit at the bottom of each level. + 0.80 + 19820101T000000 + Williams + Williams + Platform / Run Jump + 2915 + 1-2 + joust.zip + Midway Classics + 292x240 + media/mixrbv2/joust.png + + + + joust.zip + Joust (White/Green label) + Joust is a platform-based action combat game for one or two-players (with the two-player game offering either team-up OR head-to-head combat; the first time arcade gamers were given this choice) in which each player controls a knight riding on the back of a flying ostrich. + +The object of the game is to progress through platform-based levels by defeating groups of buzzard-riding enemy knights. This is achieved by 'jousting'; both enemy and player knights carry a lance and must fly around the level (actioned by repeatedly hitting the 'Flap' button) trying to oust rival knights from their steeds by ramming them with the lance. This can only be achieved if the attacking rider is above the enemy knight when the lance connects. A collision of equal elevations results in the two knights bouncing off each other, but if a player is lower than their enemy at the instant of contact, they themselves will be knocked from their steed and lose a life. + +A defeated enemy will turn into an egg that falls to the bottom of the screen. This must be quickly collected by players as if the egg lands on a platform and isn't retrieved in time, it will eventually hatch into another enemy knight that must be defeated again. + +Joust features three different types of enemy knights - Bounder, Hunter, and Shadow Lord - with each earning players different points values when defeated. A pterodactyl will appear after a predetermined time to hunt the players. + +Accurately navigating the player Knights can be initially quite difficult as control is strongly affected by both gravity and inertia. Players can lose a life by either being knocked from their steed by an enemy knight, or by falling into the lava pit at the bottom of each level. + 0.80 + 19820101T000000 + Williams + Williams + Platform / Run Jump + 2915 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/joust.png + + + + jousty.zip + Joust (Yellow label) + Joust is a platform-based action combat game for one or two-players (with the two-player game offering either team-up OR head-to-head combat; the first time arcade gamers were given this choice) in which each player controls a knight riding on the back of a flying ostrich. + +The object of the game is to progress through platform-based levels by defeating groups of buzzard-riding enemy knights. This is achieved by 'jousting'; both enemy and player knights carry a lance and must fly around the level (actioned by repeatedly hitting the 'Flap' button) trying to oust rival knights from their steeds by ramming them with the lance. This can only be achieved if the attacking rider is above the enemy knight when the lance connects. A collision of equal elevations results in the two knights bouncing off each other, but if a player is lower than their enemy at the instant of contact, they themselves will be knocked from their steed and lose a life. + +A defeated enemy will turn into an egg that falls to the bottom of the screen. This must be quickly collected by players as if the egg lands on a platform and isn't retrieved in time, it will eventually hatch into another enemy knight that must be defeated again. + +Joust features three different types of enemy knights - Bounder, Hunter, and Shadow Lord - with each earning players different points values when defeated. A pterodactyl will appear after a predetermined time to hunt the players. + +Accurately navigating the player Knights can be initially quite difficult as control is strongly affected by both gravity and inertia. Players can lose a life by either being knocked from their steed by an enemy knight, or by falling into the lava pit at the bottom of each level. + 0.80 + 19820101T000000 + Williams + Williams + Platform / Run Jump + 2915 + 1-2 + joust.zip + Midway Classics + 292x240 + media/mixrbv2/joust.png + + + + joyfulr.zip + Joyful Road (Japan) + A weird driving game with a car that has long arms that reach out to grab a variety of edible items that appear along roadside. + +The object is to drive safely down the road. Pick up enough fuel to stay alive while avoiding other vehicles that go by, grab as many bonus objects as possible including apples, cherries, bananas, acorns, live fish and money, and park your car in the garage. Driving while trying to pick up the goodies is difficult and you can crash very easily on the narrow roads. The pace of the game is frustrating because the hands move slowly while the car itself moves really fast, especially in the later rounds. If one of your hands hits a tree or any other foreign object in its quest for food, the car winces in pain for a few moments until it can use its hands again. + +You can get a bonus for putting used-up food into garbage cans. Grabbing fish which leap out of surrounding rivers is a safe bet, but most other bonuses are placed, so you can crash if you try to grab them. The best strategy is only to go for the fuel, since the car is a big gas guzzler and you can also get a bonus for leftover fuel at the end of the drive. + 0.70 + 19830101T000000 + SNK + SNK + Race, Driving + 28 + 1-2 + SNK Classics + 270 + 320x240 + media/mixrbv2/joyfulr.png + + + + joyman.zip + Joyman + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + jrpacman.zip + Jr. Pac-Man (11/9/83) + One of many sequels to the legendary "Pac-Man", Jr. Pac-Man features the character of Pac-Man's son. For the first time in the series' history, side-scrolling mazes were introduced, with each maze being two screens wide. + +This time, the mazes have no exit tunnels through which players can make an escape. The bonus items that appear move around the maze and are now something of a mixed blessing, as not only will they destroy any Power Pills they come across, but they will also turn any normal dots they pass over into large dots that slow the player's movements considerably, but are worth more points than normal dots if eaten by the player. Any mutated dots in the maze will disappear if the player loses a life. + +The Pac character is once again pursued by four ghosts (Blinky, Pinky, Inky and Tim) in his quest to eat all of the dots in each maze. And, as before, numerous Power Pills litter the mazes that, when eaten, allow Jr. to eat the pursuing ghosts. + +As with previous "Pac-Man" games, intermissions are featured between certain levels. Jr. Pac-Man's intermissions are episodic in nature, like those found in "Ms. Pac-Man". Jr. Pac-Man's story tells of the blossoming love between Jr. Pac-Man and a small ghost named Yum-Yum. + + + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Action + 10 + 1-2 + Midway Classics + 270 + 288x224 + media/mixrbv2/jrpacman.png + + + + jrpacmanf.zip + Jr. Pac-Man (speedup hack) + One of many sequels to the legendary "Pac-Man", Jr. Pac-Man features the character of Pac-Man's son. For the first time in the series' history, side-scrolling mazes were introduced, with each maze being two screens wide. + +This time, the mazes have no exit tunnels through which players can make an escape. The bonus items that appear move around the maze and are now something of a mixed blessing, as not only will they destroy any Power Pills they come across, but they will also turn any normal dots they pass over into large dots that slow the player's movements considerably, but are worth more points than normal dots if eaten by the player. Any mutated dots in the maze will disappear if the player loses a life. + +The Pac character is once again pursued by four ghosts (Blinky, Pinky, Inky and Tim) in his quest to eat all of the dots in each maze. And, as before, numerous Power Pills litter the mazes that, when eaten, allow Jr. to eat the pursuing ghosts. + +As with previous "Pac-Man" games, intermissions are featured between certain levels. Jr. Pac-Man's intermissions are episodic in nature, like those found in "Ms. Pac-Man". Jr. Pac-Man's story tells of the blossoming love between Jr. Pac-Man and a small ghost named Yum-Yum. + + + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Action + 10 + 1-2 + jrpacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/jrpacman.png + + + + jt104.zip + JT 104 / NinjaKun Ashura no Shou + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + ninjakd2.zip + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + juju.zip + JuJu Densetsu (Japan) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + jujub.zip + JuJu Densetsu (Playmark bootleg) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + jumpbug.zip + Jump Bug + The player controls a VW Beetle that jumps through eight scenarios collecting money and jewels. Shoot or avoid the enemies. + 0.50 + 19810101T000000 + Hoei + Hoei (Rock-Ola license) + Platform / Run Jump Scrolling + 2897 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/jumpbug.png + + + + jumpbugb.zip + Jump Bug (bootleg) + The player controls a VW Beetle that jumps through eight scenarios collecting money and jewels. Shoot or avoid the enemies. + 0.50 + 19810101T000000 + Hoei + Hoei (Rock-Ola license) + Platform / Run Jump Scrolling + 2897 + 1-2 + jumpbug.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/jumpbug.png + + + + jumpcoasa.zip + Jump Coaster + You control a caped man who attempts to rescue his girlfriend while attempting to avoid monkeys on roller coasters. Two scenes make up one round . Pick up all gold bags in both scenes and your off to the next round. + 0.70 + 19830101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + jumpcoas.zip + Kaneko + 270 + 256x224 + media/mixrbv2/jumpcoas.png + + + + jumpcoast.zip + Jump Coaster (Taito) + You control a caped man who attempts to rescue his girlfriend while attempting to avoid monkeys on roller coasters. Two scenes make up one round . Pick up all gold bags in both scenes and your off to the next round. + 0.70 + 19830101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + jumpcoas.zip + Kaneko + 270 + 256x224 + media/mixrbv2/jumpcoas.png + + + + jumpcoas.zip + Jump Coaster (World) + You control a caped man who attempts to rescue his girlfriend while attempting to avoid monkeys on roller coasters. Two scenes make up one round . Pick up all gold bags in both scenes and your off to the next round. + 0.70 + 19830101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/jumpcoas.png + + + + jumpkids.zip + Jump Kids + Control a baby to slap enemies and collect items. + 0.50 + 19930101T000000 + Comad + Comad + Platform / Run Jump + 2915 + 1-2 + Comad + 320x240 + media/mixrbv2/jumpkids.png + + + + jumpkun.zip + Jump Kun (prototype) + Welcome back to the era where you jump and climb to a high score. This is a Kaneko developed single screen action game that never made it to release but has been saved from the sea of time. The title screen image resembles the Shonen Jump mascot. + 0.40 + 19840101T000000 + Platform / Run Jump + 2915 + Kaneko + 270 + 256x224 + media/mixrbv2/jumpkun.png + + + + jumpshot.zip + Jump Shot + An early one-on-one basketball game. Score more points than your opponent to win. + 0.50 + 19850101T000000 + Bally Midway + Bally Midway + Sports / Basketball + 2852 + 1-2 + Midway Classics + 270 + 288x224 + media/mixrbv2/jumpshot.png + + + + jumpshotp.zip + Jump Shot Engineering Sample + An early one-on-one basketball game. Score more points than your opponent to win. + 0.50 + 19850101T000000 + Bally Midway + Bally Midway + Sports / Basketball + 2852 + 1-2 + jumpshot.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/jumpshot.png + + + + jumping.zip + Jumping (set 1) + Rainbow Islands - The Story of Bubble Bobble 2 is a sequel to the legendary "Bubble Bobble" - released a year earlier - one or two players (who, unlike 'Bubble Bobble', no longer play simultaneously) take on the role of Bub and Bob, who have now been returned to their original human form after their success in Bubble Bobble. The returning heroes have been asked to rescue the Rainbow Islands from the clutches of the various enemies who have overrun the islands in their absence. + +Bob and Bob are each armed with the ability to create solid rainbows. This ingenious game-play device acts as both a weapon (to either kill an enemy instantly, or trap it then collapse the rainbow onto it, the latter essential for collecting bonus gems - as detailed in 'Tips and Tricks') and as a temporary platform that allows the players to reach previously inaccessible parts of the level, as they race to reach the top of the island before the game's tight time limit expires. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + rbisland.zip + Taito Classics + 320x224 + media/mixrbv2/rbisland.png + + + + jumpinga.zip + Jumping (set 2) + Rainbow Islands - The Story of Bubble Bobble 2 is a sequel to the legendary "Bubble Bobble" - released a year earlier - one or two players (who, unlike 'Bubble Bobble', no longer play simultaneously) take on the role of Bub and Bob, who have now been returned to their original human form after their success in Bubble Bobble. The returning heroes have been asked to rescue the Rainbow Islands from the clutches of the various enemies who have overrun the islands in their absence. + +Bob and Bob are each armed with the ability to create solid rainbows. This ingenious game-play device acts as both a weapon (to either kill an enemy instantly, or trap it then collapse the rainbow onto it, the latter essential for collecting bonus gems - as detailed in 'Tips and Tricks') and as a temporary platform that allows the players to reach previously inaccessible parts of the level, as they race to reach the top of the island before the game's tight time limit expires. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + rbisland.zip + Taito Classics + 320x224 + media/mixrbv2/rbisland.png + + + + jumpingi.zip + Jumping (set 3, Imnoe PCB) + Rainbow Islands - The Story of Bubble Bobble 2 is a sequel to the legendary "Bubble Bobble" - released a year earlier - one or two players (who, unlike 'Bubble Bobble', no longer play simultaneously) take on the role of Bub and Bob, who have now been returned to their original human form after their success in Bubble Bobble. The returning heroes have been asked to rescue the Rainbow Islands from the clutches of the various enemies who have overrun the islands in their absence. + +Bob and Bob are each armed with the ability to create solid rainbows. This ingenious game-play device acts as both a weapon (to either kill an enemy instantly, or trap it then collapse the rainbow onto it, the latter essential for collecting bonus gems - as detailed in 'Tips and Tricks') and as a temporary platform that allows the players to reach previously inaccessible parts of the level, as they race to reach the top of the island before the game's tight time limit expires. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + rbisland.zip + Taito Classics + 320x224 + media/mixrbv2/rbisland.png + + + + jcross.zip + Jumping Cross (set 1) + A motocross racing game. + 0.70 + 19840101T000000 + SNK + SNK + Race, Driving / Motorcycle + 2943 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/jcross.png + + + + jcrossa.zip + Jumping Cross (set 2) + A motocross racing game. + 0.70 + 19840101T000000 + SNK + SNK + Race, Driving / Motorcycle + 2943 + 1-2 + jcross.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/jcross.png + + + + jjack.zip + Jumping Jack + Jump from one place to another. Avoid hitting obstacles. Gather bonus items for points. + 0.80 + 19840101T000000 + Platform / Run Jump + 2915 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/jjack.png + + + + jpopnics.zip + Jumping Pop (Nics, Korean bootleg of Plump Pop) + 0.30 + 19920101T000000 + Taito Classics + 256x224 + media/mixrbv2/jpopnics.png + + + + jumppop.zip + Jumping Pop (set 1) + The object of the game is to defeat the monsters by sucking them into your vacuum. Once the monsters are inside your vacuum, they can then be used to fire outward at other monsters. But beware - if you keep the monsters inside your vacuum for too long it will explode. + 0.30 + 20010101T000000 + bootleg + ESD + Platform + 7 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/jumppop.png + + + + jumppope.zip + Jumping Pop (set 2) + The object of the game is to defeat the monsters by sucking them into your vacuum. Once the monsters are inside your vacuum, they can then be used to fire outward at other monsters. But beware - if you keep the monsters inside your vacuum for too long it will explode. + 0.30 + 20010101T000000 + bootleg + ESD + Platform + 7 + 1-2 + jumppop.zip + Taito Classics + 256x224 + media/mixrbv2/jumppop.png + + + + jungleby.zip + Jungle Boy (bootleg) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + junglehbr.zip + Jungle Hunt (Brazil) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + jungleh.zip + Jungle Hunt (US) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + junglekas.zip + Jungle King (alternate sound) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + junglek.zip + Jungle King (Japan) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + junglekj2.zip + Jungle King (Japan, earlier) + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + jungler.zip + Jungler + In this Konami arcade game, snakes navigate through mazes, shooting at each other in hopes of cutting their opponents down to size enough to be mercilessly devoured. Welcome to the Jungler, baby. + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/jungler.png + + + + jrking.zip + Junior King (bootleg of Donkey Kong Jr.) + Fate has turned the tables on the inimitable Donkey Kong. + +After Mario saved the Beautiful Girl from the lustful clutches of Donkey Kong, he led the brokenhearted ape into captivity, locking him behind steel bars, never again to strut his stuff before the fair maidens of the world. + +As the frustration of confinement enrages Donkey Kong, Mario complacently stands guard over the cell, holding the sought after key to freedom. + +But wait! Unbeknownst to Little Mario, Donkey Kong has produced an offspring - Donkey Kong Junior! A death-defying little monkey, shrewd and cunning, who resists all enemies to rescue Papa Donkey Kong. + +As Mario's brigade of snapping jaws, ape-eating birds and energy pods launch their offensive, Junior bombards them with a fusillade of Fruit Bombs that aim to annihilate his every foe. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + dkongjr.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/dkongjr.png + + + + junofrst.zip + Juno First + Juno First a vertically-scrolling shoot-em-up viewed from a third-person perspective in which players must destroy waves of attacking aliens. Unlike other shooters of the time, the game's enemies don't line up in a gallery formation but instead move freely around the screen. Because of this, the player's ship can move both forwards and backwards (in addition to left and right). + +As well as the attacking aliens a spherical 'space capsule' occasionally appears on-screen and if shot, it releases an enemy astronaut that can then be captured. This must be done within a set time, however, with the screen having a red tint for the period in which rescue is possible. During the capture phase, every enemy the player shoots is worth an additional 200 points. + +As a last resort players also have the option to 'warp' to another random part of the play area. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. Players are allowed three warps per level. + +Starting formations vary from stage to stage and the aliens mutate into more dangerous forms the longer they survive. To complete a level all aliens must be destroyed. + 0.80 + 19830101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/junofrst.png + + + + junofrstg.zip + Juno First (Gottlieb) + Juno First a vertically-scrolling shoot-em-up viewed from a third-person perspective in which players must destroy waves of attacking aliens. Unlike other shooters of the time, the game's enemies don't line up in a gallery formation but instead move freely around the screen. Because of this, the player's ship can move both forwards and backwards (in addition to left and right). + +As well as the attacking aliens a spherical 'space capsule' occasionally appears on-screen and if shot, it releases an enemy astronaut that can then be captured. This must be done within a set time, however, with the screen having a red tint for the period in which rescue is possible. During the capture phase, every enemy the player shoots is worth an additional 200 points. + +As a last resort players also have the option to 'warp' to another random part of the play area. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. Players are allowed three warps per level. + +Starting formations vary from stage to stage and the aliens mutate into more dangerous forms the longer they survive. To complete a level all aliens must be destroyed. + 0.80 + 19830101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + junofrst.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/junofrst.png + + + + jurassic99.zip + Jurassic 99 (Cadillacs and Dinosaurs bootleg with EM78P447AP, 930201 ?) + Cadillacs and Dinosaurs: The Arcade Game, known in Japan as Cadillacs: Dinosaurs of a New Century is a 1993 arcade game released by Capcom. It is a side-scrolling beat 'em up based on the comic book series Xenozoic Tales. The game was produced as a tie-in to the Cadillacs and Dinosaurs animated series which was aired during the same year the game was released. + 0.75 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + dino.zip + Capcom Play System + 384x224 + media/mixrbv2/dino.png + + + + altbeastj1.zip + Juuouki (set 1, Japan, FD1094 317-0065) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeastj3d.zip + Juuouki (set 3, Japan, FD1094 317-0068 decrypted) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeastj3.zip + Juuouki (set 3, Japan, FD1094 317-0068) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + altbeastj.zip + Juuouki (set 7, Japan, 8751 317-0077) + Altered Beast is a side scrolling, platform, beat 'em up game that puts the player in control of a centurion who had died in battle. The centurion has been raised from the dead to rescue Zeus' daughter Athena from the demon Neff. The player battles undead and demonic hordes, controlling the shapeshifting hero. He must fight through several levels in order to save the kidnapped goddess. + 0.50 + 19880101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + altbeast.zip + Sega Classics + 320x224 + media/mixrbv2/altbeast.png + + + + jyangoku.zip + Jyangokushi -Haoh no Saihai- (990527 Japan) + Jangokushi: Haou no Saihai is an other mahjong game from Capcom. + 19990101T000000 + Capcom + Mahjong + 2869 + 1 + Capcom Play System 2 + 384x224 + media/mixrbv2/jyangoku.png + + + + janshin.zip + Jyanshin Densetsu - Quest of Jongmaster + Test your patience and skill as you play against a computerized opponent and try to beat it at the amazing and ancient Chinese game of Mahjong. In the fantastic Janshin Densetsu: Quest of Jongmaster you must keep a steely face as you take on the mightiest players of the underworld mahjong circuit. Match the pieces and outsmart your opponent to win and stack up wild amounts of cash! + 0.60 + 19940101T000000 + Aicom + SNK + Asiatic board game + 2647 + 1 + Neo-Geo + 320x224 + media/mixrbv2/janshin.png + + + + kabukizj.zip + Kabuki-Z (Japan) + Control a samurai on 5 levels of slashing bloody action featuring a 'fatality' on each level's boss. + 0.50 + 19880101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + kabukiz.zip + Taito Classics + 256x224 + media/mixrbv2/kabukiz.png + + + + kabukiz.zip + Kabuki-Z (World) + Control a samurai on 5 levels of slashing bloody action featuring a 'fatality' on each level's boss. + 0.50 + 19880101T000000 + Kaneko + Kaneko + Beat'em Up + 1 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/kabukiz.png + + + + kagekih.zip + Kageki (hack) + Kageki is a rather silly 1-on-1 beat-'em-up style affair against various gang members. + 0.50 + 19880101T000000 + Kaneko + Irem + Fight / Versus + 2885 + 1-2 + kageki.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/kageki.png + + + + kagekij.zip + Kageki (Japan) + Kageki is a rather silly 1-on-1 beat-'em-up style affair against various gang members. + 0.50 + 19880101T000000 + Kaneko + Irem + Fight / Versus + 2885 + 1-2 + kageki.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/kageki.png + + + + kagekiu.zip + Kageki (US) + Kageki is a rather silly 1-on-1 beat-'em-up style affair against various gang members. + 0.50 + 19880101T000000 + Kaneko + Irem + Fight / Versus + 2885 + 1-2 + kageki.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/kageki.png + + + + kageki.zip + Kageki (World) + Kageki is a rather silly 1-on-1 beat-'em-up style affair against various gang members. + 0.50 + 19880101T000000 + Kaneko + Irem + Fight / Versus + 2885 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/kageki.png + + + + yanchamr.zip + Kaiketsu Yanchamaru (Japan) + Play as the cool ninja Niki, as he eliminates evil from Japan with his twirling sword. It was originally known as Kaiketsu Yanchamaru in its native Japan. + 0.70 + 19860101T000000 + Data East + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + kidniki.zip + Irem Classics + 384x256 + media/mixrbv2/kidniki.png + + + + kaitei.zip + Kaitei Takara Sagashi + A boat lowers the player towards the bottom of the screen. Try to avoid the fish or push left or right to fire a harpoon at them. When at the bottom, if you walk over one of treasure caches, you will be lowered into it. Then you will be raised back to the ship (again, avoid the fish). + 0.10 + 19800101T000000 + K.K. Tokki + K.K. Tokki + Various + 39 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/kaitei.png + + + + kaitein.zip + Kaitei Takara Sagashi (Namco license) + A boat lowers the player towards the bottom of the screen. Try to avoid the fish or push left or right to fire a harpoon at them. When at the bottom, if you walk over one of treasure caches, you will be lowered into it. Then you will be raised back to the ship (again, avoid the fish). + 0.10 + 19800101T000000 + K.K. Tokki + K.K. Tokki + Various + 39 + 1-2 + kaitei.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/kaitei.png + + + + kamakazi3.zip + Kamakazi III (superg hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + galkamika.zip + Kamikaze (Electrogame, Spanish bootleg of Galaxian) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + kamikazesp.zip + Kamikaze (Euromatic S.A., Spanish bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + kamikcab.zip + Kamikaze Cabbie + The game has the player collecting a fare at a taxi stop and taking that passenger to the desired location. The amount of money the fare grants is indicated as score points. Along the way, the player is free to crash into other vehicles for extra points. Dropping a passenger off successfully will complete the stage and proceed to a newer and harder one. If the player completes the stage fast enough, tips are awarded for additional points. The player gets a bonus for the first 20,000 points and every 30,000 points after that. The fuel gauge acts as a health meter which depletes over time and even more when the taxi cab collides. Fuel can be recharged at a gas station. The game is over if the player runs out of fuel. + 0.50 + 19840101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/kamikcab.png + + + + kangaroo.zip + Kangaroo + A platform game in which the player controls a mother Kangaroo who must climb through the treetops trying to rescue her captured son. Numerous monkeys, the kidnappers of her child, roam the levels set on stopping the player's progress. The monkeys constantly throw apples at the Kangaroo which must either be avoided (either by ducking or jumping, depending on the height of the approaching apple), or punched away, the latter of which allows the Kangaroo to punch the apple back towards the attacking monkey. + +If the player stalls for too long or does not punch either an apple or a monkey, a giant ape will appear and steal the Kangaroo's boxing gloves, leaving the player temporarily defenseless. The gloves are returned after a short time. + +Fruit and vegetables litter the levels and can be picked up for bonus points. Each level also has a bell hanging from one of its platforms, which can be punched to make fruit and vegetable items appear. The game consists of 4 different stages, once these are completed the game begins again with an increased level of difficulty. + 0.80 + 19820101T000000 + Sunsoft + Sunsoft + Platform / Run Jump + 2915 + 1-2 + Atari Classics + 270 + 512x240 + media/mixrbv2/kangaroo.png + + + + kangarooa.zip + Kangaroo (Atari) + A platform game in which the player controls a mother Kangaroo who must climb through the treetops trying to rescue her captured son. Numerous monkeys, the kidnappers of her child, roam the levels set on stopping the player's progress. The monkeys constantly throw apples at the Kangaroo which must either be avoided (either by ducking or jumping, depending on the height of the approaching apple), or punched away, the latter of which allows the Kangaroo to punch the apple back towards the attacking monkey. + +If the player stalls for too long or does not punch either an apple or a monkey, a giant ape will appear and steal the Kangaroo's boxing gloves, leaving the player temporarily defenseless. The gloves are returned after a short time. + +Fruit and vegetables litter the levels and can be picked up for bonus points. Each level also has a bell hanging from one of its platforms, which can be punched to make fruit and vegetable items appear. The game consists of 4 different stages, once these are completed the game begins again with an increased level of difficulty. + 0.80 + 19820101T000000 + Sunsoft + Sunsoft + Platform / Run Jump + 2915 + 1-2 + kangaroo.zip + Atari Classics + 270 + 512x240 + media/mixrbv2/kangaroo.png + + + + kangaroob.zip + Kangaroo (bootleg) + A platform game in which the player controls a mother Kangaroo who must climb through the treetops trying to rescue her captured son. Numerous monkeys, the kidnappers of her child, roam the levels set on stopping the player's progress. The monkeys constantly throw apples at the Kangaroo which must either be avoided (either by ducking or jumping, depending on the height of the approaching apple), or punched away, the latter of which allows the Kangaroo to punch the apple back towards the attacking monkey. + +If the player stalls for too long or does not punch either an apple or a monkey, a giant ape will appear and steal the Kangaroo's boxing gloves, leaving the player temporarily defenseless. The gloves are returned after a short time. + +Fruit and vegetables litter the levels and can be picked up for bonus points. Each level also has a bell hanging from one of its platforms, which can be punched to make fruit and vegetable items appear. The game consists of 4 different stages, once these are completed the game begins again with an increased level of difficulty. + 0.80 + 19820101T000000 + Sunsoft + Sunsoft + Platform / Run Jump + 2915 + 1-2 + kangaroo.zip + Atari Classics + 270 + 512x240 + media/mixrbv2/kangaroo.png + + + + kangarool.zip + Kangaroo (Loewen-Automaten) + A platform game in which the player controls a mother Kangaroo who must climb through the treetops trying to rescue her captured son. Numerous monkeys, the kidnappers of her child, roam the levels set on stopping the player's progress. The monkeys constantly throw apples at the Kangaroo which must either be avoided (either by ducking or jumping, depending on the height of the approaching apple), or punched away, the latter of which allows the Kangaroo to punch the apple back towards the attacking monkey. + +If the player stalls for too long or does not punch either an apple or a monkey, a giant ape will appear and steal the Kangaroo's boxing gloves, leaving the player temporarily defenseless. The gloves are returned after a short time. + +Fruit and vegetables litter the levels and can be picked up for bonus points. Each level also has a bell hanging from one of its platforms, which can be punched to make fruit and vegetable items appear. The game consists of 4 different stages, once these are completed the game begins again with an increased level of difficulty. + 0.80 + 19820101T000000 + Sunsoft + Sunsoft + Platform / Run Jump + 2915 + 1-2 + kangaroo.zip + Atari Classics + 270 + 512x240 + media/mixrbv2/kangaroo.png + + + + karatblzu.zip + Karate Blazers (US) + A horizontally scrolling fighting game for 1 to 4 players. Each playable character (chosen from Mark, Glen, Akira and Gil) kicks and punches their way through a number of enemy-packed levels. In addition to kicking and punching, each character also has their own unique 'special attack'; a move that injures multiple on-screen enemies at the cost of some of the player's health. + +While in no way original (drawing most of its inspiration from Capcom's "Final Fight"), Karate Blazers is both hugely playable and very fast and frenetic, with the amount of on-screen enemies at times overwhelming. The graphics are also well drawn and nicely animated. + 0.70 + 19910101T000000 + Video System + Video System + Beat'em Up + 1 + 1-4 + karatblz.zip + Video System Co. + 352x240 + media/mixrbv2/karatblz.png + + + + karatblz.zip + Karate Blazers (World, set 1) + A horizontally scrolling fighting game for 1 to 4 players. Each playable character (chosen from Mark, Glen, Akira and Gil) kicks and punches their way through a number of enemy-packed levels. In addition to kicking and punching, each character also has their own unique 'special attack'; a move that injures multiple on-screen enemies at the cost of some of the player's health. + +While in no way original (drawing most of its inspiration from Capcom's "Final Fight"), Karate Blazers is both hugely playable and very fast and frenetic, with the amount of on-screen enemies at times overwhelming. The graphics are also well drawn and nicely animated. + 0.70 + 19910101T000000 + Video System + Video System + Beat'em Up + 1 + 1-4 + Video System Co. + 352x240 + media/mixrbv2/karatblz.png + + + + karatblza.zip + Karate Blazers (World, set 2) + A horizontally scrolling fighting game for 1 to 4 players. Each playable character (chosen from Mark, Glen, Akira and Gil) kicks and punches their way through a number of enemy-packed levels. In addition to kicking and punching, each character also has their own unique 'special attack'; a move that injures multiple on-screen enemies at the cost of some of the player's health. + +While in no way original (drawing most of its inspiration from Capcom's "Final Fight"), Karate Blazers is both hugely playable and very fast and frenetic, with the amount of on-screen enemies at times overwhelming. The graphics are also well drawn and nicely animated. + 0.70 + 19910101T000000 + Video System + Video System + Beat'em Up + 1 + 1-4 + karatblz.zip + Video System Co. + 352x240 + media/mixrbv2/karatblz.png + + + + karatblzt.zip + Karate Blazers (World, Tecmo license) + A horizontally scrolling fighting game for 1 to 4 players. Each playable character (chosen from Mark, Glen, Akira and Gil) kicks and punches their way through a number of enemy-packed levels. In addition to kicking and punching, each character also has their own unique 'special attack'; a move that injures multiple on-screen enemies at the cost of some of the player's health. + +While in no way original (drawing most of its inspiration from Capcom's "Final Fight"), Karate Blazers is both hugely playable and very fast and frenetic, with the amount of on-screen enemies at times overwhelming. The graphics are also well drawn and nicely animated. + 0.70 + 19910101T000000 + Video System + Video System + Beat'em Up + 1 + 1-4 + karatblz.zip + Video System Co. + 352x240 + media/mixrbv2/karatblz.png + + + + kchamptec.zip + Karate Champ (Tecfri bootleg) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + kchampvs.zip + Karate Champ (US VS version, set 1) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + kchampvs2.zip + Karate Champ (US VS version, set 2) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + kchampvs3.zip + Karate Champ (US VS version, set 3) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + kchampvs4.zip + Karate Champ (US VS version, set 4) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + kchamp.zip + Karate Champ (US) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + karateda.zip + Karate Dou (Arfyc bootleg) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + karatedo.zip + Karate Dou (Japan) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + karianx.zip + Karian Cross (Rev. 1.0) + A puzzle game similar to "Puyo Puyo". Get 3 like-colored objects together to make them disappear. Getting multiple combinations causes more blocks to fall on your opponents side. + 0.70 + 19960101T000000 + Deniam + Deniam + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x224 + media/mixrbv2/karianx.png + + + + karnovj.zip + Karnov (Japan) + Karnov is a 2-D, platform style game. You control Karnov through 9 scenes. Each of these scenes gives you piece of a map (except the first scene). Get all the pieces of the map and you get to the treasure. Your journey won't be easy though. You will be going through some rough environment such as towns, forests, oceans, and caves. To further make your travels a hazard, different enemies attempt to end Karnov's life prematurely and prevent him from getting to the treasure. To aid Karnov in his adventures, he has certain items that he can draw from his inventory. In addition, there are other items that can make Karnov a potent foe of those wishing to harm him. You must complete each scene in order to advance to the next scene. All in a days work of a hearty explorer. + 0.70 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + karnov.zip + Data East Classics + 256x240 + media/mixrbv2/karnov.png + + + + karnova.zip + Karnov (US, rev 5) + Karnov is a 2-D, platform style game. You control Karnov through 9 scenes. Each of these scenes gives you piece of a map (except the first scene). Get all the pieces of the map and you get to the treasure. Your journey won't be easy though. You will be going through some rough environment such as towns, forests, oceans, and caves. To further make your travels a hazard, different enemies attempt to end Karnov's life prematurely and prevent him from getting to the treasure. To aid Karnov in his adventures, he has certain items that he can draw from his inventory. In addition, there are other items that can make Karnov a potent foe of those wishing to harm him. You must complete each scene in order to advance to the next scene. All in a days work of a hearty explorer. + 0.70 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + karnov.zip + Data East Classics + 256x240 + media/mixrbv2/karnov.png + + + + karnov.zip + Karnov (US, rev 6) + Karnov is a 2-D, platform style game. You control Karnov through 9 scenes. Each of these scenes gives you piece of a map (except the first scene). Get all the pieces of the map and you get to the treasure. Your journey won't be easy though. You will be going through some rough environment such as towns, forests, oceans, and caves. To further make your travels a hazard, different enemies attempt to end Karnov's life prematurely and prevent him from getting to the treasure. To aid Karnov in his adventures, he has certain items that he can draw from his inventory. In addition, there are other items that can make Karnov a potent foe of those wishing to harm him. You must complete each scene in order to advance to the next scene. All in a days work of a hearty explorer. + 0.70 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/karnov.png + + + + karnovr.zip + Karnov's Revenge / Fighter's History Dynamite + Karnov's Revenge is a 2-D Street Fighter II clone from Data East. Choose one of 13 fighters from around the world to play as, each with their unique moves and special attacks. As usual, there are two rounds in each stage, and the object of each round is to drain your opponent's energy in order to win the battle. If there is a tie after two rounds, a third round is played. There is a time limit, and if this expires, the player with the less energy loses. + + 0.70 + 19940101T000000 + Data East + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/karnovr.png + + + + kengo.zip + Ken-Go (set 1) + lightning Swords is an arcade 2D side-scrolling beat-em up - the game is set in a time when Ninjas and Samurai were active. The player is a samurai, armed with a sharp katana. He needs to go to the right, through locations in traditional Japan, and cut all the enemies that appear on his way. Holding down the attack button gives a special blow. At the end of each level a boss awaits - usually big, strong and durable. + 0.60 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + ltswords.zip + Irem Classics + 384x256 + media/mixrbv2/ltswords.png + + + + kengoa.zip + Ken-Go (set 2) + lightning Swords is an arcade 2D side-scrolling beat-em up - the game is set in a time when Ninjas and Samurai were active. The player is a samurai, armed with a sharp katana. He needs to go to the right, through locations in traditional Japan, and cut all the enemies that appear on his way. Holding down the attack button gives a special blow. At the end of each level a boss awaits - usually big, strong and durable. + 0.60 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + ltswords.zip + Irem Classics + 384x256 + media/mixrbv2/ltswords.png + + + + keroppij.zip + Kero Kero Keroppi no Issyoni Asobou (Japan) + A jumping frog with compressed digital speech. + 0.20 + 19950101T000000 + Sammy Studios + Platform / Run Jump + 2915 + 1 + keroppi.zip + Sammy Classics + 320x240 + media/mixrbv2/keroppi.png + + + + keroppi.zip + Kero Kero Keroppi's Let's Play Together (USA, Version 2.0) + A jumping frog with compressed digital speech. + 0.20 + 19950101T000000 + Sammy Studios + Platform / Run Jump + 2915 + 1 + Sammy Classics + 320x240 + media/mixrbv2/keroppi.png + + + + kickc.zip + Kick (cocktail) + Move a man on a unicycle and catch falling balloons and Pac-Men on your head. Use the Kick button to make the character's legs kick out and knock balloons back up for another try. Balloons stack up eight high and then the man will pop them. Stack Pac-Men for bonus points. + 0.70 + 19810101T000000 + Midway + Midway + Action + 10 + 1-2 + kick.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/kick.png + + + + kick.zip + Kick (upright) + Move a man on a unicycle and catch falling balloons and Pac-Men on your head. Use the Kick button to make the character's legs kick out and knock balloons back up for another try. Balloons stack up eight high and then the man will pop them. Stack Pac-Men for bonus points. + 0.70 + 19810101T000000 + Midway + Midway + Action + 10 + 1-2 + Midway Classics + 270 + 512x480 + media/mixrbv2/kick.png + + + + kicknrunu.zip + Kick and Run (US) + A football game where you can either play cooperatively in cup events or head-to-head. + 0.50 + 19860101T000000 + Taito + Taito + Sports / Soccer + 2847 + 1-4 + kicknrun.zip + Taito Classics + 256x224 + media/mixrbv2/kicknrun.png + + + + kicknrun.zip + Kick and Run (World) + A football game where you can either play cooperatively in cup events or head-to-head. + 0.50 + 19860101T000000 + Taito + Taito + Sports / Soccer + 2847 + 1-4 + Taito Classics + 256x224 + media/mixrbv2/kicknrun.png + + + + kickboy.zip + Kick Boy + A shooter type maze game, where you play a role of an boy and will have to avoid and destroy all the annoying dogs kicking a soccer ball for hit them and come to the bonnus stage or next level. + 0.10 + 19830101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/kickboy.png + + + + kickoff.zip + Kick Off (Japan) + The player gets to choose from one of 20 different national football teams. Each team has eleven players including strikers, defenders and one goalkeeper. The rules of the game are very reminiscent of real-life football. Each football round lasts 3 minutes. The player proceeds to compete against another team if he wins against the CPU, otherwise the game is over. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Sports / Soccer + 2847 + 1-2 + Jaleco + 256x224 + media/mixrbv2/kickoff.png + + + + kickridr.zip + Kick Rider + A road-race game where the view is from above. You control a motorbike with opponents on motorcycles who jostle you with their legs, and the occasional car. Played against the clock with points for passing. + 0.50 + 19840101T000000 + Race, Driving / Motorcycle + 2943 + 1-2 + Universal + 240x192 + media/mixrbv2/kickridr.png + + + + kikstart.zip + Kick Start - Wheelie King + Kick Start Wheelie King is a motorcycle racing game from Taito. + 0.50 + 19840101T000000 + Taito + Race, Driving / Motorcycle + 2943 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/kikstart.png + + + + kicker.zip + Kicker + Kung-fu player jumps around multiple level boards, kicking opponents and collecting power-ups and bonus items. Player defeats by way of three kicks the board "boss" and advances to the next level. + 0.80 + 19850101T000000 + Konami + Konami + Fight + 14 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/kicker.png + + + + kikcubicb.zip + Kickle Cubele + Meikyuujima (c) 1988 Irem. - TECHNICAL - Main CPU : Z80 (@ 3.579645 Mhz) Sound CPU : Z80 (@ 3.579645 Mhz) Sound Chips : YM2151 (@ 3.579645 Mhz), DAC Players : 2 Control : 4-way joystick Buttons : 2 - TRIVIA - Developed by Nanao Corporation. Meikyuuji + 0.70 + 19880101T000000 + Irem + Irem + Puzzle-Game + 26 + 1-2 + kikcubic.zip + Irem Classics + 384x256 + media/mixrbv2/kikcubic.png + + + + kickman.zip + Kickman (upright) + Move a man on a unicycle and catch falling balloons and Pac-Men on your head. Use the Kick button to make the character's legs kick out and knock balloons back up for another try. Balloons stack up eight high and then the man will pop them. Stack Pac-Men for bonus points. + 0.70 + 19810101T000000 + Midway + Midway + Action + 10 + 1-2 + kick.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/kick.png + + + + kidnikiu.zip + Kid Niki - Radical Ninja (US) + Play as the cool ninja Niki, as he eliminates evil from Japan with his twirling sword. It was originally known as Kaiketsu Yanchamaru in its native Japan. + 0.70 + 19860101T000000 + Data East + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + kidniki.zip + Irem Classics + 384x256 + media/mixrbv2/kidniki.png + + + + kidniki.zip + Kid Niki - Radical Ninja (World) + Play as the cool ninja Niki, as he eliminates evil from Japan with his twirling sword. It was originally known as Kaiketsu Yanchamaru in its native Japan. + 0.70 + 19860101T000000 + Data East + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/kidniki.png + + + + horekid.zip + Kid no Hore Hore Daisakusen + 'Kid's Horehore Daisakusen' is an action game that was released from Nichibutsu in 1987. +Kid, who has been drawn into the space-time labyrinth from the 23 century, fights to escape from a large track of the enemy in order to return to the present day. Players defeat enemies with dropping in holes with using items, to escape from the times, such as primitive times and the Edo era and contemporary. + 0.70 + 19870101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/horekid.png + + + + horekidb.zip + Kid no Hore Hore Daisakusen (bootleg) + 'Kid's Horehore Daisakusen' is an action game that was released from Nichibutsu in 1987. +Kid, who has been drawn into the space-time labyrinth from the 23 century, fights to escape from a large track of the enemy in order to return to the present day. Players defeat enemies with dropping in holes with using items, to escape from the times, such as primitive times and the Edo era and contemporary. + 0.70 + 19870101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + horekid.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/horekid.png + + + + kikikai.zip + KiKi KaiKai + Priestess Sayo-chan must repel ghosts in order to rescue Seven Lucky Gods! + +The Seven Lucky Gods have been kidnapped by giant ghosts. Armed with talismans and a purification rod, Sayo-Chan must travel to the ghost village and defeat the enemies who are determined to stop her rescuing the Gods. + 0.50 + 19860101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/kikikai.png + + + + kingballj.zip + King & Balloon (Japan) + The player controls two green men (likely soldiers in the king's army) with an orange cannon that fires at squads of descending balloons. You must protect the King and prevent him from being captured and carried away by one of the balloons. Unlike most shooter games, the player's cannon can be hit and destroyed any number of times; it is the King that must be protected. The game ends when the king is carried away three times. + 0.50 + 19800101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + kingball.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/kingball.png + + + + kingball.zip + King & Balloon (US) + The player controls two green men (likely soldiers in the king's army) with an orange cannon that fires at squads of descending balloons. You must protect the King and prevent him from being captured and carried away by one of the balloons. Unlike most shooter games, the player's cannon can be hit and destroyed any number of times; it is the King that must be protected. The game ends when the king is carried away three times. + 0.50 + 19800101T000000 + Namco + Namco + Shooter / Space Invaders Like + 2900 + 1-2 + Namco Classics + 270 + 768x224 + media/mixrbv2/kingball.png + + + + kingofbj.zip + King of Boxer (Japan) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + kingofb.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + kingofb.zip + King of Boxer (World) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + kog.zip + King of Gladiator (The King of Fighters '97 bootleg) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kogplus.zip + King of Gladiator Plus (The King of Fighters '97 bootleg) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kotm.zip + King of the Monsters (set 1) + King of the Monsters is a two player (or one player vs. computer) fighting game, in which the players take control of two gargantuan monsters (like Godzillas) and battle it out in different city locations. + +The city gets gradually destroyed as the two creatures fight it out. The players can also interact with the scenery by picking up boats and such, to use as weapons against the other player. + 0.65 + 19910101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kotm.png + + + + kotmh.zip + King of the Monsters (set 2) + King of the Monsters is a two player (or one player vs. computer) fighting game, in which the players take control of two gargantuan monsters (like Godzillas) and battle it out in different city locations. + +The city gets gradually destroyed as the two creatures fight it out. The players can also interact with the scenery by picking up boats and such, to use as weapons against the other player. + 0.65 + 19910101T000000 + SNK + SNK + Fight + 14 + 1-2 + kotm.zip + Neo-Geo + 320x224 + media/mixrbv2/kotm.png + + + + kotm2.zip + King of the Monsters 2 - The Next Thing (NGM-039)(NGH-039) + The object of King of the Monsters 2 is similar to its predecessor. Choose from three monsters which include a large lizard, a large robotic ape, and a huge mutant human. Then walk through each city, making sure to destroy everything in site, including planes, buildings, and other creatures. When smashed, some buildings reveal power-ups that make your character more powerful. At the end of each city, you go head-to-head with the boss creature. There are small stages in between where you fight a second monster for bonus points, or you fall from the sky and land underwater where you try to collect points and power-ups while falling. + + 0.75 + 19920101T000000 + SNK + Takara + Beat'em Up + 1 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kotm2.png + + + + kotm2a.zip + King of the Monsters 2 - The Next Thing (older) + The object of King of the Monsters 2 is similar to its predecessor. Choose from three monsters which include a large lizard, a large robotic ape, and a huge mutant human. Then walk through each city, making sure to destroy everything in site, including planes, buildings, and other creatures. When smashed, some buildings reveal power-ups that make your character more powerful. At the end of each city, you go head-to-head with the boss creature. There are small stages in between where you fight a second monster for bonus points, or you fall from the sky and land underwater where you try to collect points and power-ups while falling. + + 0.75 + 19920101T000000 + SNK + Takara + Beat'em Up + 1 + 1-2 + kotm2.zip + Neo-Geo + 320x224 + media/mixrbv2/kotm2.png + + + + kotm2p.zip + King of the Monsters 2 - The Next Thing (prototype) + The object of King of the Monsters 2 is similar to its predecessor. Choose from three monsters which include a large lizard, a large robotic ape, and a huge mutant human. Then walk through each city, making sure to destroy everything in site, including planes, buildings, and other creatures. When smashed, some buildings reveal power-ups that make your character more powerful. At the end of each city, you go head-to-head with the boss creature. There are small stages in between where you fight a second monster for bonus points, or you fall from the sky and land underwater where you try to collect points and power-ups while falling. + + 0.75 + 19920101T000000 + SNK + Takara + Beat'em Up + 1 + 1-2 + kotm2.zip + Neo-Geo + 320x224 + media/mixrbv2/kotm2.png + + + + kingdmgp.zip + Kingdom Grandprix (World) + A vertically scrolling shooter with a racing theme. You have the choice of either firing (when the button is pressed) or boosting (when the button is held). + 0.80 + 19940101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/kingdmgp.png + + + + kittenk.zip + Kitten Kaboodle + Two cats try to find hidden keys. Avoiding enemies and push blocks around to achieve your goal. + 0.70 + 19880101T000000 + Konami + Konami + Puzzle-Game + 26 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/kittenk.png + + + + kizuna.zip + Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle + Fight Alone! +Competition or Team Battles. The Tage Battle of a Lifetime Begins! +Or Fight with a Friend! + +Why Do You Fight?! For money? For glory? For...?! +The Fate of 10 of the World's Mightiest Warriors Rests on the Grand Ambitions of King Lion! + 0.70 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kizuna.png + + + + klaxd2.zip + Klax (Germany, version 2) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + klax.zip + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + klaxj3.zip + Klax (Japan, version 3) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + klax.zip + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + klaxj4.zip + Klax (Japan, version 4) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + klax.zip + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + klax4.zip + Klax (version 4) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + klax.zip + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + klax5.zip + Klax (version 5) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + klax.zip + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + klax.zip + Klax (version 6) + The tiles klank end over end down the ramp. Catch them on the paddle, or they fall in the pit. Flip them from the paddle into the bins, matching the same-colored tiles horizontally, vertically, or diagonally. Each line of colored tiles is a Klax. When you've made a Klax, you hear a fanfare. When you complete a wave, the crowd cheers. Let a tile fall in the pit, and you hear a scream as it falls in. If you fail to complete a wave, the crowd is disappointed. Stay alive, complete the waves and don't drop any tiles! + +Catch the tiles as they come to the end of the ramp on the paddle. Flip a tile into a bin by pressing the start/flip button. Pull the joystick forward to increase the speed of the closest tile as it klanks down the ramp. Push the joystick back and toss the top tile on the paddle back on the ramp and gain a little time. + +The paddle can hold up to five tiles. As long as the green light is on below the paddle, you can pile more tiles on the paddle. When the red light appears, you must flip at least one tile in a bin or toss it back on the ramp before you can collect any more tiles. You can flip tiles into a bin as long as the green light is on below the bin. + +To succeed in Klax, make points and also complete each wave. Create a horizontal, vertical, or diagonal row of at least three tiles (just like in tic-tac-toe) in the bins to make a Klax and make points. You receive the most points for diagonals, less for horizontals and the least for verticals. When you create a Klax, the tiles in the Klax disappear to make room for more tiles in the bins. + + + 0.90 + 19890101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/klax.png + + + + knightb.zip + Knight Boy + Priestess Sayo-chan must repel ghosts in order to rescue Seven Lucky Gods! + +The Seven Lucky Gods have been kidnapped by giant ghosts. Armed with talismans and a purification rod, Sayo-Chan must travel to the ghost village and defeat the enemies who are determined to stop her rescuing the Gods. + 0.50 + 19860101T000000 + Taito + Taito + Shooter / Run and Gun + 2903 + 1-2 + kikikai.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/kikikai.png + + + + kngtmare.zip + Knightmare (prototype) + The horrible Hudnos has kidnapped your brave knight's beautiful girlfriend, Aphodite and you must help the brave Popolon embark on an amazingly cool mission to battle through spooky castles to save her! In the brilliant Knightmare you must navigate through the castle and the grounds to hunt down and defeat the forces of evil, before finally encountering the evil Hudnos and saving the beautiful Aphrodite from certain death! + 0.50 + 19830101T000000 + Gottlieb + Gottlieb + Action + 10 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/kngtmare.png + + + + knights.zip + Knights of the Round (911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsja.zip + Knights of the Round (911127 Japan, B-Board 89625B-1) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsj.zip + Knights of the Round (911127 Japan, B-Board 91634B-2) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsu.zip + Knights of the Round (911127 USA) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsb.zip + Knights of the Round (bootleg set 1 (with YM2151 + 2xMSM5205), 911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsb2.zip + Knights of the Round (bootleg set 2, 911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsb3.zip + Knights of the Round (bootleg set 3 (with 2xMSM5205), 911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsb4.zip + Knights of the Round (bootleg set 4 (with YM2151 + 2xMSM5205), 911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsb5.zip + Knights of the Round (bootleg set 5, 911127 Japan) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsh.zip + Knights of the Round (hack set 1) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knightsh2.zip + Knights of the Round (hack set 2, 911127 etc) + Knights of the Round is an arcade game released by Capcom in 1991. A side-scrolling beat 'em up based loosely on the legend of King Arthur and the Knights of the Round Table, the game features an role-playing video game-like level advancement system, with fighters getting new weapons and armour as they advance through the game, however the player can not choose how to upgrade his/her character - the level up system is static. + 0.75 + 19910101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + knights.zip + Capcom Play System + 384x224 + media/mixrbv2/knights.png + + + + knockout.zip + Knock Out!! + You're the carpenter and your task is to complete the squares until you've filled the screen. Sound easy? Not when you hear what's trying to stop you. A gorilla, ghost, eraser and burst of fire all wander the paths. The eraser erases uncompleted squares and the gorilla would love to hammer you. But you're not defenceless. With three swift punches you can knock them out, except for the fire which can't be stopped. Each level introduces a larger area to fill so keep moving! + 0.90 + 19820101T000000 + KKI + K.K. International + Action + 10 + 1-2 + triplep.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/triplep.png + + + + kbash.zip + Knuckle Bash + Join clash, dice and devo as they make their stand against wrestling's underworld! This is the tale of how the young wrestlers saved the sport from evil and corruption. + +The Mad Bull Group is a corrupt wrestling organization that profits while draining the purity of the sport. Help the Knuckle Bash team overpower evil and convert the Mad Bulls to their side! Our young wrestlers know how millions of young fans look up to them as role models. It's for them they must TAKE A STAND! + 0.50 + 19930101T000000 + Toaplan + Toaplan + Fight / Co-op + 2957 + 1-2 + Atari Classics + 320x240 + media/mixrbv2/kbash.png + + + + kbashk.zip + Knuckle Bash (Korean PCB) + Join clash, dice and devo as they make their stand against wrestling's underworld! This is the tale of how the young wrestlers saved the sport from evil and corruption. + +The Mad Bull Group is a corrupt wrestling organization that profits while draining the purity of the sport. Help the Knuckle Bash team overpower evil and convert the Mad Bulls to their side! Our young wrestlers know how millions of young fans look up to them as role models. It's for them they must TAKE A STAND! + 0.50 + 19930101T000000 + Toaplan + Toaplan + Fight / Co-op + 2957 + 1-2 + kbash.zip + Atari Classics + 320x240 + media/mixrbv2/kbash.png + + + + kbash2.zip + Knuckle Bash 2 (bootleg) + 4 wacky characters go after the Bulls and others who would dare threaten the peace of the city! + 0.50 + 19990101T000000 + bootleg + bootleg + Fight / Co-op + 2957 + 1-2 + Toaplan + 320x240 + media/mixrbv2/kbash2.png + + + + kncljoe.zip + Knuckle Joe (set 1) + Knuckle Joe is a 15-step, side-scrolling beat'em all. Our protagonist, Joe, must beat all his enemies and the various final bosses with their corresponding abilities. At the end of each boss, there are bonus stages where you can ride a motorcycle and shoot other riders. + +The controls consist of an 8-way directional lever and two action buttons. You can move to the left, to the right, jump (very fast), punch, kick and block (by pressing the two buttons). + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Beat'em Up + 1 + 1-2 + Taito Classics + 240x256 + media/mixrbv2/kncljoe.png + + + + kncljoea.zip + Knuckle Joe (set 2) + Knuckle Joe is a 15-step, side-scrolling beat'em all. Our protagonist, Joe, must beat all his enemies and the various final bosses with their corresponding abilities. At the end of each boss, there are bonus stages where you can ride a motorcycle and shoot other riders. + +The controls consist of an 8-way directional lever and two action buttons. You can move to the left, to the right, jump (very fast), punch, kick and block (by pressing the two buttons). + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Beat'em Up + 1 + 1-2 + kncljoe.zip + Taito Classics + 240x256 + media/mixrbv2/kncljoe.png + + + + rockragej.zip + Koi no Hotrock (Japan) + Two rock stars must battle through 5 stages battling enemies from different time periods. + 0.50 + 19860101T000000 + Konami + Konami + Action + 10 + 1-2 + rockrage.zip + Konami Classics + 256x224 + media/mixrbv2/rockrage.png + + + + eto.zip + Kokontouzai Eto Monogatari (Japan) + Place up to 3 blocks of the same colour, horizontally, vertically or in an 'L' shape which can be done in any direction. + 0.70 + 19940101T000000 + Visco + Visco + Puzzle-Game / Fall + 2912 + 1-2 + Visco + 320x240 + media/mixrbv2/eto.png + + + + konami88.zip + Konami '88 + Konami '88 (also known as '88 Games or Hyper Sports Special) is the third in the Track & Field game series by Konami, where you test your Olympic skills against other world-class athletes. As the name implies, it is loosely based on (and not licensed by) the 1988 Summer Olympics in Seoul, South Korea. Bronze or silver medals are not good enough - you have to go for the gold to get to the next event. However, you must at least qualify in each event in order to compete in the next event. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-2 + 88games.zip + Konami Classics + 304x224 + media/mixrbv2/88games.png + + + + konamigt.zip + Konami GT + Drive your car through a series of courses, avoiding other cars and motorcycles. Drive through fuel bubbles to gain more fuel. Run out of fuel and it's game over. + 0.50 + 19850101T000000 + Konami + Konami + Race 1st Pers. view + 2884 + 1 + Konami Classics + 256x224 + media/mixrbv2/konamigt.png + + + + rf2.zip + Konami RF2 - Red Fighter + Drive your car through a series of courses, avoiding other cars and motorcycles. Drive through fuel bubbles to gain more fuel. Run out of fuel and it's game over. + 0.50 + 19850101T000000 + Konami + Konami + Race 1st Pers. view + 2884 + 1 + konamigt.zip + Konami Classics + 256x224 + media/mixrbv2/konamigt.png + + + + kontest.zip + Konami Test Board (GX800, Japan) + 19870101T000000 + Konami + Various + 39 + 1 + Konami Classics + 256x224 + media/mixrbv2/kontest.png + + + + pingpong.zip + Konami's Ping-Pong + Konami's Ping Pong is a playable if simplistic Table Tennis simulation for one or two players. Ping Pong offers three different types of shot; Top spin, Back Spin and Smash. The actual gameplay centers on shot timing and shot choice, with the players' bats moving automatically to track the movement of the ball. + +In the single player mode, the player can opt to play the game on any one of five different skill levels. + 0.70 + 19850101T000000 + Konami + Sports / Table tennis + 2966 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/pingpong.png + + + + kong.zip + Kong (Donkey Kong conversion on Galaxian hardware) + Third title in the original Donkey Kong series by Nintendo. It was first released on Famicom and Arcade, but was later ported to several platforms including NES and Wii Virtual Console. DK3 has been described as a "fixed shooter", departing from the original Donkey Kong gameplay. + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 270 + 768x224 + media/mixrbv2/kong.png + + + + korokoro.zip + Koro Koro Quest (Japan) + Dans un style RPG avec des graphismes de style fantasy, vous combattez des monstres aléatoires dans des batailles de deux dés a six faces. Si vous gagner vous pouvez encaisser ou passer à la prochaine bataille. + 0.70 + 19990101T000000 + Takumi + Takumi + Various + 39 + 1 + Mame + 318x239 + media/mixrbv2/korokoro.png + + + + korosuke.zip + Korosuke Roller (Japan) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + legofair.zip + Koukuu Kihei Monogatari - The Legend of Air Cavalry (Japan) + Pilot a helicopter in this vertically scrolling shooter from SNK. + 0.50 + 19880101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + chopper.zip + SNK Classics + 270 + 392x224 + media/mixrbv2/chopper.png + + + + strahlj.zip + Koutetsu Yousai Strahl (Japan set 1) + The game takes place in modern times where a great depression has swept over the world. Amidst the depression and its riots of jobless workers, a mad scientist starts his plan of world domination. Taking command in the titular fortress orbiting Earth, the evil Doctor Gegeben Funkerun uses his own robots, flying fortresses and mercenaries to wreak havoc across the globe until all his demands are met. Assisting the attacked and weakened governments, workers across the nations help develop a series of jet fighters called the Aizerun Geist to use against the forces of Dr. Funkerun and save the world. + +Before each stage begins, players are given a choice of weapons to purchase at a hangar for the Aizerun Geist. There are four weapons within three tiers to choose from including Main Attack, Sub Weapon and Bomb. Of the Main Attack the player can choose Twin Shot, Laser, Heavy Laser and the Charge Shot. Of the Sub Weapons, players can choose additional firepower, Homing Missiles, Shielded Options or an energy barrier. Players can stock up on multiple bombs including Small bombs, rockets, larger bombs or napalm. + +The Aizerun Geist provides tactical advantages during combat with the use of its manually directional Sub Weapon. Players are able to direct additional firepower in five directions including vertical and horizontal by pressing the bomb button while firing. The game runs for six stages through various settings such as a jungle, stormy skies, Tokyo and Fortress Strahl itself. + 0.50 + 19920101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + strahl.zip + Mame + 256x224 + media/mixrbv2/strahl.png + + + + strahlja.zip + Koutetsu Yousai Strahl (Japan set 2) + The game takes place in modern times where a great depression has swept over the world. Amidst the depression and its riots of jobless workers, a mad scientist starts his plan of world domination. Taking command in the titular fortress orbiting Earth, the evil Doctor Gegeben Funkerun uses his own robots, flying fortresses and mercenaries to wreak havoc across the globe until all his demands are met. Assisting the attacked and weakened governments, workers across the nations help develop a series of jet fighters called the Aizerun Geist to use against the forces of Dr. Funkerun and save the world. + +Before each stage begins, players are given a choice of weapons to purchase at a hangar for the Aizerun Geist. There are four weapons within three tiers to choose from including Main Attack, Sub Weapon and Bomb. Of the Main Attack the player can choose Twin Shot, Laser, Heavy Laser and the Charge Shot. Of the Sub Weapons, players can choose additional firepower, Homing Missiles, Shielded Options or an energy barrier. Players can stock up on multiple bombs including Small bombs, rockets, larger bombs or napalm. + +The Aizerun Geist provides tactical advantages during combat with the use of its manually directional Sub Weapon. Players are able to direct additional firepower in five directions including vertical and horizontal by pressing the bomb button while firing. The game runs for six stages through various settings such as a jungle, stormy skies, Tokyo and Fortress Strahl itself. + 0.50 + 19920101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + strahl.zip + Mame + 256x224 + media/mixrbv2/strahl.png + + + + strahl.zip + Koutetsu Yousai Strahl (World) + The game takes place in modern times where a great depression has swept over the world. Amidst the depression and its riots of jobless workers, a mad scientist starts his plan of world domination. Taking command in the titular fortress orbiting Earth, the evil Doctor Gegeben Funkerun uses his own robots, flying fortresses and mercenaries to wreak havoc across the globe until all his demands are met. Assisting the attacked and weakened governments, workers across the nations help develop a series of jet fighters called the Aizerun Geist to use against the forces of Dr. Funkerun and save the world. + +Before each stage begins, players are given a choice of weapons to purchase at a hangar for the Aizerun Geist. There are four weapons within three tiers to choose from including Main Attack, Sub Weapon and Bomb. Of the Main Attack the player can choose Twin Shot, Laser, Heavy Laser and the Charge Shot. Of the Sub Weapons, players can choose additional firepower, Homing Missiles, Shielded Options or an energy barrier. Players can stock up on multiple bombs including Small bombs, rockets, larger bombs or napalm. + +The Aizerun Geist provides tactical advantages during combat with the use of its manually directional Sub Weapon. Players are able to direct additional firepower in five directions including vertical and horizontal by pressing the bomb button while firing. The game runs for six stages through various settings such as a jungle, stormy skies, Tokyo and Fortress Strahl itself. + 0.50 + 19920101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/strahl.png + + + + kroozr.zip + Kozmik Kroozr + Kozmik Krooz'r is a shoot-'em-up game in which players guide Kapt. Krooz'r to a rotating mothership at the top of the playfield, one which can only be entered when its tractor beam is operational. Players can also shoot enemies in one of eight directions and deflect firepower during their journey. Every fifth round there is a bonus round where Kapt. Krooz'r must pick up space junk. + 0.50 + 19820101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/kroozr.png + + + + kozure.zip + Kozure Ookami (Japan) + In this game, you play Itto, and you walk around with your son in a backpack, killing a lot of guys to death. While this is a scrolling beat'em all, in terms of mechanical complexity, there is a sort of similarity to simpler games that came before it, like Spartan X, My Hero, et al. There is no combo, but you do have a block button and can do a few different blocks with your sword by holding one direction when you press the attack button. + 0.50 + 19870101T000000 + Nichibutsu + Nichibutsu + Beat'em Up + 1 + 1-2 + Nichibutsu + 320x240 + media/mixrbv2/kozure.png + + + + kram.zip + Kram (set 1) + You control KRAM and build walls to prevent the bad guys from getting you. + 0.70 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 256x256 + media/mixrbv2/kram.png + + + + kram2.zip + Kram (set 2) + You control KRAM and build walls to prevent the bad guys from getting you. + 0.70 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + kram.zip + Taito Classics + 256x256 + media/mixrbv2/kram.png + + + + krzybowl.zip + Krazy Bowl + A 10-pin bowling game. + 0.90 + 19940101T000000 + Sammy + Sammy + Sports / Bowling + 2901 + 1-4 + Sammy Classics + 270 + 304x240 + media/mixrbv2/krzybowl.png + + + + krull.zip + Krull + The left joystick controls the movement of the player character, Colwyn. He can be moved in any one of eight directions. The right joystick controls the movement of the player's weapon, the glaive. It can be thrown in any one of eight directions. Four glaives can be in flight at one time and will return to Colwyn with a boomerang-type action. The one and two player select buttons are also located on the panel. + +Krull consists of five subgames: +The Mountain Game. +The Swamp Game. +The Fortress Game. +The Hexagon Game. +The Beast Game. + +The player must accomplish a task in each of the five games with eight levels of difficulty in each. All eight levels can be reached in one task based on the time spent performing that task (amount of time spent on that subgame). The total number of lethal characters on the screen at one time increases as the levels increase. + +FROM THE SKY WILL COME THE BLACK FORTRESS. FROM THE FORTRESS WILL COME THE SLAYERS, TO DEVOUR THE PLANET OF KRULL. THEN SHALL A GIRL OF ANCIENT NAME BECOME QUEEN, AND THE KING SHE CHOOSES SHALL RULE THE PLANET. + +The planet Krull is threatened by the Beast. His army of Slayers has brought terror to the land. Colwyn must stop this terror and save the land and its people. On the day Colwyn is to wed the Princess Lyssa, the Slayers, army of the Beast, kidnap her to become the Beast's bride. Colwyn must reach the Black Fortress and reclaim his Princess. He who marries the Princess shall be king. The Beast must not be allowed to rule the planet. + +A prophet acquaints Colwyn with the magical properties of the glaive, a five-bladed sword, which Colwyn must acquire. To accomplish this task, he must climb the mountain and collect the five individual blades of the glaive in order to assemble the weapon. The blade is picked up by touching Colwyn to the blade. Boulders are fatal and must be avoided. The weapon joystick is not utilized in this subgame. The player is awarded 1,000 points for each blade picked up. Points are also awarded for placing Colwyn in a dangerous position in front of one or more boulders. + +During his travels to discover the Black Fortress, Colwyn comes upon an army of eight men that he befriends and recruits to help him in his quest to destroy the Beast so that Krull can be safe from his evil. + +With no intentions of losing his newly acquired bride without bloodshed, the Beast orders an army of Slayers to stop Colwyn and his friends. Forging through the quicksand-riddled swamps, Slayers materialize from the soil and Colwyn prepares for battle. In the second subgame, Colwyn must save as many friends as possible while killing all of the Slayers. The friends are saved by touching them and the Slayers are destroyed by the glaive. The Slayers themselves and their spears must be avoided. The game begins with eight friends. The number of friends saved is the number of friends carried over into future subgames. The friends can eliminate the Slayers with hand-to-hand combat but can also be destroyed themselves. Receiving three blows either by hand-to-hand or by the Slayers spear is fatal to the friends. The subgame ends when there are no longer any friends to save and all of the Slayers have been eliminated. Avoid quicksand, as it slows Colwyn's attack. Each friend saved awards 1,000 points (maximum 8,000 points) and 100 points for each Slayer the player eliminates. + +After days of travel, Colwyn and his men have found the Black Fortress in the Iron Desert where many dangers await them. While attempting to lead his men through the dangerous narrow passageways that lead to the Fortress, Slayers materialize once again in a second attempt to stop Colwyn's struggle. In this third subgame, Colwyn must pick up all of his friends and deposit them safely into the hexagon while again combating the Slayers. The total number of friends in this subgame is equal to the total number of friends saved in Subgame 2. This subgame concludes when all of the friends have been delivered to the hexagon. The player is awarded 1,000 points for each friend delivered to the hexagon, 100 points for each Slayer he destroys and 100 points for each Slayer remaining when the last friend is delivered to the hexagon. + +Victorious in battle, Colwyn must now attempt to release his friends from the hexagon. Unlike entry, exiting the hexagon is a struggle deservant of its own merit. Once again Colwyn must call upon the power of the glaive. Release of his friends is accomplished by throwing the glaive at the front wall while it is black only. Any glaive striking the wall while it is not black will stick in the wall until the wall becomes black. The Slayers, of course, attempt to stop Colwyn's efforts. In his own attempt for survival, Colwyn must fight them off and avoid their spears. The subgame ends when the last black wall is broken through and the friends have escaped. The player is awarded 100 points for each Slayer he puts an end to, 100 points for each Slayer remaining when the friends are set free and 1,000 points for the first black wall destroyed, 2,000 points for the second, 3,000 points for the third and 4,000 points for the fourth. + +Now inside the Black Fortress, Colwyn secedes from his friends in order to rescue the Princess Lyssa. He finds her in a large cave carefully guarded by the Beast. He knows that the only way to reclaim his bride and conserve the planet is to forge into battle with the Beast. In the fifth subgame, the player moves Colwyn towards the Princess in order to reach her. As he progresses, the Beast attempts to stop him by throwing fireballs at him. The fireballs must be avoided or destroyed by the glaive. If not destroyed, the fireballs will ricochet off of the walls. Destroying a fireball awards the player 100 points multiplied by the number of fireballs in flight. The Beast is momentarily stunned when hit with a glaive and awards the player 100 points. The Beast cannot be destroyed and the player must avoid touching him. When Colwyn reaches the Princess, his friends, following the pandemonium of the battle, appear and chase the Beast off, awarding 1000 points per friend. The total number of friends in this subgame is equal to the total number of friends saved in Subgame 2. + 0.70 + 19830101T000000 + Gottlieb + Gottlieb + Shooter + 2646 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/krull.png + + + + kungfum.zip + Kung-Fu Master + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + kungfub.zip + Kung-Fu Master (bootleg set 1) + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + kungfum.zip + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + kungfub2.zip + Kung-Fu Master (bootleg set 2) + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + kungfum.zip + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + kungfub3.zip + Kung-Fu Master (bootleg set 3) + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + kungfum.zip + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + kungfumd.zip + Kung-Fu Master (Data East) + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + kungfum.zip + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + kungfut.zip + Kung-Fu Taikun + The title of this game translates from Japanese as 'Kung Fu Lord'. + 0.30 + 19840101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Fight + 14 + 1-2 + Seibu Kaihatsu + 256x224 + media/mixrbv2/kungfut.png + + + + kungfuta.zip + Kung-Fu Taikun (alt) + The title of this game translates from Japanese as 'Kung Fu Lord'. + 0.30 + 19840101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Fight + 14 + 1-2 + kungfut.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/kungfut.png + + + + kurikintj.zip + Kuri Kinton (Japan) + With your super kung-fu skills, penetrate the enemy's headquarters to rescue the Chris family. + +At the end of the 20th century, the world has gone through vast changes. Country borders around the world are constantly changing and every day brings further territorial expansion and new threats of power struggles. + +A member of the World Secret Police Organization (WSPO) has obtained information about an upcoming coup, but before it could be turned over to the WSPO he and his daughter were captured. Before his capture he was able to send a detailed letter to his counterpart in the People's Republic of China, code-named Kuri Kinton, along with a plea for help. + +It's all up to Kuri Kinton now to save the captives and restore the delicate balance of power. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + kurikint.zip + Taito Classics + 320x224 + media/mixrbv2/kurikint.png + + + + kurikintu.zip + Kuri Kinton (US) + With your super kung-fu skills, penetrate the enemy's headquarters to rescue the Chris family. + +At the end of the 20th century, the world has gone through vast changes. Country borders around the world are constantly changing and every day brings further territorial expansion and new threats of power struggles. + +A member of the World Secret Police Organization (WSPO) has obtained information about an upcoming coup, but before it could be turned over to the WSPO he and his daughter were captured. Before his capture he was able to send a detailed letter to his counterpart in the People's Republic of China, code-named Kuri Kinton, along with a plea for help. + +It's all up to Kuri Kinton now to save the captives and restore the delicate balance of power. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + kurikint.zip + Taito Classics + 320x224 + media/mixrbv2/kurikint.png + + + + kurikintw.zip + Kuri Kinton (US, World Games license) + With your super kung-fu skills, penetrate the enemy's headquarters to rescue the Chris family. + +At the end of the 20th century, the world has gone through vast changes. Country borders around the world are constantly changing and every day brings further territorial expansion and new threats of power struggles. + +A member of the World Secret Police Organization (WSPO) has obtained information about an upcoming coup, but before it could be turned over to the WSPO he and his daughter were captured. Before his capture he was able to send a detailed letter to his counterpart in the People's Republic of China, code-named Kuri Kinton, along with a plea for help. + +It's all up to Kuri Kinton now to save the captives and restore the delicate balance of power. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + kurikint.zip + Taito Classics + 320x224 + media/mixrbv2/kurikint.png + + + + kurikint.zip + Kuri Kinton (World) + With your super kung-fu skills, penetrate the enemy's headquarters to rescue the Chris family. + +At the end of the 20th century, the world has gone through vast changes. Country borders around the world are constantly changing and every day brings further territorial expansion and new threats of power struggles. + +A member of the World Secret Police Organization (WSPO) has obtained information about an upcoming coup, but before it could be turned over to the WSPO he and his daughter were captured. Before his capture he was able to send a detailed letter to his counterpart in the People's Republic of China, code-named Kuri Kinton, along with a plea for help. + +It's all up to Kuri Kinton now to save the captives and restore the delicate balance of power. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/kurikint.png + + + + kurikinta.zip + Kuri Kinton (World, prototype?) + With your super kung-fu skills, penetrate the enemy's headquarters to rescue the Chris family. + +At the end of the 20th century, the world has gone through vast changes. Country borders around the world are constantly changing and every day brings further territorial expansion and new threats of power struggles. + +A member of the World Secret Police Organization (WSPO) has obtained information about an upcoming coup, but before it could be turned over to the WSPO he and his daughter were captured. Before his capture he was able to send a detailed letter to his counterpart in the People's Republic of China, code-named Kuri Kinton, along with a plea for help. + +It's all up to Kuri Kinton now to save the captives and restore the delicate balance of power. + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + kurikint.zip + Taito Classics + 320x224 + media/mixrbv2/kurikint.png + + + + ksayakyu.zip + Kusayakyuu + Kusa Yakyuu is a baseball game from Taito Corporation. + 0.10 + 19850101T000000 + Taito + Taito + Sports / Baseball + 2853 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/ksayakyu.png + + + + brkthruj.zip + Kyohkoh-Toppa (Japan) + This is a horizontally scrolling shoot'em up in which the player drives an armoured car, equipped with a front-mounted gun and super jump capability. The aim of the game is to fight through five enemy-controlled zones to retrieve a stolen top-secret fighter plane, the PK430. + +The game's levels force-scroll from right to left, although the vehicle's speed - and rate of scrolling - can be slowed down and speeded up to some degree. As well as a forward-firing gun, the car can be made to jump huge distances. This is necessary to avoid background obstacles such as rock falls and broken bridges. It can also be used to avoid incoming enemy fire and vehicles. Land mines also litter the levels and need to be shot or avoided. + 0.70 + 19860101T000000 + Data East + Data East + Shooter / Vehicle, Horizontal + 2938 + 1-2 + brkthru.zip + Data East Classics + 240x240 + media/mixrbv2/brkthru.png + + + + kyros.zip + Kyros + A vertically scrolling beat-em-up where you fight against monsters. + 0.50 + 19870101T000000 + ADK + ADK + Beat'em Up + 1 + 1-2 + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/kyros.png + + + + kyrosj.zip + Kyros No Yakata (Japan) + A vertically scrolling beat-em-up where you fight against monsters. + 0.50 + 19870101T000000 + ADK + ADK + Beat'em Up + 1 + 1-2 + kyros.zip + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/kyros.png + + + + dadandrn.zip + Kyukyoku Sentai Dadandarn (ver JAA) + A trio of supervillains unleashes an army of gross mutants on earth in order to start an alien invasion. Our only hope is the trio of superheroes known as the 'Ultimate Task Force'. Squash the evil mutants and put an end to the alien menace. Features excellent graphics & sound as well as plenty of moves to find! + 0.90 + 19930101T000000 + Konami + Konami + Fight / Co-op + 2957 + 1-2 + mmaulers.zip + Konami Classics + 288x224 + media/mixrbv2/mmaulers.png + + + + ktiger.zip + Kyukyoku Tiger (Japan) + Twin Cobra also known as "Kyuukyoku Tiger" in japan. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + twincobr.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/twincobr.png + + + + ktiger2p.zip + Kyukyoku Tiger (Japan, 2 Players) + Twin Cobra also known as "Kyuukyoku Tiger" in japan. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + twincobr.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/twincobr.png + + + + kyukaidk.zip + Kyuukai Douchuuki (Japan, new version (Rev B)) + Kyuukai Douchuuki (c) 1990 Namco. - TECHNICAL - Namco System 2 hardware Game ID : KY Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Screen orientation : Horizon + 0.70 + 19900101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/kyukaidk.png + + + + kyukaidko.zip + Kyuukai Douchuuki (Japan, old version) + Kyuukai Douchuuki (c) 1990 Namco. - TECHNICAL - Namco System 2 hardware Game ID : KY Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Screen orientation : Horizon + 0.70 + 19900101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + kyukaidk.zip + Namco Classics + 288x224 + media/mixrbv2/kyukaidk.png + + + + divebomb.zip + Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype) + 0.70 + 19890101T000000 + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/divebomb.png + + + + lagirl.zip + LA Girl + Play Girls (c) 1992 Hot-B. - TECHNICAL - Taito L System hardware Main CPU : Z80 (@ 6 Mhz) Sound Chips : YM2203 (@ 3 Mhz) Screen orientation : Vertical Video resolution : 224 x 320 pixels Screen refresh : 60.00 Hz Palette Colors : 256 Players : 2 Cont + 0.50 + 19920101T000000 + Hot-B + Action / Breakout games + 2917 + 1-2 + plgirls.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/plgirls.png + + + + labyrunr.zip + Labyrinth Runner (Japan) + The princess of Vegetaria named Papaya has been kidnapped by the Devil. Now it's up to the prince to rescue her. The prince is equipped with a gun that shoots bullets, a laser gun, and bombs. These weapons can continually be upgraded to more powerful versions. The prince has to go through five areas of Vegetaria, through the forest, a castle wall, a maze, riding a railway truck, and finally the devil's castle. Each of these areas are filled with and enemies and a boss monster and have to be beaten within the given time limit. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + tricktrp.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/tricktrp.png + + + + labyrunrk.zip + Labyrinth Runner (World Ver. K) + The princess of Vegetaria named Papaya has been kidnapped by the Devil. Now it's up to the prince to rescue her. The prince is equipped with a gun that shoots bullets, a laser gun, and bombs. These weapons can continually be upgraded to more powerful versions. The prince has to go through five areas of Vegetaria, through the forest, a castle wall, a maze, riding a railway truck, and finally the devil's castle. Each of these areas are filled with and enemies and a boss monster and have to be beaten within the given time limit. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + tricktrp.zip + Konami Classics + 270 + 280x224 + media/mixrbv2/tricktrp.png + + + + ladybug.zip + Lady Bug + In Lady Bug you guide a lady bug through a Pac-Man style maze, eating dots, and avoiding enemy insects. You lose a life if you run into a skull or get eaten by an enemy insect. Collect letters to spell EXTRA for a bonus life (just like in Mr. Do!), and SPECIAL for an extra credit. The maze has rotating doors which are just enough to give the game a slightly different feel than the Pac-Man series. + 0.70 + 19810101T000000 + Action + 10 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/ladybug.png + + + + ladybugg.zip + Lady Bug (bootleg on Galaxian hardware) + In Lady Bug you guide a lady bug through a Pac-Man style maze, eating dots, and avoiding enemy insects. You lose a life if you run into a skull or get eaten by an enemy insect. Collect letters to spell EXTRA for a bonus life (just like in Mr. Do!), and SPECIAL for an extra credit. The maze has rotating doors which are just enough to give the game a slightly different feel than the Pac-Man series. + 0.70 + 19810101T000000 + Action + 10 + 1-2 + ladybug.zip + Universal + 270 + 240x192 + media/mixrbv2/ladybug.png + + + + ladybugb.zip + Lady Bug (bootleg set 1) + In Lady Bug you guide a lady bug through a Pac-Man style maze, eating dots, and avoiding enemy insects. You lose a life if you run into a skull or get eaten by an enemy insect. Collect letters to spell EXTRA for a bonus life (just like in Mr. Do!), and SPECIAL for an extra credit. The maze has rotating doors which are just enough to give the game a slightly different feel than the Pac-Man series. + 0.70 + 19810101T000000 + Action + 10 + 1-2 + ladybug.zip + Universal + 270 + 240x192 + media/mixrbv2/ladybug.png + + + + ladykill.zip + Lady Killer + Lady killer is an adult, puzzle game featuring eight sexy women. The objective of the game is to dive and leap through the surface of the play area to reveal the image of the girl underneath. + +At the start of each level the player gets to select which girl he wants to reveal. Her image is then shown and is then covered by the game board. Then the level begins. The player must move to avoid the enemies while attempting to flip the tiles on the board by diving and surfacing through them. Flipped tiles often reveal power-ups to help the player. The player is killed any time he touches or is shot by an enemy, but the player can kill enemies by flipping a tile that the enemy is standing on. Enemies will re-spawn until the level is completed. The level is completed once all of the tiles have been removed. + +Each girl features five states of undress and four stages. During gameplay, the girl's silhouette remains visible through the surface of the game play area and while her state of dress changes between stages, her pose and silhouette will remain the same. Each girl also has a special stage featuring a mini-game of a sliding tile game or a number selecting game. After completing the final stage for each girl, the player is shown an erotic scene for that girl and the player must wiggle the joystick left and right to advance the scene. + +The game is over when the player has lost all of his lives. Upon continuing the player restarts the level he is currently on. + 0.60 + 19930101T000000 + Yanyaka + Adult + 413 + 1 + Mitchell + 270 + 320x240 + media/mixrbv2/ladykill.png + + + + ladymstr.zip + Lady Master of Kung Fu (set 1, newer) + Lady Master of Kung Fu is 2D fighting game. Player controls a female - titular Lady. She is skilled in kung-fu fighting and in using nunchaku. Lady comes to the area of ​​the big house, fighting with a bunch of opponents. The house has several floors, Lady must use the elevators. Some rooms are open - she can go to them, and fight there against a stronger opponent, for which she gets a bonus. + 0.30 + 19850101T000000 + Kaneko + Kaneko + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/ladymstr.png + + + + ladymstr2.zip + Lady Master of Kung Fu (set 2, older) + Lady Master of Kung Fu is 2D fighting game. Player controls a female - titular Lady. She is skilled in kung-fu fighting and in using nunchaku. Lady comes to the area of ​​the big house, fighting with a bunch of opponents. The house has several floors, Lady must use the elevators. Some rooms are open - she can go to them, and fight there against a stronger opponent, for which she gets a bonus. + 0.30 + 19850101T000000 + Kaneko + Kaneko + Platform / Fighter Scrolling + 2896 + 1-2 + ladymstr.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/ladymstr.png + + + + lsasquad.zip + Land Sea Air Squad / Riku Kai Kuu Saizensen + Land Sea Air Squad also known in japan as "Riku Kai Kuu Saizensen". + 0.50 + 19860101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/lsasquad.png + + + + lans2004.zip + Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg) + As one of four playable characters each with unique methods of attack and power-ups, go through the level and destroy any enemies that get in your way, and defeat the boss at the end of that area. When you have completed the first area, you need to select a path to continue the game on. + +The second game in the Shock Troopers series enables shot locking, close proximity attacks, and evasive maneuvers allowing for flexible operation. In addition to the four characters, versatile modes of attack are featured using powerful vehicles and special shots. Letters that make up certain keywords can be collected throughout the game, and by collecting each letter in the keyword, you will receive a high score. + + 0.75 + 19980101T000000 + Saurus + SNK + Shooter + 2646 + 1-2 + shocktr2.zip + Neo-Geo + 320x224 + media/mixrbv2/shocktr2.png + + + + lvgirl94.zip + Las Vegas Girl (Girl '94) + Las Vegas Girl - Girl '94 (c) 1994 Comad. "Columns"-like game with pictures of nude girls! - TECHNICAL - Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 1 Mhz) Sound Chips : OKI6295 (@ 8 Khz) Screen orientation : Horizontal Video resolution : 368 x 224 + 19940101T000000 + Comad + Puzzle-Game / Fall + 2912 + 1-2 + Comad + 368x224 + media/mixrbv2/lvgirl94.png + + + + lghostj.zip + Laser Ghost (Japan, 317-0164) + A series of heinous events is in progress. Poltergeists are running rampant in the city. As if that wasn't bad enough, a little girl is kidnapped by one of the ghosts in broad daylight. Now it's up to Bill, Max, and Carol to put an end to the paranormal madness. + 0.60 + 19900101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-3 + lghost.zip + Sega Classics + 320x224 + media/mixrbv2/lghost.png + + + + lghostud.zip + Laser Ghost (US, 317-0165 decrypted) + A series of heinous events is in progress. Poltergeists are running rampant in the city. As if that wasn't bad enough, a little girl is kidnapped by one of the ghosts in broad daylight. Now it's up to Bill, Max, and Carol to put an end to the paranormal madness. + 0.60 + 19900101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-3 + lghost.zip + Sega Classics + 320x224 + media/mixrbv2/lghost.png + + + + lghostu.zip + Laser Ghost (US, 317-0165) + A series of heinous events is in progress. Poltergeists are running rampant in the city. As if that wasn't bad enough, a little girl is kidnapped by one of the ghosts in broad daylight. Now it's up to Bill, Max, and Carol to put an end to the paranormal madness. + 0.60 + 19900101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-3 + lghost.zip + Sega Classics + 320x224 + media/mixrbv2/lghost.png + + + + lghostd.zip + Laser Ghost (World, 317-0166 decrypted) + A series of heinous events is in progress. Poltergeists are running rampant in the city. As if that wasn't bad enough, a little girl is kidnapped by one of the ghosts in broad daylight. Now it's up to Bill, Max, and Carol to put an end to the paranormal madness. + 0.60 + 19900101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-3 + lghost.zip + Sega Classics + 320x224 + media/mixrbv2/lghost.png + + + + lghost.zip + Laser Ghost (World, 317-0166) + A series of heinous events is in progress. Poltergeists are running rampant in the city. As if that wasn't bad enough, a little girl is kidnapped by one of the ghosts in broad daylight. Now it's up to Bill, Max, and Carol to put an end to the paranormal madness. + 0.60 + 19900101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-3 + Sega Classics + 320x224 + media/mixrbv2/lghost.png + + + + lasso.zip + Lasso + Lasso (c) 1982 SNK. - TECHNICAL - Game ID : 'WM' Main CPU : (2x) M6502 (@ 2 Mhz) Sound CPU : M6502 (@ 600 Khz) Sound Chips : (2x) SN76496 (@ 2 Mhz) Players : 2 Control : 4-way joystick Buttons : 2 - TRIVIA - Released in August 1982. - SOURCES - Ga + 0.50 + 19820101T000000 + SNK + SNK + Various + 39 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/lasso.png + + + + lastduelb.zip + Last Duel (bootleg) + Last Duel - Inter Planet War 2012 take place in the year 2012 in an alternate galaxy, Last Duel involves the struggle between two planets Mu and Bacula. On planet Bacula, a strong warrior tribe known as the Galden rose to immense military power and conquered all of the societies on the planet. Unsatisfied with conquering just one planet, the Galden decided to conquer a neighboring terrestrial planet, Mu. Using advanced bioships, star fighters, and motor vehicles, the Galden invaded Mu, destroying many of its cities and taking the planet's ruler Queen Sheeta hostage. The remaining royal guards of Mu are deployed in space fighters that can transform into cars to rescue the queen and crush the Galden forces. + +The player alternates each level between using car and space ship. The vehicle has two main attacks one of which varies depending on the form the vehicle took. In car mode, the vehicle can jump over pot holes and enemies. While in ship mode, the vehicle can perform a barrel roll, making it temporarily invincible. + +The player can select Power-Ups that including a large, slow firing laser, a twin-shot, a wide shot and options that provided side attacks. Speed-Ups were only available in ship mode. Every driving section is timed and if the player is unable to reach the boss on time, they will lose a life. However, the moment the player encounters the boss, the timer will be removed. + 0.70 + 19880101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + lastduel.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/lastduel.png + + + + lastduelj.zip + Last Duel (Japan) + Last Duel - Inter Planet War 2012 take place in the year 2012 in an alternate galaxy, Last Duel involves the struggle between two planets Mu and Bacula. On planet Bacula, a strong warrior tribe known as the Galden rose to immense military power and conquered all of the societies on the planet. Unsatisfied with conquering just one planet, the Galden decided to conquer a neighboring terrestrial planet, Mu. Using advanced bioships, star fighters, and motor vehicles, the Galden invaded Mu, destroying many of its cities and taking the planet's ruler Queen Sheeta hostage. The remaining royal guards of Mu are deployed in space fighters that can transform into cars to rescue the queen and crush the Galden forces. + +The player alternates each level between using car and space ship. The vehicle has two main attacks one of which varies depending on the form the vehicle took. In car mode, the vehicle can jump over pot holes and enemies. While in ship mode, the vehicle can perform a barrel roll, making it temporarily invincible. + +The player can select Power-Ups that including a large, slow firing laser, a twin-shot, a wide shot and options that provided side attacks. Speed-Ups were only available in ship mode. Every driving section is timed and if the player is unable to reach the boss on time, they will lose a life. However, the moment the player encounters the boss, the timer will be removed. + 0.70 + 19880101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + lastduel.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/lastduel.png + + + + lastduel.zip + Last Duel (US New Ver.) + Last Duel - Inter Planet War 2012 take place in the year 2012 in an alternate galaxy, Last Duel involves the struggle between two planets Mu and Bacula. On planet Bacula, a strong warrior tribe known as the Galden rose to immense military power and conquered all of the societies on the planet. Unsatisfied with conquering just one planet, the Galden decided to conquer a neighboring terrestrial planet, Mu. Using advanced bioships, star fighters, and motor vehicles, the Galden invaded Mu, destroying many of its cities and taking the planet's ruler Queen Sheeta hostage. The remaining royal guards of Mu are deployed in space fighters that can transform into cars to rescue the queen and crush the Galden forces. + +The player alternates each level between using car and space ship. The vehicle has two main attacks one of which varies depending on the form the vehicle took. In car mode, the vehicle can jump over pot holes and enemies. While in ship mode, the vehicle can perform a barrel roll, making it temporarily invincible. + +The player can select Power-Ups that including a large, slow firing laser, a twin-shot, a wide shot and options that provided side attacks. Speed-Ups were only available in ship mode. Every driving section is timed and if the player is unable to reach the boss on time, they will lose a life. However, the moment the player encounters the boss, the timer will be removed. + 0.70 + 19880101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + Capcom Classics + 270 + 384x240 + media/mixrbv2/lastduel.png + + + + lastduelo.zip + Last Duel (US Old Ver.) + Last Duel - Inter Planet War 2012 take place in the year 2012 in an alternate galaxy, Last Duel involves the struggle between two planets Mu and Bacula. On planet Bacula, a strong warrior tribe known as the Galden rose to immense military power and conquered all of the societies on the planet. Unsatisfied with conquering just one planet, the Galden decided to conquer a neighboring terrestrial planet, Mu. Using advanced bioships, star fighters, and motor vehicles, the Galden invaded Mu, destroying many of its cities and taking the planet's ruler Queen Sheeta hostage. The remaining royal guards of Mu are deployed in space fighters that can transform into cars to rescue the queen and crush the Galden forces. + +The player alternates each level between using car and space ship. The vehicle has two main attacks one of which varies depending on the form the vehicle took. In car mode, the vehicle can jump over pot holes and enemies. While in ship mode, the vehicle can perform a barrel roll, making it temporarily invincible. + +The player can select Power-Ups that including a large, slow firing laser, a twin-shot, a wide shot and options that provided side attacks. Speed-Ups were only available in ship mode. Every driving section is timed and if the player is unable to reach the boss on time, they will lose a life. However, the moment the player encounters the boss, the timer will be removed. + 0.70 + 19880101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + lastduel.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/lastduel.png + + + + lastfortea.zip + Last Fortress - Toride (Erotic, Rev A) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + lastfort.zip + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lastforte.zip + Last Fortress - Toride (Erotic, Rev C) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + lastfort.zip + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lastfortg.zip + Last Fortress - Toride (German) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + lastfort.zip + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lastfort.zip + Last Fortress - Toride (Japan, VG420 PCB) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lastfortj.zip + Last Fortress - Toride (Japan, VG460 PCB) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + lastfort.zip + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lastfortk.zip + Last Fortress - Toride (Korea) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Asiatic board game + 2647 + 1-2 + lastfort.zip + Mitchell + 360x224 + media/mixrbv2/lastfort.png + + + + lasthope.zip + Last Hope (bootleg AES to MVS conversion, no coin support) + Pilot your Z-42 Warpstar starfight as Earth's last line of defense against the advance of the Evil Empire. Last Hope - a self-described "tactical shooter" plays much like a tougher version of a classic game R-Type. The game, however, adds a minor innovation to the tried and true formula by allowing the player to rotate the protection pod 360° around the ship. +The game features six distinct stages and four weapons. + 0.70 + 20060101T000000 + NG:Dev.Team + NG:Dev.Team + Shoot'em Up + 79 + 1 + Neo-Geo + 320x224 + media/mixrbv2/lasthope.png + + + + lhcdb.zip + Last Hope CD Beta (Neo CD conversion) + Pilot your Z-42 Warpstar starfight as Earth's last line of defense against the advance of the Evil Empire. Last Hope - a self-described "tactical shooter" plays much like a tougher version of a classic game R-Type. The game, however, adds a minor innovation to the tried and true formula by allowing the player to rotate the protection pod 360° around the ship. +The game features six distinct stages and four weapons. + 0.70 + 20060101T000000 + NG:Dev.Team + NG:Dev.Team + Shoot'em Up + 79 + 1 + Neo-Geo + 320x224 + media/mixrbv2/lhcdb.png + + + + lastkm.zip + Last KM (ver 1.0.0275, checksum 13bff751, prototype) + 0.40 + 19950101T000000 + Gaelco + Sports / Cycling + 23258 + 1 + Mame + 320x240 + media/mixrbv2/lastkm.png + + + + lastmisnj.zip + Last Mission (Japan) + Last Mission is a top-down multidirectional shooter developed by Data East and distributed in world wide release for the arcades in 1986. + +The player assumes the role of an space pilot who has been exiled from their home galaxy for committing an unknown crime. The only way the player character can return is to restore their honor - and the only way to do so is to invade and defeat the alien nemesis. + 0.70 + 19860101T000000 + Data East + Data East + Shooter + 2646 + 1-2 + lastmisn.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/lastmisn.png + + + + lastmisnu5.zip + Last Mission (US revision 5) + Last Mission is a top-down multidirectional shooter developed by Data East and distributed in world wide release for the arcades in 1986. + +The player assumes the role of an space pilot who has been exiled from their home galaxy for committing an unknown crime. The only way the player character can return is to restore their honor - and the only way to do so is to invade and defeat the alien nemesis. + 0.70 + 19860101T000000 + Data East + Data East + Shooter + 2646 + 1-2 + lastmisn.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/lastmisn.png + + + + lastmisnu6.zip + Last Mission (US revision 6) + Last Mission is a top-down multidirectional shooter developed by Data East and distributed in world wide release for the arcades in 1986. + +The player assumes the role of an space pilot who has been exiled from their home galaxy for committing an unknown crime. The only way the player character can return is to restore their honor - and the only way to do so is to invade and defeat the alien nemesis. + 0.70 + 19860101T000000 + Data East + Data East + Shooter + 2646 + 1-2 + lastmisn.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/lastmisn.png + + + + lastmisn.zip + Last Mission (World revision 8) + Last Mission is a top-down multidirectional shooter developed by Data East and distributed in world wide release for the arcades in 1986. + +The player assumes the role of an space pilot who has been exiled from their home galaxy for committing an unknown crime. The only way the player character can return is to restore their honor - and the only way to do so is to invade and defeat the alien nemesis. + 0.70 + 19860101T000000 + Data East + Data East + Shooter + 2646 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/lastmisn.png + + + + lresort.zip + Last Resort + Last Resort is a 1-2 player horizontal shooter game where you pilot a spacecraft across horizontally scrolling cityscapes and wastelands, while destroying hordes of enemy spacecraft, either metallic or organic, including huge mid- and end-level guardians. Getting power-up pods provide the craft with a movable drone which can be charged up and fired or locked into position and used as an extra gun or 'battering ram'/shield. A clone of R-Type (both one and two), but with much improved graphics and sound + 0.80 + 19920101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/lresort.png + + + + lresortp.zip + Last Resort (prototype) + Last Resort is a 1-2 player horizontal shooter game where you pilot a spacecraft across horizontally scrolling cityscapes and wastelands, while destroying hordes of enemy spacecraft, either metallic or organic, including huge mid- and end-level guardians. Getting power-up pods provide the craft with a movable drone which can be charged up and fired or locked into position and used as an extra gun or 'battering ram'/shield. A clone of R-Type (both one and two), but with much improved graphics and sound + 0.80 + 19920101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + lresort.zip + Neo-Geo + 320x224 + media/mixrbv2/lresort.png + + + + kyustrkr.zip + Last Striker / Kyuukyoku no Striker + Last Striker is a manga soccer game. + 0.50 + 19890101T000000 + East Technology + Sports / Soccer + 2847 + 1-2 + Taito Classics + 384x240 + media/mixrbv2/kyustrkr.png + + + + lastsurvd.zip + Last Survivor (FD1094 317-0083 decrypted) + You are with up to 2 players trapped in a maze with a load of other tough guys and monsters. You have a single key to the exit of the maze. To get out you need four keys. The only way to get them off other players is to kill them. First one to exit the maze wins. + +Each player has a separate screen that shows, roughly, a fist person view of the maze. You can move right/left, up/down along the corridors and also rotate. You also have a weapon, a kind of gun that you can get upgraded if you stop at the shop in the maze and have earned enough money by creaming the resident enemies on that level. Here you can also buy extra speed and armor that will absorb a few hits. + 0.50 + 19890101T000000 + SEGA + Shooter / 3rd person + 2899 + 1-2 + lastsurv.zip + Sega Classics + 320x224 + media/mixrbv2/lastsurv.png + + + + lastsurv.zip + Last Survivor (FD1094 317-0083) + You are with up to 2 players trapped in a maze with a load of other tough guys and monsters. You have a single key to the exit of the maze. To get out you need four keys. The only way to get them off other players is to kill them. First one to exit the maze wins. + +Each player has a separate screen that shows, roughly, a fist person view of the maze. You can move right/left, up/down along the corridors and also rotate. You also have a weapon, a kind of gun that you can get upgraded if you stop at the shop in the maze and have earned enough money by creaming the resident enemies on that level. Here you can also buy extra speed and armor that will absorb a few hits. + 0.50 + 19890101T000000 + SEGA + Shooter / 3rd person + 2899 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/lastsurv.png + + + + lazybug.zip + Lazy Bug + 19810101T000000 + Mame + + + bagnardi.zip + Le Bagnard (Itisa, Spain) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagnardio.zip + Le Bagnard (Itisa, Spain, older) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagnard.zip + Le Bagnard (set 1) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + bagnarda.zip + Le Bagnard (set 2) + The objective of Bagman is to maneuver Bagman through various mine shafts, picking up money bags and placing them in a wheelbarrow at the surface of the mine. The player must avoid pursuing guards, moving ore carts, and descending elevators. The player may temporarily stun the guards by striking them with a pickaxe or by dropping money bags on them when they are below the player on the same ladder. The player may move between the three screens which make up the level via shafts and on the surface. + 0.60 + 19820101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + bagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/bagman.png + + + + leadang.zip + Lead Angle (Japan) + Armed only with your trusty Tommy gun, you must exterminate all the main gangster families in order to reach the main kingpin so you can save your girl. Beware, they are waiting for you and will not go down without put + 0.50 + 19880101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + 1-2 + deadang.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/deadang.png + + + + lbowling.zip + League Bowling (NGM-019)(NGH-019) + The lanes are crowded every night with Big Time Pin Slammin' action! You call the shots selecting a right or left handed bowler. Determine ball weight, and develop the skills of the pro's as you skillfully throw a variety of shots that you control. So pop some refreshments and settle into this indoor sport like you've never seen before! + 0.65 + 19900101T000000 + SNK + SNK + Sports + 685 + 1-4 + Neo-Geo + 320x224 + media/mixrbv2/lbowling.png + + + + ledstorm.zip + Led Storm (US) + By 2011, the only way to travel at top speed is on skyways built high above the ground. These become popular with boy-racers and general speed freaks pretty soon, and that's why you're aiming to hurtle across them in this arcade conversion. + +The road scrolls vertically, with some moderately sharp bends in a manner similar to Spy Hunter You have a jump device to clear the many jumps, or to land onto and flatten the other maniacs who line the road. You must choose which path to follow at OutRun-style forks in the road. + +The roads contain bonus tags including bonus points, a battering ram to make contact with other cars more effective, and energy boosts to replenish damage. If you leave the road you must replace your car onto it using a directable winch which appears at the appropriate point. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + madgear.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/madgear.png + + + + leds2011u.zip + Led Storm Rally 2011 (US) + By 2011, the only way to travel at top speed is on skyways build high above the ground. These become popular with boy-racers and general speed freaks pretty soon, and that's why you're aiming to hurtle across them in this arcade conversion. + +The road scrolls vertically, with some moderately sharp bends in a manner similar to Spy Hunter You have a jump device to clear the many jumps, or to land onto and flatten the other maniacs who line the road. You must choose which path to follow at OutRun-style forks in the road. + +The roads contain bonus tags including bonus points, a battering ram to make contact with other cars more effective, and energy boosts to replenish damage. If you leave the road you must replace your car onto it using a directable winch which appears at the appropriate point. + 0.70 + 19880101T000000 + Capcom + Capcom + Race, Driving + 28 + 1 + leds2011.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/leds2011.png + + + + leds2011.zip + Led Storm Rally 2011 (World) + By 2011, the only way to travel at top speed is on skyways build high above the ground. These become popular with boy-racers and general speed freaks pretty soon, and that's why you're aiming to hurtle across them in this arcade conversion. + +The road scrolls vertically, with some moderately sharp bends in a manner similar to Spy Hunter You have a jump device to clear the many jumps, or to land onto and flatten the other maniacs who line the road. You must choose which path to follow at OutRun-style forks in the road. + +The roads contain bonus tags including bonus points, a battering ram to make contact with other cars more effective, and energy boosts to replenish damage. If you leave the road you must replace your car onto it using a directable winch which appears at the appropriate point. + 0.70 + 19880101T000000 + Capcom + Capcom + Race, Driving + 28 + 1 + Capcom Classics + 270 + 384x240 + media/mixrbv2/leds2011.png + + + + fitegolfu.zip + Lee Trevino's Fighting Golf (US, Ver 2, set 1) + 1 to 4 players can tee it up on either an 18 hole American course or an 18 hole Japanese course. Players 1 & 3 share controller 1 and players 2 & 4 share controller 2.Game modes are: + Stroke Play - The winner has the lowest number of strokes through 18 holes. + Nassau Game - The players compete against each other for points. Presses are allowed. + Practice - A single player can practice on their favorite hole. +Swing mechanics are: Press A to start the backswing, press A at the top of the swing, press A at impact. High and low shots can be selected by pressing up or down on the control pad. Right after contact another quick press of the A button at the same time as left or right will apply backspin to the ball. Complete club selection is available with the B button. +Terrain includes tee, green, fairway, out-of-bounds, water, sand (light and hard), and rough (super, light, heavy and deep). There are four available characters: + Pretty Amy - Slow swing speed with fantastic ball control and accurate aiming. + Big Jumbo - Powerful stroke and a long hitter but good technique is needed to control his shots. + Super Mex - All-around player with average distance, accuracy and swing speed. + Miracle Chosuke - Less power than Super Mex but good at putting and unequalled accuracy. He can hit a "Reverse Miracle Putt." + 0.50 + 19880101T000000 + SNK + SNK + Sports + 685 + 1-2 + fitegolf.zip + SNK Classics + 288x216 + media/mixrbv2/fitegolf.png + + + + fitegolfua.zip + Lee Trevino's Fighting Golf (US, Ver 2, set 2) + 1 to 4 players can tee it up on either an 18 hole American course or an 18 hole Japanese course. Players 1 & 3 share controller 1 and players 2 & 4 share controller 2.Game modes are: + Stroke Play - The winner has the lowest number of strokes through 18 holes. + Nassau Game - The players compete against each other for points. Presses are allowed. + Practice - A single player can practice on their favorite hole. +Swing mechanics are: Press A to start the backswing, press A at the top of the swing, press A at impact. High and low shots can be selected by pressing up or down on the control pad. Right after contact another quick press of the A button at the same time as left or right will apply backspin to the ball. Complete club selection is available with the B button. +Terrain includes tee, green, fairway, out-of-bounds, water, sand (light and hard), and rough (super, light, heavy and deep). There are four available characters: + Pretty Amy - Slow swing speed with fantastic ball control and accurate aiming. + Big Jumbo - Powerful stroke and a long hitter but good technique is needed to control his shots. + Super Mex - All-around player with average distance, accuracy and swing speed. + Miracle Chosuke - Less power than Super Mex but good at putting and unequalled accuracy. He can hit a "Reverse Miracle Putt." + 0.50 + 19880101T000000 + SNK + SNK + Sports + 685 + 1-2 + fitegolf.zip + SNK Classics + 288x216 + media/mixrbv2/fitegolf.png + + + + fitegolf.zip + Lee Trevino's Fighting Golf (World?) + 1 to 4 players can tee it up on either an 18 hole American course or an 18 hole Japanese course. Players 1 & 3 share controller 1 and players 2 & 4 share controller 2.Game modes are: + Stroke Play - The winner has the lowest number of strokes through 18 holes. + Nassau Game - The players compete against each other for points. Presses are allowed. + Practice - A single player can practice on their favorite hole. +Swing mechanics are: Press A to start the backswing, press A at the top of the swing, press A at impact. High and low shots can be selected by pressing up or down on the control pad. Right after contact another quick press of the A button at the same time as left or right will apply backspin to the ball. Complete club selection is available with the B button. +Terrain includes tee, green, fairway, out-of-bounds, water, sand (light and hard), and rough (super, light, heavy and deep). There are four available characters: + Pretty Amy - Slow swing speed with fantastic ball control and accurate aiming. + Big Jumbo - Powerful stroke and a long hitter but good technique is needed to control his shots. + Super Mex - All-around player with average distance, accuracy and swing speed. + Miracle Chosuke - Less power than Super Mex but good at putting and unequalled accuracy. He can hit a "Reverse Miracle Putt." + 0.50 + 19880101T000000 + SNK + SNK + Sports + 685 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/fitegolf.png + + + + legend.zip + Legend + The player controls a young commander which uses a green armour and helmet and must defending the kingdom lands from invading enemies, following the orders and instructions given by the old king, for it you'll have to use money to making defect the enemy and recruit under your commands to form a legion of soldiers and make uses of different arms collected on the way, like bombs and arrows to defeat other enemies while you jump and dodges his attacks, always avoiding contact with any enemy for not to die and continue his legendary journey. + 0.50 + 19860101T000000 + SEGA + Kyugo Boueki + Fight / 2D + 2914 + 1-2 + Sega Classics + 288x224 + media/mixrbv2/legend.png + + + + loht.zip + Legend of Hero Tonma + A little caped hero fights his way to the boss' castle through a cute scrolling world. Enemies can be killed by fireballs or stunned when jumped upon. Killed enemies and chests leave coins to increase a person's score and options give aiming shots and bouncing fireballs. + 0.70 + 19890101T000000 + Irem + Irem + Platform + 7 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/loht.png + + + + lohtb.zip + Legend of Hero Tonma (bootleg, set 1) + A little caped hero fights his way to the boss' castle through a cute scrolling world. Enemies can be killed by fireballs or stunned when jumped upon. Killed enemies and chests leave coins to increase a person's score and options give aiming shots and bouncing fireballs. + 0.70 + 19890101T000000 + Irem + Irem + Platform + 7 + 1-2 + loht.zip + Irem Classics + 384x256 + media/mixrbv2/loht.png + + + + lohtb2.zip + Legend of Hero Tonma (bootleg, set 2) + A little caped hero fights his way to the boss' castle through a cute scrolling world. Enemies can be killed by fireballs or stunned when jumped upon. Killed enemies and chests leave coins to increase a person's score and options give aiming shots and bouncing fireballs. + 0.70 + 19890101T000000 + Irem + Irem + Platform + 7 + 1-2 + loht.zip + Irem Classics + 384x256 + media/mixrbv2/loht.png + + + + lohtj.zip + Legend of Hero Tonma (Japan) + A little caped hero fights his way to the boss' castle through a cute scrolling world. Enemies can be killed by fireballs or stunned when jumped upon. Killed enemies and chests leave coins to increase a person's score and options give aiming shots and bouncing fireballs. + 0.70 + 19890101T000000 + Irem + Irem + Platform + 7 + 1-2 + loht.zip + Irem Classics + 384x256 + media/mixrbv2/loht.png + + + + lomakai.zip + Legend of Makai (World) + Legend of Makai is an action/adventure platformer based in a fantasy setting. The player controls a young warrior whose quest is to rescue a princess from an evil wizard. The warrior starts off with only a sword, but can purchase other weapons and magical items from shops. The gameplay consists finding one's way through non-linear levels, using keys to open doors and killing or avoiding various enemies. The player has a fixed amount of time to complete each level. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Platform + 7 + 1-2 + Jaleco + 256x224 + media/mixrbv2/lomakai.png + + + + legendos.zip + Legend of Success Joe / Ashitano Joe Densetsu + Joe Yabuki is a little punk wandering the streets. He was spotted by a boxing coach retired from the circuit that sees him as a future champion and decides to manage him. Such is the plot of this boxing game on Neo Geo, adapted from the manga "Ashita no Joe" created by Tetsuya Chiba and Asao Takamori in the 70s. + 0.30 + 19910101T000000 + Wave Corp + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/legendos.png + + + + lwingsb.zip + Legendary Wings (bootleg) + The human race was about to achieve the evolution from an ancient civilization to a state of millennium with the help of DARK, a super powerful computer left by spacemen long ago. DARK suddenly began to malfunction. + +The world was in a panic. The human race was on the brink of extinction. + +ARES, god of war, gave two young men Wings of Love and Courage and entrusted them with the survival and future of the human race. Time is of the essence. Destroy DARK Take wings, legendary soldiers. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + lwings.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/lwings.png + + + + lwings.zip + Legendary Wings (US set 1) + The human race was about to achieve the evolution from an ancient civilization to a state of millennium with the help of DARK, a super powerful computer left by spacemen long ago. DARK suddenly began to malfunction. + +The world was in a panic. The human race was on the brink of extinction. + +ARES, god of war, gave two young men Wings of Love and Courage and entrusted them with the survival and future of the human race. Time is of the essence. Destroy DARK Take wings, legendary soldiers. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x240 + media/mixrbv2/lwings.png + + + + lwings2.zip + Legendary Wings (US set 2) + The human race was about to achieve the evolution from an ancient civilization to a state of millennium with the help of DARK, a super powerful computer left by spacemen long ago. DARK suddenly began to malfunction. + +The world was in a panic. The human race was on the brink of extinction. + +ARES, god of war, gave two young men Wings of Love and Courage and entrusted them with the survival and future of the human race. Time is of the essence. Destroy DARK Take wings, legendary soldiers. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + lwings.zip + Capcom Classics + 270 + 256x240 + media/mixrbv2/lwings.png + + + + legendb.zip + Legion (bootleg of Legend) + The player controls a young commander which uses a green armour and helmet and must defending the kingdom lands from invading enemies, following the orders and instructions given by the old king, for it you'll have to use money to making defect the enemy and recruit under your commands to form a legion of soldiers and make uses of different arms collected on the way, like bombs and arrows to defeat other enemies while you jump and dodges his attacks, always avoiding contact with any enemy for not to die and continue his legendary journey. + 0.50 + 19860101T000000 + SEGA + Kyugo Boueki + Fight / 2D + 2914 + 1-2 + legend.zip + Sega Classics + 288x224 + media/mixrbv2/legend.png + + + + legion.zip + Legion - Spinner-87 (World ver 2.03) + Pick up allies to form a powerful Legion against 'The Dark Empire'. + 0.50 + 19870101T000000 + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 270 + 288x224 + media/mixrbv2/legion.png + + + + legionnaj.zip + Legionnaire (Japan) + 3 vigilantes team up to save their leader's girlfriend from a ruthless crime syndicate that's been overrunning their city in this side-scrolling beat-em-up. + 0.60 + 19920101T000000 + Tad Corporation + Fabtek + Beat'em Up + 1 + 1-2 + legionna.zip + Mame + 256x224 + media/mixrbv2/legionna.png + + + + legionnau.zip + Legionnaire (US) + 3 vigilantes team up to save their leader's girlfriend from a ruthless crime syndicate that's been overrunning their city in this side-scrolling beat-em-up. + 0.60 + 19920101T000000 + Tad Corporation + Fabtek + Beat'em Up + 1 + 1-2 + legionna.zip + Mame + 256x224 + media/mixrbv2/legionna.png + + + + legionna.zip + Legionnaire (World) + 3 vigilantes team up to save their leader's girlfriend from a ruthless crime syndicate that's been overrunning their city in this side-scrolling beat-em-up. + 0.60 + 19920101T000000 + Tad Corporation + Fabtek + Beat'em Up + 1 + 1-2 + Mame + 256x224 + media/mixrbv2/legionna.png + + + + bgareggabla.zip + Lei Shen Zhuan Thunder Deity Biography (Chinese hack of Battle Garegga) + Widely considered as both the origin of the bullet hell sub-genre and one of its standouts, Battle Garegga's true joy lies in unravelling the game's various complex systems. + +Battle Garegga is both loved and hated in hardcore communities as being highly punishing to the player. This is due to Garegga's usage of the concept of "rank" - the idea being that the game adapts its own difficulty to suit the level of the player, an idea commonly used to a minor degree in most shooters. The difference here is that the rank system is very unforgiving - Powering up the ship, collecting surplus powerups and collecting options all increase the rank, often drastically if the game is played like a typical shooter. + +If the player does not carefully manage the constant invisible increase of rank, the last two levels may become physically impossible to complete - rank increasing bullet density and speed, as well as the behavior of enemies. The only way to decrease rank is to get shot down, meaning expert players will learn to commit suicide in key areas to manage their rank. + 0.80 + 19960101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + bgaregga.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/bgaregga.png + + + + lemmings.zip + Lemmings (US prototype) + Lemmings &copy; 1991 Data East Corp. + +A platform game where the player has to designate certain lemmings for certain tasks &amp; try to figure a way to save as many of them from falling off cliffs and prevent them from dying in other ways. The lemmings can be set for walking (which they do by default), digging, climbing, building, blocking (preventing other lemmings from walking a certain direction), bashing, floating, and mining. There are several levels in 3 or 4 categories of difficulty. + 0.90 + 19910101T000000 + Data East + Data East + Various + 39 + 1-2 + Data East Classics + 320x224 + media/mixrbv2/lemmings.png + + + + crshrace.zip + Lethal Crash Race (set 1) + Lethal Crash Race is, as the title suggests, a racing game. The player chooses one of eight international characters then races one-on-one against the other characters (and the recolor of her/his own). Each race takes place in a different location around the world, and each character has her or his own ending, making the character interaction rather similar to that of Sonic Wings. + +Lethal Crash Race marks the first appearance of Ellen and Cincia, who later feature in most of the Sonic Wings games. + 0.70 + 19930101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1-2 + Video System Co. + 270 + 320x224 + media/mixrbv2/crshrace.png + + + + crshrace2.zip + Lethal Crash Race (set 2) + Lethal Crash Race is, as the title suggests, a racing game. The player chooses one of eight international characters then races one-on-one against the other characters (and the recolor of her/his own). Each race takes place in a different location around the world, and each character has her or his own ending, making the character interaction rather similar to that of Sonic Wings. + +Lethal Crash Race marks the first appearance of Ellen and Cincia, who later feature in most of the Sonic Wings games. + 0.70 + 19930101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1-2 + crshrace.zip + Video System Co. + 270 + 320x224 + media/mixrbv2/crshrace.png + + + + crshrace2a.zip + Lethal Crash Race (set 2, alternate sound ROM) + Lethal Crash Race is, as the title suggests, a racing game. The player chooses one of eight international characters then races one-on-one against the other characters (and the recolor of her/his own). Each race takes place in a different location around the world, and each character has her or his own ending, making the character interaction rather similar to that of Sonic Wings. + +Lethal Crash Race marks the first appearance of Ellen and Cincia, who later feature in most of the Sonic Wings games. + 0.70 + 19930101T000000 + Video System + Video System + Race, Driving / Race + 2924 + 1-2 + crshrace.zip + Video System Co. + 270 + 320x224 + media/mixrbv2/crshrace.png + + + + lethaleneaa.zip + Lethal Enforcers (ver EAA, 09/09/92 09:44) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethaleneab.zip + Lethal Enforcers (ver EAB, 10/14/92 19:53) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethalenead.zip + Lethal Enforcers (ver EAD, 11/11/92 10:52) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethaleneae.zip + Lethal Enforcers (ver EAE, 11/19/92 16:24) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethalenua.zip + Lethal Enforcers (ver UAA, 08/17/92 21:38) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethalenub.zip + Lethal Enforcers (ver UAB, 09/01/92 11:12) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethalen.zip + Lethal Enforcers (ver UAE, 11/19/92 15:04) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + lethalenux.zip + Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?) + Lethal Enforcers &copy; 1992 Konami Company, Ltd + +As an undercover police officer the player&#039;s mission is to put a stop to an array of criminals ranging from bank robbers, hijackers and numerous other law breakers. As well as upholding the law, players must also try to protect innocent members of the public from the criminal gangs, being careful not to accidentally shoot them. Shooting innocent victims will result in the player&#039;s energy level being severely reduced. + +Lethal Enforcers is an on-the-rails light-gun game. The player is initially armed only with a standard issue revolver, but weapon upgrades such as a .357 Magnum, a shotgun and an automatic pistol can be collected by shooting at their on-screen counterparts as the game progresses. While some weapons can be reloaded, others can&#039;t and are only useful for a limited time. Any weapon upgrades are lost in the event of a player losing a life. + 0.70 + 19920101T000000 + Konami + Konami + Lightgun Shooter + 32 + 1-2 + lethalen.zip + Konami Classics + 288x224 + media/mixrbv2/lethalen.png + + + + levers.zip + Levers + Jump from one angled platform to another to collect all the flowers. Avoid getting knocked below the lowest platform or getting hit by spiked balls. + 0.50 + 19830101T000000 + Rocket Science Games + Rock-Ola + Platform / Run Jump + 2915 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/levers.png + + + + liblrabl.zip + Libble Rabble + At first glance, the gameplay resembles Taito's Qix. The player controls two "arrows", one red (Libble) and one blue (Rabble) with a line strung between them. The object is to wrap the line around poles and surround Mushlins and enemies with it. The player can either close the loops themselves (worth more points for the Mushlins) or move both arrows to the same edge of the screen. The player clears a "season" when he or she harvests all the Mushlins. + 0.90 + 19830101T000000 + Namco + Namco + Puzzle-Game + 26 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/liblrabl.png + + + + liberate.zip + Liberation + Liberation &copy; 1984 Data East. + +A vertically scrolling shoot&#039;em up game. + 0.50 + 19840101T000000 + Data East + Data East + Shooter / Plane + 2928 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/liberate.png + + + + lifefrcej.zip + Lifeforce (Japan) + Salamander is a 1 or 2 player sequel to 1985's superb shoot-em-up, "Nemesis". While it retained the same basic gameplay and feel of its predecessor (particularly the superb and innovative weapons system), Salamander featured both superior graphics and a more imaginative approach to level design. The earliest example of the latter appears towards the end of the very first level, in which imposing, organic obstructions grow before the players' eyes. The game's third level - the infamous 'lava' level - is another good example of Salamander's superb design; with huge solar flares constantly erupting both above and below the player's ship that must be carefully navigated to avoid instant loss of life. Salamander introduced further variety to the action with the introduction vertically-scrolling levels, which alternated with the standard side-scrolling levels. + +Salamander's weapon power-up system is as follows: +SPEED UP: Five speed levels. +MISSILE: Press missile button to launch. +LASER: Your forward rockets turn into deadly lasers. +RIPPLE LASER: Use shoot button to fire. +FORCE FIELD: Protect your ship with barriers. +MULTIPLE: Increase your fire power by up to four times. + +Multiple special powers can be obtained, but the LASER cannot be used in conjunction with the RIPPLE Laser. + 0.90 + 19860101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + salamand.zip + Konami Classics + 256x224 + media/mixrbv2/salamand.png + + + + lifefrce.zip + Lifeforce (US) + Salamander is a 1 or 2 player sequel to 1985's superb shoot-em-up, "Nemesis". While it retained the same basic gameplay and feel of its predecessor (particularly the superb and innovative weapons system), Salamander featured both superior graphics and a more imaginative approach to level design. The earliest example of the latter appears towards the end of the very first level, in which imposing, organic obstructions grow before the players' eyes. The game's third level - the infamous 'lava' level - is another good example of Salamander's superb design; with huge solar flares constantly erupting both above and below the player's ship that must be carefully navigated to avoid instant loss of life. Salamander introduced further variety to the action with the introduction vertically-scrolling levels, which alternated with the standard side-scrolling levels. + +Salamander's weapon power-up system is as follows: +SPEED UP: Five speed levels. +MISSILE: Press missile button to launch. +LASER: Your forward rockets turn into deadly lasers. +RIPPLE LASER: Use shoot button to fire. +FORCE FIELD: Protect your ship with barriers. +MULTIPLE: Increase your fire power by up to four times. + +Multiple special powers can be obtained, but the LASER cannot be used in conjunction with the RIPPLE Laser. + 0.90 + 19860101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + salamand.zip + Konami Classics + 256x224 + media/mixrbv2/salamand.png + + + + lgtnfghta.zip + Lightning Fighters (Asia) + In Lightning Fighters and Trigon, the original Japanese version, there are different rules depending on whether you start the game with one or two players. In a one-player game, you start with no bombs, and when you die the game restarts you at a checkpoint. In a two-player game, each life starts with one bomb, and when you die you respawn in place. There are some powerups that only appear in a two-player game and one that only appears in a one-player game. The game type cannot be changed once the game starts. A second player cannot join an originally one-player game; conversely, if one player dies in a two-player game the game remains in two-player mode and the second player can rejoin at any time. + +In Lightning Fighters, even if you start a one-player game, the game is always in two-player mode: you respawn in place when you die and you start each life with one bomb stocked. This means that a second player can join midway into a one-player game. Unfortunately it also means that the powerup that only appears in one-player games in the other versions, does not appear at all in the US version. + 0.70 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + lgtnfght.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/lgtnfght.png + + + + lgtnfghtu.zip + Lightning Fighters (US) + In Lightning Fighters and Trigon, the original Japanese version, there are different rules depending on whether you start the game with one or two players. In a one-player game, you start with no bombs, and when you die the game restarts you at a checkpoint. In a two-player game, each life starts with one bomb, and when you die you respawn in place. There are some powerups that only appear in a two-player game and one that only appears in a one-player game. The game type cannot be changed once the game starts. A second player cannot join an originally one-player game; conversely, if one player dies in a two-player game the game remains in two-player mode and the second player can rejoin at any time. + +In Lightning Fighters, even if you start a one-player game, the game is always in two-player mode: you respawn in place when you die and you start each life with one bomb stocked. This means that a second player can join midway into a one-player game. Unfortunately it also means that the powerup that only appears in one-player games in the other versions, does not appear at all in the US version. + 0.70 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + lgtnfght.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/lgtnfght.png + + + + lgtnfght.zip + Lightning Fighters (World) + In Lightning Fighters and Trigon, the original Japanese version, there are different rules depending on whether you start the game with one or two players. In a one-player game, you start with no bombs, and when you die the game restarts you at a checkpoint. In a two-player game, each life starts with one bomb, and when you die you respawn in place. There are some powerups that only appear in a two-player game and one that only appears in a one-player game. The game type cannot be changed once the game starts. A second player cannot join an originally one-player game; conversely, if one player dies in a two-player game the game remains in two-player mode and the second player can rejoin at any time. + +In Lightning Fighters, even if you start a one-player game, the game is always in two-player mode: you respawn in place when you die and you start each life with one bomb stocked. This means that a second player can join midway into a one-player game. Unfortunately it also means that the powerup that only appears in one-player games in the other versions, does not appear at all in the US version. + 0.70 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/lgtnfght.png + + + + ltswords.zip + Lightning Swords + lightning Swords is an arcade 2D side-scrolling beat-em up - the game is set in a time when Ninjas and Samurai were active. The player is a samurai, armed with a sharp katana. He needs to go to the right, through locations in traditional Japan, and cut all the enemies that appear on his way. Holding down the attack button gives a special blow. At the end of each level a boss awaits - usually big, strong and durable. + 0.60 + 19910101T000000 + Irem + Irem + Action + 10 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/ltswords.png + + + + shangonle.zip + Limited Edition Hang-On + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangonleeh.zip + Limited Edition Hang-On (Enhanced Edition v2.0.2) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + loffirejd.zip + Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134 decrypted) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + loffire.zip + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + loffirej.zip + Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + loffire.zip + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + loffireud.zip + Line of Fire / Bakudan Yarou (US, FD1094 317-0135 decrypted) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + loffire.zip + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + loffireu.zip + Line of Fire / Bakudan Yarou (US, FD1094 317-0135) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + loffire.zip + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + loffired.zip + Line of Fire / Bakudan Yarou (World, FD1094 317-0136 decrypted) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + loffire.zip + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + loffire.zip + Line of Fire / Bakudan Yarou (World, FD1094 317-0136) + Line of Fire is a lightgun controlled shoot-em-up for one or two players, in which two commandos find a special weapon - a vehicle mounted, automatic machine pistol - hidden deep within an enemy base. Before they can escape to report their findings, however, they find themselves surrounded by enemy forces and must blast their way through enemy lines and escape, using the enemies' own super weapon against them. + 0.70 + 19890101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/loffire.png + + + + lithero.zip + Little Hero + Play as the cool ninja Niki, as he eliminates evil from Japan with his twirling sword. It was originally known as Kaiketsu Yanchamaru in its native Japan. + 0.70 + 19860101T000000 + Data East + Irem + Platform / Fighter Scrolling + 2896 + 1-2 + kidniki.zip + Irem Classics + 384x256 + media/mixrbv2/kidniki.png + + + + livequiz.zip + Live Quiz Show + A Korean quiz game. + 0.70 + 19990101T000000 + Andamiro + Andamiro + Quiz / Japanese + 2894 + 1-3 + Mame + 320x224 + media/mixrbv2/livequiz.png + + + + lizwiz.zip + Lizard Wizard + The player must use an eight-way joystick to take control of the Lizard Wizard, whose mission is to help free the people who are caught within the planet Zyfus. The Lizard Wizard does this by shooting the rocks that fly out of that erupting volcano at the bottom of the screen which will burst into flames if he misses them and get eaten by the dragon-like lizards for their fire. As the prisoners emerge from the volcano, the Lizard Wizard must also rescue them from the planet by taking them to the platforms on the surface. The player must also face Spydors on certain levels, which must be killed before they reach the surface. + 0.50 + 19850101T000000 + Techstar + Techstar (Sunn license) + Shooter + 2646 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/lizwiz.png + + + + lockonph.zip + Lock On (Philko) + 0.70 + 19910101T000000 + Shoot'em up / Horizontal + 2870 + Sega Classics + 320x224 + media/mixrbv2/lockonph.png + + + + lnc.zip + Lock'n'Chase + Lock&#039;n&#039;Chase &copy; 1981 Data East. + +The game is a maze game. Like &quot;Pac-Man&quot;, you&#039;re trying to eat up dots while four cops (with the names Spiffy, Smarty, Scaredy and Silly) try to stop you. While you don&#039;t have energizers to eat the cops with, you CAN block them off with walls (or better yet, try to trap them in the corners). When you&#039;re finished eating dots, there are two exits for you to escape from the cops. + 0.50 + 19810101T000000 + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 240x240 + media/mixrbv2/lnc.png + + + + clocknchj.zip + Lock'n'Chase (DECO Cassette) (Japan) + The game is a maze game. Like "Pac-Man", you're trying to eat up dots while four cops (with the names Spiffy, Smarty, Scaredy and Silly) try to stop you. While you don't have energizers to eat the cops with, you CAN block them off with walls (or better yet, try to trap them in the corners). When you're finished eating dots, there are 2 exits for you to escape from the cops. + 0.50 + 19810101T000000 + Data East + Action + 10 + 1-2 + clocknch.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/clocknch.png + + + + clocknch.zip + Lock'n'Chase (DECO Cassette) (US) + The game is a maze game. Like "Pac-Man", you're trying to eat up dots while four cops (with the names Spiffy, Smarty, Scaredy and Silly) try to stop you. While you don't have energizers to eat the cops with, you CAN block them off with walls (or better yet, try to trap them in the corners). When you're finished eating dots, there are 2 exits for you to escape from the cops. + 0.50 + 19810101T000000 + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/clocknch.png + + + + locomotn.zip + Loco-Motion + Loco-Motion is a puzzle-style arcade game in which a train is riding on a grid of movable track pieces. The goal is to guide the train through the train stations located around the edge of the playfield. An empty section in the grid allows the player to shift adjacent track pieces into that section to alter the train's path, and a tracing light shows the path the train is taking as it moves. An accelerator button moves the train more quickly on its path, and a panic button will switch the piece of track the train is on with a random track piece on the grid. + + + 0.70 + 19820101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/locomotn.png + + + + locoboot.zip + Loco-Motion (bootleg) + Loco-Motion is a puzzle-style arcade game in which a train is riding on a grid of movable track pieces. The goal is to guide the train through the train stations located around the edge of the playfield. An empty section in the grid allows the player to shift adjacent track pieces into that section to alter the train's path, and a tracing light shows the path the train is taking as it moves. An accelerator button moves the train more quickly on its path, and a panic button will switch the piece of track the train is on with a random track piece on the grid. + + + 0.70 + 19820101T000000 + Konami + Konami + Puzzle-Game / Glide + 2891 + 1-2 + locomotn.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/locomotn.png + + + + ldrun.zip + Lode Runner (set 1) + The Bungeling Empire has stolen a huge cache of gold from its rightful owners, and your mission is to infiltrate its treasury and recapture it. This entails progressing through 150 screens of platforms, ladders and ropes. + +The Empire has sent robotic guards down to protect the gold, and contact with any of these will cost you a life. Your method of escaping them is to press fire to dig a hole in their line of movement, thus causing them to fall in briefly, allowing you to move across the gap safely. Once all the gold has been collected, a ladder allowing you to move onto the next screen is added. Completing these screens often requires forward planning and precision. + 0.90 + 19840101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/ldrun.png + + + + ldruna.zip + Lode Runner (set 2) + The Bungeling Empire has stolen a huge cache of gold from its rightful owners, and your mission is to infiltrate its treasury and recapture it. This entails progressing through 150 screens of platforms, ladders and ropes. + +The Empire has sent robotic guards down to protect the gold, and contact with any of these will cost you a life. Your method of escaping them is to press fire to dig a hole in their line of movement, thus causing them to fall in briefly, allowing you to move across the gap safely. Once all the gold has been collected, a ladder allowing you to move onto the next screen is added. Completing these screens often requires forward planning and precision. + 0.90 + 19840101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + ldrun.zip + Irem Classics + 384x256 + media/mixrbv2/ldrun.png + + + + ldrun2.zip + Lode Runner II - The Bungeling Strikes Back + Your commando runs around a vertical maze of tunnels made of brick and dirt. Use your blaster to dig holes, collect gold nuggets, and escape to the next level. + 0.90 + 19840101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/ldrun2.png + + + + ldrun3j.zip + Lode Runner III - Majin No Fukkatsu + This game is known in Japan as "Lode Runner - Majin No Fukkatsu" (translated as 'Lode Runner - Resurrection of the Demon'). + 0.80 + 19850101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + ldrun3.zip + Irem Classics + 384x256 + media/mixrbv2/ldrun3.png + + + + ldrun3.zip + Lode Runner III - The Golden Labyrinth + This game is known in Japan as "Lode Runner - Majin No Fukkatsu" (translated as 'Lode Runner - Resurrection of the Demon'). + 0.80 + 19850101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/ldrun3.png + + + + ldrun4.zip + Lode Runner IV - Teikoku Karano Dasshutsu + The subtitle of this game translates from Japanese as 'Escape From the Empire'. + 0.90 + 19860101T000000 + Irem + Irem + Platform / Run Jump + 2915 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/ldrun4.png + + + + logicpro.zip + Logic Pro (Japan) + A puzzle game. + 0.90 + 19960101T000000 + Deniam + Deniam + Various + 39 + 1-2 + croquis.zip + Mame + 320x224 + media/mixrbv2/croquis.png + + + + logicpr2.zip + Logic Pro 2 (Japan) + A puzzle game. + 0.90 + 19970101T000000 + Deniam + Deniam + Various + 39 + 1-2 + Mame + 320x224 + media/mixrbv2/logicpr2.png + + + + looper.zip + Looper + This maze game is quite similar to "Pac-Man". The player controls a caterpillar that crawls along the branches of a maze-like tree eating nuts and strawberries while avoiding deadly bugs and a hungry bird. The caterpillar changes into a butterfly after everything has been eaten. + +The caterpillar must eat all the strawberries and nuts on each level to become a butterfly. Eating a strawberry temporarily makes the caterpillar invincible allowing it to kill the deadly bugs and score 400 bonus points ber bug. If the caterpillar remains still for too long, an invincible owl (replaced by an invincible bat in later levels) will appear. If your catepillar moves, the owl or bat will disappear. If your catepillar remains still, the invincible owl or bat will chase the caterpillar, albiet not very effrctively. + +When the caterpillar crosses over a pivot branch, all the branches will rotate at once, and any bugs that are on those branches will fall off and score 400, 800, 1600 and 3200 points, depending on the amount of bugs killed. Keep an eye out for the flowers that will appear below the house - they will reward you between 400 and 3200 points, depending on the level. + 0.50 + 19820101T000000 + Orca Corporation + Orca + Action + 10 + 1-2 + changes.zip + Sega Classics + 256x224 + media/mixrbv2/changes.png + + + + looptris.zip + Looptris (v.2021-12-26) + 20210101T000000 + Mame + + + lordgun.zip + Lord of Gun (USA) + A light gun shooter similar to "Lethal Enforcers", but with animated graphics. There are 10 stages here. + 0.30 + 19940101T000000 + IGS + IGS + Lightgun Shooter + 32 + 1-2 + IGS + 448x224 + media/mixrbv2/lordgun.png + + + + losttomb.zip + Lost Tomb (Easy) + A shoot-em-up set in an ancient, South American pyramid, in which the player must explore a large number of single rooms in the search for treasure. Each room is filled with enemy creatures that must be killed or avoided. The player is equipped with a limited amount of whips and must collect as many items of treasure as possible. + +The player is presented with options throughout the game, depending upon which rooms they wish to enter. Once a path is chosen, players must pick up treasures, kill all the monsters in their way, find the key and exit the room as fast as they can; avoiding the potential of setting off an earthquake. Upon exiting a level, the player is presented with a hallway which shows a number of doorways allowing access to any one of several different rooms. This allows players to pick their own route through the game, but the decision which room to tackle next must be taken quickly as players must reach their chosen room quickly or risk being attacked by a flock of screeching birds. + +The player's character is armed with an eight-way firing gun (in a similar fashion to Williams' 1982 classic, "Robotron"). In addition to the gun, the player is also equipped with three whips, which can be used to either kill attacking creatures or to knock down any walls that bar the player's progress. Players are given the opportunity to purchase additional whips at the interludes between levels; this is done by inserting an extra credit into the arcade machine and pressing the relevant button. + +Treasure must be constantly collected in order to stay alive. + 0.70 + 19830101T000000 + Stern Electronics + Stern Electronics + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/losttomb.png + + + + losttombh.zip + Lost Tomb (Hard) + A shoot-em-up set in an ancient, South American pyramid, in which the player must explore a large number of single rooms in the search for treasure. Each room is filled with enemy creatures that must be killed or avoided. The player is equipped with a limited amount of whips and must collect as many items of treasure as possible. + +The player is presented with options throughout the game, depending upon which rooms they wish to enter. Once a path is chosen, players must pick up treasures, kill all the monsters in their way, find the key and exit the room as fast as they can; avoiding the potential of setting off an earthquake. Upon exiting a level, the player is presented with a hallway which shows a number of doorways allowing access to any one of several different rooms. This allows players to pick their own route through the game, but the decision which room to tackle next must be taken quickly as players must reach their chosen room quickly or risk being attacked by a flock of screeching birds. + +The player's character is armed with an eight-way firing gun (in a similar fashion to Williams' 1982 classic, "Robotron"). In addition to the gun, the player is also equipped with three whips, which can be used to either kill attacking creatures or to knock down any walls that bar the player's progress. Players are given the opportunity to purchase additional whips at the interludes between levels; this is done by inserting an extra credit into the arcade machine and pressing the relevant button. + +Treasure must be constantly collected in order to stay alive. + 0.70 + 19830101T000000 + Stern Electronics + Stern Electronics + Action + 10 + 1-2 + losttomb.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/losttomb.png + + + + lostwrldo.zip + Lost Worlds (Japan Old ver.) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + lostwrld.zip + Lost Worlds (Japan) + The planet used to be beautiful, with gorgeous cities and gleaming countrysides. Until the Aliens attacked! With fire, bombs, and napalm they devastated the world! They made the planet so abominable that it became an outcast in the universe - the Forgotten World. Until you, the Nameless One, appear. You're a Super Warrior of incredible power and energy. You make it your business to reclaim the panet for its rightful owners - the Human Beings! + 0.65 + 19880101T000000 + Capcom + Capcom + Shoot'em up / Horizontal + 2870 + 1-2 + forgottn.zip + Capcom Play System + 384x224 + media/mixrbv2/forgottn.png + + + + lotlot.zip + Lot Lot + In Lot Lot, you directly control one arrow and indirectly control another which follows after your original arrow with a (roughly) 4-second delay. When you press the button, any balls on the compartment that one arrow points to are immediately swapped with the contents of the compartment that the other arrow points to. The goal of Lot Lot is to get as many tiny balls (which resemble Pachinko balls) out of grid compartments and down into point slots in order to achieve a designated score, and advance to the next round. + 0.70 + 19850101T000000 + Irem + Irem + Various + 39 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/lotlot.png + + + + lottofun.zip + Lotto Fun + Lotto Fun is a 'ping pong balls in a blower' type lottery game. + 19870101T000000 + H.A.R. Management + H.A.R. Management + Casino / Lottery + 2932 + 1 + Midway Classics + 292x240 + media/mixrbv2/lottofun.png + + + + loverboy.zip + Lover Boy + An adult maze game, with explicit sexual action levels in-between. + +In this controversial game, you control a naked man with a purple fedora who runs around a city maze chasing and raping helpless women and must pick up all the women items, while avoid being caught by the police officers and their furious dog. + 0.50 + 19830101T000000 + G.T Enterprise Inc. + Adult + 413 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/loverboy.png + + + + luckywld.zip + Lucky & Wild + Lucky & Wild is a hilarious 'drive 'n shoot' game starring two buddy cops on a mission to bring down a mafia gang. Player 1 (Lucky) both drives the car and fires a gun, Player 2 (Wild) uses just a gun. While playing, both cops trade funny banter and dialogue, and even make funny faces in the rearview mirror. + 0.90 + 19920101T000000 + Namco + Lightgun Shooter + 32 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/luckywld.png + + + + luckywldj.zip + Lucky & Wild (Japan) + Lucky & Wild is a hilarious 'drive 'n shoot' game starring two buddy cops on a mission to bring down a mafia gang. Player 1 (Lucky) both drives the car and fires a gun, Player 2 (Wild) uses just a gun. While playing, both cops trade funny banter and dialogue, and even make funny faces in the rearview mirror. + 0.90 + 19920101T000000 + Namco + Lightgun Shooter + 32 + 1-2 + luckywld.zip + Namco Classics + 288x224 + media/mixrbv2/luckywld.png + + + + cluckypo.zip + Lucky Poker (DECO Cassette) (US) + 19810101T000000 + Data East + Data East + Casino / Cards + 2872 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cluckypo.png + + + + luctoday.zip + Lucky Today + Chewing Gum &copy; 198? Unknown. + 20190101T000000 + Sigma + Sigma + Casino / Slot machine + 2860 + 1 + Konami Classics + 270 + 768x224 + media/mixrbv2/luctoday.png + + + + lunarba1.zip + Lunar Battle (prototype, earlier) + Gravitar is a 1- or 2-player game with a color X-Y video display. This new display, with its three color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling colors and unique visual effects. + +The player controls a space ship in three different solar systems. Each solar system consists of a home base, a death star, a red alien planet and four regular planets. Each planet has its own unique terrain. + +The red alien planet is the home of shooting alien ships. Some of the regular planets may have flying alien rammers to be avoided or shot down. The four planets all have fuel cells to be retrieved with a tractor beam and alien bunkers that fire shells. Successfully destroying all of the bunkers results in a 'MISSION COMPLETE' message at the top of the screen. Achieving 'MISSION COMPLETE' allows the player to collect bonus if he can evade the rammers when leaving the planet. If successful, he will be placed back in the solar system. + +A player has two ways to advance to the next solar system. The first is to successfully complete a mission on all four regular planets. The second way is to complete a mission on the red alien planet, which establishes a link into the next solar system. + + + 0.50 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + gravitar.zip + Atari Classics + media/mixrbv2/gravitar.png + + + + lunarbat.zip + Lunar Battle (prototype, later) + Gravitar is a 1- or 2-player game with a color X-Y video display. This new display, with its three color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling colors and unique visual effects. + +The player controls a space ship in three different solar systems. Each solar system consists of a home base, a death star, a red alien planet and four regular planets. Each planet has its own unique terrain. + +The red alien planet is the home of shooting alien ships. Some of the regular planets may have flying alien rammers to be avoided or shot down. The four planets all have fuel cells to be retrieved with a tractor beam and alien bunkers that fire shells. Successfully destroying all of the bunkers results in a 'MISSION COMPLETE' message at the top of the screen. Achieving 'MISSION COMPLETE' allows the player to collect bonus if he can evade the rammers when leaving the planet. If successful, he will be placed back in the solar system. + +A player has two ways to advance to the next solar system. The first is to successfully complete a mission on all four regular planets. The second way is to complete a mission on the red alien planet, which establishes a link into the next solar system. + + + 0.50 + 19820101T000000 + Atari + Atari + Shooter + 2646 + 1 + gravitar.zip + Atari Classics + media/mixrbv2/gravitar.png + + + + llander1.zip + Lunar Lander (rev 1) + Lunar Lander is a 1-player coin-op electronic game that simulates landing a manned spaceship on the moon. Various video-display phrases indicate score, time elapsed during this landing mission, fuel units consumed, altitude above the moon, and horizontal and vertical speed. The fuel consumption and both speed readings are important for the player to determine how to land the craft. Realistic engine rumble and crash sounds accompany game play. A high beep warns of an almost-depleted fuel supply, whereupon players can add coins to automatically extend the game and 'fill up' their fuel tanks. Depending on the quality of the landing or the crash, various messages are displayed on the screen. + +Game play begins with engine rumble and the lander drifting towards the bottom +right corner of the screen. Horizontal and vertical speeds are constantly displayed, including two arrows to show horizontal and vertical directions of travel. Altitude is measured in distance above the surface of the mountain - not above 'sea level'. The screen also shows time in actual seconds, representing time elapsed in the current mission. + +The operator can select from four different settings for fuel units - 450, 600, 750 or 900 fuel units per coin (free play is also available). As the lander module flies over the landscape, it approaches the mountains and a landing site. At a certain point near the mountains, the game 'zooms in' for a close-up view of everything on the screen. + +If the player realizes the speed is too fast and the landing looks hopeless, he or she can press the ABORT button on the control panel. This will give the lander extra thrust and make it fly upwards at top speed. The abort feature does consume 120 to 180 fuel units, though, as a disincentive to overusing it. If the ABORT button is pressed too late, however, a crash cannot be avoided. + +The four levels of mission difficulty are determined by the player and can be changed at any time during the game or the ready-to-play mode. The differences between the four are printed on the mission select panels and are self explanatory, except perhaps rotational momentum. This feature causes the lander to tumble around when either ROTATE button is pushed. The longer either button is held down, the faster the lander module will spin in that direction. The player gains control of the lander by pressing the other ROTATE button for the same amount of time. + 0.90 + 19790101T000000 + Atari + Atari + Various + 39 + 1 + llander.zip + Atari Classics + media/mixrbv2/llander.png + + + + llander.zip + Lunar Lander (rev 2) + Lunar Lander is a 1-player coin-op electronic game that simulates landing a manned spaceship on the moon. Various video-display phrases indicate score, time elapsed during this landing mission, fuel units consumed, altitude above the moon, and horizontal and vertical speed. The fuel consumption and both speed readings are important for the player to determine how to land the craft. Realistic engine rumble and crash sounds accompany game play. A high beep warns of an almost-depleted fuel supply, whereupon players can add coins to automatically extend the game and 'fill up' their fuel tanks. Depending on the quality of the landing or the crash, various messages are displayed on the screen. + +Game play begins with engine rumble and the lander drifting towards the bottom +right corner of the screen. Horizontal and vertical speeds are constantly displayed, including two arrows to show horizontal and vertical directions of travel. Altitude is measured in distance above the surface of the mountain - not above 'sea level'. The screen also shows time in actual seconds, representing time elapsed in the current mission. + +The operator can select from four different settings for fuel units - 450, 600, 750 or 900 fuel units per coin (free play is also available). As the lander module flies over the landscape, it approaches the mountains and a landing site. At a certain point near the mountains, the game 'zooms in' for a close-up view of everything on the screen. + +If the player realizes the speed is too fast and the landing looks hopeless, he or she can press the ABORT button on the control panel. This will give the lander extra thrust and make it fly upwards at top speed. The abort feature does consume 120 to 180 fuel units, though, as a disincentive to overusing it. If the ABORT button is pressed too late, however, a crash cannot be avoided. + +The four levels of mission difficulty are determined by the player and can be changed at any time during the game or the ready-to-play mode. The differences between the four are printed on the mission select panels and are self explanatory, except perhaps rotational momentum. This feature causes the lander to tumble around when either ROTATE button is pushed. The longer either button is held down, the faster the lander module will spin in that direction. The player gains control of the lander by pressing the other ROTATE button for the same amount of time. + 0.90 + 19790101T000000 + Atari + Atari + Various + 39 + 1 + Atari Classics + media/mixrbv2/llander.png + + + + miaj.zip + M.I.A. - Missing in Action (version R) (Japan) + M.I.A. - Missing in Action &copy; 1989 Konami. + +M.I.A. Missing in Action is a horizontally-scrolling run &#039;n&#039; gun platform game for one or two players in which Special Forces soldiers must penetrate enemy-packed combat zones to reach a POW compound and rescue captured prisoners. The rescued POWs must then be escorted safely through a final enemy-packed stage to the helicopter that awaits at the end. + +Players begin each stage armed with only a combat knife to protect them, but other weapons can be picked up from fallen enemy troops. The weapons are always carried by soldiers in red uniforms and range from an assault rifle, grenades, a flame-thrower and a bazooka. Players can carry more than one weapon and can cycle through them as needed. Each collected weapon has only a limited supply of shots. + +The game&#039;s first four stages are presented in random order and may also be &quot;mirrored&quot;, switching the action from from right-to-left instead of left-to-right, increasing the game&#039;s variety and adding replay value. The &#039;POW&#039; and &#039;Helicopter&#039; stages are always the last two stages, however. + +At the end of each stage players must fight off a wave of enemy troops as well as destroy gun emplacements and watch towers. Certain sections of each stage offer players a different route, with both platforms and underground tunnels that can be utilized and explored. At least one POW must be safely escorted to the rescue Chopper to complete the final mission, after which the game starts over with an increased level of difficulty. + +The game consists of six stages: +War-torn battlefield +Airstrip +Jungle +Rail Yard +POW Base +Escort the POWs to the Helicopter + +M.I.A. Missing in Action is the direct sequel to 1985&#039;s &quot;Green Beret&quot; but unlike its prequel, two-player games now have both players fighting side-by-side, rather than the alternating approach of the original game. + 0.70 + 19890101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + mia.zip + Konami Classics + 304x224 + media/mixrbv2/mia.png + + + + mia2.zip + M.I.A. - Missing in Action (version S) + M.I.A. - Missing in Action &copy; 1989 Konami. + +M.I.A. Missing in Action is a horizontally-scrolling run &#039;n&#039; gun platform game for one or two players in which Special Forces soldiers must penetrate enemy-packed combat zones to reach a POW compound and rescue captured prisoners. The rescued POWs must then be escorted safely through a final enemy-packed stage to the helicopter that awaits at the end. + +Players begin each stage armed with only a combat knife to protect them, but other weapons can be picked up from fallen enemy troops. The weapons are always carried by soldiers in red uniforms and range from an assault rifle, grenades, a flame-thrower and a bazooka. Players can carry more than one weapon and can cycle through them as needed. Each collected weapon has only a limited supply of shots. + +The game&#039;s first four stages are presented in random order and may also be &quot;mirrored&quot;, switching the action from from right-to-left instead of left-to-right, increasing the game&#039;s variety and adding replay value. The &#039;POW&#039; and &#039;Helicopter&#039; stages are always the last two stages, however. + +At the end of each stage players must fight off a wave of enemy troops as well as destroy gun emplacements and watch towers. Certain sections of each stage offer players a different route, with both platforms and underground tunnels that can be utilized and explored. At least one POW must be safely escorted to the rescue Chopper to complete the final mission, after which the game starts over with an increased level of difficulty. + +The game consists of six stages: +War-torn battlefield +Airstrip +Jungle +Rail Yard +POW Base +Escort the POWs to the Helicopter + +M.I.A. Missing in Action is the direct sequel to 1985&#039;s &quot;Green Beret&quot; but unlike its prequel, two-player games now have both players fighting side-by-side, rather than the alternating approach of the original game. + 0.70 + 19890101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + mia.zip + Konami Classics + 304x224 + media/mixrbv2/mia.png + + + + mia.zip + M.I.A. - Missing in Action (version T) + M.I.A. - Missing in Action &copy; 1989 Konami. + +M.I.A. Missing in Action is a horizontally-scrolling run &#039;n&#039; gun platform game for one or two players in which Special Forces soldiers must penetrate enemy-packed combat zones to reach a POW compound and rescue captured prisoners. The rescued POWs must then be escorted safely through a final enemy-packed stage to the helicopter that awaits at the end. + +Players begin each stage armed with only a combat knife to protect them, but other weapons can be picked up from fallen enemy troops. The weapons are always carried by soldiers in red uniforms and range from an assault rifle, grenades, a flame-thrower and a bazooka. Players can carry more than one weapon and can cycle through them as needed. Each collected weapon has only a limited supply of shots. + +The game&#039;s first four stages are presented in random order and may also be &quot;mirrored&quot;, switching the action from from right-to-left instead of left-to-right, increasing the game&#039;s variety and adding replay value. The &#039;POW&#039; and &#039;Helicopter&#039; stages are always the last two stages, however. + +At the end of each stage players must fight off a wave of enemy troops as well as destroy gun emplacements and watch towers. Certain sections of each stage offer players a different route, with both platforms and underground tunnels that can be utilized and explored. At least one POW must be safely escorted to the rescue Chopper to complete the final mission, after which the game starts over with an increased level of difficulty. + +The game consists of six stages: +War-torn battlefield +Airstrip +Jungle +Rail Yard +POW Base +Escort the POWs to the Helicopter + +M.I.A. Missing in Action is the direct sequel to 1985&#039;s &quot;Green Beret&quot; but unlike its prequel, two-player games now have both players fighting side-by-side, rather than the alternating approach of the original game. + 0.70 + 19890101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + Konami Classics + 304x224 + media/mixrbv2/mia.png + + + + mach9.zip + Mach-9 (bootleg of Vulgus) + Vulgus is pretty simple. You just pilot a spaceship and blast countless enemies. That is what is fun about this game. There is nothing complicated, just pure blasting. You only have two weapons, your blaster, and a limited supply of bombs. This title uses the time honored top-down vertically scrolling format. The background moves eternally forward, but you can move all around the screen, and can make the screen scroll both left and right. Your enemies consist of an assortment of fairly realistic looking spacecraft, some of which have a distinctive 'insectoid' look to them. This game is endless and it doesn't seem to have a level format. You just move forward and shoot. The backgrounds will change from time to time from planetary surfaces to space scenes and eventually they will start repeating once you blast this particularly large alien formation. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + vulgus.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/vulgus.png + + + + machomou.zip + Macho Mouse + Macho Mouse was produced by Techstar in 1982. +Become a mouse trapped in elaborate mazes trying to avoid the grips of hungry cats that will gobble you up on sight! As the awesome Macho Mouse you must move around the mazes quickly, leaving a trail of droppings in your wake and you must move around the entire maze to be able to escape out to the next trickier level. Keep your little mouse eyes peeled for any cats that lurk around looking for a free meal! + 0.50 + 19820101T000000 + Techstar + Techstar + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/machomou.png + + + + macross2k.zip + Macross II (Korea) + In 1999, an alien ship crashes on South Atalia Island and makes the human race aware of other life in space. Ten years later, the ship is reconstructed and christened as the SDF-1 Macross. However, on the day of its maiden voyage, an alien race called the Zentraedi make their appearance on Earth, beginning the UN Spacy/Zentraedi war that would change the history of both races forever. + 0.50 + 19930101T000000 + NMK + Banpresto + Shoot'em Up + 79 + 1-2 + macross2.zip + Banpresto + 384x224 + media/mixrbv2/macross2.png + + + + madcrash.zip + Mad Crasher + A diagonal driving/shooting 'em up game. + +This was SNK's first 3-D Isometric game. + 0.50 + 19840101T000000 + SNK + SNK + Shooter / Vehicle, Diagonal + 2934 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/madcrash.png + + + + madcrush.zip + Mad Crusher (Japan) + A diagonal driving/shooting 'em up game. + +This was SNK's first 3-D Isometric game. + 0.50 + 19840101T000000 + SNK + SNK + Shooter / Vehicle, Diagonal + 2934 + 1-2 + madcrash.zip + SNK Classics + 288x216 + media/mixrbv2/madcrash.png + + + + maddonna.zip + Mad Donna (set 1) + In typical Tuning fashion, this is a rip-off of a "Pac-Man" type game where you win hi-res pics of naked babes at the end of each round. Finishing the first rack you get the picture of the babe's face, finishing the second rack will give you a full-body shot which scrolls so you can see the whole thing. + 0.50 + 19950101T000000 + Tuning + Action + 10 + 1-2 + Mame + 320x240 + media/mixrbv2/maddonna.png + + + + madgearj.zip + Mad Gear (Japan) + By 2011, the only way to travel at top speed is on skyways built high above the ground. These become popular with boy-racers and general speed freaks pretty soon, and that's why you're aiming to hurtle across them in this arcade conversion. + +The road scrolls vertically, with some moderately sharp bends in a manner similar to Spy Hunter You have a jump device to clear the many jumps, or to land onto and flatten the other maniacs who line the road. You must choose which path to follow at OutRun-style forks in the road. + +The roads contain bonus tags including bonus points, a battering ram to make contact with other cars more effective, and energy boosts to replenish damage. If you leave the road you must replace your car onto it using a directable winch which appears at the appropriate point. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + madgear.zip + Capcom Classics + 270 + 384x240 + media/mixrbv2/madgear.png + + + + madgear.zip + Mad Gear (US) + By 2011, the only way to travel at top speed is on skyways built high above the ground. These become popular with boy-racers and general speed freaks pretty soon, and that's why you're aiming to hurtle across them in this arcade conversion. + +The road scrolls vertically, with some moderately sharp bends in a manner similar to Spy Hunter You have a jump device to clear the many jumps, or to land onto and flatten the other maniacs who line the road. You must choose which path to follow at OutRun-style forks in the road. + +The roads contain bonus tags including bonus points, a battering ram to make contact with other cars more effective, and energy boosts to replenish damage. If you leave the road you must replace your car onto it using a directable winch which appears at the appropriate point. + 19880101T000000 + Capcom + Capcom + Race, Driving / Race + 2924 + 1-2 + Capcom Classics + 270 + 384x240 + media/mixrbv2/madgear.png + + + + mplanets.zip + Mad Planets + In Mad Planets, the player takes control of a spaceship and must attempt to destroy a series of Earth-like planets which emerge from the center of the screen and rapidly move towards the player's ship - increasing in size as they do so. Destroying all of the planets in a round before the they reach their full scale will see the player awarded with bonus points. Fully-grown planets are orbited by a number of small moons, which, if destroyed, cause the planet to go 'mad' - turning red and making a beeline for the player's ship. The game also includes bonus rounds in which stranded astronauts can be rescued for additional points. + 0.90 + 19830101T000000 + Gottlieb + D. Gottlieb & Co. + Shooter + 2646 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/mplanets.png + + + + mplanetsuk.zip + Mad Planets (UK) + In Mad Planets, the player takes control of a spaceship and must attempt to destroy a series of Earth-like planets which emerge from the center of the screen and rapidly move towards the player's ship - increasing in size as they do so. Destroying all of the planets in a round before the they reach their full scale will see the player awarded with bonus points. Fully-grown planets are orbited by a number of small moons, which, if destroyed, cause the planet to go 'mad' - turning red and making a beeline for the player's ship. The game also includes bonus rounds in which stranded astronauts can be rescued for additional points. + 0.90 + 19830101T000000 + Gottlieb + D. Gottlieb & Co. + Shooter + 2646 + 1-2 + mplanets.zip + Gottlieb + 270 + 256x240 + media/mixrbv2/mplanets.png + + + + madshark.zip + Mad Shark + A vertically scrolling shooter. + 0.70 + 19930101T000000 + Allumer + Allumer + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x224 + media/mixrbv2/madshark.png + + + + magmax.zip + Mag Max (set 1) + Mag Max is a horizontally scrolling shoot-em-up in which a single player takes control of the 'Maxcraft' hover-ship and must battle their way through an packed enemy installation to find and destroy the invading alien 'Dragonia' fleet. + +The action takes place both above and below ground and transporters appear throughout the game that allows the Maxcraft warp between the two as players search for the three-headed 'Dragonship'. + +At various points the player will come across robot components - either a torso, a pair of legs or a plasma gun - and collecting these will eventually see the player's hover-ship become a towering robot, vastly increasing its firepower in the process. + +If the Maxcraft takes an enemy hit when additional components are attached, a component is lost. If the ship is hit when only in basic form, however, a life is lost. + 0.70 + 19850101T000000 + Nichibutsu + Shooter / Horizontal + 2876 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/magmax.png + + + + magmaxa.zip + Mag Max (set 2) + Mag Max is a horizontally scrolling shoot-em-up in which a single player takes control of the 'Maxcraft' hover-ship and must battle their way through an packed enemy installation to find and destroy the invading alien 'Dragonia' fleet. + +The action takes place both above and below ground and transporters appear throughout the game that allows the Maxcraft warp between the two as players search for the three-headed 'Dragonship'. + +At various points the player will come across robot components - either a torso, a pair of legs or a plasma gun - and collecting these will eventually see the player's hover-ship become a towering robot, vastly increasing its firepower in the process. + +If the Maxcraft takes an enemy hit when additional components are attached, a component is lost. If the ship is hit when only in basic form, however, a life is lost. + 0.70 + 19850101T000000 + Nichibutsu + Shooter / Horizontal + 2876 + 1-2 + magmax.zip + Nichibutsu + 256x224 + media/mixrbv2/magmax.png + + + + mbrush.zip + Magic Brush (bootleg of Crush Roller) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + magicbub.zip + Magic Bubble + Group 3 or more bubbles of the same colour together to make them disappear. Clear the screen before they reach the bottom or before your opponent clears their screen. Magic Bubble is a very obvious copy of Taito's sublime "Puzzle Bobble" series. + 0.70 + 19980101T000000 + Yun Sung + Puzzle-Game / Throw + 2923 + 1-2 + Mame + 320x224 + media/mixrbv2/magicbub.png + + + + magicbubc.zip + Magic Bubble (Adult version, YS-0211 PCB) + Group 3 or more bubbles of the same colour together to make them disappear. Clear the screen before they reach the bottom or before your opponent clears their screen. Magic Bubble is a very obvious copy of Taito's sublime "Puzzle Bobble" series. + 0.70 + 19980101T000000 + Yun Sung + Puzzle-Game / Throw + 2923 + 1-2 + magicbub.zip + Mame + 320x224 + media/mixrbv2/magicbub.png + + + + magicbuba.zip + Magic Bubble (Adult version, YS-1302 PCB, set 1) + Group 3 or more bubbles of the same colour together to make them disappear. Clear the screen before they reach the bottom or before your opponent clears their screen. Magic Bubble is a very obvious copy of Taito's sublime "Puzzle Bobble" series. + 0.70 + 19980101T000000 + Yun Sung + Puzzle-Game / Throw + 2923 + 1-2 + magicbub.zip + Mame + 320x224 + media/mixrbv2/magicbub.png + + + + magicbubb.zip + Magic Bubble (Adult version, YS-1302 PCB, set 2) + Group 3 or more bubbles of the same colour together to make them disappear. Clear the screen before they reach the bottom or before your opponent clears their screen. Magic Bubble is a very obvious copy of Taito's sublime "Puzzle Bobble" series. + 0.70 + 19980101T000000 + Yun Sung + Puzzle-Game / Throw + 2923 + 1-2 + magicbub.zip + Mame + 320x224 + media/mixrbv2/magicbub.png + + + + magipur.zip + Magic Purple + Magic Purple is a platform game by Unico featuring a duck-like character who shoots and punches enemies to gain points. + 19960101T000000 + Platform + 7 + 1-2 + Mame + media/mixrbv2/magipur.png + + + + magicstk.zip + Magic Sticks + 19950101T000000 + Playmark + Playmark + Casino + 320 + 1 + Mame + 320x240 + media/mixrbv2/magicstk.png + + + + mswordj.zip + Magic Sword (23.06.1990 Japan) + Magic Sword: Heroic Fantasy is a side-scrolling fantasy arcade game released by Capcom in 1990. The player can use a sword, an axe, or magic, and can also rescue and recruit potential allies from different character classes, each with their own special abilities. Three years earlier, Capcom had released the similar Black Tiger in 1987. + +Magic Sword is set in a nameless world threatened by the dark lord Drokmar, who is in control of an evil crystal known as the "Black Orb" that would allow him to rule the world. To prevent this from happening, the Brave Hero must climb to the top of the 50-story tower that Drokmar resides in, known as the Dragon Keep. After Drokmar is defeated, the player has the option of two endings: destroy the Black Orb, or take control of it and become the new Dark Lord. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + msword.zip + Capcom Play System + 384x224 + media/mixrbv2/msword.png + + + + mswordr1.zip + Magic Sword - heroic fantasy (23.06.1990 other country) + Magic Sword: Heroic Fantasy is a side-scrolling fantasy arcade game released by Capcom in 1990. The player can use a sword, an axe, or magic, and can also rescue and recruit potential allies from different character classes, each with their own special abilities. Three years earlier, Capcom had released the similar Black Tiger in 1987. + +Magic Sword is set in a nameless world threatened by the dark lord Drokmar, who is in control of an evil crystal known as the "Black Orb" that would allow him to rule the world. To prevent this from happening, the Brave Hero must climb to the top of the 50-story tower that Drokmar resides in, known as the Dragon Keep. After Drokmar is defeated, the player has the option of two endings: destroy the Black Orb, or take control of it and become the new Dark Lord. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + msword.zip + Capcom Play System + 384x224 + media/mixrbv2/msword.png + + + + msword.zip + Magic Sword - heroic fantasy (25.07.1990 other country) + Magic Sword: Heroic Fantasy is a side-scrolling fantasy arcade game released by Capcom in 1990. The player can use a sword, an axe, or magic, and can also rescue and recruit potential allies from different character classes, each with their own special abilities. Three years earlier, Capcom had released the similar Black Tiger in 1987. + +Magic Sword is set in a nameless world threatened by the dark lord Drokmar, who is in control of an evil crystal known as the "Black Orb" that would allow him to rule the world. To prevent this from happening, the Brave Hero must climb to the top of the 50-story tower that Drokmar resides in, known as the Dragon Keep. After Drokmar is defeated, the player has the option of two endings: destroy the Black Orb, or take control of it and become the new Dark Lord. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/msword.png + + + + mswordu.zip + Magic Sword - heroic fantasy (25.07.1990 USA) + Magic Sword: Heroic Fantasy is a side-scrolling fantasy arcade game released by Capcom in 1990. The player can use a sword, an axe, or magic, and can also rescue and recruit potential allies from different character classes, each with their own special abilities. Three years earlier, Capcom had released the similar Black Tiger in 1987. + +Magic Sword is set in a nameless world threatened by the dark lord Drokmar, who is in control of an evil crystal known as the "Black Orb" that would allow him to rule the world. To prevent this from happening, the Brave Hero must climb to the top of the 50-story tower that Drokmar resides in, known as the Dragon Keep. After Drokmar is defeated, the player has the option of two endings: destroy the Black Orb, or take control of it and become the new Dark Lord. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + msword.zip + Capcom Play System + 384x224 + media/mixrbv2/msword.png + + + + mcatadv.zip + Magical Cat Adventure + In this game you play as a magical cat wandering around a forest. This game features some very nice/appealing graphics. The cat has many strange weapons. + 0.70 + 19930101T000000 + Wintechno + Wintechno + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 320x224 + media/mixrbv2/mcatadv.png + + + + mcatadvj.zip + Magical Cat Adventure (Japan) + In this game you play as a magical cat wandering around a forest. This game features some very nice/appealing graphics. The cat has many strange weapons. + 0.70 + 19930101T000000 + Wintechno + Wintechno + Platform / Shooter Scrolling + 2887 + 1-2 + mcatadv.zip + Mame + 320x224 + media/mixrbv2/mcatadv.png + + + + mgcrystlj.zip + Magical Crystals (Japan, 92/01/13) + Magical Crystals is a maze/shooter game, developed and published by Kaneko, which was released in 1991 (also licensed to Atlus). +The player impersonate a magician going through a set of mazes suspended in the air; the goal of the game is to rescue the pixies trapped inside the magical crystals. The game has a total of 6 worlds. Each world is divided into 3 acts and has a boss fight and a bonus stage at the end. + 0.70 + 19910101T000000 + Kaneko + Action + 10 + 1-2 + mgcrystl.zip + Kaneko + 256x224 + media/mixrbv2/mgcrystl.png + + + + mgcrystlo.zip + Magical Crystals (World, 91/12/10) + Magical Crystals is a maze/shooter game, developed and published by Kaneko, which was released in 1991 (also licensed to Atlus). +The player impersonate a magician going through a set of mazes suspended in the air; the goal of the game is to rescue the pixies trapped inside the magical crystals. The game has a total of 6 worlds. Each world is divided into 3 acts and has a boss fight and a bonus stage at the end. + 0.70 + 19910101T000000 + Kaneko + Action + 10 + 1-2 + mgcrystl.zip + Kaneko + 256x224 + media/mixrbv2/mgcrystl.png + + + + mgcrystl.zip + Magical Crystals (World, 92/01/10) + Magical Crystals is a maze/shooter game, developed and published by Kaneko, which was released in 1991 (also licensed to Atlus). +The player impersonate a magician going through a set of mazes suspended in the air; the goal of the game is to rescue the pixies trapped inside the magical crystals. The game has a total of 6 worlds. Each world is divided into 3 acts and has a boss fight and a bonus stage at the end. + 0.70 + 19910101T000000 + Kaneko + Action + 10 + 1-2 + Kaneko + 256x224 + media/mixrbv2/mgcrystl.png + + + + magdrop2.zip + Magical Drop II + In Magical Drop II, you control a clown that can grab and throw balloons. You have to match three balloons of the same colour or more vertically to pop them and clear the screen. You can hold multiple balloons of the same colour at once and cause consecutive collisions. There are special balloons that cannot be removed that easily and power-ups that clear entire rows or provide additional help. + +Depending of the originating country, there are different game modes: + +1. Survival: Play as long as you can - an endless flow of balloons appears at a rapidly increasing speed while you move up levels. + +2. Puzzle: You have a limited time to clear a fixed set of balloons before time runs out. + +3. VS Mode: Fight the CPU or a fellow player in a direct split-screen duel. Each character has specific item balloons during gameplay. + 0.55 + 19960101T000000 + Data East + SNK + Puzzle-Game + 26 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/magdrop2.png + + + + magdrop3.zip + Magical Drop III + This is the third installment in the puzzle frenzy series Magical Drop. In the game you control a clown who throws marbles up on the screen into the cluster of multi-colored marbles, rocks and crystals. The goal is to get three or more of the same color to remove marbles, but you can also grab more than one at the time to create long chain combos and gain better "special" blocks at the top of the screen. + +You can play the game in single player modes or versus a friend in versus mode. In versus mode you get to pick your character, much like in a fighting game, each with their own counter attacks and abilities. + +For the PSX version, the first Magical Drop was included on a separate disc. + 0.85 + 19970101T000000 + Data East + Data East + Puzzle-Game + 26 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/magdrop3.png + + + + magdrop3bh.zip + Magical Drop III (Secret Character Hack) + This is the third installment in the puzzle frenzy series Magical Drop. In the game you control a clown who throws marbles up on the screen into the cluster of multi-colored marbles, rocks and crystals. The goal is to get three or more of the same color to remove marbles, but you can also grab more than one at the time to create long chain combos and gain better "special" blocks at the top of the screen. + +You can play the game in single player modes or versus a friend in versus mode. In versus mode you get to pick your character, much like in a fighting game, each with their own counter attacks and abilities. + +For the PSX version, the first Magical Drop was included on a separate disc. + 0.85 + 19970101T000000 + Data East + Data East + Puzzle-Game + 26 + 1-2 + magdrop3.zip + Neo-Geo + 320x224 + media/mixrbv2/magdrop3.png + + + + magerror.zip + Magical Error wo Sagase + Magical Error o Sagase is a spot the difference puzzle game for one or two players. In each level the player must point out the difference in the two images within the time limit. In contrast to most spot the difference games, in Magical Error wo Sagase, the images are mirror images of each other instead of direct copies. Incorrect guesses cause the player to lose time on the time bar and once the time bar is depleted the game is over. + +There are five levels per stage, and after each stage the player gets to play a bonus game to put more time on the time bar. + 0.70 + 19940101T000000 + Technosoft + Technosoft + Various + 39 + 1-2 + Mame + 320x224 + media/mixrbv2/magerror.png + + + + maglordh.zip + Magician Lord (NGH-005) + Magician Lord puts you in charge of Elta, a wizard who has the task of collecting eight books of wisdom from the clutches of Az Atorse, the god of destruction. By collecting the right power-ups along the way, you can transform into different characters, including the Rajin, Samurai, Waterman, Shinobi, Poseidon, and Dragon Warrior. Each character has different abilities. There are eight areas in the game, and each stage ends with you trying to defeat both a guardian and the end-of-area boss (which are basically Atorse's incarnations). One of the first games that demonstrated the graphical abilities of the Neo-Geo. + 0.60 + 19900101T000000 + ADK + SNK + Platform + 7 + 1-2 + maglord.zip + Neo-Geo + 320x224 + media/mixrbv2/maglord.png + + + + maglord.zip + Magician Lord (NGM-005) + Magician Lord puts you in charge of Elta, a wizard who has the task of collecting eight books of wisdom from the clutches of Az Atorse, the god of destruction. By collecting the right power-ups along the way, you can transform into different characters, including the Rajin, Samurai, Waterman, Shinobi, Poseidon, and Dragon Warrior. Each character has different abilities. There are eight areas in the game, and each stage ends with you trying to defeat both a guardian and the end-of-area boss (which are basically Atorse's incarnations). One of the first games that demonstrated the graphical abilities of the Neo-Geo. + 0.60 + 19900101T000000 + ADK + SNK + Platform + 7 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/maglord.png + + + + magix.zip + Magix / Rock + A tetris-type game. + 0.50 + 19950101T000000 + Yun Sung + Puzzle-Game + 26 + Mame + 384x240 + media/mixrbv2/magix.png + + + + magixb.zip + Magix / Rock (no copyright message) + A tetris-type game. + 0.50 + 19950101T000000 + Yun Sung + Puzzle-Game + 26 + magix.zip + Mame + 384x240 + media/mixrbv2/magix.png + + + + mgakuen.zip + Mahjong Gakuen + Mahjong game played against various girls. This must be the extra-curricular activities of the Mahjong Academy students. + 19880101T000000 + Yuga + Mahjong + 2869 + 1 + Mitchell + 384x240 + media/mixrbv2/mgakuen.png + + + + mgakuen2.zip + Mahjong Gakuen 2 Gakuen-chou no Fukushuu + You're still a student at the Mahjong Academy. Maybe this time you'll graduate! + 19890101T000000 + FACE + Mahjong + 2869 + 1 + Mitchell + 384x240 + media/mixrbv2/mgakuen2.png + + + + mahretsu.zip + Mahjong Kyo Retsuden (NGM-004)(NGH-004) + A mahjong game where you can create your own face for your character! + 19900101T000000 + SNK + SNK + Asiatic board game + 2647 + 1 + Neo-Geo + media/mixrbv2/mahretsu.png + + + + mjkjidai.zip + Mahjong Kyou Jidai (Japan) + An EXCITING mahjong game, as the title screen says! + 19860101T000000 + Sanritsu Denki + Mahjong + 2869 + 1 + Mame + 464x224 + media/mixrbv2/mjkjidai.png + + + + mahoudai.zip + Mahou Daisakusen (Japan) + Sorcer Striker, released in Japan as Mahou Daisakusen (Magic Armageddon) is a 1993 medieval-themed scrolling shooter developed by Raizing (now known as Eighting) for the arcades and later ported to Sharp X68000 and FM Towns computers and the EZweb mobile phones. It is the first game in the Mahou Daisakusen trilogy, which includes Kingdom Grandprix and Dimahoo. +The game is set in a fantasy world filled with magic and magic-fueled machinery. A peaceful kingdom is under assault by the encroaching Gobligan Empire, led by a mysterious human leader known only as the Gobligan King. As the kingdom finds itself unable to drive off the Gobligan Empire's advances, King Codwenna announces a huge bounty for the Gobligan King's head. Four heroes answer the call, and set out to defeat the Gobligan King and restore peace to the kingdom. + +Characters +Gain, the Warrior: A master of swords and physical combat, Gain wanders the land with his pet monkey Shain in search of the ultimate weapon. Attracted by the large bounty offered for the Gobligan King, Gain takes up arms in his ship, the Valhallyzer, against the Gobligan Empire. His signature weapon is the Buster Sword. +Chitta, the Magician: Despite her appearance as a youthful girl, Chitta is a formidable magic user and the granddaughter of a legendary hero. Bored of the quiet life of her village, she sneaks away in her grandfather's magical ship, the Gun Dalf, to seek adventure. Her signature attacks are the Thunder Beam and Ice Cube. +Miyamoto, the Samurai Dragon: Well-mannered and wise, Miyamoto the samurai dragon seeks revenge against Tsumujimaru, one of his former disciples. Tsumujimaru turned his back on Miyamoto's teachings and murdered Miyamoto's own Master, then fled into the Gobligan Empire. Miyamoto does not use a magical ship, but rather flies with his own two wings, and attacks via shuriken, ninjutsu stones, and other secret techniques. +Bornnam, the Necromancer: Detested and shunned by society, Bornnam lives in seclusion, practicing the black arts of necromancy and gleefully collecting bones. He decides to fight against the Gobligan Empire as a chance to test his power. Via the power of the divine dragon skull that rests on his head, he is able to transform into the Golgodian, a "ship" form that enables him to fly in the air and absorb the ambient mana from the sky in order to cast his spells. His favorite attacks are the Skull Napalm and Search Ghost. + + 0.70 + 19930101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + sstriker.zip + Toaplan + 270 + 320x240 + media/mixrbv2/sstriker.png + + + + mainsnk.zip + Main Event (1984) + A boxing game from SNK. + 0.30 + 19840101T000000 + SNK + SNK + Sports / Boxing + 2929 + 1-2 + SNK Classics + 288x216 + media/mixrbv2/mainsnk.png + + + + mstadium.zip + Main Stadium (Japan ver. 4) + 1 or 2 players choose a ballclub from cities like New York, Chicago, Los Angeles, Atlanta, or Boston and compete either against the computer or each other in this baseball game. A wide variety of pitches can be thrown and batters can change their stance and angle of swing. + 0.50 + 19890101T000000 + Konami + Konami + Sports / Baseball + 2853 + 1-2 + bottom9.zip + Konami Classics + 288x224 + media/mixrbv2/bottom9.png + + + + mhavocp.zip + Major Havoc (prototype) + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + mhavoc.zip + Atari Classics + media/mixrbv2/mhavoc.png + + + + mhavoc2.zip + Major Havoc (rev 2) + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + mhavoc.zip + Atari Classics + media/mixrbv2/mhavoc.png + + + + mhavoc.zip + Major Havoc (rev 3) + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + Atari Classics + media/mixrbv2/mhavoc.png + + + + mhavocrv.zip + Major Havoc - Return to Vax + Major Havoc is a vector-based shoot-em-up and platform game in which the evil Vaxxian Empire overran the galaxy many years ago. Most of humanity was enslaved and abducted to the Vaxxian home world, although a few human scientists managed to escape. The Vaxxian Empire has long since collapsed but numerous Vaxxian space stations, all blindly controlled and defended by robots, still remain in the galaxy, mindlessly following their original, pre-programmed orders. + +The small band of scientists who initially escaped have cloned the great human hero, 'Major Havoc' and tasked him with flying his 'Catastrofighter' through a wormhole in space so that he may lead a clone army against the dreaded Vaxxian robots and to liberate the remnants of humanity by destroying the enemy reactors. The player controls Major Rex Havoc, the leader of this band of clones. + +The game is broken down into two distinct gameplay genres. The first is a shoot-'em-up in which the player controls Major Havoc's spaceship against the numerous robot ships that defend the enemy reactors. The ships are encased in a force-field shield which must first be shot and depleted before the ship itself can be destroyed. + 0.90 + 19830101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + mhavoc.zip + Atari Classics + media/mixrbv2/mhavoc.png + + + + mjleague.zip + Major League + Major League is an arcade baseball game released for Pre-System 16 hardware by Sega in 1985. + +Its rather complex control scheme, complete with a trackball and variety of buttons means that Major League is not yet playable in any emulators. + 0.50 + 19850101T000000 + SEGA + Sports / Baseball + 2853 + 1-2 + Sega Classics + 270 + 320x224 + media/mixrbv2/mjleague.png + + + + majtitlej.zip + Major Title (Japan) + A golf game where you take part in the final round of a major golf tournament, your goal is to top the leaderboard after 18 holes and take home the trophy. You can also compete against your mates with up to 4 players taking part. + 0.70 + 19900101T000000 + Irem + Irem + Sports / Golf + 2913 + 1-4 + majtitle.zip + Irem Classics + 384x256 + media/mixrbv2/majtitle.png + + + + majtitle.zip + Major Title (World) + A golf game where you take part in the final round of a major golf tournament, your goal is to top the leaderboard after 18 holes and take home the trophy. You can also compete against your mates with up to 4 players taking part. + 0.70 + 19900101T000000 + Irem + Irem + Sports / Golf + 2913 + 1-4 + Irem Classics + 384x256 + media/mixrbv2/majtitle.png + + + + majuu.zip + Majuu no Ohkoku + A Gauntlet-type game. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + devilw.zip + Konami Classics + 320x224 + media/mixrbv2/devilw.png + + + + makaiden.zip + Makai Densetsu (Japan) + Legend of Makai is an action/adventure platformer based in a fantasy setting. The player controls a young warrior whose quest is to rescue a princess from an evil wizard. The warrior starts off with only a sword, but can purchase other weapons and magical items from shops. The gameplay consists finding one's way through non-linear levels, using keys to open doors and killing or avoiding various enemies. The player has a fixed amount of time to complete each level. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Platform + 7 + 1-2 + lomakai.zip + Jaleco + 256x224 + media/mixrbv2/lomakai.png + + + + makaimurc.zip + Makai-Mura (Japan revision C) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + makaimurg.zip + Makai-Mura (Japan revision G) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + makaimur.zip + Makai-Mura (Japan) + Ghosts 'n Goblins is a platform game where the player controls a knight, named Sir Arthur, who must defeat zombies, ogres, demons, cyclops, dragons and other monsters in order to rescue Princess Prin Prin, who has been kidnapped by Satan, king of Demon World. Along the way the player can pick up new weapons, bonuses and extra suits of armor that can help in this task. + +The player can only be hit twice before losing a life. If the player loses a life, they are returned to the start of the level, or the halfway point if they have managed to get that far. Furthermore, each life can only last a certain length of time. After defeating the final boss, the player must then replay the entire game on a higher difficulty level to reach the genuine final battle. + 0.90 + 19850101T000000 + Capcom + Capcom + Platform + 7 + 1 + gng.zip + Capcom Classics + 256x224 + media/mixrbv2/gng.png + + + + maketrax.zip + Make Trax (US set 1) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + maketrxb.zip + Make Trax (US set 2) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + makyosen.zip + Makyou Senshi (Japan) + Arcade game released by Data East in 1987. Top-down shooter featuring rotating joysticks. + 0.50 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + gondo.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/gondo.png + + + + mangchi.zip + Mang-Chi + A tetris/columns styled game, you have to match the blocks with the same color or picture. + 0.70 + 20000101T000000 + Afega + Afega + Puzzle-Game / Equalize + 2864 + 1-2 + NMK + 256x224 + media/mixrbv2/mangchi.png + + + + cmanhat.zip + Manhattan (DECO Cassette) (Japan) + This game is a trampoline jumping game in the concrete jungle of Manhattan. + +The player uses a trampoline to send The DECO Kid (player character) flying through the air & must guide him safely onto the landing bars while avoiding balloons & obstructions. It seems like landing on different bars awards different points to the player, or maybe landing at certain spots of the bars like the edges gives the player one amount of points while landing at the center gives another amount. + +The player's soaring & descending speed is displayed at the center of the upper part of the screen. The maximum speed is 49, and if this speed is reached, The DECO Kid lands on the roof of the building. If the speed is below 8, The DECO Kid will not bounce (the flyer states terminal here, so either he will fall back to the previous terminal or a life will be lost). Once the DECO Kid moves on to the next terminal, all the points from bouncing on the landing bars will be tallied up. There are also hammocks that can be landed on at any speed. + +When the player lands the DECO Kid on the roof of the skyscraper on the right, 3 reels of figures appear (similar to a jackpot machine). By pressing the launch button, the player can try to stop them from revolving at the highest possible number present, and this amount is added to the player's score. + +If the player can land on all the bars with the D-E-C-O letters, then 50 more points are awarded for each landing bar. Extra lives occur at 3000, 5000, and 7000 points. As usual, the best way to make the DECO Kid fly high is by launching him when the trampoline is fully depressed. + 0.20 + 19810101T000000 + Data East Classics + 270 + 256x240 + media/mixrbv2/cmanhat.png + + + + manhatan.zip + Manhattan 24 Bunsyo (Japan) + A mass prison breakout has occurred and the prison warden has been kidnapped in this sideways scrolling shoot-em-up from Konami. The player controls a lonely police officer whose job it is to kill the hordes of escaped convicts and, eventually, rescue the kidnapped warden. Each level also has a number of civilian hostages that also roam the levels and need to be rescued. + +The player begins the game with only a pistol, but 2 extra weapons, in the form of a bazooka and a tear gas gun, can be collected. The 'Weapon Select' button cycles through the player's weapons via a display at the bottom of the screen. When the desired weapon is highlighted, pressing the Fire button will select and fire the desired weapon. + +Hostages will randomly run across the screen and can be rescued by running into them. Should the player accidentally shoot a hostage, all extra weapons will be lost leaving only the pistol. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + jailbrek.zip + Konami Classics + 240x224 + media/mixrbv2/jailbrek.png + + + + maniach.zip + Mania Challenge (set 1) + Mania Challenge is the sequel to the wrestling game Mat Mania. The gameplay and features (including the moves of the wrestlers, except for the addition of a drop kick) are completely identical. The most important addition is a versus mode against another human players. The unnamed wrestler protagonist from the original version is now called Dynamite Tommy. In the versus mode he only can fight a clone character with identical moves known as Hurricane Joe. +In the single-player mode the roster from the original game has been made smaller. Dynamite Tommy has to fight Insane Warrior, Golden Hulk and Hurricane Joe (except when continuing a two-player game in single-player as Joe, then Tommy is an opponent). The three other wrestlers Karate Fighter, Coco Savage and The Pirania are no longer available as opponents. After completing the game all three of them can be fought again in an endless loop. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/maniach.png + + + + maniach2.zip + Mania Challenge (set 2) + Mania Challenge is the sequel to the wrestling game Mat Mania. The gameplay and features (including the moves of the wrestlers, except for the addition of a drop kick) are completely identical. The most important addition is a versus mode against another human players. The unnamed wrestler protagonist from the original version is now called Dynamite Tommy. In the versus mode he only can fight a clone character with identical moves known as Hurricane Joe. +In the single-player mode the roster from the original game has been made smaller. Dynamite Tommy has to fight Insane Warrior, Golden Hulk and Hurricane Joe (except when continuing a two-player game in single-player as Joe, then Tommy is an opponent). The three other wrestlers Karate Fighter, Coco Savage and The Pirania are no longer available as opponents. After completing the game all three of them can be fought again in an endless loop. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + maniach.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/maniach.png + + + + maniacsqa.zip + Maniac Square (protected, Version 1.0, Checksum CF2D) + This is a Tetris style puzzle game by Gaelco. +As a player you have to complete the number of lines before time runs out. + 0.50 + 19960101T000000 + Gaelco + Gaelco + Puzzle-Game / Fall + 2912 + 1-2 + maniacsq.zip + Gaelco + 320x240 + media/mixrbv2/maniacsq.png + + + + maniacsq.zip + Maniac Square (protected, Version 1.0, Checksum DEEE) + This is a Tetris style puzzle game by Gaelco. +As a player you have to complete the number of lines before time runs out. + 0.50 + 19960101T000000 + Gaelco + Gaelco + Puzzle-Game / Fall + 2912 + 1-2 + Gaelco + 320x240 + media/mixrbv2/maniacsq.png + + + + maniacsqu.zip + Maniac Square (unprotected, Version 1.0, Checksum BB73) + This is a Tetris style puzzle game by Gaelco. +As a player you have to complete the number of lines before time runs out. + 0.50 + 19960101T000000 + Gaelco + Gaelco + Puzzle-Game / Fall + 2912 + 1-2 + maniacsq.zip + Gaelco + 320x240 + media/mixrbv2/maniacsq.png + + + + maniacsp.zip + Maniac Square (ver 1.0, checksum b602, prototype) + This is a Tetris style puzzle game by Gaelco. +As a player you have to complete the number of lines before time runs out. + 0.50 + 19960101T000000 + Gaelco + Gaelco + Puzzle-Game / Fall + 2912 + 1-2 + maniacsq.zip + Gaelco + 320x240 + media/mixrbv2/maniacsq.png + + + + manybloc.zip + Many Block + Many Block (c) 1991 Bee-Oh. - TECHNICAL - Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 3 Mhz) Sound Chips : YM2203 (@ 1.5 Mhz), (2x) OKI6295 (@ 24.242 Khz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Released in December 1991. Defa + 0.70 + 19910101T000000 + Bee-Oh + Bee-Oh + Puzzle-Game / Glide + 2891 + 1-2 + NMK + 270 + 256x240 + media/mixrbv2/manybloc.png + + + + mappyj.zip + Mappy (Japan) + Export version by Bally/Midway for North America. Game developed in Japan by Namco. For more information about the game, please see the original Namco version entry. + 0.90 + 19830101T000000 + Namco + Namco + Platform / Run Jump + 2915 + 1-2 + mappy.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/mappy.png + + + + mappy.zip + Mappy (US) + Export version by Bally/Midway for North America. Game developed in Japan by Namco. For more information about the game, please see the original Namco version entry. + 0.90 + 19830101T000000 + Namco + Namco + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/mappy.png + + + + mmaze.zip + Marchen Maze (Japan) + The player take control of a girl named Alice who walks over scrolling platforms, through nine different isometric worlds and she must knocks enemies over the edge with her bubble blower, while collecting various powerups along the way. Holding the fire button down generates bigger bubbles. The enemies attack shooting marbles at her, that can make she fall over the edge unless they are avoided or jumped over. + 0.70 + 19880101T000000 + Namco + Namco + Shooter + 2646 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/mmaze.png + + + + mmaze2.zip + Marchen Maze (Japan, hack?) + The player take control of a girl named Alice who walks over scrolling platforms, through nine different isometric worlds and she must knocks enemies over the edge with her bubble blower, while collecting various powerups along the way. Holding the fire button down generates bigger bubbles. The enemies attack shooting marbles at her, that can make she fall over the edge unless they are avoided or jumped over. + 0.70 + 19880101T000000 + Namco + Namco + Shooter + 2646 + 1-2 + mmaze.zip + Namco Classics + 288x224 + media/mixrbv2/mmaze.png + + + + marineb.zip + Marine Boy + In Marine Boy, you play as a diver equipped with a harpoon who must at each level reach a mermaid in a shell located at the bottom of the water. This is a vertical shoot 'em up with a scroll down. You will face different sea creatures such as orcas, dolphins or jellyfish. Mermaids encountered along the way will give you bonus points. Be careful your oxygen is limited! + 0.50 + 19820101T000000 + Orca + Orca + Shooter / Plane + 2928 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/marineb.png + + + + mariner.zip + Mariner + An old horizontally scrolling shoot'em up with a vertically scrolling background. The player has to guide a submarine armed with torpedoes and missiles through five levels while fighting different underwater terrors. At the end of each area the boss-submarine appears. + 0.50 + 19810101T000000 + Amenip + Amenip + Shooter / Horizontal + 2876 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/mariner.png + + + + marioj.zip + Mario Bros. (Japan) + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + mario.zip + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + marioe.zip + Mario Bros. (US, Revision E) + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + mario.zip + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + mariof.zip + Mario Bros. (US, Revision F) + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + mario.zip + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + mario.zip + Mario Bros. (US, Revision G) + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + markham.zip + Markham + When you run the game for the first time, the default highscore table has all entries set to 010000. + 0.50 + 19830101T000000 + Sunsoft + Sunsoft + Shoot'em Up + 79 + 1-2 + Mame + 240x224 + media/mixrbv2/markham.png + + + + mars.zip + Mars + Mars - God of War was the first Gottlieb game with speech. + +5,240 units were produced. + 0.70 + 19810101T000000 + Artic + Artic + Shoot'em Up + 79 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/mars.png + + + + mmatrixa.zip + Mars Matrix (000412 Asia) + A prediction is that before human civilization, there was once an advanced civilization on Mars. A sorceress destroyed the civilization and everything that was remembered of it, except a chip called "INFINITY". In 2100, millions of people were starving due to massive food shortages and has caused civil wars around the world. Centuries later, however, the world government had sent colonists to Mars which began to solve these problems. At a nearby farm, the Infinity chip was discovered and it revealed all the technology of the advanced civilization. In 2309, a Declaration of Independence has been sent to Earth. Large armies have been amassed on Mars, and a gigantic armada was waiting for any attack from Earth. The Earth government sends out a fleet of battleships followed by a special air raid unit called ACID; ACID is equipped with a new fighter ship known as the Mosquito. Their mission is to enter Mars, stop the rebel violence, locate and destroy the rebel leader, whoever... or whatever it may be... + 0.70 + 20000101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + mmatrix.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mmatrix.png + + + + mmatrixj.zip + Mars Matrix (000412 Japan) + A prediction is that before human civilization, there was once an advanced civilization on Mars. A sorceress destroyed the civilization and everything that was remembered of it, except a chip called "INFINITY". In 2100, millions of people were starving due to massive food shortages and has caused civil wars around the world. Centuries later, however, the world government had sent colonists to Mars which began to solve these problems. At a nearby farm, the Infinity chip was discovered and it revealed all the technology of the advanced civilization. In 2309, a Declaration of Independence has been sent to Earth. Large armies have been amassed on Mars, and a gigantic armada was waiting for any attack from Earth. The Earth government sends out a fleet of battleships followed by a special air raid unit called ACID; ACID is equipped with a new fighter ship known as the Mosquito. Their mission is to enter Mars, stop the rebel violence, locate and destroy the rebel leader, whoever... or whatever it may be... + 0.70 + 20000101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + mmatrix.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mmatrix.png + + + + mmatrixd.zip + Mars Matrix (000412 USA Phoenix Edition) + A prediction is that before human civilization, there was once an advanced civilization on Mars. A sorceress destroyed the civilization and everything that was remembered of it, except a chip called "INFINITY". In 2100, millions of people were starving due to massive food shortages and has caused civil wars around the world. Centuries later, however, the world government had sent colonists to Mars which began to solve these problems. At a nearby farm, the Infinity chip was discovered and it revealed all the technology of the advanced civilization. In 2309, a Declaration of Independence has been sent to Earth. Large armies have been amassed on Mars, and a gigantic armada was waiting for any attack from Earth. The Earth government sends out a fleet of battleships followed by a special air raid unit called ACID; ACID is equipped with a new fighter ship known as the Mosquito. Their mission is to enter Mars, stop the rebel violence, locate and destroy the rebel leader, whoever... or whatever it may be... + 0.70 + 20000101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + mmatrix.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mmatrix.png + + + + mmatrix.zip + Mars Matrix (000412 USA) + A prediction is that before human civilization, there was once an advanced civilization on Mars. A sorceress destroyed the civilization and everything that was remembered of it, except a chip called "INFINITY". In 2100, millions of people were starving due to massive food shortages and has caused civil wars around the world. Centuries later, however, the world government had sent colonists to Mars which began to solve these problems. At a nearby farm, the Infinity chip was discovered and it revealed all the technology of the advanced civilization. In 2309, a Declaration of Independence has been sent to Earth. Large armies have been amassed on Mars, and a gigantic armada was waiting for any attack from Earth. The Earth government sends out a fleet of battleships followed by a special air raid unit called ACID; ACID is equipped with a new fighter ship known as the Mosquito. Their mission is to enter Mars, stop the rebel violence, locate and destroy the rebel leader, whoever... or whatever it may be... + 0.70 + 20000101T000000 + Takumi + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/mmatrix.png + + + + mtlchampa.zip + Martial Champion (ver AAA) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + mtlchamp.zip + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + mtlchamp1.zip + Martial Champion (ver EAA) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + mtlchamp.zip + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + mtlchamp.zip + Martial Champion (ver EAB) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + mtlchampj.zip + Martial Champion (ver JAA) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + mtlchamp.zip + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + mtlchampu1.zip + Martial Champion (ver UAD) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + mtlchamp.zip + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + mtlchampu.zip + Martial Champion (ver UAE) + Martial Champion &copy; 1993 Konami Company, Limited. + +Knock-Out The Competitions! 10 typical fighters battle against each other in a tournament to win the belt of world Martial Champion. + 0.70 + 19930101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + mtlchamp.zip + Konami Classics + 384x224 + media/mixrbv2/mtlchamp.png + + + + marvlandj.zip + Marvel Land (Japan) + Great horizontal platform game that takes place in a fantasy amusement park. You play as Prince Paco, who is on a quest to save Princess Luxy from the evil Mole King. + 0.70 + 19890101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + marvland.zip + Namco Classics + 288x224 + media/mixrbv2/marvland.png + + + + marvland.zip + Marvel Land (US, prototype?) + Great horizontal platform game that takes place in a fantasy amusement park. You play as Prince Paco, who is on a quest to save Princess Luxy from the evil Mole King. + 0.70 + 19890101T000000 + Namco + Namco + Platform / Fighter Scrolling + 2896 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/marvland.png + + + + msha.zip + Marvel Super Heroes (951024 Asia) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshbr1.zip + Marvel Super Heroes (951024 Brazil) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + msh.zip + Marvel Super Heroes (951024 Euro) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshjr1.zip + Marvel Super Heroes (951024 Japan) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshud.zip + Marvel Super Heroes (951024 USA Phoenix Edition) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshu.zip + Marvel Super Heroes (951024 USA) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshb.zip + Marvel Super Heroes (951117 Brazil) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshh.zip + Marvel Super Heroes (951117 Hispanic) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshj.zip + Marvel Super Heroes (951117 Japan) + Play as your favorite Marvel character: Wolverine, Spider-Man, The Incredible Hulk, Captain America, Iron Man, Psylocke, Shuma-Gorath, Blackheart, Juggernaut or Magneto. Power up with an Infinity Gem - Grant your super hero healing power, super attacks and increased strength. + 0.80 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + msh.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/msh.png + + + + mshvsfa1.zip + Marvel Super Heroes vs Street Fighter (970620 Asia) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfa.zip + Marvel Super Heroes vs Street Fighter (970625 Asia) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfb1.zip + Marvel Super Heroes vs Street Fighter (970625 Brazil) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsf.zip + Marvel Super Heroes vs Street Fighter (970625 Euro) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfh.zip + Marvel Super Heroes vs Street Fighter (970625 Hispanic) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfj2.zip + Marvel Super Heroes vs Street Fighter (970625 Japan) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfu1d.zip + Marvel Super Heroes vs Street Fighter (970625 USA Phoenix Edition) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfu1.zip + Marvel Super Heroes vs Street Fighter (970625 USA) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfj1.zip + Marvel Super Heroes vs Street Fighter (970702 Japan) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfj.zip + Marvel Super Heroes vs Street Fighter (970707 Japan) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfb.zip + Marvel Super Heroes vs Street Fighter (970827 Brazil) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mshvsfu.zip + Marvel Super Heroes vs Street Fighter (970827 USA) + Marvel Super Heroes vs. Street Fighter is the fourth Marvel Comics-licensed fighting game produced by Capcom and the second installment in the Marvel vs. Capcom series. It is a sequel to X-Men vs. Street Fighter which replaces most of the X-Men characters with characters from Marvel Super Heroes. In an attempt to balance the previous game's problems, the game engine was altered, although it remained aesthetically the same which is what the game was criticized for. The game was released for the arcade in 1997 + +Marvel Super Heroes vs. Street Fighter features a roster of 17 playable fighters, with nine characters from the Street Fighter universe and eight heroes from the Marvel Universe, It utilizes the same one-on-one tag team format previously employed in X-Men vs. Street Fighter. +The player chooses a team of two fighters, each sporting their own life gauge; at the start of the match, the first selected character is controlled by the player, while the second character remains off-screen and acts as support. + + 0.80 + 19970101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mshvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mshvsf.png + + + + mvscur1.zip + Marvel vs Capcom - clash of super heroes (971222 USA) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscar1.zip + Marvel vs Capcom - clash of super heroes (980112 Asia) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscr1.zip + Marvel vs Capcom - clash of super heroes (980112 Euro) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscjr1.zip + Marvel vs Capcom - clash of super heroes (980112 Japan) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvsca.zip + Marvel vs Capcom - clash of super heroes (980123 Asia) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscb.zip + Marvel vs Capcom - clash of super heroes (980123 Brazil) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvsc.zip + Marvel vs Capcom - clash of super heroes (980123 Euro) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvsch.zip + Marvel vs Capcom - clash of super heroes (980123 Hispanic) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscj.zip + Marvel vs Capcom - clash of super heroes (980123 Japan) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscjsing.zip + Marvel vs Capcom - clash of super heroes (980123 Japan, single PCB) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscud.zip + Marvel vs Capcom - clash of super heroes (980123 USA Phoenix Edition) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + mvscu.zip + Marvel vs Capcom - clash of super heroes (980123 USA) + Marvel vs. Capcom: Clash of Super Heroes is the fifth Marvel Comics-licensed fighting game by Capcom and the third game in the Marvel vs. Capcom series. In contrast to X-Men vs. Street Fighter and Marvel Super Heroes vs. Street Fighter, the game features characters from numerous Capcom franchises such as Mega Man and Strider, rather than just Street Fighter characters. The game takes place within the Marvel comic continuity, as Professor Charles Xavier calls out for heroes to stop him before he merges with the consciousness of Magneto and becomes the being known as Onslaught, the final boss. The game was developed in late 1997 and first released in January 1998. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + mvsc.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mvsc.png + + + + marvins.zip + Marvin's Maze + A maze game where you fight against Robonoids while trying to clear the maze of dots. Two ways to finish each rack: Eat up all the dots, or destroy a certain number of Robonoids (listed at the bottom of the screen). Two ways to destroy the Robonoids: Shoot them, or remove the ground from under them at certain points of the maze (the 'Trick'). + 0.70 + 19830101T000000 + SNK + SNK + Action + 10 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/marvins.png + + + + masao.zip + Masao + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + mario.zip + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + kamenrid.zip + Masked Riders Club Battle Race / Kamen Rider Club Battle Racer + Masked Riders Club: Battle Race is a top-down action racing game based on the Kamen Rider television franchise. The game consists of nine vertically-scrolling levels that need to be completed before time runs out, with themes such as an industrial environment, a beach, a snowy environment etc., each with its own enemies. At the start the player chooses one of ten superhero Kamen Riders (Rider 1, Rider 2, Rider V3, Riderman, Rider X, Amazon, Stronger, Super1, Rider 2X or Black RX). The riders are grasshopper-themed altered humans and each come with his own motorcycle rated in three different statistics as well as a unique weapon such as a blade, a hook, a short burst of fire, or a pole. The single-player game is only played on the left side of the screen. The middle part shows progress through the level map and the right map the global map of the nine levels. + 0.70 + 19930101T000000 + Banpresto + Banpresto + Race, Driving / Motorcycle + 2943 + 1-2 + Banpresto + 384x240 + media/mixrbv2/kamenrid.png + + + + mastboyo.zip + Master Boy (1987, Z80 hardware, Covielsa, set 1) + A quiz game. + 0.50 + 19910101T000000 + Gaelco + Gaelco + Quiz / Spanish + 2962 + 1-2 + Gaelco + 256x224 + media/mixrbv2/mastboyo.png + + + + mastboyoa.zip + Master Boy (1987, Z80 hardware, Covielsa, set 2) + A quiz game. + 0.50 + 19910101T000000 + Gaelco + Gaelco + Quiz / Spanish + 2962 + 1-2 + mastboyo.zip + Gaelco + 256x224 + media/mixrbv2/mastboyo.png + + + + mastboyob.zip + Master Boy (1987, Z80 hardware, Ichi-Funtel) + A quiz game. + 0.50 + 19910101T000000 + Gaelco + Gaelco + Quiz / Spanish + 2962 + 1-2 + mastboyo.zip + Gaelco + 256x224 + media/mixrbv2/mastboyo.png + + + + masterwj.zip + Master of Weapon (Japan) + A seven-day nuclear storm brings on a big change on the earth. The earth cracks, the sea boils and the living things change. And human is no exception. After finishing of the cursed 7-day war, the remaining people change their cells and return to the nature in order to endure severe environmental changes. However, a selected part of the people - they had been called scientists - create a computer, which can lead the people in order to leave a seed humankind. This computer is called N. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + masterw.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/masterw.png + + + + masterwu.zip + Master of Weapon (US) + A seven-day nuclear storm brings on a big change on the earth. The earth cracks, the sea boils and the living things change. And human is no exception. After finishing of the cursed 7-day war, the remaining people change their cells and return to the nature in order to endure severe environmental changes. However, a selected part of the people - they had been called scientists - create a computer, which can lead the people in order to leave a seed humankind. This computer is called N. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + masterw.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/masterw.png + + + + masterw.zip + Master of Weapon (World) + A seven-day nuclear storm brings on a big change on the earth. The earth cracks, the sea boils and the living things change. And human is no exception. After finishing of the cursed 7-day war, the remaining people change their cells and return to the nature in order to endure severe environmental changes. However, a selected part of the people - they had been called scientists - create a computer, which can lead the people in order to leave a seed humankind. This computer is called N. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/masterw.png + + + + matmania.zip + Mat Mania + Mat Mania - The Prowrestling Network also known as "Exciting Hour - The Prowrestling Network" + 0.70 + 19850101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/matmania.png + + + + matchit.zip + Match It + 0.50 + 19890101T000000 + Asiatic board game + 2647 + Mame + 512x256 + media/mixrbv2/matchit.png + + + + matchit2.zip + Match It II + Match It II (c) 1993 Tamtex. - TECHNICAL - Main CPU : V30 (@ 8 Mhz), Z80 (@ 3.579545 Mhz) Sound Chips : YM2151 (@ 3.579545 Mhz), DAC Players : 2 Control : 8-way Joystick Buttons : 3 - TRIVIA - Released in June 1993. This game is known in Japan as "S + 0.50 + 19930101T000000 + Tamtex + Tamtex + Puzzle-Game / Equalize + 2864 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/matchit2.png + + + + matrimbl.zip + Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) + The king of certain country wants to find a worthy successor for the throne and the ideal husband for his little daughter (or a beautiful and strong woman for his older son). So he holds a fighting tournament where the prize is the hand of the princess and the throne succession. + 0.85 + 20020101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + matrim.zip + Neo-Geo + 320x224 + media/mixrbv2/matrim.png + + + + matrimbh.zip + Matrimelee / Shin Gouketsuji Ichizoku Toukon (Enable Hidden Characters V2) + The king of certain country wants to find a worthy successor for the throne and the ideal husband for his little daughter (or a beautiful and strong woman for his older son). So he holds a fighting tournament where the prize is the hand of the princess and the throne succession. + 0.85 + 20020101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + matrim.zip + Neo-Geo + 320x224 + media/mixrbv2/matrim.png + + + + matrim.zip + Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660) (NGH-2660) + The king of certain country wants to find a worthy successor for the throne and the ideal husband for his little daughter (or a beautiful and strong woman for his older son). So he holds a fighting tournament where the prize is the hand of the princess and the throne succession. + 0.85 + 20020101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/matrim.png + + + + maxrpm.zip + Max RPM (ver 2) + Max RPM is a racing arcade game that was released by Bally Midway in 1986; it runs on their MCR-3 hardware but without the two General Instrument AY-3-8910s. The cabinet has a 25-inch bezel which divides its monitor into two sections - and both players must use a steering wheel, a gas pedal, and a four-position shifter, to take control of a blue (1P) or red (2P) car (but if only one player is present, the red car shall get controlled by the CPU). If the other player's car is in one player's field of vision, it will appear on the other side of the screen as well as his own; a rearview mirror is also present at the top of both sides of the screen, so one player can see the other coming up behind him. If one player fails to finish a race in the qualifying time, his game will immediately be over - and the concept of the split-screen cabinet was later reused by Bally Midway in the following year, upon release of Spy Hunter II. + 0.30 + 19860101T000000 + Bally Midway + Bally Midway + Race 3rd Pers. view + 2888 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/maxrpm.png + + + + mayday.zip + Mayday (set 1) + The player's ship flies over a horizontally scrolling planet surface. Waves of enemy ships attack and must be destroyed for the player to advance to the next planet. The Mayday button slows the game down for five seconds. The player's ship fires both forward and back. + +The game itself is not a direct copy of Defender. It has an 8-Way joystick, two fire buttons (forward and backwards) and a Mayday button. The Mayday button slows everything on-screen down for a few seconds and makes the screen flash. Although it only scrolls from right to left, you can speed up and slow down your ship's forward momentum. The first wave that is over the sea of submarines. The submarines, which look a lot like Baiters in Defender, shoot along the bottom of the screen and fire up at the player's ship. The player's shots are aimed diagonally down at the waves. The second wave is flying through a cavern with swarms of aliens flying and bouncing from right to left towards the player. Unlike Defender, you can crash into the cavern walls. The third wave is set over a gently rolling planet surface. Later waves follow a similar pattern. + 0.30 + 19800101T000000 + Hoei + Hoei + Shoot'em Up + 79 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/mayday.png + + + + maydaya.zip + Mayday (set 2) + The player's ship flies over a horizontally scrolling planet surface. Waves of enemy ships attack and must be destroyed for the player to advance to the next planet. The Mayday button slows the game down for five seconds. The player's ship fires both forward and back. + +The game itself is not a direct copy of Defender. It has an 8-Way joystick, two fire buttons (forward and backwards) and a Mayday button. The Mayday button slows everything on-screen down for a few seconds and makes the screen flash. Although it only scrolls from right to left, you can speed up and slow down your ship's forward momentum. The first wave that is over the sea of submarines. The submarines, which look a lot like Baiters in Defender, shoot along the bottom of the screen and fire up at the player's ship. The player's shots are aimed diagonally down at the waves. The second wave is flying through a cavern with swarms of aliens flying and bouncing from right to left towards the player. Unlike Defender, you can crash into the cavern walls. The third wave is set over a gently rolling planet surface. Later waves follow a similar pattern. + 0.30 + 19800101T000000 + Hoei + Hoei + Shoot'em Up + 79 + 1-2 + mayday.zip + Midway Classics + 292x240 + media/mixrbv2/mayday.png + + + + maydayb.zip + Mayday (set 3) + The player's ship flies over a horizontally scrolling planet surface. Waves of enemy ships attack and must be destroyed for the player to advance to the next planet. The Mayday button slows the game down for five seconds. The player's ship fires both forward and back. + +The game itself is not a direct copy of Defender. It has an 8-Way joystick, two fire buttons (forward and backwards) and a Mayday button. The Mayday button slows everything on-screen down for a few seconds and makes the screen flash. Although it only scrolls from right to left, you can speed up and slow down your ship's forward momentum. The first wave that is over the sea of submarines. The submarines, which look a lot like Baiters in Defender, shoot along the bottom of the screen and fire up at the player's ship. The player's shots are aimed diagonally down at the waves. The second wave is flying through a cavern with swarms of aliens flying and bouncing from right to left towards the player. Unlike Defender, you can crash into the cavern walls. The third wave is set over a gently rolling planet surface. Later waves follow a similar pattern. + 0.30 + 19800101T000000 + Hoei + Hoei + Shoot'em Up + 79 + 1-2 + mayday.zip + Midway Classics + 292x240 + media/mixrbv2/mayday.png + + + + mofflott.zip + Maze of Flott (Japan) + Maze of Flott is an arcade game with the basic rules and objective of a typical maze game. The player controls an automobile, finding its way through grids of buildings and collecting keys. Although the game plays relatively complex, most of the rules of the game are straightforward. The player is allowed to move and turn the automobile in any direction. A 180-degree turn is also possible during the game. + 0.50 + 19890101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/mofflott.png + + + + mazingerj.zip + Mazinger Z (Japan, ver. 94/06/27) + Vertical shoot'em up with 3 selectable characters: Mazinger Z, Great Mazinger and Grendizer. + 0.65 + 19940101T000000 + Dynamic PL + Banpresto + Shoot'em Up + 79 + 1-2 + mazinger.zip + Banpresto + 270 + 384x240 + media/mixrbv2/mazinger.png + + + + mazinger.zip + Mazinger Z (World, ver. 94/06/27) + Vertical shoot'em up with 3 selectable characters: Mazinger Z, Great Mazinger and Grendizer. + 0.65 + 19940101T000000 + Dynamic PL + Banpresto + Shoot'em Up + 79 + 1-2 + Banpresto + 270 + 384x240 + media/mixrbv2/mazinger.png + + + + mechattj.zip + Mechanized Attack (Japan) + Mechanized Attack is a game where the player uses a machine gun to stage an assault on a tropical island that's home to a cyborg army. Battle through numerous stages beginning with an approach to the island. This first stage is held over the water and features at attack on a number of small gunboats, a helicopter, and an entire battleship. As the player progresses through the stages of the island, the human (and even canine) enemies are revealed to be robots when the flesh is destroyed. At various junctures of the game, the player is allowed to choose which game path to pursue. + 0.70 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-2 + mechatt.zip + SNK Classics + 256x224 + media/mixrbv2/mechatt.png + + + + mechattu.zip + Mechanized Attack (US) + Mechanized Attack is a game where the player uses a machine gun to stage an assault on a tropical island that's home to a cyborg army. Battle through numerous stages beginning with an approach to the island. This first stage is held over the water and features at attack on a number of small gunboats, a helicopter, and an entire battleship. As the player progresses through the stages of the island, the human (and even canine) enemies are revealed to be robots when the flesh is destroyed. At various junctures of the game, the player is allowed to choose which game path to pursue. + 0.70 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-2 + mechatt.zip + SNK Classics + 256x224 + media/mixrbv2/mechatt.png + + + + mechattu1.zip + Mechanized Attack (US, Version 1, Single Player) + Mechanized Attack is a game where the player uses a machine gun to stage an assault on a tropical island that's home to a cyborg army. Battle through numerous stages beginning with an approach to the island. This first stage is held over the water and features at attack on a number of small gunboats, a helicopter, and an entire battleship. As the player progresses through the stages of the island, the human (and even canine) enemies are revealed to be robots when the flesh is destroyed. At various junctures of the game, the player is allowed to choose which game path to pursue. + 0.70 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-2 + mechatt.zip + SNK Classics + 256x224 + media/mixrbv2/mechatt.png + + + + mechatt.zip + Mechanized Attack (World) + Mechanized Attack is a game where the player uses a machine gun to stage an assault on a tropical island that's home to a cyborg army. Battle through numerous stages beginning with an approach to the island. This first stage is held over the water and features at attack on a number of small gunboats, a helicopter, and an entire battleship. As the player progresses through the stages of the island, the human (and even canine) enemies are revealed to be robots when the flesh is destroyed. At various junctures of the game, the player is allowed to choose which game path to pursue. + 0.70 + 19890101T000000 + SNK + SNK + Lightgun Shooter + 32 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/mechatt.png + + + + megaforcu.zip + Mega Force (US) + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + starforc.zip + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + megaforc.zip + Mega Force (World) + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + starforc.zip + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + mmancp2ur2.zip + Mega Man - The Power Battle (950925 USA, SAMPLE Version) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + mmancp2ur1.zip + Mega Man - The Power Battle (950926 USA, SAMPLE Version) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + megamana.zip + Mega Man - the power battle (951006 Asia) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + megaman.zip + Mega Man - the power battle (951006 USA) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + mmancp2u.zip + Mega Man - The Power Battle (951006 USA, SAMPLE Version) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + megaman2a.zip + Mega Man 2 - the power fighters (960708 Asia) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + megamn2d.zip + Mega Man 2 - the power fighters (960708 USA Phoenix Edition) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + megaman2.zip + Mega Man 2 - the power fighters (960708 USA) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + megaman2h.zip + Mega Man 2 - the power fighters (960712 Hispanic) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + mtwins.zip + Mega Twins (chiki chiki boys 900619 etc) + The game features two twins who are attempting to re-take control of their land, Alurea, after a monster unexpectedly attacks, destroying everything in its path. The people of Alurea have lived in peace for a thousand years and have forgotten how to fight, yet the land's only survivors, the twin sons of the king, must take up the challenge and return their kingdom to its former glory. The two twins, aged around 15 at the time the game takes place, venture forth in search of a legendary stone known as "Dragon Blue Eyes", which is rumored to be able to put everything back to rights. + 0.80 + 19900101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/mtwins.png + + + + megazoneh.zip + Mega Zone (program code H) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + megazone.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megazonei.zip + Mega Zone (program code I) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + megazone.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megazonej.zip + Mega Zone (program code J) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + megazone.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megazone.zip + Mega Zone (program code L) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megazonea.zip + Mega Zone (unknown program code 1) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + megazone.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megazoneb.zip + Mega Zone (unknown program code 2) + This game has flavors of several different video games rolled into one. It is mostly like Xevious, being an overhead shooter against a plethora of enemies, each with a unique characteristic. Unlike Xevious, however, that only allowed you to travel in one straight path, Mega Zone periodically allows you to choose different paths. For most of the game, the player's ship flies along a river. When the river forks, the player has the option of following either fork. + 0.60 + 19830101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + megazone.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/megazone.png + + + + megadon.zip + Megadon + Step into Megadon from Photar industries. It's an action filled journey the likes of which never existed before. Players master 255 levels of play while hunting Cosmic Infidels and being pursued by Terrible Ergs. Megadon stays exciting because it fuses a maze game and space game together. Player pilot an Ion powered Megadon Fighter through space and around obstacles. + 0.50 + 19820101T000000 + Epos Corporation (Photar Industries license) + Epos Corporation (Photar Industries license) + Shooter + 2646 + 1-2 + Mame + 270 + 272x236 + media/mixrbv2/megadon.png + + + + meijinsn.zip + Meijinsen (set 1) + Meijinsen (c) 1986 SNK. - TECHNICAL - Main CPU : 68000 (@ 9 Mhz), Z80 (@ 4 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 232 x 224 pixels Screen refresh : 60.00 Hz Palette colors : 32 Players : 2 Control : 8-wa + 0.50 + 19860101T000000 + SNK + SNK + Shougi + 2961 + 1-2 + SNK Classics + 232x224 + media/mixrbv2/meijinsn.png + + + + meijinsna.zip + Meijinsen (set 2) + Meijinsen (c) 1986 SNK. - TECHNICAL - Main CPU : 68000 (@ 9 Mhz), Z80 (@ 4 Mhz) Sound Chips : AY8910 (@ 2 Mhz) Screen orientation : Horizontal Video resolution : 232 x 224 pixels Screen refresh : 60.00 Hz Palette colors : 32 Players : 2 Control : 8-wa + 0.50 + 19860101T000000 + SNK + SNK + Shougi + 2961 + 1-2 + meijinsn.zip + SNK Classics + 232x224 + media/mixrbv2/meijinsn.png + + + + kikcubic.zip + Meikyu Jima (Japan) + Meikyuujima (c) 1988 Irem. - TECHNICAL - Main CPU : Z80 (@ 3.579645 Mhz) Sound CPU : Z80 (@ 3.579645 Mhz) Sound Chips : YM2151 (@ 3.579645 Mhz), DAC Players : 2 Control : 4-way joystick Buttons : 2 - TRIVIA - Developed by Nanao Corporation. Meikyuuji + 0.70 + 19880101T000000 + Irem + Irem + Puzzle-Game + 26 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/kikcubic.png + + + + meikyuh.zip + Meikyuu Hunter G (Japan, set 1) + Adapted from the animated cartoon of the same name. Up to three players, each controlling a Ghostbuster, must run around a top-down universal scrolling terrain, shoot creatures and then try to suck up ghosts with their plasma guns. Players can shoot and then collect various power-ups, including a protective Aura, shot and beam boosters, and a "Green Ghost" Slimer shield satellite. Has interesting screen transition effects and a well-orchestrated version of the movie's popular theme song. + 0.60 + 19870101T000000 + Data East + Activision + Shooter / Run and Gun + 2903 + 1-2 + ghostb.zip + Data East Classics + 256x240 + media/mixrbv2/ghostb.png + + + + meikyuha.zip + Meikyuu Hunter G (Japan, set 2) + Adapted from the animated cartoon of the same name. Up to three players, each controlling a Ghostbuster, must run around a top-down universal scrolling terrain, shoot creatures and then try to suck up ghosts with their plasma guns. Players can shoot and then collect various power-ups, including a protective Aura, shot and beam boosters, and a "Green Ghost" Slimer shield satellite. Has interesting screen transition effects and a well-orchestrated version of the movie's popular theme song. + 0.60 + 19870101T000000 + Data East + Activision + Shooter / Run and Gun + 2903 + 1-2 + ghostb.zip + Data East Classics + 256x240 + media/mixrbv2/ghostb.png + + + + myqbert.zip + Mello Yello Q*bert + Q*bert is an isometric platform game with puzzle elements where the player controls the titular protagonist from a third-person perspective. Q*bert starts each game at the top of a pyramid of cubes, and moves by jumping diagonally from cube to cube. Landing on a cube causes it to change color, and changing every cube to the target color allows the player to progress to the next stage. + 0.90 + 19820101T000000 + D. Gottlieb & Co. + D. Gottlieb & Co. + Platform / Run Jump + 2915 + 1-2 + qbert.zip + Gottlieb + 270 + 256x240 + media/mixrbv2/qbert.png + + + + mercenario.zip + Mercenario (Commando bootleg) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + mercs.zip + Mercs (900302 etc) + The US faces a grave crisis! The former president has been kidnapped by a group of revolutionaries while on a trip on Central Africa meant to promote world peace. Take control of three highly skilled anti-terrorist soldiers and venture through enemy lines to save the former president & annihilate the rebel army in the process. Features solid graphics & sound, plenty of weapons & vehicles to use and hulking bosses to defeat. + 0.90 + 19900101T000000 + Capcom + Capcom + Shooter + 2646 + 1-3 + Capcom Play System + 270 + 384x224 + media/mixrbv2/mercs.png + + + + mercsur1.zip + Mercs (900302 USA) + The US faces a grave crisis! The former president has been kidnapped by a group of revolutionaries while on a trip on Central Africa meant to promote world peace. Take control of three highly skilled anti-terrorist soldiers and venture through enemy lines to save the former president & annihilate the rebel army in the process. Features solid graphics & sound, plenty of weapons & vehicles to use and hulking bosses to defeat. + 0.90 + 19900101T000000 + Capcom + Capcom + Shooter + 2646 + 1-3 + mercs.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/mercs.png + + + + mercsu.zip + Mercs (900608 USA) + The US faces a grave crisis! The former president has been kidnapped by a group of revolutionaries while on a trip on Central Africa meant to promote world peace. Take control of three highly skilled anti-terrorist soldiers and venture through enemy lines to save the former president & annihilate the rebel army in the process. Features solid graphics & sound, plenty of weapons & vehicles to use and hulking bosses to defeat. + 0.90 + 19900101T000000 + Capcom + Capcom + Shooter + 2646 + 1-3 + mercs.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/mercs.png + + + + merlinmm.zip + Merlins Money Maze + Merlin's Money Maze – a monstrously difficult cash-prizes maze game – also has a familiar-looking wizard and definitely feels like the work of the same authors as Cash Quiz and Wizz Quiz. + 0.50 + 19860101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1 + Konami Classics + 270 + 256x224 + media/mixrbv2/merlinmm.png + + + + metafox.zip + Meta Fox + A vertically scrolling shooter. + 0.50 + 19890101T000000 + SETA Corporation + SETA Corporation + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x224 + media/mixrbv2/metafox.png + + + + metlclsh.zip + Metal Clash (Japan) + Metal Clash is a futuristic fighter game for one or two players. In one player mode, the player pilots the metariod 'Saiber' to annihilate the alien robots. + +The player pilots his robot around the screen destroying enemy robots using punches and kicks. Flying saucers can be destroyed for a life energy boost. Items in the background can be destroyed for points. After defeating a set number of enemies the stage's boss will appear. The boss is more powerful than regular enemies, and has his own life energy bar shown on screen. Some of these bosses can be disarmed of their powerful weapons (such as guns and energy shields) which the player can equip and carry on into further levels. + +When hit by enemies, the player will lose energy and will drop any weapons that he has equipped. When the player's life energy is completely depleted he will lose a life. The game is over once all of the player's lives are lost. The game features no continues. + +The two player game is a vs. match between players. Gameplay continues until one player has lost all of his lives. + 0.50 + 19850101T000000 + Data East + Data East + Various + 39 + 1-2 + Data East Classics + 256x232 + media/mixrbv2/metlclsh.png + + + + metlfrzr.zip + Metal Freezer + 0.60 + 19890101T000000 + Seibu + Seibu + Action + 10 + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/metlfrzr.png + + + + metlhawkj.zip + Metal Hawk (Japan, Rev F) + Metal Hawk (c) 1988 Namco. - TECHNICAL - Namco System 2 hardware Game ID : MH Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : stick Buttons + 0.90 + 19880101T000000 + Namco + Namco + Shooter / Plane + 2928 + 1 + metlhawk.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/metlhawk.png + + + + metlhawk.zip + Metal Hawk (Rev C) + Metal Hawk (c) 1988 Namco. - TECHNICAL - Namco System 2 hardware Game ID : MH Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : stick Buttons + 0.90 + 19880101T000000 + Namco + Namco + Shooter / Plane + 2928 + 1 + Namco Classics + 270 + 288x224 + media/mixrbv2/metlhawk.png + + + + metlsavr.zip + Metal Saver + Metal Saver is a Snow Bros.-style game. One or two players take on the role of a boy named Hanbit and a girl named Narae, two Fighters who must battle through single screen levels, they shall destroy enemies using different skills to go the next levels. + 0.50 + 19940101T000000 + First Amusement + First Amusement + Platform / Run Jump + 2915 + 1-2 + SemiCom + 320x240 + media/mixrbv2/metlsavr.png + + + + mslugdg.zip + Metal Slug (Multifunction Hack, 20180430) + Metal Slug, originally released on the Neo Geo, is a side-scrolling shoot'em'up. + +The player(s) takes the role of a soldier (or two) and fights a gigantic army. Every level consists of running forward blasting anything that moves, while collecting power-ups along the way (there's also a wide selection of weaponry in the game). In the end of each level the player goes up against one gigantic boss. + +The PlayStation port introduces some extra features: there is a combat school where the player may fight with other players for the best time on each level and an art gallery. + + 0.90 + 19960101T000000 + Nazca Corporation + SNK + Shooter + 2646 + 1-2 + mslug.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug.png + + + + mslug.zip + Metal Slug - Super Vehicle-001 + Metal Slug, originally released on the Neo Geo, is a side-scrolling shoot'em'up. + +The player(s) takes the role of a soldier (or two) and fights a gigantic army. Every level consists of running forward blasting anything that moves, while collecting power-ups along the way (there's also a wide selection of weaponry in the game). In the end of each level the player goes up against one gigantic boss. + +The PlayStation port introduces some extra features: there is a combat school where the player may fight with other players for the best time on each level and an art gallery. + + 0.90 + 19960101T000000 + Nazca Corporation + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslug.png + + + + mslug2fm.zip + Metal Slug 2 - Super Vehicle-001/II (CZXINc FC2 Ver.2 20210415, hack) + As Marco, Eri, Tarma, or Fio, you must defeat the evil General Morden and his henchman. To do this, you must defeat various enemies that get in your way. Throughout the game, you can collect new weapons including the Heavy Machine Gun, Shot Gun, Rocket Launcher, Flame Shot, Laser Shot, Flame Bottles, and Armor Piercer. Also scattered throughout the game, you can ride in four different vehicles (aka: Slugs) such as the Metal Slug, Slug Flyer, Camel Slug, and SlugNoid. By using these vehicles, you can cause awesome destruction against Morden's evil army. Other items such as energy, extra ammunition, and food (eat too much and your player will gain weight) are also found throughout the game. + + 0.85 + 19980101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug2.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug2.png + + + + mslug2dg.zip + Metal Slug 2 - Super Vehicle-001/II (Multifunction Hack, 20170509) + As Marco, Eri, Tarma, or Fio, you must defeat the evil General Morden and his henchman. To do this, you must defeat various enemies that get in your way. Throughout the game, you can collect new weapons including the Heavy Machine Gun, Shot Gun, Rocket Launcher, Flame Shot, Laser Shot, Flame Bottles, and Armor Piercer. Also scattered throughout the game, you can ride in four different vehicles (aka: Slugs) such as the Metal Slug, Slug Flyer, Camel Slug, and SlugNoid. By using these vehicles, you can cause awesome destruction against Morden's evil army. Other items such as energy, extra ammunition, and food (eat too much and your player will gain weight) are also found throughout the game. + + 0.85 + 19980101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug2.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug2.png + + + + mslug2.zip + Metal Slug 2 - Super Vehicle-001/II (NGM-2410) (NGH-2410) + As Marco, Eri, Tarma, or Fio, you must defeat the evil General Morden and his henchman. To do this, you must defeat various enemies that get in your way. Throughout the game, you can collect new weapons including the Heavy Machine Gun, Shot Gun, Rocket Launcher, Flame Shot, Laser Shot, Flame Bottles, and Armor Piercer. Also scattered throughout the game, you can ride in four different vehicles (aka: Slugs) such as the Metal Slug, Slug Flyer, Camel Slug, and SlugNoid. By using these vehicles, you can cause awesome destruction against Morden's evil army. Other items such as energy, extra ammunition, and food (eat too much and your player will gain weight) are also found throughout the game. + + 0.85 + 19980101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslug2.png + + + + mslug2unity.zip + Metal Slug 2 - Super Vehicle-001/II Unity (Added Timer Ver. 2021-01-22) + As Marco, Eri, Tarma, or Fio, you must defeat the evil General Morden and his henchman. To do this, you must defeat various enemies that get in your way. Throughout the game, you can collect new weapons including the Heavy Machine Gun, Shot Gun, Rocket Launcher, Flame Shot, Laser Shot, Flame Bottles, and Armor Piercer. Also scattered throughout the game, you can ride in four different vehicles (aka: Slugs) such as the Metal Slug, Slug Flyer, Camel Slug, and SlugNoid. By using these vehicles, you can cause awesome destruction against Morden's evil army. Other items such as energy, extra ammunition, and food (eat too much and your player will gain weight) are also found throughout the game. + + 0.85 + 19980101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug2.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug2.png + + + + mslug2t.zip + Metal Slug 2 Turbo (NGM-9410) + As Marco, Eri, Tarma, or Fio, you must defeat the evil General Morden and his henchman. To do this, you must defeat various enemies that get in your way. Throughout the game, you can collect new weapons including the Heavy Machine Gun, Shot Gun, Rocket Launcher, Flame Shot, Laser Shot, Flame Bottles, and Armor Piercer. Also scattered throughout the game, you can ride in four different vehicles (aka: Slugs) such as the Metal Slug, Slug Flyer, Camel Slug, and SlugNoid. By using these vehicles, you can cause awesome destruction against Morden's evil army. Other items such as energy, extra ammunition, and food (eat too much and your player will gain weight) are also found throughout the game. + + 0.85 + 19980101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug2.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug2.png + + + + mslug3g.zip + Metal Slug 3 (Multifunction Hack, 20190119) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug3h.zip + Metal Slug 3 (NGH-2560) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug3v.zip + Metal Slug 3 (NGH-2560) (Enhanced Violence Version, hack by EEZEZY) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug3.zip + Metal Slug 3 (NGM-2560) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug3a.zip + Metal Slug 3 (NGM-2560, earlier) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug3unity.zip + Metal Slug 3 Unity (Added Timer Ver. 2021-02-13) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslug4a.zip + Metal Slug 4 (20th Anniversary) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug4lw.zip + Metal Slug 4 (Last Bullet Remix Hack) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug4dg.zip + Metal Slug 4 (Multifunction Hack, 20171225) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug4h.zip + Metal Slug 4 (NGH-2630) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug4.zip + Metal Slug 4 (NGM-2630) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + ms4plus.zip + Metal Slug 4 Plus (bootleg) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug4unity.zip + Metal Slug 4 Unity (Added Timer Ver. 2021-01-30) + The 5th episode of the most famous arcade-shooting-series comes bringing the unaltered classic gameplay, a new weapon, 6 new vehicles as well as 2 new soldiers for the pantheon. The most notable introduction to the series is the Metalish System, giving to the player a new possibility to score more points: after pick up certain shield-shape emblems, a timer bar will be displayed at the top of the screen. During this time, you must to shoot rapidly as many enemies as possible and, depending on your acting, you will receive a corresponding badge bonus that will be added to your score after completing it. When you die, the bonus wears off. + 0.80 + 20020101T000000 + MEGA Enterprise + SNK + Shooter + 2646 + 1-2 + mslug4.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug4.png + + + + mslug5b.zip + Metal Slug 5 (bootleg, set 1) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5b2.zip + Metal Slug 5 (bootleg, set 2) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + ms5pcb.zip + Metal Slug 5 (JAMMA PCB) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ms5pcb.png + + + + mslug5g.zip + Metal Slug 5 (Multifunction Hack, 20170523) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5wd.zip + Metal Slug 5 (New Campaign) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5w.zip + Metal Slug 5 (New Campaign, 2016-03-10) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5h.zip + Metal Slug 5 (NGH-2680) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5.zip + Metal Slug 5 (NGM-2680) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + ms5plus.zip + Metal Slug 5 Plus (bootleg) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug5unity.zip + Metal Slug 5 Unity (Added Timer Ver. 2021-04-23) + The latest installment of the most famous arcade-shooting series brings a lot of changes: this time, you will not face Morden's army like in the previous games, but with a new group of enemies that composes the already mentioned Ptolemaic Army. More content in this title, 3 guns and 2 vehicles from past games were reincorporated, as well as all brand new stuff of 3 vehicles. The most important addition is a sliding move: pressing the B Button when ducking will make your character slide for a short time in the ground. You are not be able to throw grenades, but your gun can be fired normally. + 0.85 + 20030101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug5.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug5.png + + + + mslug3b6.zip + Metal Slug 6 (Metal Slug 3 bootleg) + In the third installment of the Metal Slug series, General Morden is back and he plans to establish a new world order. You guide one of the heroes: Marco, Tarma, Eri or Fio as they blast their way through sidescrolling levels with a unique theme, filled with countless enemies and difficult bosses. You have to free hostages and you can ride bizarre vehicles such as camels, elephants, tanks and robots. + +In the Xbox version, additional game modes, such as Storming the Mothership and Chubby Isle Paradiso, can be unlocked upon completing the five arcade stages. A co-op mode has been included, but no online multiplayer. The only Xbox Live feature available allows you to compare singleplayer scores. + 0.80 + 20000101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslug3.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug3.png + + + + mslugunity.zip + Metal Slug Unity (Added Timer Ver. 2021-02-05) + Metal Slug, originally released on the Neo Geo, is a side-scrolling shoot'em'up. + +The player(s) takes the role of a soldier (or two) and fights a gigantic army. Every level consists of running forward blasting anything that moves, while collecting power-ups along the way (there's also a wide selection of weaponry in the game). In the end of each level the player goes up against one gigantic boss. + +The PlayStation port introduces some extra features: there is a combat school where the player may fight with other players for the best time on each level and an art gallery. + + 0.90 + 19960101T000000 + Nazca Corporation + SNK + Shooter + 2646 + 1-2 + mslug.zip + Neo-Geo + 320x224 + media/mixrbv2/mslug.png + + + + mslugxsrf.zip + Metal Slug X - Super Vehicle-001 (AzStar Soda Remix FC2 Version, hack) + Jump! Shoot! Evade! The time to test your reflexes has come once again! Scatter the swarms of oncoming enemies with triple the firepower (compared with past SNK games). A festival of dazzling destruction, take on the Metal Slug world, if you dare! + 0.85 + 19990101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslugx.zip + Neo-Geo + 320x224 + media/mixrbv2/mslugx.png + + + + mslugx.zip + Metal Slug X - Super Vehicle-001 (NGM-2500)(NGH-2500) + Jump! Shoot! Evade! The time to test your reflexes has come once again! Scatter the swarms of oncoming enemies with triple the firepower (compared with past SNK games). A festival of dazzling destruction, take on the Metal Slug world, if you dare! + 0.85 + 19990101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mslugx.png + + + + mslugxunity.zip + Metal Slug X - Super Vehicle-001 Unity (Added Timer Ver. 2021-01-23) + Jump! Shoot! Evade! The time to test your reflexes has come once again! Scatter the swarms of oncoming enemies with triple the firepower (compared with past SNK games). A festival of dazzling destruction, take on the Metal Slug world, if you dare! + 0.85 + 19990101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + mslugx.zip + Neo-Geo + 320x224 + media/mixrbv2/mslugx.png + + + + msisaac.zip + Metal Soldier Isaac II + It does NOT have a predecessor. The original prototype of this game was simply Metal Soldier Isaac and was called Metal Soldier Isaac II for its formal arcade release. + +The music for the attract mode was remixed, then reused for the first stage of "Darius". + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Vertical + 2889 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/msisaac.png + + + + metmqstr.zip + Metamoqester (International) + Metamoqester is a 2D arcade fighting game, similar in concept to Red Earth or Monster Maulers. One or two players (there is a co-op mode) fight against big monsters in deadly duels. There are three different characters to choose from. The game uses four buttons - Weak Attack, Medium Attack, Strong Attack, and Shoot/Throw Weapon. + 0.85 + 19950101T000000 + Banpresto + Banpresto + Fight + 14 + 1-2 + Banpresto + 384x240 + media/mixrbv2/metmqstr.png + + + + metamrpha.zip + Metamorphic Force (ver AAA) + Beat-'em-up with 4 selectable characters who have the power to morph into Were-animals. + 0.60 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + metamrph.zip + Konami Classics + 288x224 + media/mixrbv2/metamrph.png + + + + metamrphe.zip + Metamorphic Force (ver EAA - alternate) + Beat-'em-up with 4 selectable characters who have the power to morph into Were-animals. + 0.60 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + metamrph.zip + Konami Classics + 288x224 + media/mixrbv2/metamrph.png + + + + metamrph.zip + Metamorphic Force (ver EAA) + Beat-'em-up with 4 selectable characters who have the power to morph into Were-animals. + 0.60 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/metamrph.png + + + + metamrphj.zip + Metamorphic Force (ver JAA) + Beat-'em-up with 4 selectable characters who have the power to morph into Were-animals. + 0.60 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + metamrph.zip + Konami Classics + 288x224 + media/mixrbv2/metamrph.png + + + + metamrphu.zip + Metamorphic Force (ver UAA) + Beat-'em-up with 4 selectable characters who have the power to morph into Were-animals. + 0.60 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + metamrph.zip + Konami Classics + 288x224 + media/mixrbv2/metamrph.png + + + + meteorbl.zip + Meteor (bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + meteorho.zip + Meteor (Hoei bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + meteorite.zip + Meteorite (Proel bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + meteorts.zip + Meteorites (VGG bootleg of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + metrocrs.zip + Metro-Cross (set 1) + Metro-Cross is an abstract, horizontally-scrolling single player racing game set in an automated futuristic city. Players take on the role of 'The Runner', who must run through each of the game's 32 stages to cross the finish line before the time limit expires. If the Runner finishes a round within the time limit, remaining time is converted to bonus points and the next round begins. + +Obstacles that hinder the runner's progress include 'Slip Zones' that slow him down if he tries to run over them, 'Pitfalls' that break under the Runner's weight and drop him into the holes and 'Crackers' that launch the Runner up into the air and cause him to land on his back. Later rounds also feature 'Jumbo Tires' that bounce towards the Runner, barriers that emerge from the ground before receding back into it, Cubes that move through particular columns of tiles, Mice that attempt to jump onto the Runner and slow him down and Chess Knights and Kings that bounce from one tile to another. Clinging mice fall off the runner if he leaps from a springboard. + +Progress is aided by yellow springboards that hurl the runner forwards at great speed (players must press the fire button while on the springboard) and a skateboard, that is unaffected by the green 'Slip Zone' tiles that would otherwise slow the player's progress. Bonus points can be earned by kicking the static drinks cans that can be found throughout each level. + +Every fourth round is special, using the remaining time from the three previous rounds as additional completion time. However, if the Runner has not finished the round before the time limit runs out, he will be electrocuted and the game is immediately over. + 0.70 + 19850101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/metrocrs.png + + + + metrocrsa.zip + Metro-Cross (set 2) + Metro-Cross is an abstract, horizontally-scrolling single player racing game set in an automated futuristic city. Players take on the role of 'The Runner', who must run through each of the game's 32 stages to cross the finish line before the time limit expires. If the Runner finishes a round within the time limit, remaining time is converted to bonus points and the next round begins. + +Obstacles that hinder the runner's progress include 'Slip Zones' that slow him down if he tries to run over them, 'Pitfalls' that break under the Runner's weight and drop him into the holes and 'Crackers' that launch the Runner up into the air and cause him to land on his back. Later rounds also feature 'Jumbo Tires' that bounce towards the Runner, barriers that emerge from the ground before receding back into it, Cubes that move through particular columns of tiles, Mice that attempt to jump onto the Runner and slow him down and Chess Knights and Kings that bounce from one tile to another. Clinging mice fall off the runner if he leaps from a springboard. + +Progress is aided by yellow springboards that hurl the runner forwards at great speed (players must press the fire button while on the springboard) and a skateboard, that is unaffected by the green 'Slip Zone' tiles that would otherwise slow the player's progress. Bonus points can be earned by kicking the static drinks cans that can be found throughout each level. + +Every fourth round is special, using the remaining time from the three previous rounds as additional completion time. However, if the Runner has not finished the round before the time limit runs out, he will be electrocuted and the game is immediately over. + 0.70 + 19850101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + metrocrs.zip + Namco Classics + 288x224 + media/mixrbv2/metrocrs.png + + + + mexico86.zip + Mexico 86 (bootleg of Kick and Run) (set 1) + A football game where you can either play cooperatively in cup events or head-to-head. + 0.50 + 19860101T000000 + Taito + Taito + Sports / Soccer + 2847 + 1-4 + kicknrun.zip + Taito Classics + 256x224 + media/mixrbv2/kicknrun.png + + + + mwalkbl2.zip + Michael Jackson's Moonwalker (bootleg) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalkjd.zip + Michael Jackson's Moonwalker (Japan) (bootleg of FD1094/8751 317-0157 set) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalkj.zip + Michael Jackson's Moonwalker (Japan) (FD1094/8751 317-0157) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalk.zip + Michael Jackson's Moonwalker (set 3, World, FD1094/8751 317-0159) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalkud.zip + Michael Jackson's Moonwalker (US) (bootleg of FD1094/8751 317-0158 set) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalku.zip + Michael Jackson's Moonwalker (US) (FD1094/8751 317-0158) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + mwalkd.zip + Michael Jackson's Moonwalker (World) (bootleg of FD1094/8751 317-0159 set) + Based on the movie of the same name, Moonwalker is a scrolling, isometric beat' em up in which Michael Jackson (1958-2009), along with his chimp Bubbles, attempts to save children and defeat the evil 'Mr. Big'. During each round, the player must defeat each and every one of Mr. Big's henchmen and the deadly enemy machines that patrol the levels. This is achieved either by shooting them with Michael Jackson's 'magical energy', or by using his Dance Magic - the game's equivalent of a smart bomb. Some enemies take only one shot to defeat whereas others take several shots before they are destroyed. The longer the player holds down on the fire button, the greater the amount of magical energy Michael can inflict. At the start of each round, the player is given 2 dance magic smart bombs. Towards the end of each round, Michael's pet chimpanzee, Bubbles, will be seen moving about. If Michael touches Bubbles, he will turn into a powerful robot (the 'Moonwalker' of the game's title). After Michael has become Moonwalker, he will be able to shoot lasers and fire missiles. Michael must defeat every boss enemy at the end of each round in order to proceed to the next. + 0.70 + 19900101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-3 + mwalk.zip + Sega Classics + 320x224 + media/mixrbv2/mwalk.png + + + + midssio.zip + Midway SSIO Sound Board Internal pROM + Various + 39 + non Jeu + media/mixrbv2/midssio.png + + + mightguy.zip + Mighty Guy + Mighty Guy doesn't need a gun to fend off large amounts of soldiers! This is what "Ikari Warriors" would be if they left their machine guns at home. + 0.60 + 19860101T000000 + Nichibutsu + Nichibutsu + Fight / Vertical + 2922 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/mightguy.png + + + + mimonkey.zip + Mighty Monkey + A bootleg was made by Yih Lung on the "Scramble" hardware and another by Noel on the "Super Cobra" hardware. + +'Sun Wu Kong' is a legendary monkey king from an Chinese fantasy novel (by His Yu Chi) called 'Pilgrimage to the West'. + 0.50 + 19820101T000000 + Universal + Shoot'em Up + 79 + 1-2 + Universal + 270 + 256x224 + media/mixrbv2/mimonkey.png + + + + mimonscr.zip + Mighty Monkey (bootleg on Scramble hardware) + A bootleg was made by Yih Lung on the "Scramble" hardware and another by Noel on the "Super Cobra" hardware. + +'Sun Wu Kong' is a legendary monkey king from an Chinese fantasy novel (by His Yu Chi) called 'Pilgrimage to the West'. + 0.50 + 19820101T000000 + Universal + Shoot'em Up + 79 + 1-2 + mimonkey.zip + Universal + 270 + 256x224 + media/mixrbv2/mimonkey.png + + + + mimonsco.zip + Mighty Monkey (bootleg on Super Cobra hardware) + A bootleg was made by Yih Lung on the "Scramble" hardware and another by Noel on the "Super Cobra" hardware. + +'Sun Wu Kong' is a legendary monkey king from an Chinese fantasy novel (by His Yu Chi) called 'Pilgrimage to the West'. + 0.50 + 19820101T000000 + Universal + Shoot'em Up + 79 + 1-2 + mimonkey.zip + Universal + 270 + 256x224 + media/mixrbv2/mimonkey.png + + + + mimonscra.zip + Mighty Monkey (Kaina Games, bootleg on Scramble hardware) + A bootleg was made by Yih Lung on the "Scramble" hardware and another by Noel on the "Super Cobra" hardware. + +'Sun Wu Kong' is a legendary monkey king from an Chinese fantasy novel (by His Yu Chi) called 'Pilgrimage to the West'. + 0.50 + 19820101T000000 + Universal + Shoot'em Up + 79 + 1-2 + mimonkey.zip + Universal + 270 + 256x224 + media/mixrbv2/mimonkey.png + + + + mwarr.zip + Mighty Warriors + A competitive one-on-one fighting game with characters who can occasionally mutate for a limited period of time. + + + 0.30 + Elettronica Video-Games + Elettronica Video-Games + Fight / Versus + 2885 + 1-2 + Mame + 366x240 + media/mixrbv2/mwarr.png + + + + mpangr1.zip + Mighty! Pang (000925 Euro) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + mpang.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mpanga.zip + Mighty! Pang (001010 Asia) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + mpang.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mpang.zip + Mighty! Pang (001010 Euro) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mpangu.zip + Mighty! Pang (001010 USA) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + mpang.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mpangjd.zip + Mighty! Pang (001011 Japan Phoenix Edition) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + mpang.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mpangj.zip + Mighty! Pang (001011 Japan) + Mighty! Pang is the fourth game in the superb Pang series. While the artistic design has been drastically changed, Mighty! Pang retains the same gameplay of its predecessors. The game features three modes of play: panic, tour and expert modes. + 0.75 + 20000101T000000 + Mitchell + Mitchell + Puzzle-Game + 26 + 1-2 + mpang.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/mpang.png + + + + mikie.zip + Mikie + Guide Mikie around the school, classroom, and locker room to collect hearts which make up a letter from his girlfriend. Head-butt teachers and throw basketballs at them. + 0.60 + 19840101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/mikie.png + + + + mikiehs.zip + Mikie (High School Graffiti) + Guide Mikie around the school, classroom, and locker room to collect hearts which make up a letter from his girlfriend. Head-butt teachers and throw basketballs at them. + 0.60 + 19840101T000000 + Konami + Konami + Action + 10 + 1-2 + mikie.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/mikie.png + + + + gtmr2a.zip + Mille Miglia 2: Great 1000 Miles Rally (95/04/04) + You have 60 seconds to get from the starting line to the finish line. Finishing within 60 seconds allows you to go on to the next race. If you lose, a continue option is available. The screen scrolls fast. The only way you know about a turn coming up is by a little indicator that flashes with a picture of the turn. There are zig-zags, hairpins and all other cool turns, most of which you have to steer into in order to make it though. + 0.80 + 19950101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1 + gtmr2.zip + Kaneko + 320x240 + media/mixrbv2/gtmr2.png + + + + gtmr2.zip + Mille Miglia 2: Great 1000 Miles Rally (95/05/24) + You have 60 seconds to get from the starting line to the finish line. Finishing within 60 seconds allows you to go on to the next race. If you lose, a continue option is available. The screen scrolls fast. The only way you know about a turn coming up is by a little indicator that flashes with a picture of the turn. There are zig-zags, hairpins and all other cool turns, most of which you have to steer into in order to make it though. + 0.80 + 19950101T000000 + Kaneko + Kaneko + Race, Driving / Race + 2924 + 1 + Kaneko + 320x240 + media/mixrbv2/gtmr2.png + + + + milliped.zip + Millipede + +Millipede is a 1- or 2-player game with a color raster-scan video display. The game action takes place on a playfield filled with mushrooms, flowers, and deadly DDT bombs. The player tries to destroy a variety of insects that drop from the top of the screen or enter from the sides of the screen, most of them to attack the player. The player controls a bow-shaped vehicle called the Archer. The object of the game is to shoot and destroy as many objects as possible for a high point score, before the player's lives are all used up. + +Player control consists of a Midi Trak-Ball control and a FIRE button. The Archer is moved by rotating the Midi Trak-Ball control. The Archer can be moved in all directions, but only within the bottom fifth of the screen. However, the Archer must move around mushrooms, flowers, and DDT bombs, since these are fixed and not 'transparent' objects. Pressing the FIRE button causes the Archer to emit an arrow that travels upward. The Archer may fire one or many arrows (by holding down the FIRE button constantly). But only one arrow will appear on the screen at a time. + + + 0.90 + 19820101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + Atari Classics + 270 + 256x240 + media/mixrbv2/milliped.png + + + + minasan.zip + Minasanno Okagesamadesu! Daisugorokutaikai (MOM-001)(MOH-001) + A difficult mahjong game with very odd characters and board game elements. This is based on the Japanese TV comedy show 'Minasan no Okage Desu' created by the Japanese comedy duo 'Tunnels', which ran on Fuji TV from 1988-97. Many of these characters appear in the game. + 0.20 + 19900101T000000 + Monolith (Japan) + Monolith (Japan) + Asiatic board game + 2647 + Neo-Geo + media/mixrbv2/minasan.png + + + + minefld.zip + Minefield + A horizontal tank shooter game, with great atmosphere Parallax scrolling background. + +The mid-day heat is rapidly becoming unbearable as the supply helicopter lowers your battle tank on to edge of the desert. You have a whole day's travelling ahead, 90 miles across the seemingly endless desert, until you reach the target of your mission - the enemy's desert fortress. Only after you have managed to destroy it, will it be safe for the transport helicopter to collect you and send you on another full-scale mission. + +Unfortunately, the going across the desert is not easy. Your tank has run out of super-missiles and you must replenish your armoury from the stockpiles on the way. If you don't collect enough you will not be able to destroy the forts and the enemy base, which is so well protected you need three missile hits to put it out of action. However, you have unlimited supplies of shells for your heavy duty gun that can fire in all directions. + + 0.50 + 19830101T000000 + Stern Electronics + Stern Electronics + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/minefld.png + + + + mineswpr.zip + Minesweeper + This game was two player only, you must have a real live person to play against, or else the other players boat will head directly for the bottom wall, which doesn't make for a very interesting game. Each player moves their little boat around leaving a solid line of mines behind them. All moves are made on an invisible grid, so you can only turn at 90 degree angles. To win you must last longer than your opponent before hitting something (first person to hit something loses). One good strategy is to try and box your opponent in to a small section of the screen, and then just move carefully until they crash. Pushing backwards on the stick will cause you to crash into your own mines, so avoid that at all cost. + + 0.10 + 19770101T000000 + Amutech + Bwb + Action + 10 + 1-2 + Mame + 128x40 + media/mixrbv2/mineswpr.png + + + + mineswpr4.zip + Minesweeper (4-Player) + This game was two player only, you must have a real live person to play against, or else the other players boat will head directly for the bottom wall, which doesn't make for a very interesting game. Each player moves their little boat around leaving a solid line of mines behind them. All moves are made on an invisible grid, so you can only turn at 90 degree angles. To win you must last longer than your opponent before hitting something (first person to hit something loses). One good strategy is to try and box your opponent in to a small section of the screen, and then just move carefully until they crash. Pushing backwards on the stick will cause you to crash into your own mines, so avoid that at all cost. + + 0.10 + 19770101T000000 + Amutech + Bwb + Action + 10 + 1-2 + mineswpr.zip + Mame + 128x40 + media/mixrbv2/mineswpr.png + + + + minivadr.zip + Minivader + Mini Vaders is a variation on Space Invaders. There are various alien formations moving in unison and much more quickly than in the original. The players has only one life and the base is allowed only a shot at a time. Those kind of games were popularly known as ?Test PCBs?: they were produced with the lowest possible use of resources, with the only purpose to address the setback of a Japanese legislation that required cabinets to have a game in them in order to be sold. Video games without sound, without commercial interest and in some cases, without color or playability that did not even served to test the hardware. + 0.10 + 19900101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1 + Taito Classics + 256x224 + media/mixrbv2/minivadr.png + + + + mmonkey.zip + Minky Monkey + You control a red boy who must bring fruits to the blank square in order to complete the message. + 0.50 + 19820101T000000 + Technos Japan Corp. + Technos Japan Corp. + Various + 39 + 1-2 + Technos + 270 + 240x240 + media/mixrbv2/mmonkey.png + + + + mmonkeyj.zip + Minky Monkey (Japan) + You control a red boy who must bring fruits to the blank square in order to complete the message. + 0.50 + 19820101T000000 + Technos Japan Corp. + Technos Japan Corp. + Various + 39 + 1-2 + mmonkey.zip + Technos + 270 + 240x240 + media/mixrbv2/mmonkey.png + + + + mirninja.zip + Mirai Ninja (Japan, set 1) + The title of this game translates from Japanese as 'Future Ninja - Stealth Joy Cloud Device Side Story'. + +Mirai Ninja was based on a Japanese movie of the same name, also produced by Namco. Both the game and the movie were released the same year. +The plot of the movie: A man's body and soul are stolen and used as part of a demon castle. What's left becomes Cyber Ninja. He teams up with the chi students whose cyber-earmuffs show matching red symbols. They fill their swords with ammunition, grab some neo-retro-cyber-antique guns and attack the demon robot expendable ninja squad. Each fight is won by whichever side uses more gratuitous special effects. They slay the Tron-like hover droids, who are destroyed in their shame. There's a showdown with a white-armored guy with dreadlocks, who is later reincarnated by the eclipse and a lot of multicolored lightning. After killing the make-up wearing effeminate spider person, the chi school fires a giant gun at the demon castle spider cyber robot. It blows up. + 0.70 + 19880101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/mirninja.png + + + + mirninjaa.zip + Mirai Ninja (Japan, set 2) + The title of this game translates from Japanese as 'Future Ninja - Stealth Joy Cloud Device Side Story'. + +Mirai Ninja was based on a Japanese movie of the same name, also produced by Namco. Both the game and the movie were released the same year. +The plot of the movie: A man's body and soul are stolen and used as part of a demon castle. What's left becomes Cyber Ninja. He teams up with the chi students whose cyber-earmuffs show matching red symbols. They fill their swords with ammunition, grab some neo-retro-cyber-antique guns and attack the demon robot expendable ninja squad. Each fight is won by whichever side uses more gratuitous special effects. They slay the Tron-like hover droids, who are destroyed in their shame. There's a showdown with a white-armored guy with dreadlocks, who is later reincarnated by the eclipse and a lot of multicolored lightning. After killing the make-up wearing effeminate spider person, the chi school fires a giant gun at the demon castle spider cyber robot. It blows up. + 0.70 + 19880101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + mirninja.zip + Namco Classics + 288x224 + media/mixrbv2/mirninja.png + + + + mirax.zip + Mirax (set 1) + A great space shooter game using a 3-D sprite-scaling technology. + +The invaders from the alpha centauri empire are building their super laser weaponry in the mirax city. This weapon of mass destruction is a danger to the galaxy and your space colony, the destiny of the galaxy is in your hands. On your 90.000 mile journey to this giant space city will encounter to hordes of enemy forces, you must speed your spacecraft while you shoot and dodging energy stations objects, enemy spaceships, giant bosses and missiles. Your mission is to destroy all weapons construction units to restore peace before it is too late . + 0.50 + 19850101T000000 + Current Technologies + Current Technologies + Shooter / Plane, 3rd person + 2881 + 1-2 + Mame + 270 + 256x240 + media/mixrbv2/mirax.png + + + + miraxa.zip + Mirax (set 2) + A great space shooter game using a 3-D sprite-scaling technology. + +The invaders from the alpha centauri empire are building their super laser weaponry in the mirax city. This weapon of mass destruction is a danger to the galaxy and your space colony, the destiny of the galaxy is in your hands. On your 90.000 mile journey to this giant space city will encounter to hordes of enemy forces, you must speed your spacecraft while you shoot and dodging energy stations objects, enemy spaceships, giant bosses and missiles. Your mission is to destroy all weapons construction units to restore peace before it is too late . + 0.50 + 19850101T000000 + Current Technologies + Current Technologies + Shooter / Plane, 3rd person + 2881 + 1-2 + mirax.zip + Mame + 270 + 256x240 + media/mixrbv2/mirax.png + + + + msbingo.zip + Miss Bingo + Miss Bingo is a clone of Min's previous game "Miss Puzzle" with updated graphics and a split screen for optional two player play. + +The player must slide three or more matching tiles together in horizontal, vertical, or diagonal chains to clear them from the screen. When tiles are removed from the screen surrounding tiles drop and slide around to fill the gaps. Additional tiles are added to the screen over time and The objective is to clear a set number of chains before the tiles stack up and reach the dead line at the top of the play area. + +Once the set number of tiles are removed, the play area is cleared and the photographic nude background image is revealed. + +Clearing tiles advances a bar at the bottom of the screen. Once the bar is filled the game is interrupted by a bonus game. Once the bonus game is completed the game returns to the exact spot where it had left off. + +If any tiles cross the dead line then the game is over. Upon continuing, the game removes the bottom few rows of tiles from the board so that gameplay can continue. + 0.50 + 19940101T000000 + Min Corp. + Min Corp. + Puzzle-Game / Glide + 2891 + 1-2 + Mame + 320x224 + media/mixrbv2/msbingo.png + + + + missb2.zip + Miss Bubble II + Miss Bubble II is an adult bootleg of "Bubble Bobble". It features 100 single screen levels with photographic semi-nude images for backgrounds. The background changes every three levels. + +The player takes on the role of one of two yellow and green colored mice. Armed only with the ability to blow bubbles and jump, the objective is to trap and kill all of your enemies within the bubbles to advance to the next stage. The bubbles can also be used as temporary platforms, to help the mice reach previously inaccessible areas of a level. If a player is touched by an enemy then the player dies. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + +On many levels, special bubbles appear such as water filled bubbles appear. These can be burst by players to release their contents and destroy enemies. The water bubble releases a torrent of water that will quickly flow down the platforms to the bottom of the screen. Any enemies caught in the flow are killed. + +Bubbles containing letters also appear. The aim is to collect the letters needed to spell the word along the side of the screen. + +Once the player loses all of his lives the game is over. Upon continuing, all remaining enemies return to their un-angered forms. + 0.70 + 19960101T000000 + Alpha Co. + Alpha Co. + Platform / Run Jump + 2915 + 1-2 + Alpha Denshi Co. + 256x224 + media/mixrbv2/missb2.png + + + + missmw96.zip + Miss Mister World '96 (Nude) + Rip-off of "Gals Panic!", featuring 'adult' photographs instead of the cartoon imagery. + 0.50 + 19960101T000000 + Comad + Comad + Adult + 413 + 1-2 + missw96.zip + Comad + 256x224 + media/mixrbv2/missw96.png + + + + mspacmanbgd.zip + Miss Pukman ('Made in Greece' Datamat bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanblt.zip + Miss Pukman ('Made in Greece' Triunvi bootleg, set 1) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanblt2.zip + Miss Pukman ('Made in Greece' Triunvi bootleg, set 2) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspuzzle.zip + Miss Puzzle + Miss Puzzle is a sliding puzzle game where the player must slide three or more matching tiles together in horizontal, vertical, or diagonal lines to clear them from the screen. When tiles are removed from the screen surrounding tiles slide around to fill the gaps. Additional tiles are added to the screen over time and the objective is to prevent the screen from being completely filled in with tiles. + +A timer bar counts down the time till the end of the stage. When the timer runs completely down the stage is cleared and the background image is changed. The player can also use a bomb to clear all the tiles with the same design from the screen if necessary. The player is granted one bomb per stage and they can be carried over to following stages. When the screen is completely filled with tiles then the game is over. + 0.50 + 19940101T000000 + Min Corp. + Min Corp. + Puzzle-Game / Glide + 2891 + 1 + Mame + 270 + 320x224 + media/mixrbv2/mspuzzle.png + + + + mspuzzleg.zip + Miss Puzzle (Clone of Gumbo) + Gumbo is a "Columns"-style adult puzzle game featuring nude photographic and hand drawn images as a background to the playing field. Columns of three blocks fall from the sky and the player can move the block left or right and shift the order of the blocks column falls. The objective is to match three or more blocks of the same type in vertical, horizontal, or diagonal rows in order to clear them from the play area. As the player clears more blocks the columns begin to descend at a more rapid rate. + +As time progresses entire rows of blocks are added to the bottom of the play area. Occasionally after clearing a set of blocks (and more often after setting off chains of removing blocks) the bottom row of blocks will be removed from the play area. If necessary, the player can use a help which will change all of the blocks in the currently falling column into 'P' blocks. When the column lands on the stack of blocks, whichever block it falls on will be cleared from the screen, along with all blocks that match that block. When the bottom row is removed from play a section is added to the progress bar at the bottom of the screen. When the progress bar is filled the stage is complete. + +After clearing a stage, all of the remaining blocks are momentarily removed from the board and a bonus game begins. In the bonus game the background image is broken up and shuffled around in a sliding puzzle game. The progress bar at the bottom of the screen counts down the time left to return the tiles to their proper place and points are awarded for any extra time left after the game is completed. Once the bonus game is over the background image is changed, the blocks remaining from the previous stage are returned to the screen and the game continues. + +If the blocks reach the top of the screen where the columns are dropped from then the game is over. Upon continuing all of the blocks are removed from play and the columns fall at the original speed. + 0.50 + 19940101T000000 + Min Corp. + Puzzle-Game / Fall + 2912 + 1-2 + gumbo.zip + Mame + 320x224 + media/mixrbv2/gumbo.png + + + + mspuzzlea.zip + Miss Puzzle (Nudes, less explicit) + Miss Puzzle is a sliding puzzle game where the player must slide three or more matching tiles together in horizontal, vertical, or diagonal lines to clear them from the screen. When tiles are removed from the screen surrounding tiles slide around to fill the gaps. Additional tiles are added to the screen over time and the objective is to prevent the screen from being completely filled in with tiles. + +A timer bar counts down the time till the end of the stage. When the timer runs completely down the stage is cleared and the background image is changed. The player can also use a bomb to clear all the tiles with the same design from the screen if necessary. The player is granted one bomb per stage and they can be carried over to following stages. When the screen is completely filled with tiles then the game is over. + 0.50 + 19940101T000000 + Min Corp. + Min Corp. + Puzzle-Game / Glide + 2891 + 1 + mspuzzle.zip + Mame + 270 + 320x224 + media/mixrbv2/mspuzzle.png + + + + mspuzzleb.zip + Miss Puzzle (Nudes, more explicit) + Miss Puzzle is a sliding puzzle game where the player must slide three or more matching tiles together in horizontal, vertical, or diagonal lines to clear them from the screen. When tiles are removed from the screen surrounding tiles slide around to fill the gaps. Additional tiles are added to the screen over time and the objective is to prevent the screen from being completely filled in with tiles. + +A timer bar counts down the time till the end of the stage. When the timer runs completely down the stage is cleared and the background image is changed. The player can also use a bomb to clear all the tiles with the same design from the screen if necessary. The player is granted one bomb per stage and they can be carried over to following stages. When the screen is completely filled with tiles then the game is over. + 0.50 + 19940101T000000 + Min Corp. + Min Corp. + Puzzle-Game / Glide + 2891 + 1 + mspuzzle.zip + Mame + 270 + 320x224 + media/mixrbv2/mspuzzle.png + + + + missw96a.zip + Miss World '96 (Nude) (set 2) + Rip-off of "Gals Panic!", featuring 'adult' photographs instead of the cartoon imagery. + 0.50 + 19960101T000000 + Comad + Comad + Adult + 413 + 1-2 + missw96.zip + Comad + 256x224 + media/mixrbv2/missw96.png + + + + missw96b.zip + Miss World '96 (Nude) (set 3) + Rip-off of "Gals Panic!", featuring 'adult' photographs instead of the cartoon imagery. + 0.50 + 19960101T000000 + Comad + Comad + Adult + 413 + 1-2 + missw96.zip + Comad + 256x224 + media/mixrbv2/missw96.png + + + + missw96c.zip + Miss World '96 (Nude) (set 4) + Rip-off of "Gals Panic!", featuring 'adult' photographs instead of the cartoon imagery. + 0.50 + 19960101T000000 + Comad + Comad + Adult + 413 + 1-2 + missw96.zip + Comad + 256x224 + media/mixrbv2/missw96.png + + + + missw96.zip + Miss World '96 (Nude) (set1) + Rip-off of "Gals Panic!", featuring 'adult' photographs instead of the cartoon imagery. + 0.50 + 19960101T000000 + Comad + Comad + Adult + 413 + 1-2 + Comad + 256x224 + media/mixrbv2/missw96.png + + + + missw02.zip + Miss World 2002 + Arcade erotic videogame, you have to unveil the sexy pictures from the models while the evil spider and her acolytes try to catch you, how? you must draw lines trying to cover parts from the pic until complete it avoiding to be touched or caught by those, be fast, be smart!. +The game have 3 versions: A, B and C. + A: the hottest game whit nude models in sexual positions showing everything! + B: the medium game whit pretty nude models in bikini and art positions. + C: the 'light' version whit pretty models. + 20020101T000000 + Puzzle-Game + 26 + 1-2 + Comad + media/mixrbv2/missw02.png + + + + missile1.zip + Missile Command (rev 1) + Missile Command is a one or two-player game depicting the outbreak of a nuclear war. Players must defend six cities from waves of incoming nuclear missiles by launching their own anti-ballistic missiles (ABMs) from one of three missile batteries. + +The game is played by moving a cross-hair across the sky and pressing one of three buttons to launch an ABM from the corresponding battery (either Alpha Base, Delta Base or Omega Base). Upon reaching the cross-hair the player's ABM explodes, creating a fireball that lasts for several seconds and destroys any enemy missiles that enter it. Each battery is initially armed with ten anti-ballistic missiles and becomes useless when either all of its missiles have been fired or it's been destroyed by enemy missiles. + + + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Missile Command Like + 2945 + 1-2 + missile.zip + Atari Classics + 256x231 + media/mixrbv2/missile.png + + + + missile2.zip + Missile Command (rev 2) + Missile Command is a one or two-player game depicting the outbreak of a nuclear war. Players must defend six cities from waves of incoming nuclear missiles by launching their own anti-ballistic missiles (ABMs) from one of three missile batteries. + +The game is played by moving a cross-hair across the sky and pressing one of three buttons to launch an ABM from the corresponding battery (either Alpha Base, Delta Base or Omega Base). Upon reaching the cross-hair the player's ABM explodes, creating a fireball that lasts for several seconds and destroys any enemy missiles that enter it. Each battery is initially armed with ten anti-ballistic missiles and becomes useless when either all of its missiles have been fired or it's been destroyed by enemy missiles. + + + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Missile Command Like + 2945 + 1-2 + missile.zip + Atari Classics + 256x231 + media/mixrbv2/missile.png + + + + missile.zip + Missile Command (rev 3) + Missile Command is a one or two-player game depicting the outbreak of a nuclear war. Players must defend six cities from waves of incoming nuclear missiles by launching their own anti-ballistic missiles (ABMs) from one of three missile batteries. + +The game is played by moving a cross-hair across the sky and pressing one of three buttons to launch an ABM from the corresponding battery (either Alpha Base, Delta Base or Omega Base). Upon reaching the cross-hair the player's ABM explodes, creating a fireball that lasts for several seconds and destroys any enemy missiles that enter it. Each battery is initially armed with ten anti-ballistic missiles and becomes useless when either all of its missiles have been fired or it's been destroyed by enemy missiles. + + + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Missile Command Like + 2945 + 1-2 + Atari Classics + 256x231 + media/mixrbv2/missile.png + + + + m660b.zip + Mission 660 (bootleg) + Your space colony is under attack! you have to defend the enemies advent, your mission is under codename of "Mission 660". You must destroy wave after wave of different types of enemy ships advancing through the deep space and grab the power star item to increase and upgrade your spaceship. Eventually you make it to a big enemy space ship, you must shoot several shots for destroy, then the cycle level starts over again. + 0.50 + 19860101T000000 + Kaneko + Taito + Shoot'em Up + 79 + 1-2 + m660.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/m660.png + + + + m660j.zip + Mission 660 (Japan) + Your space colony is under attack! you have to defend the enemies advent, your mission is under codename of "Mission 660". You must destroy wave after wave of different types of enemy ships advancing through the deep space and grab the power star item to increase and upgrade your spaceship. Eventually you make it to a big enemy space ship, you must shoot several shots for destroy, then the cycle level starts over again. + 0.50 + 19860101T000000 + Kaneko + Taito + Shoot'em Up + 79 + 1-2 + m660.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/m660.png + + + + m660.zip + Mission 660 (US) + Your space colony is under attack! you have to defend the enemies advent, your mission is under codename of "Mission 660". You must destroy wave after wave of different types of enemy ships advancing through the deep space and grab the power star item to increase and upgrade your spaceship. Eventually you make it to a big enemy space ship, you must shoot several shots for destroy, then the cycle level starts over again. + 0.50 + 19860101T000000 + Kaneko + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/m660.png + + + + cmissnx.zip + Mission-X (DECO Cassette) (US) + The game was also available as a conventional stand-alone PCB. + 0.30 + 19820101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cmissnx.png + + + + mrviking.zip + Mister Viking (315-5041) + Become a fearless Viking warrior in search of a missing treasure. Face a fury of enemy obstacles in a barbaric battle for bonus points! + 0.70 + 19840101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + Sega Classics + 270 + 479x224 + media/mixrbv2/mrviking.png + + + + mrvikingj.zip + Mister Viking (315-5041, Japan) + Become a fearless Viking warrior in search of a missing treasure. Face a fury of enemy obstacles in a barbaric battle for bonus points! + 0.70 + 19840101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + mrviking.zip + Sega Classics + 270 + 479x224 + media/mixrbv2/mrviking.png + + + + quiz18k.zip + Miyasu Nonki no Quiz 18-Kin + 0.50 + 19920101T000000 + EIM + Quiz / Japanese + 2894 + 1-2 + Video System Co. + 320x224 + media/mixrbv2/quiz18k.png + + + + msgundam.zip + Mobile Suit Gundam + Ten selectable mecha from the Gundam saga battle each other for space dominance! + 0.50 + 19930101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + Banpresto + 384x240 + media/mixrbv2/msgundam.png + + + + msgundam1.zip + Mobile Suit Gundam (Japan) + Ten selectable mecha from the Gundam saga battle each other for space dominance! + 0.50 + 19930101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + msgundam.zip + Banpresto + 384x240 + media/mixrbv2/msgundam.png + + + + moegonta.zip + Moeyo Gonta!! (Japan) + Lady killer is an adult, puzzle game featuring eight sexy women. The objective of the game is to dive and leap through the surface of the play area to reveal the image of the girl underneath. + +At the start of each level the player gets to select which girl he wants to reveal. Her image is then shown and is then covered by the game board. Then the level begins. The player must move to avoid the enemies while attempting to flip the tiles on the board by diving and surfacing through them. Flipped tiles often reveal power-ups to help the player. The player is killed any time he touches or is shot by an enemy, but the player can kill enemies by flipping a tile that the enemy is standing on. Enemies will re-spawn until the level is completed. The level is completed once all of the tiles have been removed. + +Each girl features five states of undress and four stages. During gameplay, the girl's silhouette remains visible through the surface of the game play area and while her state of dress changes between stages, her pose and silhouette will remain the same. Each girl also has a special stage featuring a mini-game of a sliding tile game or a number selecting game. After completing the final stage for each girl, the player is shown an erotic scene for that girl and the player must wiggle the joystick left and right to advance the scene. + +The game is over when the player has lost all of his lives. Upon continuing the player restarts the level he is currently on. + 0.60 + 19930101T000000 + Yanyaka + Adult + 413 + 1 + ladykill.zip + Mitchell + 270 + 320x240 + media/mixrbv2/ladykill.png + + + + moguchan.zip + Mogu Chan (bootleg?) + Moguchan (c) 1982 Orca. - TECHNICAL - Main CPU : Z80 (@ 4 Mhz), Z80 (@ 1.78975 Mhz) Sound Chips : AY8910 (@ 1.78975 Mhz) Screen orientation : Vertical Video resolution : 224 x 256 pixels Screen refresh : 60.00 Hz Palette Colors : 49 Players : 2 Contro + 0.50 + 19820101T000000 + Orca (Eastern Commerce Inc. license) + Orca (Eastern Commerce Inc. license) + Action + 10 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/moguchan.png + + + + mogura.zip + Mogura Desse + A simple test board used to test cabinets at the factory. It's probably very rare though. The game is very simple, mostly just to test the buttons and joysticks. + 0.10 + 19910101T000000 + Konami + Konami + Race, Driving + 28 + 1-4 + Konami Classics + 320x256 + media/mixrbv2/mogura.png + + + + mole.zip + Mole Attack + Moles pop up from nine holes, and the player has 60 seconds to send them fleeing back underground by bopping them on the head with a hammer.Players can use joystick or the keyboard to position the hammer. + 0.50 + 19820101T000000 + Yachiyo Denki + Yachiyo Denki + Various + 39 + 1-2 + Mame + 320x200 + media/mixrbv2/mole.png + + + + momokob.zip + Momoko 120% (bootleg) + A girl must shoot monsters and escape from a burning building. The game starts at preschool and ends at a wedding chapel where she is to collect items and get married, only for the game to begin again. + 0.50 + 19860101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + momoko.zip + Jaleco + 240x216 + media/mixrbv2/momoko.png + + + + momokoe.zip + Momoko 120% (English text) + A girl must shoot monsters and escape from a burning building. The game starts at preschool and ends at a wedding chapel where she is to collect items and get married, only for the game to begin again. + 0.50 + 19860101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + momoko.zip + Jaleco + 240x216 + media/mixrbv2/momoko.png + + + + momoko.zip + Momoko 120% (Japanese text) + A girl must shoot monsters and escape from a burning building. The game starts at preschool and ends at a wedding chapel where she is to collect items and get married, only for the game to begin again. + 0.50 + 19860101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + Jaleco + 240x216 + media/mixrbv2/momoko.png + + + + miexchng.zip + Money Puzzle Exchanger / Money Idol Exchanger + MPE combines the gameplay mechanics of the Magical Drop games with some lightning-fast coin-counting addition--call it "Mathical Drop." Instead of bubbles, MPE players (most of whom are presented as schoolchildren in pastel-colored fantasy costumes) stack coins that combine to make higher denominations--five 1 coins will turn into a single 5, two 5's become a 10, five 10's turn into 50 and so forth, on up to 500 (two of those will disappear completely). One-player games offer either solo endurance rounds or matches against a ladder of CPU opponents, but as with MD, it's the two-player mode that makes the game the most fun. + 0.70 + 19970101T000000 + SNK + SNK + Puzzle-Game + 26 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/miexchng.png + + + + headonch.zip + Monita to Rimoko no Head On Channel (prototype, hack) + 19940101T000000 + Mame + + + mmagic.zip + Monkey Magic + A breakout clone from Nintendo. Players control a paddle to hit the ball at a large number of blocks shaping a monkey's face. Players can also earn different numbers of points by catching blocks that fall, as well as hitting the ball in different places. + 19790101T000000 + Nintendo + Nintendo + Action / Breakout games + 2917 + Nintendo Classics + 270 + 256x192 + media/mixrbv2/mmagic.png + + + + monkelf.zip + Monky Elf (Korean bootleg of Avenging Spirit) + While walking out with his girlfriend the game's hero is ambushed by unknown enemies who snatch his girlfriend and shoot the hero dead. Now, as a wandering spirit with the ability to possess almost anybody he comes across, the hero is summoned by his girlfriend's father and given a mission to save her from the mysterious crime syndicate that holds her hostage. Only then can the hero rest in peace. + +The player's character 'inhabits' a body with which to combat the game's enemies. When that body is killed, providing there is a living enemy nearby (other than that of a boss) the player can posses them and continue playing. Each time this is done, it costs the player some of their 'spirit energy'. Should the hero die when there are no enemies close by for the player to possess; the game is over. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + avspirit.zip + Jaleco + 256x224 + media/mixrbv2/avspirit.png + + + + mmaulers.zip + Monster Maulers (ver EAA) + A trio of supervillains unleashes an army of gross mutants on earth in order to start an alien invasion. Our only hope is the trio of superheroes known as the 'Ultimate Task Force'. Squash the evil mutants and put an end to the alien menace. Features excellent graphics & sound as well as plenty of moves to find! + 0.90 + 19930101T000000 + Konami + Konami + Fight / Co-op + 2957 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/mmaulers.png + + + + mstworld.zip + Monsters World (bootleg of Super Pang) + A straight rip-off of Mitchell's "Super Pang" with different sprites. + 0.50 + 19940101T000000 + bootleg + bootleg + Shooter / 3rd person + 2899 + 1-2 + Mitchell + 384x240 + media/mixrbv2/mstworld.png + + + + moonaln.zip + Moon Alien + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + moonal2.zip + Moon Alien Part 2 + A modified version of Galaxian. Besides the graphics, the only main difference between this and Galaxian is the inclusion of an energy meter that drains with every second you spend clearing a wave. If you don't clear the wave before you run out of energy, your ship is destroyed. + 0.60 + 19800101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1 + Namco Classics + 270 + 768x224 + media/mixrbv2/moonal2.png + + + + moonal2b.zip + Moon Alien Part 2 (older version) + A modified version of Galaxian. Besides the graphics, the only main difference between this and Galaxian is the inclusion of an energy meter that drains with every second you spend clearing a wave. If you don't clear the wave before you run out of energy, your ship is destroyed. + 0.60 + 19800101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1 + moonal2.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/moonal2.png + + + + mooncrs4.zip + Moon Crest (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrgx.zip + Moon Cresta (bootleg on Galaxian hardware) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrsb.zip + Moon Cresta (bootleg set 1) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrs2.zip + Moon Cresta (bootleg set 2) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrs3.zip + Moon Cresta (bootleg set 3) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrs5.zip + Moon Cresta (bootleg set 4) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncreg.zip + Moon Cresta (Electrogame S.A. Spanish bootleg, set 1) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncreg2.zip + Moon Cresta (Electrogame S.A. Spanish bootleg, set 2) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstg.zip + Moon Cresta (Gremlin) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstuk.zip + Moon Cresta (Nichibutsu UK) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstuku.zip + Moon Cresta (Nichibutsu UK, unencrypted) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstu.zip + Moon Cresta (Nichibutsu USA, encrypted) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstuu.zip + Moon Cresta (Nichibutsu USA, unencrypted) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrst.zip + Moon Cresta (Nichibutsu) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrsto.zip + Moon Cresta (Nichibutsu, old rev) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncptc.zip + Moon Cresta (Petaco S.A. Spanish bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mooncrstso.zip + Moon Cresta (SegaSA / Sonic) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + mpatrol.zip + Moon Patrol + Moon Patrol is a horizontally-scrolling shoot-em-up in which the player takes the role of a Luna City police officer assigned to Sector Nine, home of the toughest thugs in the galaxy. + +The player controls a moon buggy that travels over the moon's surface, trying to avoid or destroy any obstacles in its path, including craters, rocks and mines. UFOs attack the buggy from above by dropping bombs, some UFO bombs will create a new crater when they hit the ground, generating a new obstacle to avoid. + +The buggy can jump to avoid craters, mines and rocks, it also has both front and vertically-mounted cannons that fire missiles simultaneously. The vertical cannon is to destroy UFOs while the front-cannon can take out obstacles that lie in the buggy's path. + +Moon Patrol has five different stages spread over 26 check-points, each designated a letter of the English alphabet. The five checkpoints that denote a new stage are E, J, O, T and Z and each new stage sees a change in background graphics as well as an increase in difficulty. One example of this is the introduction of landmines in the third stage (stage 'J'). + +A status panel is displayed at the top of the screen that gives the player useful information. A progress bar showing the five major checkpoints and the player's current position is displayed at the bottom of the panel. Above the progress bar is an indicator of the current checkpoint, the time spent in the stage and three indicator lights: the top light indicates upcoming enemy aerial attacks, the middle one indicates an upcoming minefield and the bottom one indicates enemies approaching from behind. + +At the end of each stage bonus points are awarded based on how quickly the stage was completed. + + + 0.90 + 19820101T000000 + Irem + Irem + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Irem Classics + 240x252 + media/mixrbv2/mpatrol.png + + + + mpatrolw.zip + Moon Patrol (Williams) + Moon Patrol is a horizontally-scrolling shoot-em-up in which the player takes the role of a Luna City police officer assigned to Sector Nine, home of the toughest thugs in the galaxy. + +The player controls a moon buggy that travels over the moon's surface, trying to avoid or destroy any obstacles in its path, including craters, rocks and mines. UFOs attack the buggy from above by dropping bombs, some UFO bombs will create a new crater when they hit the ground, generating a new obstacle to avoid. + +The buggy can jump to avoid craters, mines and rocks, it also has both front and vertically-mounted cannons that fire missiles simultaneously. The vertical cannon is to destroy UFOs while the front-cannon can take out obstacles that lie in the buggy's path. + +Moon Patrol has five different stages spread over 26 check-points, each designated a letter of the English alphabet. The five checkpoints that denote a new stage are E, J, O, T and Z and each new stage sees a change in background graphics as well as an increase in difficulty. One example of this is the introduction of landmines in the third stage (stage 'J'). + +A status panel is displayed at the top of the screen that gives the player useful information. A progress bar showing the five major checkpoints and the player's current position is displayed at the bottom of the panel. Above the progress bar is an indicator of the current checkpoint, the time spent in the stage and three indicator lights: the top light indicates upcoming enemy aerial attacks, the middle one indicates an upcoming minefield and the bottom one indicates enemies approaching from behind. + +At the end of each stage bonus points are awarded based on how quickly the stage was completed. + + + 0.90 + 19820101T000000 + Irem + Irem + Shooter / Vehicle, Horizontal + 2938 + 1-2 + mpatrol.zip + Irem Classics + 240x252 + media/mixrbv2/mpatrol.png + + + + moonqsr.zip + Moon Quasar + The space patrol aboard, can you survive the last invasion? you will need cross the entire galaxy and destroy the impending alien menace, should avoid losing one of the three modules of the ship and refuel your tank fuel to complete the mission. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + Nichibutsu + 270 + 768x224 + media/mixrbv2/moonqsr.png + + + + mranger.zip + Moon Ranger (bootleg of Moon Patrol) + Moon Patrol is a horizontally-scrolling shoot-em-up in which the player takes the role of a Luna City police officer assigned to Sector Nine, home of the toughest thugs in the galaxy. + +The player controls a moon buggy that travels over the moon's surface, trying to avoid or destroy any obstacles in its path, including craters, rocks and mines. UFOs attack the buggy from above by dropping bombs, some UFO bombs will create a new crater when they hit the ground, generating a new obstacle to avoid. + +The buggy can jump to avoid craters, mines and rocks, it also has both front and vertically-mounted cannons that fire missiles simultaneously. The vertical cannon is to destroy UFOs while the front-cannon can take out obstacles that lie in the buggy's path. + +Moon Patrol has five different stages spread over 26 check-points, each designated a letter of the English alphabet. The five checkpoints that denote a new stage are E, J, O, T and Z and each new stage sees a change in background graphics as well as an increase in difficulty. One example of this is the introduction of landmines in the third stage (stage 'J'). + +A status panel is displayed at the top of the screen that gives the player useful information. A progress bar showing the five major checkpoints and the player's current position is displayed at the bottom of the panel. Above the progress bar is an indicator of the current checkpoint, the time spent in the stage and three indicator lights: the top light indicates upcoming enemy aerial attacks, the middle one indicates an upcoming minefield and the bottom one indicates enemies approaching from behind. + +At the end of each stage bonus points are awarded based on how quickly the stage was completed. + + + 0.90 + 19820101T000000 + Irem + Irem + Shooter / Vehicle, Horizontal + 2938 + 1-2 + mpatrol.zip + Irem Classics + 240x252 + media/mixrbv2/mpatrol.png + + + + mshuttlej2.zip + Moon Shuttle (Japan set 2) + Moon Shuttle is a game where at first you have to shoot moon rocks to get out, then after that fight some enemies. The cycle repeats after that. The voice sampling in the game doesn't say what the words on the screen say. For example, when it says on the screen 'Never Give Up', the voice is actually saying 'Hang in there!'. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + mshuttle.zip + Nichibutsu + 768x224 + media/mixrbv2/mshuttle.png + + + + mshuttlej.zip + Moon Shuttle (Japan) + Moon Shuttle is a game where at first you have to shoot moon rocks to get out, then after that fight some enemies. The cycle repeats after that. The voice sampling in the game doesn't say what the words on the screen say. For example, when it says on the screen 'Never Give Up', the voice is actually saying 'Hang in there!'. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + mshuttle.zip + Nichibutsu + 768x224 + media/mixrbv2/mshuttle.png + + + + mshuttlea.zip + Moon Shuttle (US, version A) + Moon Shuttle is a game where at first you have to shoot moon rocks to get out, then after that fight some enemies. The cycle repeats after that. The voice sampling in the game doesn't say what the words on the screen say. For example, when it says on the screen 'Never Give Up', the voice is actually saying 'Hang in there!'. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + mshuttle.zip + Nichibutsu + 768x224 + media/mixrbv2/mshuttle.png + + + + mshuttle.zip + Moon Shuttle (US? set 1) + Moon Shuttle is a game where at first you have to shoot moon rocks to get out, then after that fight some enemies. The cycle repeats after that. The voice sampling in the game doesn't say what the words on the screen say. For example, when it says on the screen 'Never Give Up', the voice is actually saying 'Hang in there!'. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 768x224 + media/mixrbv2/mshuttle.png + + + + mshuttle2.zip + Moon Shuttle (US? set 2) + Moon Shuttle is a game where at first you have to shoot moon rocks to get out, then after that fight some enemies. The cycle repeats after that. The voice sampling in the game doesn't say what the words on the screen say. For example, when it says on the screen 'Never Give Up', the voice is actually saying 'Hang in there!'. + 0.50 + 19810101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + mshuttle.zip + Nichibutsu + 768x224 + media/mixrbv2/mshuttle.png + + + + mooncmw.zip + Moon War (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + moonwarp.zip + Moon War (prototype on Frenzy hardware) + 0.40 + 19810101T000000 + Stern Electronics + Stern Electronics + Shooter / Plane + 2928 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/moonwarp.png + + + + moonwar.zip + Moonwar + A war is taking place but not on Earth, it's on the Moon! You must take control of an awesome spacecraft and take yourself to the Moon where you must wage a deadly war against the powerful forces threatening to invade the Moon and then possibly the Earth too! Fly over the cratered surface, blasting the hell out of everything you see, destroying the enemy forces to save Earth from total invasion! + 0.50 + 19810101T000000 + Stern Electronics + Stern Electronics + Shooter / Plane + 2928 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/moonwar.png + + + + moonwara.zip + Moonwar (older) + A war is taking place but not on Earth, it's on the Moon! You must take control of an awesome spacecraft and take yourself to the Moon where you must wage a deadly war against the powerful forces threatening to invade the Moon and then possibly the Earth too! Fly over the cratered surface, blasting the hell out of everything you see, destroying the enemy forces to save Earth from total invasion! + 0.50 + 19810101T000000 + Stern Electronics + Stern Electronics + Shooter / Plane + 2928 + 1-2 + moonwar.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/moonwar.png + + + + moremore.zip + More More + More More is a collection of 17 different mini-games to challenge the player's skill. The player may select one game to attempt out of the four or five games that are active at each stage. If the player successfully meets the challenge in the game then he can continue to play. If the player achieves an 'excellent' rating in four games then they will receive an extra life. + 0.70 + 19990101T000000 + SemiCom + SemiCom + Compilation + 34 + 1-2 + SemiCom + 256x224 + media/mixrbv2/moremore.png + + + + moremorp.zip + More More Plus + More More Plus is the sequel to "More More" with much improved graphics and the addition of three more games. The game features a collection of 20 different mini-games to challenge the player's skill. Unlike the previous game, players can now select any of the 20 games at any time. If the player successfully meets the challenge in the mini-game then he can continue to play. If the player achieves an "excellent" rating in four games then they will receive an extra life. The game is over once the player has lost of their lives. + 0.70 + 19990101T000000 + SemiCom + SemiCom + Compilation + 34 + 1-2 + SemiCom + 256x224 + media/mixrbv2/moremorp.png + + + + mosaic.zip + Mosaic + Arcade Video game published 30 years ago. + 0.50 + 19900101T000000 + Fuuki + Fuuki + Puzzle-Game / Glide + 2891 + 1-2 + Mame + 320x224 + media/mixrbv2/mosaic.png + + + + mosaica.zip + Mosaic (Fuuki) + Arcade Video game published 30 years ago. + 0.50 + 19900101T000000 + Fuuki + Fuuki + Puzzle-Game / Glide + 2891 + 1-2 + mosaic.zip + Mame + 320x224 + media/mixrbv2/mosaic.png + + + + motorace.zip + MotoRace USA + A excellent moto racing game. + +Enjoy the wind of American landscape, accelerating hard your motorbike across highways and mountain roads, evading the rivals cars and obstacles on challenging narrow and curves roads, and take a good amount of fuel, to finish the race before running out of fuel! + +The Levels of Cities are: +Los Angeles +Las Vegas +Houston +St. Louis +Chicago +New York + 0.50 + 19830101T000000 + Irem + Race, Driving / Motorcycle + 2943 + 1-2 + travrusa.zip + Irem Classics + 270 + 240x256 + media/mixrbv2/travrusa.png + + + + motos.zip + Motos + The object of the game is to bump your enemies - space bugs - off the solar base using Motos, your ship. When you bump all of them off, you move to the next base or round. If Motos is knocked off the base, you lose one life. The game is over when you lose all your lives. + +You can collect Power parts and Jump parts lying on the solar base by simply having Motos touch them. The collected parts will be displayed in the lower left corner of the screen and you can use them in the next round. Motos can be outfitted with no more than seven power parts; the more power parts added, the more powerful Motos is. However, Motos can only be outfitted with only one jump part per round. With a jump part, Motos can jump over two squares by moving the joystick in the desired direction and pressing the Jump button. One jump on a square cracks the square and a second jump in the same spot makes a hole in the solar base. + +You can outfit Motos with these parts in the Power Parts or Jump Parts screen displayed at the beginning of each round. Select the number of parts you want by moving left and right with the joystick, and lock them in place by pressing the Jump button. You can use the selected parts for one round only; they will not be available in subsequent rounds. + +Linger too long on the playing field and Shooting Stars will begin to fall periodically onto the solar base. The Stars are aimed at Motos, and when they miss they crack a square or break a hole in the solar base (like they do to the base behind the Motos logo in the attract mode's title sequence). + + + 0.70 + 19850101T000000 + Namco + Namco + Various + 39 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/motos.png + + + + mototoura.zip + MotoTour / Zippy Race (Assa version of Tecfri license) + A excellent moto racing game. + +Enjoy the wind of American landscape, accelerating hard your motorbike across highways and mountain roads, evading the rivals cars and obstacles on challenging narrow and curves roads, and take a good amount of fuel, to finish the race before running out of fuel! + +The Levels of Cities are: +Los Angeles +Las Vegas +Houston +St. Louis +Chicago +New York + 0.50 + 19830101T000000 + Irem + Race, Driving / Motorcycle + 2943 + 1-2 + travrusa.zip + Irem Classics + 270 + 240x256 + media/mixrbv2/travrusa.png + + + + mototour.zip + MotoTour / Zippy Race (Tecfri license) + A excellent moto racing game. + +Enjoy the wind of American landscape, accelerating hard your motorbike across highways and mountain roads, evading the rivals cars and obstacles on challenging narrow and curves roads, and take a good amount of fuel, to finish the race before running out of fuel! + +The Levels of Cities are: +Los Angeles +Las Vegas +Houston +St. Louis +Chicago +New York + 0.50 + 19830101T000000 + Irem + Race, Driving / Motorcycle + 2943 + 1-2 + travrusa.zip + Irem Classics + 270 + 240x256 + media/mixrbv2/travrusa.png + + + + mouncrst.zip + Moune Creste (Jeutel French Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + msgogo.zip + Mouse Shooter GoGo + Here are the mice that star in Mouse Shooter GoGo. They're having a fun time visiting the Bizarro-Cinema, where the screen is behind you and all the seats are leather sofas. What movie are they watching? The Story of These Two Mice, starring these two mice, a moving tale of these two mice trying to impress two classy mouse ladies. +Not to worry, the mice have a plan! + 0.80 + 19950101T000000 + Metro 3D + Metro 3D + Puzzle-Game / Throw + 2923 + 1-2 + Mitchell + 320x224 + media/mixrbv2/msgogo.png + + + + mouser.zip + Mouser + Mouser (c) 1983 UPL. - TECHNICAL - Game ID : UPL-83001 Main CPU : Z80 (@ 4 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : (2x) AY8910 (@ 2 Mhz) Players : 2 Control : 8-way joystick Buttons : 1 - TRIVIA - Mouser was released in February 1983 by UPL. It + 0.70 + 19830101T000000 + UPL + UPL + Action + 10 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/mouser.png + + + + mouserc.zip + Mouser (Cosmos) + Mouser (c) 1983 UPL. - TECHNICAL - Game ID : UPL-83001 Main CPU : Z80 (@ 4 Mhz) Sound CPU : Z80 (@ 4 Mhz) Sound Chips : (2x) AY8910 (@ 2 Mhz) Players : 2 Control : 8-way joystick Buttons : 1 - TRIVIA - Mouser was released in February 1983 by UPL. It + 0.70 + 19830101T000000 + UPL + UPL + Action + 10 + 1-2 + mouser.zip + Mame + 270 + 256x224 + media/mixrbv2/mouser.png + + + + douni.zip + Mr. Do vs. Unicorns + The player controls a clown, named “Mr. Do!”. Mr. Do is in his garden, and wants to collect the cherries there. Monsters roam there, and will not let Mr. Do quietly collect. If a monster touches Mr. Do, it dies, and the player loses a life. At each level a path is dug through the garden, going from the bottom to the top of the screen, passing through the center. Monsters can only take paths that have already been dug. Mr. Do is able to dig new paths, at the cost of slower movement speed. + 0.90 + 19830101T000000 + Platform / Run Jump + 2915 + 1-2 + docastle.zip + Universal + 270 + 240x192 + media/mixrbv2/docastle.png + + + + mrdo.zip + Mr. Do! + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrdobl.zip + Mr. Do! (bootleg) + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrdofix.zip + Mr. Do! (bugfixed) + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrdofabr.zip + Mr. Do! (Fabremar bootleg) + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrdoy.zip + Mr. Do! (prototype) + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrdot.zip + Mr. Do! (Taito license) + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + docastleo.zip + Mr. Do's Castle (older) + The player controls a clown, named “Mr. Do!”. Mr. Do is in his garden, and wants to collect the cherries there. Monsters roam there, and will not let Mr. Do quietly collect. If a monster touches Mr. Do, it dies, and the player loses a life. At each level a path is dug through the garden, going from the bottom to the top of the screen, passing through the center. Monsters can only take paths that have already been dug. Mr. Do is able to dig new paths, at the cost of slower movement speed. + 0.90 + 19830101T000000 + Platform / Run Jump + 2915 + 1-2 + docastle.zip + Universal + 270 + 240x192 + media/mixrbv2/docastle.png + + + + docastle.zip + Mr. Do's Castle (set 1) + The player controls a clown, named “Mr. Do!”. Mr. Do is in his garden, and wants to collect the cherries there. Monsters roam there, and will not let Mr. Do quietly collect. If a monster touches Mr. Do, it dies, and the player loses a life. At each level a path is dug through the garden, going from the bottom to the top of the screen, passing through the center. Monsters can only take paths that have already been dug. Mr. Do is able to dig new paths, at the cost of slower movement speed. + 0.90 + 19830101T000000 + Platform / Run Jump + 2915 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/docastle.png + + + + docastle2.zip + Mr. Do's Castle (set 2) + The player controls a clown, named “Mr. Do!”. Mr. Do is in his garden, and wants to collect the cherries there. Monsters roam there, and will not let Mr. Do quietly collect. If a monster touches Mr. Do, it dies, and the player loses a life. At each level a path is dug through the garden, going from the bottom to the top of the screen, passing through the center. Monsters can only take paths that have already been dug. Mr. Do is able to dig new paths, at the cost of slower movement speed. + 0.90 + 19830101T000000 + Platform / Run Jump + 2915 + 1-2 + docastle.zip + Universal + 270 + 240x192 + media/mixrbv2/docastle.png + + + + dowild.zip + Mr. Do's Wild Ride + Mr Do's third arcade outing is another platform game, following on from the superb "Mr. Do's Castle", released a year earlier. The synonymous Mr. Do! cherries are present and correct, but are not used in the same way as in other games in the series. In both "Mr Do!" and "Mr. Do's Castle", collecting all of the cherries available was a way of completing a level. In Wild Ride, however, collecting them merely changes the 'prize' awarded upon reaching the level's goal. This can be one or two letters from EXTRA, or other items which simply award bonus points. When Mr. Do reaches his goal, he waves a flag while the bonus counter is added to his score. + +The gameplay is similar to that of Nintendo's legendary "Donkey Kong", with Mr. Do starting each level at the bottom of the screen, trying to make his way to the exit at the very top. Mr. Do doesn't have either his Powerball or mallet in this game, but holding the ACTION button makes him run faster along the track. The trade-off of this is that his bonus points deplete much quicker. When all of the EXTRA letters are collected, the player is awarded with an extra life. + +Each of the game's six levels is set on a roller coaster, with each having its own theme, traps and pitfalls. Wild Ride doesn't feature the intermission screens that appear in previous Mr.Do games. + +The levels are: +Level 1, Roller Coaster. +Level 2, Pirate Ship. +Level 3, Three Elevators. +Level 4, Castle on Screen. +Level 5, Multiple Columns. +Level 6, Six Rings. + +After level six the levels are repeated. + 0.70 + 19840101T000000 + Platform / Run Jump + 2915 + 1-2 + Universal + 240x192 + media/mixrbv2/dowild.png + + + + mrdu.zip + Mr. Du! + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrgoemon.zip + Mr. Goemon (Japan) + Goemon is based on Ishikawa Goemon, an infamous outlaw in 16th century Japan. Some stories tell of Goemon becoming a criminal after stealing from his cruel master and killing his pursuers. Later he becomes a merchant in Kyoto and Osaka by day and a thief by night. Whilst some remember him as simply a thief, others celebrate him as being a Japanese Robin Hood, robbing from the rich to give to the poor. + 0.50 + 19860101T000000 + Konami + Konami + Platform / Fighter Scrolling + 2896 + 1-2 + Konami Classics + 240x224 + media/mixrbv2/mrgoemon.png + + + + mrheli.zip + Mr. HELI no Dai-Bouken + Players control a wacky fighter chopper name Mr. Heli, while shooting enemies, collecting power-ups, and defeating bosses to advance levels. + 0.50 + 19870101T000000 + Irem + Irem + Shooter / Plane + 2928 + 1-2 + bchopper.zip + Irem Classics + 384x256 + media/mixrbv2/bchopper.png + + + + mrjong.zip + Mr. Jong (Japan) + A puzzle game. + 0.50 + 19830101T000000 + Kiwako + Kiwako + Action + 10 + 1-2 + Mame + 270 + 240x224 + media/mixrbv2/mrjong.png + + + + mrkougar.zip + Mr. Kougar + The game involves Mr. Kougar having to eat all the dots on the screen. The dots are distributed on several moving platforms, which also are the favorites places of the Banalets, the Kougar's enemies. Touching one of the several eggs on the screen will turn Mr. Kougar invincible and will let a fairy out. The fairy will kill any enemies it touches on it's way to the top of the screen or will free a Banalet, adding one more enemy for Mr. Kougar to defeat. + 0.50 + 19840101T000000 + ATW + ATW + Platform / Run Jump + 2915 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/mrkougar.png + + + + mrkougb.zip + Mr. Kougar (bootleg set 1) + The game involves Mr. Kougar having to eat all the dots on the screen. The dots are distributed on several moving platforms, which also are the favorites places of the Banalets, the Kougar's enemies. Touching one of the several eggs on the screen will turn Mr. Kougar invincible and will let a fairy out. The fairy will kill any enemies it touches on it's way to the top of the screen or will free a Banalet, adding one more enemy for Mr. Kougar to defeat. + 0.50 + 19840101T000000 + ATW + ATW + Platform / Run Jump + 2915 + 1-2 + mrkougar.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/mrkougar.png + + + + mrkougb2.zip + Mr. Kougar (bootleg set 2) + The game involves Mr. Kougar having to eat all the dots on the screen. The dots are distributed on several moving platforms, which also are the favorites places of the Banalets, the Kougar's enemies. Touching one of the several eggs on the screen will turn Mr. Kougar invincible and will let a fairy out. The fairy will kill any enemies it touches on it's way to the top of the screen or will free a Banalet, adding one more enemy for Mr. Kougar to defeat. + 0.50 + 19840101T000000 + ATW + ATW + Platform / Run Jump + 2915 + 1-2 + mrkougar.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/mrkougar.png + + + + mrkougar2.zip + Mr. Kougar (earlier) + The game involves Mr. Kougar having to eat all the dots on the screen. The dots are distributed on several moving platforms, which also are the favorites places of the Banalets, the Kougar's enemies. Touching one of the several eggs on the screen will turn Mr. Kougar invincible and will let a fairy out. The fairy will kill any enemies it touches on it's way to the top of the screen or will free a Banalet, adding one more enemy for Mr. Kougar to defeat. + 0.50 + 19840101T000000 + ATW + ATW + Platform / Run Jump + 2915 + 1-2 + mrkougar.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/mrkougar.png + + + + mrlo.zip + Mr. Lo! + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + mrtnt.zip + Mr. TNT + Move along lines, erasing them as you go, to collect flashing or spinning items. If you collide with one of the yellow dots that are moving around erasing lines or if you end up at a dead end with nowhere to go, you lose a life. You cannot go back, only forward. + 0.50 + 19830101T000000 + Techstar (Telko license) + Techstar (Telko license) + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/mrtnt.png + + + + donight.zip + Mr.Do's Nightmare (hack by Krazy Ivan) + 20130101T000000 + Shoot'em Up + 79 + 1-2 + Mame + media/mixrbv2/donight.png + + + mrsdyna.zip + Mrs. Dynamite + Run around a labyrinth dodging monsters while picking up dynamite to use against your foes. + 0.70 + 19820101T000000 + Mame + 270 + 240x192 + media/mixrbv2/mrsdyna.png + + + + mspacman.zip + MS Pacman + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspactwin.zip + Ms PacMan Twin (Argentina) + 19920101T000000 + Mame + 270 + 288x224 + media/mixrbv2/mspactwin.png + + + + mspacmat.zip + Ms. Pac Attack + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanbg.zip + Ms. Pac-Man ('Made in Greece' bootleg, set 1) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanbg2.zip + Ms. Pac-Man ('Made in Greece' bootleg, set 2) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmbe.zip + Ms. Pac-Man (bootleg, encrypted) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmab.zip + Ms. Pac-Man (bootleg, set 1) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmab2.zip + Ms. Pac-Man (bootleg, set 2) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmanlai.zip + Ms. Pac-Man (Leisure and Allied bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmbmc.zip + Ms. Pac-Man (Marti Colls bootleg) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacmnf.zip + Ms. Pac-Man (with speedup hack) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + msheartb.zip + Ms. Pac-Man Heart Burn + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mspacpls.zip + Ms. Pac-Man Plus + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + 20pacgalr0.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + 20pacgal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + 20pacgalr1.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + 20pacgal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + 20pacgalr2.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + 20pacgal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + 20pacgalr3.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + 20pacgal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + 20pacgalr4.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + 20pacgal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + 20pacgal.zip + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08) + Classic Reunion! Class of '81 + +Two of the Greatest Hits at One Great Price! + + 0.70 + 20000101T000000 + General Computer + Namco + Compilation + 34 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/20pacgal.png + + + + mschamps.zip + Ms. Pacman Champion Edition / Super Zola Pac Gal + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + mschamp.zip + Ms. Pacman Champion Edition / Zola-Puc Gal + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + rocktrv2.zip + MTV Rock-N-Roll Trivia (Part 2) + Rock-N-Roll Trivia Part 2 is a Trivia game about MTV Music Videos made by Triumph Software. + 0.70 + 19860101T000000 + Triumph Software Inc. + Triumph Software Inc. + Quiz / Music English + 2964 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/rocktrv2.png + + + + mugsmash.zip + Mug Smashers + A sideways scrolling beat-em-up in the mould of "Final Fight", "Double Dragon" et. al. Mug Smashers features a colourful array of somewhat camp protagonists to the fighting genre. The usual array of fighting moves and occasional weapon pick-ups (such as knives, spanners and a gun) feature. + 0.50 + 19900101T000000 + Electronic Devices Italy / 3D Games England + Electronic Devices Italy / 3D Games England + Beat'em Up + 1 + 1-2 + Mame + 320x240 + media/mixrbv2/mugsmash.png + + + + semibase.zip + MuHanSeungBu (SemiCom Baseball) (Korea) + A Korean baseball game. + 0.70 + 19970101T000000 + SemiCom + SemiCom + Sports / Baseball + 2853 + 1-2 + SemiCom + 320x240 + media/mixrbv2/semibase.png + + + + nmg5.zip + Multi 5 / New Multi Game 5 (set 1) + This title contains 5 different games, one of which is a platform game, with the remaining four being puzzle games. They are: + +"Tong Boy" combines elements from both "Donkey Kong" and "Donkey Kong Jr.". +Bubble Gum (a clone of "Puzzle Bobble") +Cross Point (a clone of "Columns") +Box Logic (a clone of "Logic Pro") +Rocktris, (a clone of "Tetris") + +Both 'Cross Point' and 'Rocktris' feature adult content in the form of badly digitized pictures of naked women. Despite the colourful and nicely-rendered graphics of most of the games on offer, none manage to match the playability of the arcade originals on which they are based. + 0.50 + 19980101T000000 + Yun Sung + Yun Sung + Compilation + 34 + 1-2 + Mame + 320x240 + media/mixrbv2/nmg5.png + + + + nmg5a.zip + Multi 5 / New Multi Game 5 (set 2) + This title contains 5 different games, one of which is a platform game, with the remaining four being puzzle games. They are: + +"Tong Boy" combines elements from both "Donkey Kong" and "Donkey Kong Jr.". +Bubble Gum (a clone of "Puzzle Bobble") +Cross Point (a clone of "Columns") +Box Logic (a clone of "Logic Pro") +Rocktris, (a clone of "Tetris") + +Both 'Cross Point' and 'Rocktris' feature adult content in the form of badly digitized pictures of naked women. Despite the colourful and nicely-rendered graphics of most of the games on offer, none manage to match the playability of the arcade originals on which they are based. + 0.50 + 19980101T000000 + Yun Sung + Yun Sung + Compilation + 34 + 1-2 + nmg5.zip + Mame + 320x240 + media/mixrbv2/nmg5.png + + + + nmg5e.zip + Multi 5 / New Multi Game 5 (set 3, earlier) + This title contains 5 different games, one of which is a platform game, with the remaining four being puzzle games. They are: + +"Tong Boy" combines elements from both "Donkey Kong" and "Donkey Kong Jr.". +Bubble Gum (a clone of "Puzzle Bobble") +Cross Point (a clone of "Columns") +Box Logic (a clone of "Logic Pro") +Rocktris, (a clone of "Tetris") + +Both 'Cross Point' and 'Rocktris' feature adult content in the form of badly digitized pictures of naked women. Despite the colourful and nicely-rendered graphics of most of the games on offer, none manage to match the playability of the arcade originals on which they are based. + 0.50 + 19980101T000000 + Yun Sung + Yun Sung + Compilation + 34 + 1-2 + nmg5.zip + Mame + 320x240 + media/mixrbv2/nmg5.png + + + + multchmpk.zip + Multi Champ (Korea, older) + Multi champ est un jeux de compilation, on peux y trouver un pang, un jeux ou vous devez trouver des différences et un jeu de course. + 0.60 + 19990101T000000 + ESD + ESD + Compilation + 34 + 1-2 + multchmp.zip + Mame + 320x240 + media/mixrbv2/multchmp.png + + + + multchmp.zip + Multi Champ (World) + Multi champ est un jeux de compilation, on peux y trouver un pang, un jeux ou vous devez trouver des différences et un jeu de course. + 0.60 + 19990101T000000 + ESD + ESD + Compilation + 34 + 1-2 + Mame + 320x240 + media/mixrbv2/multchmp.png + + + + multchmpa.zip + Multi Champ (World, older) + Multi champ est un jeux de compilation, on peux y trouver un pang, un jeux ou vous devez trouver des différences et un jeu de course. + 0.60 + 19990101T000000 + ESD + ESD + Compilation + 34 + 1-2 + multchmp.zip + Mame + 320x240 + media/mixrbv2/multchmp.png + + + + mchampdx.zip + Multi Champ Deluxe (ver. 0106, 06/01/2000) + This game contains 6 games: +A "Columns" clone. +A "Pang" clone. +A "Solitaire" clone. +A "Shanghai" clone. +A "Pac-Man" clone. +A "Tetris" clone. + 0.60 + 20000101T000000 + ESD + ESD + Compilation + 34 + 1-2 + Mame + 320x240 + media/mixrbv2/mchampdx.png + + + + mchampdxa.zip + Multi Champ Deluxe (ver. 1126, 26/11/1999) + This game contains 6 games: +A "Columns" clone. +A "Pang" clone. +A "Solitaire" clone. +A "Shanghai" clone. +A "Pac-Man" clone. +A "Tetris" clone. + 0.60 + 20000101T000000 + ESD + ESD + Compilation + 34 + 1-2 + mchampdx.zip + Mame + 320x240 + media/mixrbv2/mchampdx.png + + + + multi96.zip + Multi Game '96 (Italy) + Guide twin brothers Tom and Sam to rescuing the princess and restoring peace to the Dream Land Paradise by going through various mini-games. + 0.50 + 19950101T000000 + Barko Corp. + Barko Corp. + Compilation + 34 + 1-2 + twinadv.zip + SemiCom + 256x224 + media/mixrbv2/twinadv.png + + + + mltiwars.zip + Multi Wars (bootleg of UniWar S) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + mnchmobl.zip + Munch Mobile (US) + A weird driving game with a car that has long arms that reach out to grab a variety of edible items that appear along roadside. + +The object is to drive safely down the road. Pick up enough fuel to stay alive while avoiding other vehicles that go by, grab as many bonus objects as possible including apples, cherries, bananas, acorns, live fish and money, and park your car in the garage. Driving while trying to pick up the goodies is difficult and you can crash very easily on the narrow roads. The pace of the game is frustrating because the hands move slowly while the car itself moves really fast, especially in the later rounds. If one of your hands hits a tree or any other foreign object in its quest for food, the car winces in pain for a few moments until it can use its hands again. + +You can get a bonus for putting used-up food into garbage cans. Grabbing fish which leap out of surrounding rivers is a safe bet, but most other bonuses are placed, so you can crash if you try to grab them. The best strategy is only to go for the fuel, since the car is a big gas guzzler and you can also get a bonus for leftover fuel at the end of the drive. + 0.70 + 19830101T000000 + SNK + SNK + Race, Driving + 28 + 1-2 + joyfulr.zip + SNK Classics + 270 + 320x240 + media/mixrbv2/joyfulr.png + + + + mbomberj.zip + Muscle Bomber - the body explosion (930713 Japan) + A 1-on-1 fighting game in which players choose from 10 different wrestlers and take to the ring to try and defeat their larger-than-life opponents. Each wrestler has an assortment of moves, including his own special 'super slam'. The object of the game is to win and defend the championship by pinning or putting a submission hold on your opponent. + 0.90 + 19930101T000000 + Capcom + Capcom + Sports / Wrestling + 2861 + 1-4 + slammast.zip + Capcom Play System + 384x224 + media/mixrbv2/slammast.png + + + + mbombrdj.zip + Muscle Bomber Duo - heat up warriors (931206 Japan) + Professional wrestling experienced a sudden increase in popularity during the early 1980s, where many professional wrestling organizations were started all over the world. A severe rivalry existed among the organizations. + +In order to resolve this conflict, 8 organizations combined to form the Capcom Professional Wrestling Association (CPWA), led by Victor Ortega, the CPWA?s first champion. + +One day, Ortega suddenly vanished. He was considered to be the axis of the sport and his unexpected disappearance caused the CPWA to enter an age of confusion and disorder. The BPWA, a dark underground wrestling organization, chose to take advantage of this opportunity and began moving. With "Fighters of Muscle Bomber = Destiny" as the theme, the CPWA chief executives decided to hold a world tour called the ?Crash Carnival,? to decide the new king of the CPWA. + +The gong that determines the new ?Master of Muscle Bomber? is sounded? + 0.80 + 19930101T000000 + Capcom + Capcom + Sports + 685 + 1-4 + mbombrd.zip + Capcom Play System + 384x224 + media/mixrbv2/mbombrd.png + + + + mbombrd.zip + Muscle Bomber Duo - ultimate team battle (931206 World) + Professional wrestling experienced a sudden increase in popularity during the early 1980s, where many professional wrestling organizations were started all over the world. A severe rivalry existed among the organizations. + +In order to resolve this conflict, 8 organizations combined to form the Capcom Professional Wrestling Association (CPWA), led by Victor Ortega, the CPWA?s first champion. + +One day, Ortega suddenly vanished. He was considered to be the axis of the sport and his unexpected disappearance caused the CPWA to enter an age of confusion and disorder. The BPWA, a dark underground wrestling organization, chose to take advantage of this opportunity and began moving. With "Fighters of Muscle Bomber = Destiny" as the theme, the CPWA chief executives decided to hold a world tour called the ?Crash Carnival,? to decide the new king of the CPWA. + +The gong that determines the new ?Master of Muscle Bomber? is sounded? + 0.80 + 19930101T000000 + Capcom + Capcom + Sports + 685 + 1-4 + Capcom Play System + 384x224 + media/mixrbv2/mbombrd.png + + + + musicbal.zip + Music Ball + 0.50 + 19880101T000000 + Tecfri / Desystem S.A. + Tecfri / Desystem S.A. + Pinball + 31 + Mame + 270 + 256x224 + media/mixrbv2/musicbal.png + + + + mustachei.zip + Mustache Boy (Italy) + The Player controls a 'mustache boy' with a red space suit, who runs across of a top-view maze on the space and must coloring by touching all the tiles in the ground, meantime must pick up all the special items to destroy and detain the annoying enemies, we can also evading them by jumping over them to avoiding contact and make uses of a double jump to go to distant areas without falling and pop all the colors ballons to earn points, letters or bonuses, once you survived and changed the color of each tile on the maze, you will go to the next round. + 0.50 + 19870101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Action + 10 + 1-2 + mustache.zip + Seibu Kaihatsu + 270 + 240x248 + media/mixrbv2/mustache.png + + + + mustache.zip + Mustache Boy (Japan) + The Player controls a 'mustache boy' with a red space suit, who runs across of a top-view maze on the space and must coloring by touching all the tiles in the ground, meantime must pick up all the special items to destroy and detain the annoying enemies, we can also evading them by jumping over them to avoiding contact and make uses of a double jump to go to distant areas without falling and pop all the colors ballons to earn points, letters or bonuses, once you survived and changed the color of each tile on the maze, you will go to the next round. + 0.50 + 19870101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Action + 10 + 1-2 + Seibu Kaihatsu + 270 + 240x248 + media/mixrbv2/mustache.png + + + + alibabab.zip + Mustafa and 40 Thieves (bootleg) + Ali Baba and 40 Thieves is an arcade game in which the player must utilize a four-way joystick to take control of the eponymous Ali Baba who must fend off and kill the forty thieves as they try to steal his money; at the start of the game, Ali Baba goes into the room at the top of the screen as that text "Open Sesame" appears above him, grabs the seven bags of money and takes them down to the room at the bottom of the screen. He will now have to hit each of the forty thieves as they enter the room - but if one of them should make it to the room at the bottom of the screen he will pick up one of the seven bags of money then try to take it back up to the room at the top of the screen. If the thieves take all seven of the money bags up to the top of the screen, it will cost Ali Baba a life; but, if he "hits" all forty thieves without this happening (except the large and invulnerable red one), he will proceed to the next level. + 0.30 + 19820101T000000 + SEGA + SEGA + Action + 10 + 1-2 + alibaba.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/alibaba.png + + + + mnight.zip + Mutant Night + In Act 9 there is a grey robot dragon which resembles Bub and Bob from Taito's "Bubble Bobble". + 0.50 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 256x192 + media/mixrbv2/mnight.png + + + + mnightj.zip + Mutant Night (Japan) + In Act 9 there is a grey robot dragon which resembles Bub and Bob from Taito's "Bubble Bobble". + 0.50 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + mnight.zip + Mame + 256x192 + media/mixrbv2/mnight.png + + + + mutnat.zip + Mutation Nation (NGM-014)(NGH-014) + The Slum... an area of town completely forgotten. No one could imagine the cruelness suffered by innocent people who were transformed into horrible mutant creatures by genetic experiments. They hovered everywhere and completely took control of the town. + +Mutation Nation is a 1-2 player action game where you must control your hero and beat up any mutant that gets in your way, by either using your fists or one of four special attacks. A boss at the end of each area needs to be defeated if you want to proceed further through the game. + 0.65 + 19920101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/mutnat.png + + + + mvpjd.zip + MVP (set 1, Japan, FD1094 317-0142 decrypted) + M.V.P. (c) 1989 Sega. A hilarious baseball game. - TECHNICAL - Sega System 16B hardware Game ID : 317-0142 / 317-0143 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Players : 2 Control : 8-wa + 0.70 + 19890101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + mvp.zip + Sega Classics + 320x224 + media/mixrbv2/mvp.png + + + + mvpj.zip + MVP (set 1, Japan, FD1094 317-0142) + M.V.P. (c) 1989 Sega. A hilarious baseball game. - TECHNICAL - Sega System 16B hardware Game ID : 317-0142 / 317-0143 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Players : 2 Control : 8-wa + 0.70 + 19890101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + mvp.zip + Sega Classics + 320x224 + media/mixrbv2/mvp.png + + + + mvpd.zip + MVP (set 2, US, FD1094 317-0143 decrypted) + M.V.P. (c) 1989 Sega. A hilarious baseball game. - TECHNICAL - Sega System 16B hardware Game ID : 317-0142 / 317-0143 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Players : 2 Control : 8-wa + 0.70 + 19890101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + mvp.zip + Sega Classics + 320x224 + media/mixrbv2/mvp.png + + + + mvp.zip + MVP (set 2, US, FD1094 317-0143) + M.V.P. (c) 1989 Sega. A hilarious baseball game. - TECHNICAL - Sega System 16B hardware Game ID : 317-0142 / 317-0143 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 5 Mhz) Sound Chips : YM2151 (@ 4 Mhz), UPD7759 (@ 640 Khz) Players : 2 Control : 8-wa + 0.70 + 19890101T000000 + SEGA + SEGA + Sports / Baseball + 2853 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/mvp.png + + + + mx5000.zip + MX5000 + A vertically scrolling shoot-em-up by Konami featuring good music, big explosions and lots of power-ups. + 0.50 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 280x224 + media/mixrbv2/mx5000.png + + + + myherobl.zip + My Hero (bootleg, 315-5132 encryption) + My Hero is a very basic beat-'em-up game, where the objective is to travel to the right, punching and kicking enemies while trying not to be hit too many times yourself. Eventually you will come to a clearing and have to fight a boss - defeating him will briefly reunite you with your girlfriend, before she is kidnapped again. The game loops indefinitely, and ends when the player runs out of lives. + 0.70 + 19850101T000000 + SEGA + SEGA + Fight / 2D + 2914 + 1-2 + myhero.zip + Sega Classics + 512x224 + media/mixrbv2/myhero.png + + + + myherok.zip + My Hero (Korea) + My Hero is a very basic beat-'em-up game, where the objective is to travel to the right, punching and kicking enemies while trying not to be hit too many times yourself. Eventually you will come to a clearing and have to fight a boss - defeating him will briefly reunite you with your girlfriend, before she is kidnapped again. The game loops indefinitely, and ends when the player runs out of lives. + 0.70 + 19850101T000000 + SEGA + SEGA + Fight / 2D + 2914 + 1-2 + myhero.zip + Sega Classics + 512x224 + media/mixrbv2/myhero.png + + + + myhero.zip + My Hero (US, not encrypted) + My Hero is a very basic beat-'em-up game, where the objective is to travel to the right, punching and kicking enemies while trying not to be hit too many times yourself. Eventually you will come to a clearing and have to fight a boss - defeating him will briefly reunite you with your girlfriend, before she is kidnapped again. The game loops indefinitely, and ends when the player runs out of lives. + 0.70 + 19850101T000000 + SEGA + SEGA + Fight / 2D + 2914 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/myhero.png + + + + mystston.zip + Mysterious Stones - Dr. John's Adventure + You fly to different locations around the world, exploring old temples and finding stones. Break open as many stones as possible to get artifacts while shooting the temple guards. + 0.60 + 19840101T000000 + Tecmo + Tecmo + Action + 10 + 1-2 + Technos + 270 + 256x240 + media/mixrbv2/mystston.png + + + + myststono.zip + Mysterious Stones - Dr. Kick in Adventure + You fly to different locations around the world, exploring old temples and finding stones. Break open as many stones as possible to get artifacts while shooting the temple guards. + 0.60 + 19840101T000000 + Tecmo + Tecmo + Action + 10 + 1-2 + mystston.zip + Technos + 270 + 256x240 + media/mixrbv2/mystston.png + + + + myststonoi.zip + Mysterious Stones - Dr. Kick in Adventure (Itisa PCB) + You fly to different locations around the world, exploring old temples and finding stones. Break open as many stones as possible to get artifacts while shooting the temple guards. + 0.60 + 19840101T000000 + Tecmo + Tecmo + Action + 10 + 1-2 + mystston.zip + Technos + 270 + 256x240 + media/mixrbv2/mystston.png + + + + mystwarraa.zip + Mystic Warriors (ver AAA) + Mystic Warriors is a horizontally-scrolling platform beat-em-up for up to four players, in which the evil 'SKULL' organisation has taken over the world and driven its terrified civilians into hiding. Five Ninja warriors set about destroying SKULL and freeing the World from its grip. + +Mystic Warriors features five selectable characters, one of which is shown being kidnapped by SKULL once players have made their character choices. What follows is eight levels of platform 'run-and-gun' action, with an end-of-level boss waiting at the end of each stage. + +Players are armed with both Shuriken throwing stars and with a sword for close encounters. Numerous boxes are scattered throughout the levels (or are being carried by enemies), all of which contain bonus items such as weapon power-ups or energy-replenishing food. Other power-ups include an invulnerability shield (known as the "Shinobi Shield") which lasts a few seconds and a "Smart Bomb" power-up, which destroys all on-screen enemies. Some boxes also contain points-giving items, such as bags of money, jewellery and gold. + 0.70 + 19930101T000000 + Konami + Konami + Platform + 7 + 1-4 + mystwarr.zip + Konami Classics + 288x224 + media/mixrbv2/mystwarr.png + + + + mystwarra.zip + Mystic Warriors (ver AAB) + Mystic Warriors is a horizontally-scrolling platform beat-em-up for up to four players, in which the evil 'SKULL' organisation has taken over the world and driven its terrified civilians into hiding. Five Ninja warriors set about destroying SKULL and freeing the World from its grip. + +Mystic Warriors features five selectable characters, one of which is shown being kidnapped by SKULL once players have made their character choices. What follows is eight levels of platform 'run-and-gun' action, with an end-of-level boss waiting at the end of each stage. + +Players are armed with both Shuriken throwing stars and with a sword for close encounters. Numerous boxes are scattered throughout the levels (or are being carried by enemies), all of which contain bonus items such as weapon power-ups or energy-replenishing food. Other power-ups include an invulnerability shield (known as the "Shinobi Shield") which lasts a few seconds and a "Smart Bomb" power-up, which destroys all on-screen enemies. Some boxes also contain points-giving items, such as bags of money, jewellery and gold. + 0.70 + 19930101T000000 + Konami + Konami + Platform + 7 + 1-4 + mystwarr.zip + Konami Classics + 288x224 + media/mixrbv2/mystwarr.png + + + + mystwarr.zip + Mystic Warriors (ver EAA) + Mystic Warriors is a horizontally-scrolling platform beat-em-up for up to four players, in which the evil 'SKULL' organisation has taken over the world and driven its terrified civilians into hiding. Five Ninja warriors set about destroying SKULL and freeing the World from its grip. + +Mystic Warriors features five selectable characters, one of which is shown being kidnapped by SKULL once players have made their character choices. What follows is eight levels of platform 'run-and-gun' action, with an end-of-level boss waiting at the end of each stage. + +Players are armed with both Shuriken throwing stars and with a sword for close encounters. Numerous boxes are scattered throughout the levels (or are being carried by enemies), all of which contain bonus items such as weapon power-ups or energy-replenishing food. Other power-ups include an invulnerability shield (known as the "Shinobi Shield") which lasts a few seconds and a "Smart Bomb" power-up, which destroys all on-screen enemies. Some boxes also contain points-giving items, such as bags of money, jewellery and gold. + 0.70 + 19930101T000000 + Konami + Konami + Platform + 7 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/mystwarr.png + + + + mystwarrj.zip + Mystic Warriors (ver JAA) + Mystic Warriors is a horizontally-scrolling platform beat-em-up for up to four players, in which the evil 'SKULL' organisation has taken over the world and driven its terrified civilians into hiding. Five Ninja warriors set about destroying SKULL and freeing the World from its grip. + +Mystic Warriors features five selectable characters, one of which is shown being kidnapped by SKULL once players have made their character choices. What follows is eight levels of platform 'run-and-gun' action, with an end-of-level boss waiting at the end of each stage. + +Players are armed with both Shuriken throwing stars and with a sword for close encounters. Numerous boxes are scattered throughout the levels (or are being carried by enemies), all of which contain bonus items such as weapon power-ups or energy-replenishing food. Other power-ups include an invulnerability shield (known as the "Shinobi Shield") which lasts a few seconds and a "Smart Bomb" power-up, which destroys all on-screen enemies. Some boxes also contain points-giving items, such as bags of money, jewellery and gold. + 0.70 + 19930101T000000 + Konami + Konami + Platform + 7 + 1-4 + mystwarr.zip + Konami Classics + 288x224 + media/mixrbv2/mystwarr.png + + + + mystwarru.zip + Mystic Warriors (ver UAA) + Mystic Warriors is a horizontally-scrolling platform beat-em-up for up to four players, in which the evil 'SKULL' organisation has taken over the world and driven its terrified civilians into hiding. Five Ninja warriors set about destroying SKULL and freeing the World from its grip. + +Mystic Warriors features five selectable characters, one of which is shown being kidnapped by SKULL once players have made their character choices. What follows is eight levels of platform 'run-and-gun' action, with an end-of-level boss waiting at the end of each stage. + +Players are armed with both Shuriken throwing stars and with a sword for close encounters. Numerous boxes are scattered throughout the levels (or are being carried by enemies), all of which contain bonus items such as weapon power-ups or energy-replenishing food. Other power-ups include an invulnerability shield (known as the "Shinobi Shield") which lasts a few seconds and a "Smart Bomb" power-up, which destroys all on-screen enemies. Some boxes also contain points-giving items, such as bags of money, jewellery and gold. + 0.70 + 19930101T000000 + Konami + Konami + Platform + 7 + 1-4 + mystwarr.zip + Konami Classics + 288x224 + media/mixrbv2/mystwarr.png + + + + nsub.zip + N-Sub (upright) + The object of the game is to maneuver an on-screen submarine, the "N-Sub," with the joystick and sink the enemy fleet with torpedo fire in the Cobalt Blue Sea. The player can fire torpedoes vertically and horizontally from their submarines by pressing two separate "FIRE" buttons. The player can hold the button longer to fire three torpedoes in rapid succession. Enemy ships attack the N-Sub with missiles, torpedoes and depth charges. A round of gameplay ends when the player defeats a wave of twelve enemy ships. Successive rounds increase in difficulty. The player has multiple lives, or chances to continue after being hit by an enemy ship, and can receive more lives by reaching high scores. The game ends when the player exhausts their lives. + 0.30 + 19800101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/nsub.png + + + + nycaptor.zip + N.Y. Captor + You play a marksman who has to rescue hostages from terrorists. Fire upon enemies from your position, but avoid shooting the bystanders. After the last life has been lost, a sequence shows your character falling from his perch to his death. + 0.70 + 19850101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + Taito Classics + 256x224 + media/mixrbv2/nycaptor.png + + + + nam1975.zip + NAM-1975 (NGM-001)(NGH-001) + As a soldier, you and/or a friend must travel through Vietnam to stop the scientist and his world destroying laser machine. In the game, you must shoot enemy soldiers, tanks, helicopters, jeeps, and more by aiming the machine gun cursor and shooting at them. Within each location, you can pick up more powerful weapons such as machine guns and flame throwers, but these have a limited supply of ammunition. Pressing down on the joystick while running at the same time will cause your character to perform a somersault and be invincible for a second. At the end of every location, you will need to defeat a series of bosses, which are not the same every play. Cut-scenes are viewed in between locations, and contain dramatic digitized dialogue. + 0.80 + 19900101T000000 + SNK + SNK + Shooter / 3rd person + 2899 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/nam1975.png + + + + namenayo.zip + Namennayo (Japan) + An overhead-view obstacle course game that use Satoru Tsuda's Nameneko characters. + 0.30 + 19820101T000000 + Mame + 768x224 + media/mixrbv2/namenayo.png + + + + naname.zip + Naname de Magic! + Improve your Japanese skills while honing your reflexes and critical thinking to new heights in the fantastically cool and retro Naname de Magic! Select one of 5 awesome characters and then hit the board to arrange the falling icons as quickly as you can! Your goal is to watch the icons falling from the top of the screen and make them strategically fall into the correct places to create rows - diagonally to attack and horizontally to score big - and eliminate then to make more room for other falling icons! + + + 0.70 + 19940101T000000 + Atlus + Atlus + Puzzle-Game / Fall + 2912 + 1-2 + Atlus + 320x240 + media/mixrbv2/naname.png + + + + nastar.zip + Nastar (World) + Nastar also known as "Rastan Saga II". + +A sequel to Rastan. Defeat the monsters with various attack methods and three different weapons! + +In the land of Rastania stands a most sacred shrine called Sky Scraper. It is said that the man who rules Sky Scraper rules the Earth. An evil tribe is now trying to invade this holy place so that they might rule. To protect the shrine, a courageous young man has challenged the invaders... + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/nastar.png + + + + nastarw.zip + Nastar Warrior (US) + Nastar also known as "Rastan Saga II". + +A sequel to Rastan. Defeat the monsters with various attack methods and three different weapons! + +In the land of Rastania stands a most sacred shrine called Sky Scraper. It is said that the man who rules Sky Scraper rules the Earth. An evil tribe is now trying to invade this holy place so that they might rule. To protect the shrine, a courageous young man has challenged the invaders... + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + nastar.zip + Taito Classics + 320x224 + media/mixrbv2/nastar.png + + + + natodef.zip + NATO Defense + A 2-D maze game where you run over mines and shoot enemies for points. Sections of walls can be shot, and there are 'dumps' where you can pick up more shots to shoot at your enemies. Be careful, though, as your enemies can also shoot you. + 0.70 + 19820101T000000 + Pacific Novelty + Pacific Novelty + Action + 10 + 1-2 + Mame + 256x256 + media/mixrbv2/natodef.png + + + + naughtyb.zip + Naughty Boy + Naughty Boy (c) 1982 Jaleco. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Players : 2 Control : 4-way joystick Buttons : 1 - TRIVIA - Released in March 1982. This is the first game manufactured by + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + Jaleco + 90 + 288x224 + media/mixrbv2/naughtyb.png + + + + naughtyba.zip + Naughty Boy (bootleg, set 1) + Naughty Boy (c) 1982 Jaleco. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Players : 2 Control : 4-way joystick Buttons : 1 - TRIVIA - Released in March 1982. This is the first game manufactured by + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + naughtyb.zip + Jaleco + 90 + 288x224 + media/mixrbv2/naughtyb.png + + + + naughtybb.zip + Naughty Boy (bootleg, set 2) + Naughty Boy (c) 1982 Jaleco. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Players : 2 Control : 4-way joystick Buttons : 1 - TRIVIA - Released in March 1982. This is the first game manufactured by + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + naughtyb.zip + Jaleco + 90 + 288x224 + media/mixrbv2/naughtyb.png + + + + naughtybc.zip + Naughty Boy (Cinematronics) + Naughty Boy (c) 1982 Jaleco. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Players : 2 Control : 4-way joystick Buttons : 1 - TRIVIA - Released in March 1982. This is the first game manufactured by + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + naughtyb.zip + Jaleco + 90 + 288x224 + media/mixrbv2/naughtyb.png + + + + nmouse.zip + Naughty Mouse (set 1) + Naughty Mouse, also known as Woodpecker, is a platform arcade game where the player must take control of Naughty Mouse, who must make it from his own house at the bottom of the screen to his girlfriend's house at the top. + +There are several differently colored woodpeckers that hatch from the large eggs positioned on the left and right sides of the screen, which set out to stop him. The player has a single button with which to make Naughty Mouse jump over them. + +Some of the ladders may also become electrified after Naughty Mouse has climbed them, forbidding him to go back down them again on pain of death. Once he has reached his girlfriend's house, he will receive the stage's remaining time as bonus points and proceed to the next stage. + +The main difference between Naughty Mouse and Woodpecker is the color palettes, and stage arrangements. + 0.50 + 19810101T000000 + Amenip + Amenip + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/nmouse.png + + + + nmouseb.zip + Naughty Mouse (set 2) + Naughty Mouse, also known as Woodpecker, is a platform arcade game where the player must take control of Naughty Mouse, who must make it from his own house at the bottom of the screen to his girlfriend's house at the top. + +There are several differently colored woodpeckers that hatch from the large eggs positioned on the left and right sides of the screen, which set out to stop him. The player has a single button with which to make Naughty Mouse jump over them. + +Some of the ladders may also become electrified after Naughty Mouse has climbed them, forbidding him to go back down them again on pain of death. Once he has reached his girlfriend's house, he will receive the stage's remaining time as bonus points and proceed to the next stage. + +The main difference between Naughty Mouse and Woodpecker is the color palettes, and stage arrangements. + 0.50 + 19810101T000000 + Amenip + Amenip + Platform / Run Jump + 2915 + 1-2 + nmouse.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/nmouse.png + + + + navarone.zip + Navarone + The player controls a battleship which must move around the edge of an island trying to shoot the dot obstacles, mines and a central skull enemy to earn points and while avoiding the bullets fired at it by the indestructible gun turrets. If it should get hit by one, it will lose a life, but once it has cleared the island, the remaining time will be added to its score (in 100-point increments), and it will proceed to the next round. + 0.10 + 19800101T000000 + Shooter + 2646 + Namco Classics + 270 + 272x224 + media/mixrbv2/navarone.png + + + + nebulbee.zip + Nebulous Bee + Galaga is a single-screen shoot-em-up in which the player controls a 'Fighter' spaceship and must defend the home planet against the on-coming hordes of alien invaders called "Galagans". The Fighter can only move left and right along the bottom of the screen. + +Galagans fly onto the screen in a variety of formations before forming troop lines at the top of the screen. Once all troop lines are formed the Galagans separate and start attacking the player's Fighter in ones, twos and threes. The top-line Boss Galaga need to be shot twice before they are destroyed. + 0.90 + 19810101T000000 + Namco + Midway + Shoot'em Up + 79 + 1-2 + galaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/galaga.png + + + + kuniokunb.zip + Nekketsu Kouha Kunio-kun (Japan bootleg) + Classic arcade beat-em-up that would get many ports done for other systems. Pioneered gameplay elements which would become the foundations of the scrolling beat 'em up genre. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + renegade.zip + Taito Classics + 240x240 + media/mixrbv2/renegade.png + + + + kuniokun.zip + Nekketsu Kouha Kunio-kun (Japan) + Classic arcade beat-em-up that would get many ports done for other systems. Pioneered gameplay elements which would become the foundations of the scrolling beat 'em up genre. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + renegade.zip + Taito Classics + 240x240 + media/mixrbv2/renegade.png + + + + nkdodge.zip + Nekketsu Koukou Dodgeball Bu (Japan) + The player takes control of the American team, who must compete against five other nations in a worldwide dodgeball tournament. In the first match, the player represent the state Dallas and must defeat their rivals from Chicago to represent America in the World Cup. Afterwards, the player will take on England, Iceland, China and Africa before fighting against the champions from Japan. + 0.50 + 19870101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports + 685 + 1-2 + spdodgeb.zip + Technos + 256x240 + media/mixrbv2/spdodgeb.png + + + + nkdodgeb.zip + Nekketsu Koukou Dodgeball Bu (Japan, bootleg) + The player takes control of the American team, who must compete against five other nations in a worldwide dodgeball tournament. In the first match, the player represent the state Dallas and must defeat their rivals from Chicago to represent America in the World Cup. Afterwards, the player will take on England, Iceland, China and Africa before fighting against the champions from Japan. + 0.50 + 19870101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports + 685 + 1-2 + spdodgeb.zip + Technos + 256x240 + media/mixrbv2/spdodgeb.png + + + + nemesis.zip + Nemesis (ROM version) + Gradius / Nemesis is a horizontally-scrolling shoot-em-up in which the player pilots a spacecraft known as the Vic Viper as they search through unexplored galaxies looking for a lost armada. These new galaxies are teaming with alien life set upon destroying the Viper. + +The game features a power-up system based on a selection meter at the bottom of the screen called a 'power meter', this allows players to 'buy' weapons and upgrades. To achieve this, players must destroy special individual enemies - usually red in colour - or enemy waves that then drop orange capsules. These capsules can be collected and used to upgrade the Viper's weapons. Each collected capsule advances the power meter by one step. Players can activate the highlighted item at any point, after which the power meter resets. + 0.90 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/nemesis.png + + + + nemesisuk.zip + Nemesis (World?, ROM version) + Gradius / Nemesis is a horizontally-scrolling shoot-em-up in which the player pilots a spacecraft known as the Vic Viper as they search through unexplored galaxies looking for a lost armada. These new galaxies are teaming with alien life set upon destroying the Viper. + +The game features a power-up system based on a selection meter at the bottom of the screen called a 'power meter', this allows players to 'buy' weapons and upgrades. To achieve this, players must destroy special individual enemies - usually red in colour - or enemy waves that then drop orange capsules. These capsules can be collected and used to upgrade the Viper's weapons. Each collected capsule advances the power meter by one step. Players can activate the highlighted item at any point, after which the power meter resets. + 0.90 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + nemesis.zip + Konami Classics + 256x224 + media/mixrbv2/nemesis.png + + + + nemor1.zip + Nemo (90 11 09 etc) + One night, as Nemo sleeps, he is visited in a dream by the King of Slumberland, who invites Nemo to come and play with the King's daughter, the Princess. Nemo finds himself unable to find the Princess however, so he and 'Flip', a strange companion who also turns up in the dream, decide to explore Slumberland and find the king. + +Nemo is a colourful and abstract platform shoot-em-up set in the dream world of Slumberland, a surreal world in which childrens' toys are running amok and must be destroyed. Nemo is armed with a magical staff that emits a burst of magic to destroy the many enemies, some of which require multiple hits. A number of power-ups also appear at regular intervals to aid Nemo in his quest through seven tough stages. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + nemo.zip + Capcom Play System + 384x224 + media/mixrbv2/nemo.png + + + + nemoj.zip + Nemo (90 11 20 Japan) + One night, as Nemo sleeps, he is visited in a dream by the King of Slumberland, who invites Nemo to come and play with the King's daughter, the Princess. Nemo finds himself unable to find the Princess however, so he and 'Flip', a strange companion who also turns up in the dream, decide to explore Slumberland and find the king. + +Nemo is a colourful and abstract platform shoot-em-up set in the dream world of Slumberland, a surreal world in which childrens' toys are running amok and must be destroyed. Nemo is armed with a magical staff that emits a burst of magic to destroy the many enemies, some of which require multiple hits. A number of power-ups also appear at regular intervals to aid Nemo in his quest through seven tough stages. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + nemo.zip + Capcom Play System + 384x224 + media/mixrbv2/nemo.png + + + + nemo.zip + Nemo (90 11 30 etc) + One night, as Nemo sleeps, he is visited in a dream by the King of Slumberland, who invites Nemo to come and play with the King's daughter, the Princess. Nemo finds himself unable to find the Princess however, so he and 'Flip', a strange companion who also turns up in the dream, decide to explore Slumberland and find the king. + +Nemo is a colourful and abstract platform shoot-em-up set in the dream world of Slumberland, a surreal world in which childrens' toys are running amok and must be destroyed. Nemo is armed with a magical staff that emits a burst of magic to destroy the many enemies, some of which require multiple hits. A number of power-ups also appear at regular intervals to aid Nemo in his quest through seven tough stages. + 0.90 + 19900101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/nemo.png + + + + neo2500.zip + Neo 2500 Demo + Neo-Geo + media/mixrbv2/neo2500.png + + + nblktiger.zip + Neo Black Tiger (Demo) + Mame + media/mixrbv2/nblktiger.png + + + neobombe.zip + Neo Bomberman + As Bomberman, you must kill all the enemies in the level before proceeding to the next. To do this, you clear a path of blocks by setting bombs that will detonate a few seconds later, and then use the bombs to wipe out enemies. Some blocks will uncover power-ups, and depending on which ones you collect, you will receive more bombs, more lives, more time, manual bomb detonation, expanded blast zone, and the ability to move faster. In some levels some blocks will reveal eggs that you can hatch to produce a bird that you can ride on and allows you to take an additional hit from an enemy or bomb blast without losing a life. + 0.75 + 19970101T000000 + SNK + Hudson + Action + 10 + 1-4 + Neo-Geo + 320x224 + media/mixrbv2/neobombe.png + + + + neocstlv.zip + Neo CastleVania Demo + Neo-Geo + media/mixrbv2/neocstlv.png + + + neodrift.zip + Neo Drift Out - New Technology + Neo Drift Out on Neo Geo is a rally game including 3 vehicles (Toyota Celica, Subaru Impreza and Mitsubishi Lancer) and 6 races for many environments. The driving is done exclusively by drifting and each course must be completed within the allowed time in order to reach the next level. + 0.70 + 19960101T000000 + SNK + SNK + Race, Driving / Race + 2924 + 1 + Neo-Geo + 320x224 + media/mixrbv2/neodrift.png + + + + neogeo.zip + Neo Geo + 19900101T000000 + SNK + SNK + Compilation + 34 + Mame + 320x224 + media/mixrbv2/neogeo.png + + + neocdz.zip + Neo Geo CDZ system + A cartridge-based arcade system board. The MVS stands for Multi Video System, and as its name suggest, offers owners the ability to put up to six different arcade titles into a single cabinet, a key economic consideration for operators with limited floorspace. With its games stored on self-contained cartridges, a game cabinet can be exchanged for a different game title by swapping the game's ROM-cartridge and cabinet artwork. + 19900101T000000 + Neo-Geo + 320x224 + media/mixrbv2/neocdz.png + + + neomrdo.zip + Neo Mr. Do! + Neo Mr. Do! is an enhanced version of Mr. Do!, and features greatly improved graphics, stereo sound, and intermissions that can be viewed when an area is completed. You can also travel to the bonus stages, where the object is to make your way toward the exit by carefully dropping apples to create a path. These bonus stages can be reached by killing all enemies on the screen, rather than collecting all the items that are in groups. + 0.95 + 19970101T000000 + Visco + Action + 10 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/neomrdo.png + + + + neonopon.zip + Neo No Panepon (beta) + This is an homebrew clone of Tetris. + 0.40 + 20020101T000000 + Blastar + Homebrew + Puzzle-Game + 26 + 1-2 + Neo-Geo + media/mixrbv2/neonopon.png + + + + neopang.zip + Neo Pang + 20100101T000000 + Mame + + + neoponga.zip + Neo Pong (ver 1.0) + Neo Pong is a clone of the successful ping-pong/table tennis game Pong released by Atari in 1972. It was released for the Neo-Geo system by the NeoDev Corporation team in 2002. +On each side there is a 'bat' with which you will protect the ball so that it does not go off the screen. At the top is the score for both sides. If the ball goes off the screen on one side, the other side will score a point. + 20020101T000000 + NeoDev + Homebrew + Action / Breakout games + 2917 + 1-2 + neopong.zip + Neo-Geo + media/mixrbv2/neopong.png + + + + neopong.zip + Neo Pong (ver 1.1) + Neo Pong is a clone of the successful ping-pong/table tennis game Pong released by Atari in 1972. It was released for the Neo-Geo system by the NeoDev Corporation team in 2002. +On each side there is a 'bat' with which you will protect the ball so that it does not go off the screen. At the top is the score for both sides. If the ball goes off the screen on one side, the other side will score a point. + 20020101T000000 + NeoDev + Homebrew + Action / Breakout games + 2917 + 1-2 + Neo-Geo + media/mixrbv2/neopong.png + + + + nsmb.zip + Neo Super Mario Bros (Demo, v0.01) + Mame + media/mixrbv2/nsmb.png + + + syscheck.zip + Neo System Check (ver 1.0b) + Neo-Geo + media/mixrbv2/syscheck.png + + + neothndr.zip + Neo Thunder + Neo Thunder is a run of the mill space shooter. You move all over the screen shooting baddies and dodge the myriad of bullets headed your way. + 20120101T000000 + Sebastian Mihai + Homebrew + Shoot'em Up + 79 + Neo-Geo + media/mixrbv2/neothndr.png + + + + turfmast.zip + Neo Turf Masters / Big Tournament Golf + Neo Turf Masters is a golf game that offers play in three different countries. You can play in the US, Germany, and Japan. There are 18 holes per course, just like in real life, which totals to 54 holes. The game features a two-player versus mode and three single player modes. You can choose from one of six different characters, who each have their own strengths and weaknesses. Like many other golf games, you use an accurate click type of play, where you click in an overhead map where you want to hit the ball, then adjust hook, slice, and power. In Versus mode, you can earn "super-clubs" that can only be used once. These can also be traded between friends. + 0.90 + 19960101T000000 + Nazca Corporation + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/turfmast.png + + + + neocup98.zip + Neo-Geo Cup '98 - The Road to the Victory + Neo Geo Cup'98 is a football simulation based on the World Cup 1998. This title is a new installment in the series Super Sidekicks and updates all data to focus on the event. In qualification phase or during games knockout, lead one of the 64 available teams to victory. + 0.95 + 19980101T000000 + SNK + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/neocup98.png + + + + neotet.zip + NeoGeo 2-Player Tetris + Clone Homebrew of Tetris created in 2008 by Crim. + 20080101T000000 + Crim + Homebrew + Puzzle-Game / Fall + 2912 + Neo-Geo + media/mixrbv2/neotet.png + + + + neo3ddmo.zip + NeoGeo 3D! Demo + Neo-Geo + media/mixrbv2/neo3ddmo.png + + + neotris.zip + NeoTRIS (Free Beta 2, Ver. 202009) + Mame + media/mixrbv2/neotris.png + + + netwars.zip + Net Wars + Jump in your wicked-fast spaceship and move quickly around the mazes, blasting the hell out of crazy and quick enemies to survive the onslaught and gather the bonuses to make it out alive and save the galaxy! Become the Net Wars champion and rule the mazes with an iron fist in the fast-paced and fun arcade classic. Stick to the path of the Net and move at incredible speeds to destroy the enemies and survive! + 0.30 + 19830101T000000 + Orca (Esco Trading Co license) + Orca (Esco Trading Co license) + Action + 10 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/netwars.png + + + + newapunk.zip + New Atomic Punk - Global Quest (US) + Bomber Man World is a strategic maze-based action game for up to four players in which the aim is to plant bombs to kill all of the enemies on the stage. Each of the game's grid-based stages are littered with both destructible and indestructible blocks, destructible blocks can be blown up to clear a path as well as to reveal a variety of different power-ups. + 0.70 + 19920101T000000 + Hudson + Irem + Action + 10 + 1-4 + bbmanw.zip + Irem Classics + 320x240 + media/mixrbv2/bbmanw.png + + + + newfanta.zip + New Fantasia (1994 copyright) + New Fantasia (c) 1995 Comad. An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digiti + 19950101T000000 + Comad + Comad + Adult + 413 + 1-2 + newfant.zip + Comad + 90 + 256x224 + media/mixrbv2/newfant.png + + + + newfant.zip + New Fantasia (1995 copyright) + New Fantasia (c) 1995 Comad. An adult variation - one of several released by the company - of the 1981 Taito classic, "Qix" (and, latterly, "Gal Panic" from Kaneko), in which players must 'colour in' sections of the background in order to reveal a digiti + 19950101T000000 + Comad + Comad + Adult + 413 + 1-2 + Comad + 90 + 256x224 + media/mixrbv2/newfant.png + + + + 3in1semi.zip + New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 1) + Three games including "New Hyperman", "Hyperman" and "Cookie & Bibis". + 0.50 + 19980101T000000 + SemiCom + SemiCom + Compilation + 34 + SemiCom + 256x224 + media/mixrbv2/3in1semi.png + + + + 3in1semia.zip + New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 2) + Three games including "New Hyperman", "Hyperman" and "Cookie & Bibis". + 0.50 + 19980101T000000 + SemiCom + SemiCom + Compilation + 34 + 3in1semi.zip + SemiCom + 256x224 + media/mixrbv2/3in1semi.png + + + + newpuckx.zip + New Puck-X + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + nrallyx.zip + New Rally X + New Rally-X is a scrolling, overhead mazed-based racing game in which the player drives a racing car around a maze and must collect ten yellow flags before the car's fuel runs out. In-game opponents consist of red enemy cars that pursue and try to ram into and destroy the player's car. The enemy cars are faster moving than the player's vehicle. + +The player's car automatically moves in whichever direction the joystick is pushed and if it runs into a wall, it will turn automatically and continue moving. To disrupt the chasing enemy cars a smoke-screen can be activated that trails behind the player's car, causing any pursuing vehicles to crash. Activating the smoke screen uses a small amount of fuel, however, so players must be careful to not overuse it. + +Each maze also has rock formations and crashing into these will result in the loss of a player car. A radar display to the right-hand side of the playing area shows the relative positions of the flags, rocks and enemy vehicles. + +In addition to the standard ten flags, each maze also contains a special flag (indicated by the letter "S"). If collected, the value earned for the round's remaining flags doubles from 100 to 200 points. If the player dies before the end of that round, the flag value is set back to 100 points and the double bonus is lost. + +The mazes also contain a 'lucky flag'. This is marked with the letter 'L' and - providing there are still standard flags remaining - awards the player extra points for remaining fuel, after which the round will continue as normal. Upon completion of a round, bonus points are awarded based on how much fuel the player has remaining. + +As players progress through the rounds, the number or pursuing enemy cars increases. + 0.80 + 19810101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/nrallyx.png + + + + newsin7.zip + New Sinbad 7 + An ancient shooting game in the maze, which you play with the character of Simbad + 0.70 + 19830101T000000 + ATW + ATW + Action + 10 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/newsin7.png + + + + newtangl.zip + New Tropical Angel + An abstract take on the 3d racing genre, Tropical Angel puts the player in control of a female water-skier who must dodge the many rocks that protrude from the water while attempting to steer through a set number of gates - in the form of a pair of flags - before the time limit expires. The acceleration button needs to be held down all the time while the 'trick' button makes the water-skiing girl spin through one-eighty degrees and proceed to ski backwards. The player cannot steer while traveling backwards, but will earn bonus points for the duration of the trick. As the game progresses, small ramps, buoys and sharks come into play. The small ramps can be jumped to add to the player's score, although they're always in difficult to reach locations. The buoys are usually very close together, but skiing between them earns bonus points. Finally, the shark will appear from time-to-time, running into it means game over, regardless of how much time the player has left. + 0.50 + 19830101T000000 + Irem + Irem + Sports / Skiing + 2902 + 1-2 + troangel.zip + Irem Classics + 240x240 + media/mixrbv2/troangel.png + + + + nzeroteam.zip + New Zero Team (V33 SYSTEM TYPE_B hardware) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + nzeroteama.zip + New Zero Team (V33 SYSTEM TYPE_B hardware, China?) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + newpuc2.zip + Newpuc2 + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + newpuc2b.zip + Newpuc2b + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + news.zip + News (set 1) + Despite the game to be named 'News', it has nothing to deal with any type of news. The game is a clone/rip-off of "Puyo Puyo". The only thing that isn't Puyo Puyo is the fact that a woman is in the background. Once you get points, speech will input words. + 0.30 + 19930101T000000 + Poby / Virus + Poby / Virus + Puzzle-Game / Fall + 2912 + 1 + Mame + 256x224 + media/mixrbv2/news.png + + + + newsa.zip + News (set 2) + Despite the game to be named 'News', it has nothing to deal with any type of news. The game is a clone/rip-off of "Puyo Puyo". The only thing that isn't Puyo Puyo is the fact that a woman is in the background. Once you get points, speech will input words. + 0.30 + 19930101T000000 + Poby / Virus + Poby / Virus + Puzzle-Game / Fall + 2912 + 1 + news.zip + Mame + 256x224 + media/mixrbv2/news.png + + + + nextfase.zip + Next Fase (bootleg of Phoenix) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + ngem2k.zip + NGEM2K (beta 2006-01-18) + Home-brew puzzle game + 20060101T000000 + Blastar + Homebrew + Puzzle-Game + 26 + Neo-Geo + media/mixrbv2/ngem2k.png + + + + ngftdemo.zip + NGF Transparency Demo + Neo-Geo + media/mixrbv2/ngftdemo.png + + + nibblero.zip + Nibbler (Olympia - rev 8) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibblerp.zip + Nibbler (Pioneer Balloon conversion - rev 6) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibbler6.zip + Nibbler (rev 6) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibbler7.zip + Nibbler (rev 7) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibbler8.zip + Nibbler (rev 8) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibbler.zip + Nibbler (rev 9) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nibblera.zip + Nibbler (rev 9, alternate set) + A maze game where you control Nibbler the snake to eat food around the maze. With each food you eat, Nibbler gets bigger. Complete each level by eating all the food on the screen. You lose a life if Nibbler hits his own body. + 0.90 + 19820101T000000 + Rock-Ola + Rock-Ola + Action + 10 + 1-2 + nibbler.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/nibbler.png + + + + nitedrvr.zip + Night Driver + Night Driver is a simple two-dimensional driving game. Your perspective is from behind the wheel of the car as you drive down the highway. + 0.70 + 19760101T000000 + Atari + Atari + Race 1st Pers. view + 2884 + 1 + Atari Classics + 256x256 + media/mixrbv2/nitedrvr.png + + + + cnightst.zip + Night Star (DECO Cassette) (US) (set 1) + 0.30 + 19830101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cnightst.png + + + + cnightst2.zip + Night Star (DECO Cassette) (US) (set 2) + 0.30 + 19830101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + cnightst.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cnightst.png + + + + nwarra.zip + Night Warriors - darkstalkers' revenge (950302 Asia) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nwarr.zip + Night Warriors - darkstalkers' revenge (950316 Euro) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nwarrb.zip + Night Warriors - darkstalkers' revenge (950403 Brazil) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nwarrh.zip + Night Warriors - darkstalkers' revenge (950403 Hispanic) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nwarrud.zip + Night Warriors - darkstalkers' revenge (950406 USA Phoenix Edition) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nwarru.zip + Night Warriors - darkstalkers' revenge (950406 USA) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + nitd.zip + Nightmare in the Dark + This was an ancient story when people still believed in witchcraft. + +There lived one gravedigger at a very small village in a remote region. He lived a quiet, solitary life in a corner of the cemetery. He kept away from the village people due to his very ugly appearance. One day, he found the graves were ransacked and some corpses were stolen. He didn't want the village people to find out, so he decided to eliminate the grave burglars by himself. Thus, he patrolled the cemetery every night. + +There are five stages with five levels each, and each one of them has you throwing fireballs at ghouls, ghosts, goblins, and zombies. When you keep throwing fireballs at these enemies, they will ignite into a giant fireball, which you can throw at other enemies to kill them, and get the remaining treasure before moving on to the next level. At the end of the fifth level, a boss must be defeated in order to continue the game. + 0.60 + 20010101T000000 + SNK + SNK + Platform / Run Jump + 2915 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/nitd.png + + + + nitdbl.zip + Nightmare in the Dark (bootleg) + This was an ancient story when people still believed in witchcraft. + +There lived one gravedigger at a very small village in a remote region. He lived a quiet, solitary life in a corner of the cemetery. He kept away from the village people due to his very ugly appearance. One day, he found the graves were ransacked and some corpses were stolen. He didn't want the village people to find out, so he decided to eliminate the grave burglars by himself. Thus, he patrolled the cemetery every night. + +There are five stages with five levels each, and each one of them has you throwing fireballs at ghouls, ghosts, goblins, and zombies. When you keep throwing fireballs at these enemies, they will ignite into a giant fireball, which you can throw at other enemies to kill them, and get the remaining treasure before moving on to the next level. At the end of the fifth level, a boss must be defeated in order to continue the game. + 0.60 + 20010101T000000 + SNK + SNK + Platform / Run Jump + 2915 + 1-2 + nitd.zip + Neo-Geo + 320x224 + media/mixrbv2/nitd.png + + + + ninja.zip + Ninja (315-5102) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + ncombath.zip + Ninja Combat (NGH-009) + Ninja Combat puts you in the middle of, you guessed it, a Ninja invasion! The Kage Ichizoku clan has caused a giant tower to appear in the middle of the city, and it's up to our heroes Joe (Player One) and Hayabusa (Player Two) to take them down. Both characters can attack incoming enemies by using Shuriken (throwing stars) which can be upgraded and they can also unleash a fairly strong special attack which destroys many enemies on the screen, or does heavy damage to the bosses, but it takes away a quarter of your life. + 0.75 + 19900101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + ncombat.zip + Neo-Geo + 320x224 + media/mixrbv2/ncombat.png + + + + ncombat.zip + Ninja Combat (NGM-009) + Ninja Combat puts you in the middle of, you guessed it, a Ninja invasion! The Kage Ichizoku clan has caused a giant tower to appear in the middle of the city, and it's up to our heroes Joe (Player One) and Hayabusa (Player Two) to take them down. Both characters can attack incoming enemies by using Shuriken (throwing stars) which can be upgraded and they can also unleash a fairly strong special attack which destroys many enemies on the screen, or does heavy damage to the bosses, but it takes away a quarter of your life. + 0.75 + 19900101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ncombat.png + + + + ncommand.zip + Ninja Commando + The Mars Corporation has caused a problem in the time continuum, and it's up to the Ninja Commandos to go after Spider, leader of the MC, and stop his evil work. + +As one of three Ninja Commandos, you must fight your opponents through different time periods, such as The Primitive Age, The Egyptian Era, and the Japanese Civil War Era. Each of the Ninja Commandos have their own specific style of attack and a special "ninja trick" super power. Boxes and other storage units can be broken to reveal power-ups that upgrade your weapons. The bosses are super-powered historical figures and include a dinosaur, a medieval samurai, an Egyptian pharaoh, etc. Cut-scenes occur between the different time periods. + 0.80 + 19920101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ncommand.png + + + + ninjemak.zip + Ninja Emaki (US) + Evil demons and enemies are closing into forever confine this world into darkness... but a young and brave ninja arose to conquer the witch castle and defeat the evil. + +Fly at full speed on your magic cloud to reach enemy lands and battle your way through a variety of landscapes, shooting plenty of enemies as you go. Grab special ninja scrolls that allow you to use a limited-time power-up weapon. Beat the end boss to move on to the next stage and save the royal princess from the clutches of evil! + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Vertical + 2889 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/ninjemak.png + + + + gaiden.zip + Ninja Gaiden (US) + Ryu, the Dragon Ninja, travels the world to defeat evil wherever he finds it. + 0.70 + 19880101T000000 + Tecmo + Ocean + Beat'em Up + 1 + 1-2 + shadoww.zip + Tecmo + 256x224 + media/mixrbv2/shadoww.png + + + + kazan.zip + Ninja Kazan (World) + Export release of Iga Ninjutsuden - Goshin no Sho". + +Iga is one of the two famous schools of ninjutsu (the ninja martial art), the other being Kouga. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + Jaleco + 256x224 + media/mixrbv2/kazan.png + + + + ninjamas.zip + Ninja Master's - haoh-ninpo-cho + Ninja Master's, is set in the fictional land of "Zipangu". Players can select from 10 different ninjas and warriors with which to test their might. The main feature of this game is the ability for each character to use a wide variety of weapons. Also, as each character's Super Attacks change depending on whether they are armed or unarmed, the player needs to respond differently according to the situation. Damage increases with respect to the Super Power Gauge. There are also many must-see deadly techniques like "Super Death Blow", "Ultimate Super Mode", "Dark Super Power" and "Dark Combo! + 0.70 + 19960101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ninjamas.png + + + + ninjamasha.zip + Ninja Master's - haoh-ninpo-cho (Plus) + Ninja Master's, is set in the fictional land of "Zipangu". Players can select from 10 different ninjas and warriors with which to test their might. The main feature of this game is the ability for each character to use a wide variety of weapons. Also, as each character's Super Attacks change depending on whether they are armed or unarmed, the player needs to respond differently according to the situation. Damage increases with respect to the Super Power Gauge. There are also many must-see deadly techniques like "Super Death Blow", "Ultimate Super Mode", "Dark Super Power" and "Dark Combo! + 0.70 + 19960101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + ninjamas.zip + Neo-Geo + 320x224 + media/mixrbv2/ninjamas.png + + + + nprinces.zip + Ninja Princess (315-5051, 64k Ver. bootleg?) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + nprincesb.zip + Ninja Princess (315-5051?, 128k Ver. bootleg?) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + nprinceso.zip + Ninja Princess (315-5098, 128k Ver.) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + nprincesu.zip + Ninja Princess (64k Ver. not encrypted) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + ryukendn.zip + Ninja Ryukenden (Japan, set 1) + Ryu, the Dragon Ninja, travels the world to defeat evil wherever he finds it. + 0.70 + 19880101T000000 + Tecmo + Ocean + Beat'em Up + 1 + 1-2 + shadoww.zip + Tecmo + 256x224 + media/mixrbv2/shadoww.png + + + + ryukendna.zip + Ninja Ryukenden (Japan, set 2) + Ryu, the Dragon Ninja, travels the world to defeat evil wherever he finds it. + 0.70 + 19880101T000000 + Tecmo + Ocean + Beat'em Up + 1 + 1-2 + shadoww.zip + Tecmo + 256x224 + media/mixrbv2/shadoww.png + + + + nspirit.zip + Ninja Spirit (World) + A side scrolling ninja action game. You take control of a ninja who has the ability to make shadow duplicates which trail your movements, and attack at your command. In your path are armies of ninjas, samurais and demons who are constantly out to kill you. + 0.90 + 19880101T000000 + Irem + Irem + Platform + 7 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/nspirit.png + + + + ninjakd2.zip + Ninja-Kid II / NinjaKun Ashura no Shou (set 1) + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + ninjakd2a.zip + Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?) + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + ninjakd2.zip + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + ninjakd2b.zip + Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?) + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + ninjakd2.zip + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + ninjakd2c.zip + Ninja-Kid II / NinjaKun Ashura no Shou (set 4) + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + ninjakd2.zip + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + ninjakun.zip + Ninjakun Majou no Bouken + Players take control of a ninja whose goal is to defeat enemy ninjas and demons on his way to a final showdown at the Demon Castle. + 0.70 + 19840101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + Taito Classics + 256x192 + media/mixrbv2/ninjakun.png + + + + nmk004.zip + NMK004 Internal ROM + Various + 39 + non Jeu + media/mixrbv2/nmk004.png + + + nob.zip + Noboranka (Japan) + This game is a vertical scrolling shoot 'em up where the player controls a character that has to climb a tree and shoot bug-like enemies. The story is that the princess has been kidnapped by the villains of the Insect World, and Zippy Bug has to rescue her. After shooting the enemies, they drop fruits that the player can collect for extra points, and skulls that are deadly if touched. The player is able to fly for a short time, and every time this is done, one of the letters from the 'I Love You' at the bottom of the screen is used up. The letters regenerate over a small period of time. There are also other items, such as the key, which surrounds the player in a bubble and makes him invulnerable to 1 hit. Another item is a ring which seems to instantly replenish all of the used up 'I Love You' letters. One other item is the hammer, which allows the player to wipe out all the enemies off the screen. There is a boss at the end of each level. + 0.90 + 19860101T000000 + Coreland Technology + Data East + Shoot'em Up + 79 + Data East Classics + 270 + 512x224 + media/mixrbv2/nob.png + + + + nobb.zip + Noboranka (Japan, bootleg) + This game is a vertical scrolling shoot 'em up where the player controls a character that has to climb a tree and shoot bug-like enemies. The story is that the princess has been kidnapped by the villains of the Insect World, and Zippy Bug has to rescue her. After shooting the enemies, they drop fruits that the player can collect for extra points, and skulls that are deadly if touched. The player is able to fly for a short time, and every time this is done, one of the letters from the 'I Love You' at the bottom of the screen is used up. The letters regenerate over a small period of time. There are also other items, such as the key, which surrounds the player in a bubble and makes him invulnerable to 1 hit. Another item is a ring which seems to instantly replenish all of the used up 'I Love You' letters. One other item is the hammer, which allows the player to wipe out all the enemies off the screen. There is a boss at the end of each level. + 0.90 + 19860101T000000 + Coreland Technology + Data East + Shoot'em Up + 79 + nob.zip + Data East Classics + 270 + 512x224 + media/mixrbv2/nob.png + + + + nost.zip + Nostradamus + On July 1999, a nuclear catastrophe succumbed the planet earth in a absolute destruction and darkness, countries are underwater and ruined, only a few survivors have resisted the undermining and collapse of the humanity, two brave pilots will have the task of saving and defend the rest of world and help to rise from the ashes all the civilization. + +Players control one of the two aircraft piloted by a male pilot named 'Dalas' and a female pilot named 'Joanna' and must shoot down hordes of enemies and avoid his attacks while pick up 'power items' to then defeat the level boss to advance to next levels. + 0.50 + 19930101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + Mame + 270 + 320x224 + media/mixrbv2/nost.png + + + + nostj.zip + Nostradamus (Japan) + On July 1999, a nuclear catastrophe succumbed the planet earth in a absolute destruction and darkness, countries are underwater and ruined, only a few survivors have resisted the undermining and collapse of the humanity, two brave pilots will have the task of saving and defend the rest of world and help to rise from the ashes all the civilization. + +Players control one of the two aircraft piloted by a male pilot named 'Dalas' and a female pilot named 'Joanna' and must shoot down hordes of enemies and avoid his attacks while pick up 'power items' to then defeat the level boss to advance to next levels. + 0.50 + 19930101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + nost.zip + Mame + 270 + 320x224 + media/mixrbv2/nost.png + + + + nostk.zip + Nostradamus (Korea) + On July 1999, a nuclear catastrophe succumbed the planet earth in a absolute destruction and darkness, countries are underwater and ruined, only a few survivors have resisted the undermining and collapse of the humanity, two brave pilots will have the task of saving and defend the rest of world and help to rise from the ashes all the civilization. + +Players control one of the two aircraft piloted by a male pilot named 'Dalas' and a female pilot named 'Joanna' and must shoot down hordes of enemies and avoid his attacks while pick up 'power items' to then defeat the level boss to advance to next levels. + 0.50 + 19930101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + nost.zip + Mame + 270 + 320x224 + media/mixrbv2/nost.png + + + + nouryoku.zip + Nouryoku Koujou Iinkai + The game is made up of quiz sections, in which you play several minigames. Choosing correcting answers scores you points, while incorrect ones cost you life. The life meter also depletes as you take longer to answer a question. If the life meter empties, then the game is over. At the end of each round, the life meter is replenished depending on your percentage of correct answers and how fast you did the round. You'll then do a bonus round in which you answer as many correct questions in the limited time you have to score extra points and replenish more life. There are eight rounds in the whole game. + 0.50 + 19950101T000000 + Tecmo + Tecmo + Quiz / Japanese + 2894 + 1-2 + Tecmo + 384x224 + media/mixrbv2/nouryoku.png + + + + nouryokup.zip + Nouryoku Koujou Iinkai (prototype) + The game is made up of quiz sections, in which you play several minigames. Choosing correcting answers scores you points, while incorrect ones cost you life. The life meter also depletes as you take longer to answer a question. If the life meter empties, then the game is over. At the end of each round, the life meter is replenished depending on your percentage of correct answers and how fast you did the round. You'll then do a bonus round in which you answer as many correct questions in the limited time you have to score extra points and replenish more life. There are eight rounds in the whole game. + 0.50 + 19950101T000000 + Tecmo + Tecmo + Quiz / Japanese + 2894 + 1-2 + nouryoku.zip + Tecmo + 384x224 + media/mixrbv2/nouryoku.png + + + + nova2001.zip + Nova 2001 (Japan) + Using your spaceship, fire upon swarms of attacking enemies and pick up the bonus markers left by the destroyed spacecraft. A level is complete when all the enemies have been destroyed. The joystick control has a button on top that is used for maintaining a stationary position on the screen. + 0.70 + 19830101T000000 + UPL + UPL + Shooter + 2646 + 1-2 + Mame + 256x192 + media/mixrbv2/nova2001.png + + + + nova2001h.zip + Nova 2001 (Japan, hack?) + Using your spaceship, fire upon swarms of attacking enemies and pick up the bonus markers left by the destroyed spacecraft. A level is complete when all the enemies have been destroyed. The joystick control has a button on top that is used for maintaining a stationary position on the screen. + 0.70 + 19830101T000000 + UPL + UPL + Shooter + 2646 + 1-2 + nova2001.zip + Mame + 256x192 + media/mixrbv2/nova2001.png + + + + nova2001u.zip + Nova 2001 (US) + Using your spaceship, fire upon swarms of attacking enemies and pick up the bonus markers left by the destroyed spacecraft. A level is complete when all the enemies have been destroyed. The joystick control has a button on top that is used for maintaining a stationary position on the screen. + 0.70 + 19830101T000000 + UPL + UPL + Shooter + 2646 + 1-2 + nova2001.zip + Mame + 256x192 + media/mixrbv2/nova2001.png + + + + nunchaku.zip + Nunchackun + Lady Master of Kung Fu is 2D fighting game. Player controls a female - titular Lady. She is skilled in kung-fu fighting and in using nunchaku. Lady comes to the area of ​​the big house, fighting with a bunch of opponents. The house has several floors, Lady must use the elevators. Some rooms are open - she can go to them, and fight there against a stronger opponent, for which she gets a bonus. + 0.30 + 19850101T000000 + Kaneko + Kaneko + Platform / Fighter Scrolling + 2896 + 1-2 + ladymstr.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/ladymstr.png + + + + nyanpani.zip + Nyan Nyan Panic (Japan) + Two cats try to find hidden keys. Avoiding enemies and push blocks around to achieve your goal. + 0.70 + 19880101T000000 + Konami + Konami + Puzzle-Game + 26 + 1-2 + kittenk.zip + Konami Classics + 256x224 + media/mixrbv2/kittenk.png + + + + cocean1a.zip + Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.1,Japan) + Rare Medals game. + 19810101T000000 + Data East Classics + 270 + 256x240 + media/mixrbv2/cocean1a.png + + + + cocean6b.zip + Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.6,US) + Rare Medals game. + 19810101T000000 + cocean1a.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cocean1a.png + + + + oedfighta.zip + Oedo Fight (Japan, Bloodless version) + The gameplay of Blood Warrior is quite similar to many of the 2D fighting games of the same era. However, Kaneko seem to have taken much of their inspiration from the Mortal Kombat franchise in terms of over the top gore and violence; however, Blood Warrior's predecessor Shogun Warriors predates Mortal Kombat in featuring blood, while Barbarian: The Ultimate Warrior predates Mortal Kombat in featuring death moves. + 0.50 + 19930101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + bloodwar.zip + Kaneko + 320x240 + media/mixrbv2/bloodwar.png + + + + oedfight.zip + Oedo Fight (Japan, Bloodshed version) + The gameplay of Blood Warrior is quite similar to many of the 2D fighting games of the same era. However, Kaneko seem to have taken much of their inspiration from the Mortal Kombat franchise in terms of over the top gore and violence; however, Blood Warrior's predecessor Shogun Warriors predates Mortal Kombat in featuring blood, while Barbarian: The Ultimate Warrior predates Mortal Kombat in featuring death moves. + 0.50 + 19930101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + bloodwar.zip + Kaneko + 320x240 + media/mixrbv2/bloodwar.png + + + + offensiv.zip + Offensive (Spanish bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + ohmygod.zip + Oh My God! + Oh My God! is an arcade puzzle game from Atlus. The gameplay is similar to Dr. Mario. +A sequence of snakes made of colored balls fall down into the playing field. The object of the game is to manipulate the direction of these snakes, by using the joystick, in order to form a line of 3 colored balls vertically, horizontally, or diagonally. The game ends when the playing field tops out, that is, when there is no room for a new snake to enter the playing field. + 0.50 + 19930101T000000 + Atlus + Atlus + Puzzle-Game / Fall + 2912 + 1-2 + Atlus + 320x240 + media/mixrbv2/ohmygod.png + + + + oisipuzl.zip + Oishii Puzzle Ha Irimasenka + The game takes place on a game board where you take the role of Hebe. Each time you turn comes, a wheel determines how much spaces you go. When you land on a certain colored space, you go directly to a minigame. These minigames include spot the difference, put the puzzle together, find the character, and a crossword puzzle. The player can also land on a special space where you can use a special wheel. The wheel can either land on something that is useful for the player or could give the player bad luck. After you have beaten a board, you go on to the next one. + 0.50 + 19930101T000000 + Sunsoft + Sunsoft + Various + 39 + 1-2 + Mame + 320x224 + media/mixrbv2/oisipuzl.png + + + + olibug.zip + Oli Bug (Jump Bug bootleg) + The player controls a VW Beetle that jumps through eight scenarios collecting money and jewels. Shoot or avoid the enemies. + 0.50 + 19810101T000000 + Hoei + Hoei (Rock-Ola license) + Platform / Run Jump Scrolling + 2897 + 1-2 + jumpbug.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/jumpbug.png + + + + olibochu.zip + Oli-Boo-Chu + A maze game where the power pellets are randomly spawning, but don't turn the ghosts/monsters blue... just points... you catch mice and chase them into mouse holes...(many points..) for shoving your face into the mouse hole for an extended time. + 0.30 + 19810101T000000 + Irem + Irem + Action + 10 + 1-2 + Irem Classics + 270 + 256x240 + media/mixrbv2/olibochu.png + + + + omega.zip + Omega + 0.60 + 19860101T000000 + Action / Breakout games + 2917 + Sega Classics + 270 + 256x224 + media/mixrbv2/omega.png + + + + omegab.zip + Omega (bootleg?) + The End &copy; 1980 Konami Industry Company, Limited. + +In &#039;The End&#039; you control a ship whose mission is to zap as many bug-ships as possible, before you run out of lives, or the bugs manage to spell out the word END with little chunks of brick. You can move left and right, and the bugs attack from the top of the screen, coming out of a large mothership. But the bugs have another mission besides just blindly attacking you. That other mission is to systematically steal the bricks from your three bases, and use them to spell out the word END up near the top of the screen. + 0.70 + 19800101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + theend.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/theend.png + + + + omegaa.zip + Omega (earlier) + 0.60 + 19860101T000000 + Action / Breakout games + 2917 + omega.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/omega.png + + + + omegaf.zip + Omega Fighter + While similar to most vertical scrolling shooters, Omega Fighter is unique in its gameplay, level and enemy focus: rather than flying through multiple levels, the player faces an enormous space battle cruiser which contains every level. + +There are two weapons that the player picks up, and if the player picks up a different powerup, it will always reset to its lowest level: +(I) - Ion Laser: Shoots straight, pick up more to increase damage at a cost of decreasing length. Ideal for close combat. +(W) - Wide Shot: Shoots bullets in wider range when collecting more of them. Ideal for taking enemies from afar but deals less damage. + +There are also two items that are pressed by the bomb button, and players may pick up to two of them: +Silver - Activate to slow down everything on screen. Useful to dodge bullets and getting closer for higher score. +Gold - Destroy all enemies on screen, score depends on closeness to player prior to using the item. + 0.50 + 19890101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x192 + media/mixrbv2/omegaf.png + + + + omegafs.zip + Omega Fighter Special + While similar to most vertical scrolling shooters, Omega Fighter is unique in its gameplay, level and enemy focus: rather than flying through multiple levels, the player faces an enormous space battle cruiser which contains every level. + +There are two weapons that the player picks up, and if the player picks up a different powerup, it will always reset to its lowest level: +(I) - Ion Laser: Shoots straight, pick up more to increase damage at a cost of decreasing length. Ideal for close combat. +(W) - Wide Shot: Shoots bullets in wider range when collecting more of them. Ideal for taking enemies from afar but deals less damage. + +There are also two items that are pressed by the bomb button, and players may pick up to two of them: +Silver - Activate to slow down everything on screen. Useful to dodge bullets and getting closer for higher score. +Gold - Destroy all enemies on screen, score depends on closeness to player prior to using the item. + 0.50 + 19890101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + omegaf.zip + Mame + 270 + 256x192 + media/mixrbv2/omegaf.png + + + + omegrace.zip + Omega Race (set 1) + Omega Race is a vector-based single-screen shoot-em-up set in the year 2003, in which the Omegan system has developed a way of training its warriors to protect their star colonies against invading alien androids. Players must pilot an Omegan Space Fighter to engage and destroy the aliens and the mines they have planted. + +The Omegan Fighter can rotate through 360 degrees and thrust to move forwards, it's also armed with forward-firing lasers with which to shoot the enemy ships. Battles take place in an enclosed area and when the player's ship reaches the edge of the screen it bounces off an invisible barrier, although the barrier briefly appears when hit or shot. + +As well as firing lasers at the player, some enemy ships also drop mines that must be shot or avoided. As players progress through the waves, the number of enemy attackers and their aggression increases. + 0.90 + 19810101T000000 + Midway + Midway + Fight + 14 + 1-2 + Midway Classics + media/mixrbv2/omegrace.png + + + + omegrace2.zip + Omega Race (set 2) + Omega Race is a vector-based single-screen shoot-em-up set in the year 2003, in which the Omegan system has developed a way of training its warriors to protect their star colonies against invading alien androids. Players must pilot an Omegan Space Fighter to engage and destroy the aliens and the mines they have planted. + +The Omegan Fighter can rotate through 360 degrees and thrust to move forwards, it's also armed with forward-firing lasers with which to shoot the enemy ships. Battles take place in an enclosed area and when the player's ship reaches the edge of the screen it bounces off an invisible barrier, although the barrier briefly appears when hit or shot. + +As well as firing lasers at the player, some enemy ships also drop mines that must be shot or avoided. As players progress through the waves, the number of enemy attackers and their aggression increases. + 0.90 + 19810101T000000 + Midway + Midway + Fight + 14 + 1-2 + omegrace.zip + Midway Classics + media/mixrbv2/omegrace.png + + + + omni.zip + Omni + On stage 1, you can ignore as many yellow ships as possible, and only aim for the blue ones. When the yellow ones move off screen there is often a chance that the next wave will include a blue ship. Since the blue ships are worth more points they are worth waiting for. +On stage 2 the birds do not fire until they are fully developed. You can usually take out 3 or 4 of them before they start firing. +On stage 2 you can concentrate on continual fire on birds wings when there are only 2 or 3 remaining, as this awards 20 points per hit and does not destroy the bird. You can rack up a good score by doing this, but watch out for the falling bullets. +The asteroids positioning on the docking stage is totally random, so this stage is often down to chance. Do not use your thrusters to maximize your bonus points. +On stage 4, the ships which come down from the cloud move across you from left to right and back again. You can time your firing so that they are hit when directly above you. Note that only the mother-ship fires at you so you can take out the ships when not directly below the cloud, and be safe in the knowledge that you have no bullets to avoid. + 0.80 + 19820101T000000 + Subelectro + Shooter / Space Invaders Like + 2900 + 1-2 + pisces.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/pisces.png + + + + onetwo.zip + One + Two + One + Two (c) 1997 Barko. - TECHNICAL - Main CPU : Z80 (@ 8 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : YM3812 (@ 8 Mhz), OKI6295 (@ 8 Khz) Screen orientation : Horizontal Video resolution : 512 x 256 pixels Screen refresh : 60.00 Hz Palette colors : + 0.50 + 19970101T000000 + Barko + Barko + Puzzle-Game / Equalize + 2864 + 1-2 + Mame + 512x256 + media/mixrbv2/onetwo.png + + + + onetwoe.zip + One + Two (earlier) + One + Two (c) 1997 Barko. - TECHNICAL - Main CPU : Z80 (@ 8 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : YM3812 (@ 8 Mhz), OKI6295 (@ 8 Khz) Screen orientation : Horizontal Video resolution : 512 x 256 pixels Screen refresh : 60.00 Hz Palette colors : + 0.50 + 19970101T000000 + Barko + Barko + Puzzle-Game / Equalize + 2864 + 1-2 + onetwo.zip + Mame + 512x256 + media/mixrbv2/onetwo.png + + + + oneshot.zip + One Shot One Kill + During the town stage, you can see the famous Korean singer Ser-Tae-Ji. + + 0.30 + 19960101T000000 + Promat + Promat + Lightgun Shooter + 32 + 1-2 + Mame + 320x240 + media/mixrbv2/oneshot.png + + + + nmaster.zip + Oni - The Ninja Master (Japan) + Metamoqester is a 2D arcade fighting game, similar in concept to Red Earth or Monster Maulers. One or two players (there is a co-op mode) fight against big monsters in deadly duels. There are three different characters to choose from. The game uses four buttons - Weak Attack, Medium Attack, Strong Attack, and Shoot/Throw Weapon. + 0.85 + 19950101T000000 + Banpresto + Banpresto + Fight + 14 + 1-2 + metmqstr.zip + Banpresto + 384x240 + media/mixrbv2/metmqstr.png + + + + onna34ro.zip + Onna Sansirou - Typhoon Gal + Onna Sansirou - Typhoon Gal is a female warrior takes on a slew of opponents to defend the honor of her dojo. + 0.50 + 19850101T000000 + Taito + Fight + 14 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/onna34ro.png + + + + onna34roa.zip + Onna Sansirou - Typhoon Gal (bootleg) + Onna Sansirou - Typhoon Gal is a female warrior takes on a slew of opponents to defend the honor of her dojo. + 0.50 + 19850101T000000 + Taito + Fight + 14 + 1-2 + onna34ro.zip + Taito Classics + 256x224 + media/mixrbv2/onna34ro.png + + + + ooparts.zip + OOPArts (prototype, joystick hack) + 19920101T000000 + Mame + + + coozumou.zip + Oozumou - The Grand Sumo (DECO Cassette) (Japan) + Oozumou (c) 1984 Data East. - TECHNICAL - DECO Cassette System hardware. [Cassette No.41] - SOURCES - Game's ROM. + 0.30 + 19840101T000000 + Data East + Sports / Sumo + 2947 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/coozumou.png + + + + opaopa.zip + Opa Opa (MC-8123, 317-0042) + The evil Menons have returned... in multi-level bases which are hidden in seven different planets! The brave Opa-Opa has been called to battle their evil threat. And joining him in the fight is his younger brother, Upa-Upa. Your Mission: Guide this brave team of brothers through level after level of treacherous mazes. Get the golden coins stolen by the Menon hoard and use them to purchase powerful weapons. The Fantasy Zone is counting on you! Don't let them down. + 0.70 + 19870101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 256x192 + media/mixrbv2/opaopa.png + + + + opaopan.zip + Opa Opa (Rev A, unprotected) + The evil Menons have returned... in multi-level bases which are hidden in seven different planets! The brave Opa-Opa has been called to battle their evil threat. And joining him in the fight is his younger brother, Upa-Upa. Your Mission: Guide this brave team of brothers through level after level of treacherous mazes. Get the golden coins stolen by the Menon hoard and use them to purchase powerful weapons. The Fantasy Zone is counting on you! Don't let them down. + 0.70 + 19870101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + opaopa.zip + Sega Classics + 256x192 + media/mixrbv2/opaopa.png + + + + opwolfb.zip + Operation Bear + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + opwolf.zip + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + othunderj.zip + Operation Thunderbolt (Japan) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + othunder.zip + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + othunderjsc.zip + Operation Thunderbolt (Japan, SC) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + othunder.zip + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + othunderuo.zip + Operation Thunderbolt (US) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + othunder.zip + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + othunderu.zip + Operation Thunderbolt (US, rev 1) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + othunder.zip + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + othundero.zip + Operation Thunderbolt (World) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + othunder.zip + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + othunder.zip + Operation Thunderbolt (World, rev 1) + Terrorists have seized a passenger airplane and will execute all the hostages if their demands are not met. It is up to the veteran soldier known as 'Lone Wolf' to return to action and rescue those hostages before time runs out. Thankfully you are not alone on this mission, so bring a friend and have a blast by blasting the enemies into oblivion! + 0.90 + 19880101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/othunder.png + + + + opwolfj.zip + Operation Wolf (Japan) + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + opwolf.zip + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + opwolfjsc.zip + Operation Wolf (Japan, SC) + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + opwolf.zip + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + opwolfu.zip + Operation Wolf (US) + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + opwolf.zip + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + opwolf.zip + Operation Wolf (World, set 1) + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + opwolfa.zip + Operation Wolf (World, set 2) + Operation Wolf is a light-gun controlled shoot-em-up in which the player takes on the role of Special Forces operative 'Roy Adams' and must infiltrate and capture six heavily fortified bases, with the ultimate aim of rescuing five trapped hostages and guiding them to safety. + +In order to complete each stage, the player must shoot as many enemy soldiers and vehicles as that stage requires. Enemy soldiers can throw hand grenades and knives, while enemy vehicles can shoot missiles and launch rockets. The player's ammunition and grenades are limited, but can be stocked up by shooting barrels and crates. Occasionally a high-powered machine gun power-up appears, allowing the player's gun to have unlimited ammo and an increased rate of fire for 10 seconds. Completing the 'Powder Magazine' stage fills the player's ammunition and grenade supplies to maximum. + 0.90 + 19870101T000000 + Taito + Taito + Lightgun Shooter + 32 + 1 + opwolf.zip + Taito Classics + 320x240 + media/mixrbv2/opwolf.png + + + + orbitron.zip + Orbitron + Defend your planet against attacking ships. + 0.30 + 19820101T000000 + Signatron USA + Signatron USA + Shooter / Missile Command Like + 2945 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/orbitron.png + + + + orbs.zip + Orbs (10/7/94 prototype?) + Orbs (c) 1994 American Sammy. - TRIVIA - Released in October 1994. - STAFF - Game Designer & Director : Onijust Programmer : Hiroaki Murase Graphic Designer : Isao Suwa Sound Creator : Brian Schmidt Engineer : Kiyo Nishimura Debugger : Hiroaki Murase, + 0.70 + 19940101T000000 + Sammy + Sammy + Puzzle-Game / Glide + 2891 + 1 + Sammy Classics + 304x240 + media/mixrbv2/orbs.png + + + + ordynej.zip + Ordyne (Japan) + Ordyne is a horizontal side-scrolling shoot 'em up (also considered a "cute 'em up" due to its lighter tone) that puts players in the role of Yûichirô Tomari, a genius scientist, and Sunday Chin, his faithful assistant. The two heroes must rescue Tomari's fiancee Kana Aibara from the evil Dr. Kubota. + +During gameplay, players can obtain crystals that can be used to buy special weapons, extra lives, and other power-ups at shops located throughout the levels. There are also bonus games that allow players to win multiple crystals or points by shooting at rotating targets. Ordyne is two-player simultaneous. + 0.60 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + ordyne.zip + Namco Classics + 288x224 + media/mixrbv2/ordyne.png + + + + ordyneje.zip + Ordyne (Japan, English Version) + Ordyne is a horizontal side-scrolling shoot 'em up (also considered a "cute 'em up" due to its lighter tone) that puts players in the role of Yûichirô Tomari, a genius scientist, and Sunday Chin, his faithful assistant. The two heroes must rescue Tomari's fiancee Kana Aibara from the evil Dr. Kubota. + +During gameplay, players can obtain crystals that can be used to buy special weapons, extra lives, and other power-ups at shops located throughout the levels. There are also bonus games that allow players to win multiple crystals or points by shooting at rotating targets. Ordyne is two-player simultaneous. + 0.60 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + ordyne.zip + Namco Classics + 288x224 + media/mixrbv2/ordyne.png + + + + ordyne.zip + Ordyne (World) + Ordyne is a horizontal side-scrolling shoot 'em up (also considered a "cute 'em up" due to its lighter tone) that puts players in the role of Yûichirô Tomari, a genius scientist, and Sunday Chin, his faithful assistant. The two heroes must rescue Tomari's fiancee Kana Aibara from the evil Dr. Kubota. + +During gameplay, players can obtain crystals that can be used to buy special weapons, extra lives, and other power-ups at shops located throughout the levels. There are also bonus games that allow players to win multiple crystals or points by shooting at rotating targets. Ordyne is two-player simultaneous. + 0.60 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/ordyne.png + + + + orius.zip + Orius (ver UAA) + Xexex is a horizontally-scrolling shoot-em-up in which players pilot a ship called the 'Flintlock' and must save the blue-haired Princess Irene of the planet E-Square from an evil lord named Klaus. + +The player's ship has a detachable orb attachment called the Flint, which behaves in a similar fashion to the 'Force Device' from Irem's "R-Type" series. Power-ups can be obtained to increase the Flint's power, movement speed, change the main weapon, or even give the player an extra life. + +The player starts the game armed with the Proton Laser, which emits thin stream of weak bullets. Defeating certain enemies will drop other weapons: +Homing Laser: A 3-way laser with weak "bending" homing for top and bottom lasers. +Shadow Laser: A laser beam that creates a damage-inflicting shadow as the ship moves up and down. +Round Laser: An unusual spread shot (different from the overseas version's main weapon) +Spiral Laser: A spiral laser of considerable width. +Search Laser: A laser with strong homing that travels in square trajectories. +Ground Laser: Fires an upgraded Proton Laser along with a laser beam that travels along the ground. + +The name of the current weapon is displayed at the bottom of the screen. In the non-Japanese overseas versions, the only available weapon is the Proton Laser and picking up power-ups simply increases the spread of the weapon. Missiles are a secondary weapon. + 0.90 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + xexex.zip + Konami Classics + 384x256 + media/mixrbv2/xexex.png + + + + ottopz.zip + Otto Project PZ (hack) + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + outrunb.zip + Out Run (bootleg) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrundxa.zip + Out Run (deluxe sitdown earlier version) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrundx.zip + Out Run (deluxe sitdown) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrundxeha.zip + Out Run (deluxe sitdown) (Enhanced Edition v1.0.3) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrundxeh.zip + Out Run (deluxe sitdown) (Enhanced Edition v2.0.3) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrundxj.zip + Out Run (Japan, deluxe sitdown, FD1089A 317-0019) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrunra.zip + Out Run (sitdown/upright, Rev A) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrun.zip + Out Run (sitdown/upright, Rev B) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outruneha.zip + Out Run (sitdown/upright, Rev B) (Enhanced Edition v1.1.0) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outrunehb.zip + Out Run (sitdown/upright, Rev B) (Enhanced Edition v2.0.2) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outruneh.zip + Out Run (sitdown/upright, Rev B) (Enhanced Edition v2.0.3) + Out Run is a ground-breaking racing game in which the player drives a red Ferrari Testarossa through a number of colourful European locations, trying to reach each end-of-level checkpoint before the tight time limit expires. + +Each of the game's stages is packed with civilian traffic that must be carefully avoided, as players try to negotiate the game's twisting, hilly roads. + +At the end of every stage players are presented with a fork in the road, allowing them to chose which route they wish to take next. This was not the first time this feature had appeared (Tatsumi's 1983 racer, TX-1, was the first to introduce forked roads). + +As well as being able to choose routes, players could also - via the game's "in-car radio" - choose one of three different catchy tunes to listen to while driving. The songs are 'Magical Sound Shower', 'Passing Breeze' and 'Splash Wave'. + 0.90 + 19860101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + outrun.zip + Sega Classics + 320x224 + media/mixrbv2/outrun.png + + + + outzone.zip + Out Zone + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + outzoneh.zip + Out Zone (harder) + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + outzone.zip + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + outzonea.zip + Out Zone (old set) + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + outzone.zip + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + outzoneb.zip + Out Zone (older set) + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + outzone.zip + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + outzonec.zip + Out Zone (oldest set) + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + outzone.zip + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + outzonecv.zip + Out Zone (Zero Wing TP-015 PCB conversion) + A vertically scrolling run and gun game, in which the player controls a soldier who must fight his way through 7 increasingly difficult levels. At the end of each level a boss must be defeated before the player can progress any further. + 0.70 + 19900101T000000 + Toaplan + Toaplan + Shooter / Run and Gun + 2903 + 1-2 + outzone.zip + Toaplan + 270 + 320x240 + media/mixrbv2/outzone.png + + + + overtop.zip + Over Top + In 1991, ADK (then Alpha team) released Thrash Rally for the Neo Geo. While fun to play, it was most noted for its woefully bad graphics. Five years later, ADK released another "look-out-for-the-next-turn!" game called Overtop. This time they got it almost all right: Great graphics, good sounds, lots of vehicles, and kept the excellent playability of its predecessor. + 0.90 + 19960101T000000 + ADK + ADK + Race, Driving + 28 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/overtop.png + + + + ozmawars.zip + Ozma Wars (set 1) + A great and pioneer fixed vertical space shoot'em up game. + +The Ozma wars has begun, and the player controls a spacecraft which must fend off UFOs, spaceships meteors, and comets in a varied of space levels. Instead of lives, the player is given an energy reserve that is constantly diminishing; getting hit by the enemy causes gameplay to stop momentarily and a large amount of energy is depleted. Every so often, a mothership will appear and dock with the player's spacecraft, allowing the energy to be refilled. There are 3-4 recognizable stages as the game progresses and new enemies begin to appear. After these, the mothership will appear, and the cycle starts over; this continues indefinitely until the energy reaches zero. + 0.30 + 19790101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + SNK Classics + 270 + 260x224 + media/mixrbv2/ozmawars.png + + + + ozmawars2.zip + Ozma Wars (set 2) + A great and pioneer fixed vertical space shoot'em up game. + +The Ozma wars has begun, and the player controls a spacecraft which must fend off UFOs, spaceships meteors, and comets in a varied of space levels. Instead of lives, the player is given an energy reserve that is constantly diminishing; getting hit by the enemy causes gameplay to stop momentarily and a large amount of energy is depleted. Every so often, a mothership will appear and dock with the player's spacecraft, allowing the energy to be refilled. There are 3-4 recognizable stages as the game progresses and new enemies begin to appear. After these, the mothership will appear, and the cycle starts over; this continues indefinitely until the energy reaches zero. + 0.30 + 19790101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + ozmawars.zip + SNK Classics + 270 + 260x224 + media/mixrbv2/ozmawars.png + + + + ozon1.zip + Ozon I + The player controls a Artillery Mobile Defense Anti-Aircraft unit, in the middle of a warzone and must defend all your tanks from enemies aircrafts, while avoid be destroyed by missiles and homing missiles or kamikaze attacks. For this you will have to shoot a certain number of aircraft and shoot the missiles before they destroy the tanks to advance to the next round. In each round increases five times more the quantity of enemy aircraft to eliminated. + 0.30 + 19830101T000000 + Proma + Proma + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/ozon1.png + + + + p47j.zip + P-47 - The Freedom Fighter (Japan) + P-47 is a two-dimensional, scrolling shooter type of game. You play as the pilot of a P-47. Your mission is to basically destroy as many of the enemies as you possibly can. This means eliminating as many air and ground units as you can. You will be going through four missions (each being broken up into two parts) and at the end of each of these parts is an enemy boss for you to tangle with. Although you have unlimited ammunition, the enemy will make you pay for the invasion into their homeland. You will be able to accomplish this with various power-ups and also a second player (if they buy in). Your mission won't be easy but it is necessary so you can secure both the skies and ground for our troops. + +The game is broken up into four missions. Within these four missions, there are 2 parts. One part involves going over land and the other part has you either going over water or being up in the air. Regardless of which part you are on, you will still have to deal with the same basic things. After part two of mission four, the missions will repeat again with mission one. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + p47.zip + Jaleco + 256x224 + media/mixrbv2/p47.png + + + + p47je.zip + P-47 - The Freedom Fighter (Japan, Export) + P-47 is a two-dimensional, scrolling shooter type of game. You play as the pilot of a P-47. Your mission is to basically destroy as many of the enemies as you possibly can. This means eliminating as many air and ground units as you can. You will be going through four missions (each being broken up into two parts) and at the end of each of these parts is an enemy boss for you to tangle with. Although you have unlimited ammunition, the enemy will make you pay for the invasion into their homeland. You will be able to accomplish this with various power-ups and also a second player (if they buy in). Your mission won't be easy but it is necessary so you can secure both the skies and ground for our troops. + +The game is broken up into four missions. Within these four missions, there are 2 parts. One part involves going over land and the other part has you either going over water or being up in the air. Regardless of which part you are on, you will still have to deal with the same basic things. After part two of mission four, the missions will repeat again with mission one. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + p47.zip + Jaleco + 256x224 + media/mixrbv2/p47.png + + + + p47.zip + P-47 - The Phantom Fighter (World) + P-47 is a two-dimensional, scrolling shooter type of game. You play as the pilot of a P-47. Your mission is to basically destroy as many of the enemies as you possibly can. This means eliminating as many air and ground units as you can. You will be going through four missions (each being broken up into two parts) and at the end of each of these parts is an enemy boss for you to tangle with. Although you have unlimited ammunition, the enemy will make you pay for the invasion into their homeland. You will be able to accomplish this with various power-ups and also a second player (if they buy in). Your mission won't be easy but it is necessary so you can secure both the skies and ground for our troops. + +The game is broken up into four missions. Within these four missions, there are 2 parts. One part involves going over land and the other part has you either going over water or being up in the air. Regardless of which part you are on, you will still have to deal with the same basic things. After part two of mission four, the missions will repeat again with mission one. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 256x224 + media/mixrbv2/p47.png + + + + pow.zip + P.O.W. - Prisoners of War (US version 1) + Prisoners of War is a horizontally-scrolling run 'n' gun platform game for one or two players in which Special Forces soldiers escape from a POW camp and must fight their way through enemy territory to reach the extraction point and rescue. + +The escaping POWs fight primarily using hand-to-hand combat, but limited-use knives and sub-machine guns can be retrieved from fallen enemy soldiers. The game consists of three action buttons for punching, kicking and jumping. There are also three special attacks performed by pressing two buttons simultaneously: a jump kick (jump, then kick), a back punch (jump and punch simultaneously) and a headbutt (punch and kick simultaneously). + +The controls change when wielding a weapon; the knife is thrown by pressing the punch button, but can preserved by using kicks. When wielding the machine gun, players can fire it by pressing the kick button, or can conserve its ammo by pressing the punch button to gun-whip enemies from close-range. + 0.70 + 19880101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/pow.png + + + + powa.zip + P.O.W. - Prisoners of War (US version 1, mask ROM sprites ) + Prisoners of War is a horizontally-scrolling run 'n' gun platform game for one or two players in which Special Forces soldiers escape from a POW camp and must fight their way through enemy territory to reach the extraction point and rescue. + +The escaping POWs fight primarily using hand-to-hand combat, but limited-use knives and sub-machine guns can be retrieved from fallen enemy soldiers. The game consists of three action buttons for punching, kicking and jumping. There are also three special attacks performed by pressing two buttons simultaneously: a jump kick (jump, then kick), a back punch (jump and punch simultaneously) and a headbutt (punch and kick simultaneously). + +The controls change when wielding a weapon; the knife is thrown by pressing the punch button, but can preserved by using kicks. When wielding the machine gun, players can fire it by pressing the kick button, or can conserve its ammo by pressing the punch button to gun-whip enemies from close-range. + 0.70 + 19880101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + pow.zip + SNK Classics + 256x224 + media/mixrbv2/pow.png + + + + pacnpal.zip + Pac & Pal + Pac-Man has a new friend named Miru, but she tries to steal stuff and take it to the ghost pen. Pac-Man now not only has to collect the stuff lying around the board, but he must also watch Miru to make sure she doesn't take the stuff for her own use. + 0.70 + 19830101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/pacnpal.png + + + + pacnpal2.zip + Pac & Pal (older) + Pac-Man has a new friend named Miru, but she tries to steal stuff and take it to the ghost pen. Pac-Man now not only has to collect the stuff lying around the board, but he must also watch Miru to make sure she doesn't take the stuff for her own use. + 0.70 + 19830101T000000 + Namco + Namco + Action + 10 + 1-2 + pacnpal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/pacnpal.png + + + + pacmanfm.zip + Pac Man (FAMARE S.A. bootleg of Puck Man) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanug.zip + Pac Man (U.G. bootleg of Puck Man) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacminer.zip + Pac Manic Miner Man + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacgal.zip + Pac-Gal + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + paclandm2.zip + Pac-Land (Bally-Midway) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + pacland.zip + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + paclandj.zip + Pac-Land (Japan new) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + pacland.zip + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + paclandjo.zip + Pac-Land (Japan old) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + pacland.zip + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + paclandjo2.zip + Pac-Land (Japan older) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + pacland.zip + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + paclandm.zip + Pac-Land (Midway) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + pacland.zip + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + pacland.zip + Pac-Land (World) + Pac-Land is a horizontally-scrolling platform game set in the cartoon world of the game's title. A fairy has lost her way and needs Pac-Man to help her get back to her home of Fairyland. Pac-Man, with the fairy safely hidden beneath his hat, must run and jump through the colourful world until he reaches and enters the magical door to Fairyland. Upon being rescued, the fairy gives Pac-Man a pair of magical shoes for his trip back home. These enable him to jump wherever he wants, without the need for a platform to jump from. This effectively means Pac-Man can 'sky-jump' back home if he so wishes. + +Directional buttons make Pac-Man walk left and right and it's possible to make him run by tapping the desired directional button twice. Pac-Man is pursued by his ever-present enemies in the form of five ghosts - Pinky, Inky, Blinky, Clyde and Sue. Pac-Man must avoid the ghosts and other deadly objects that populate the levels. As with previous games in the series, a small number of 'Powerpills' appear. Eating a Powerpill makes Pac-Man temporarily invincible and turns the ghosts purple and vulnerable to being eaten. On some stages, Pac-Man must use a springboard to jump over large ponds by leaping from the springboard and rapidly moving left and right while in the air. + +The game's stages are called 'trips', with players able to start on any one of the first five. Each trip made up of four rounds (three rounds to reach Fairyland and one round to return home) with a short interval between each one. The objective in all trips is to get the fairy safely back to Fairyland then return home to Pac-Man's family. The majority of the trip involves moving from left to right, avoiding various obstacles such as the enemy ghosts, water spurts and quicksand traps. The journey home, however, scrolls right to left. + +Each stage must be completed within a set time limit and if the player runs out of time before finishing a round, Sue (the purple ghost) will speed up considerably and kill Pac-Man. At the end of each round, players are awarded bonus points based on how much of the time limit remains. On each stage, cherries and other items can be collected for extra points. There are a total of 8 different trips in the game, totalling 32 levels. After the 8th trip, the 9th trip is a repeat of the 5th trip, with level 33 effectively being level 17, with an increased difficulty level. + 0.80 + 19840101T000000 + Namco + Namco + Platform / Run Jump Scrolling + 2897 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/pacland.png + + + + pacnchmp.zip + Pac-Man & Chomp Chomp + Pac-Man has a new friend named Miru, but she tries to steal stuff and take it to the ghost pen. Pac-Man now not only has to collect the stuff lying around the board, but he must also watch Miru to make sure she doesn't take the stuff for her own use. + 0.70 + 19830101T000000 + Namco + Namco + Action + 10 + 1-2 + pacnpal.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/pacnpal.png + + + + pacmanbl.zip + Pac-Man (bootleg on Galaxian hardware, set 1) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanbla.zip + Pac-Man (bootleg on Galaxian hardware, set 2) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanvg.zip + Pac-Man (bootleg, Video Game SA) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanblc.zip + Pac-Man (Calfesa, Spanish bootleg on Galaxian hardware) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacheart.zip + Pac-Man (Hearts) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacman.zip + Pac-Man (Midway) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmod.zip + Pac-Man (Midway, harder) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanf.zip + Pac-Man (Midway, with speedup hack) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanso.zip + Pac-Man (SegaSA / Sonic) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmanblv.zip + Pac-Man (Video Dens, Spanish bootleg on Galaxian hardware) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + 25pacmano.zip + Pac-Man - 25th Anniversary Edition (Rev 2.00) + Limited Edition Pac-Man 25th Anniversary model. +Enjoy hours of game play with the 'Greatest Hits' in videogame history - Pac-Man, Ms. Pac-Man and Galaga. +LONGEVITY - There are NO other classic titles that have earned so well for over two decades! +LIMITED EDITION cabinet +Operator Selectable Original or Speedy Pac-Man and Ms. Pac-Man game play. +Operator Selectable Original or Rapid Fire Galaga game play + 20060101T000000 + Namco + Namco + Compilation + 34 + 1-2 + 25pacman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/25pacman.png + + + + 25pacman.zip + Pac-Man - 25th Anniversary Edition (Rev 3.00) + Limited Edition Pac-Man 25th Anniversary model. +Enjoy hours of game play with the 'Greatest Hits' in videogame history - Pac-Man, Ms. Pac-Man and Galaga. +LONGEVITY - There are NO other classic titles that have earned so well for over two decades! +LIMITED EDITION cabinet +Operator Selectable Original or Speedy Pac-Man and Ms. Pac-Man game play. +Operator Selectable Original or Rapid Fire Galaga game play + 20060101T000000 + Namco + Namco + Compilation + 34 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/25pacman.png + + + + pacplus.zip + Pac-Man Plus + The ghosts are the same, if their edible forms are changed. The maze is familiar, if a bit off in color. The prizes in the center are a bit different. Be careful, however: Pac-Man may eat a power pill and find that Blinky, who is right in front of the energizer for him to immediately eat, is still red, and now Pac-Man is dead. Also, you might want to try eating the ghosts after eating the center prize. They'll return to their normal forms shortly after turning visible. + 0.70 + 19820101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/pacplus.png + + + + pacmania.zip + Pac-Mania + Pac-Mania is a 1- or 2-player game in which the player maneuvers Pac-Man through a world of 3-D mazes. He's back in action... but with a new twist, BOUNCE power! Ready for a new generation of Pac-Man players, he can't wait + 0.70 + 19870101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/pacmania.png + + + + pacmaniao.zip + Pac-Mania (111187 sound program) + Pac-Mania is a 1- or 2-player game in which the player maneuvers Pac-Man through a world of 3-D mazes. He's back in action... but with a new twist, BOUNCE power! Ready for a new generation of Pac-Man players, he can't wait + 0.70 + 19870101T000000 + Namco + Namco + Action + 10 + 1-2 + pacmania.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/pacmania.png + + + + pacmaniaj.zip + Pac-Mania (Japan) + Pac-Mania is a 1- or 2-player game in which the player maneuvers Pac-Man through a world of 3-D mazes. He's back in action... but with a new twist, BOUNCE power! Ready for a new generation of Pac-Man players, he can't wait + 0.70 + 19870101T000000 + Namco + Namco + Action + 10 + 1-2 + pacmania.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/pacmania.png + + + + packbang.zip + Pack'n Bang Bang (Prototype) + Pack'n Bang Bang is an unreleased game by Kaneko that was supposed to be released in 1994. The game is a platform in a vs style where the player needs to defeat the opponent by destroying the support blocks and landing them into the spikes. + 0.70 + 19940101T000000 + Kaneko + Kaneko + Action + 10 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/packbang.png + + + + packetman.zip + Packetman (bootleg) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + clubpacm.zip + Pacman Club / Club Lambada (Argentina) + Club Pacman is a Ms.Pac-Man-like game with the same object as Pac-Man except, Club Pacman has some new features including: Music when you eat a Power Pellet, Turbo speed when eating a Power Pellet, Fast fruit, faster ghosts when you get good, and speed options. + 19890101T000000 + Namco Classics + 270 + 288x224 + media/mixrbv2/clubpacm.png + + + + pacuman.zip + Pacu-Man (Spanish bootleg of Puck Man) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + paddle2.zip + Paddle 2 (bootleg on Block hardware) + After a sudden alien assault, the Arkanoid spaceship has been destroyed and the only survivor, the small 'Vaus' space vessel, has been mysteriously trapped in another dimension by an unknown enemy. The player is charged with helping the 'Vaus' overcome the security systems, as well as the many enemies that guard them, before finally finding and destroying 'DOH', the alien responsible for the attack. + +Arkanoid is an update of the early ball and paddle video games - and specifically of Atari's 1978 classic, "Super Breakout" - in which the player takes control of a paddle at the bottom of the screen and must use it to deflect a ball into rows of bricks at the top of the screen, thus destroying them and, eventually, clearing the screen to progress to the next level. + +As well as impressive and colourful graphics, Arkanoid introduced a number of new elements to the classic bat 'n' ball gameplay. Certain bricks, when destroyed, would release a power-up - in the form of a falling capsule. the player had to catch the capsule to retrieve the power-up. Among the many enhancements the power-ups provided were an increased 'bat' size, multiple balls, 'sticky' ball (which would stick to the bat and could be released when the player chose) and even a laser, which allowed the player to shoot the bricks. + 0.90 + 19860101T000000 + Taito + Taito + Action + 10 + 1-2 + arkanoid.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/arkanoid.png + + + + paddlema.zip + Paddle Mania + Paddle Mania is a top-down tennis game with an Olympic twist. When playing through the game's single-player and cooperative modes, players will alternate between taking on fellow tennis players on gimmicky courts and competing against athletes from other sports. Despite the tennis theming, scoring works more similarly to air hockey, with a goal on both sides of the court that the teams need to defend and aim for. The Olympic athletes you face off with range from a volleyball team to surfers to a single sumo wrestler, while the gimmicks against the tennis players include things such as a goal that opens and shuts periodically, one that has a barrier preventing you from standing inside it, and one where parts of the goal is blocked by a moving wall. By swinging your racket right and left you need to get more points than your opponent to move onto the next athlete. There is a multiplayer option where you compete against each other instead of cooperate, and while you both play as tennis athletes still, you can select from the different gimmick courts featured in the single player mode. + 0.50 + 19880101T000000 + SNK + SNK + Sports / Tennis + 2867 + 1-4 + SNK Classics + 270 + 256x224 + media/mixrbv2/paddlema.png + + + + samsho4k.zip + Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV) + Bringing a new breath to SNK's swordsman fighting series, this 4th installment marks the return of 3 classic characters (Yagyu Jubei, Charlotte and Tam Tam, now with updated stuff), introduces 2 newcomers for the pantheon (the brothers Sogetsu Kazama and Kazuki Kazama) and brings some new backgrounds. + +In spite of these little improvements, the game preserved (and improved a lot) many elements that did the previous one (Samurai Shodown III: Blades of Blood) a quite popular title, like the dodge move and the chance to choose between two versions of the fighter: the standard one and an alternative dark-styled one (SLASH and BUST, respectively). + +With the intention to provide more action in the battles, the "No Contest" Moves were introduced: working in similar way (and under certain conditions) to the many games of Mortal Kombat Series, your fighter will execute an ultimate-slaughter move in a stunned opponent. + + 0.95 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho4.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho4.png + + + + paintrlr.zip + Paint Roller (bootleg of Crush Roller) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + painter.zip + Painter (hack of Crush Roller) + Crush Roller is a maze game in which the player controls a paintbrush and must paint the entire layout in order to advance to the next stage. Two fish one yellow, the other light blue emerge from separate aquariums to pursue the paintbrush around the board, and if either of the fish succeeds in making contact with the paintbrush, the player loses a life. + +The player may use two "rollers" to attack the fish. The rollers are located on two overpasses, one vertical in its orientation, the other horizontal. To use a roller, the player positions the paintbrush on the forward end of the roller, waits for either or both of the fish to approach, then pushes the paintbrush along the roller, attacking the fish. The fish is removed from the maze for a few seconds, then returns to one of the aquariums and resumes its pursuit of the paintbrush. Killing fish in this manner scores bonus points. + +A third character, appearing to be an animal or human figure depending on the level, may enter the maze and leave tracks that must be painted over in order for the board to be completed. The player can limit the damage by running over the figure, which not only stops further tracks from being left but also awards the player a score, which progressively increases as more boards are cleared. + 0.90 + 19810101T000000 + ADK + Kural Electric, Ltd. + Action + 10 + 1-2 + crush.zip + Alpha Denshi Co. + 270 + 288x224 + media/mixrbv2/crush.png + + + + pairlove.zip + Pairs Love + Pairs Love is puzzle game where the objective is to clear the board of all of the cards which reveals the girl in the background. Cards can only be removed if they are in a clear, strait line from each other and are of matching suit or value. Clearing cards from the board adds time to the timer. If necessary, the player may 'reverse' and return a pair to the board with a timer penalty. + +If no cards can legally be removed from the board, or if the timer runs out then it is game over. + 0.50 + 19910101T000000 + Athena + Athena + Puzzle-Game / Equalize + 2864 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/pairlove.png + + + + pajaroes.zip + Pajaro del Espacio (Spanish bootleg of UniWar S) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + palamedj.zip + Palamedes (Japan) + The goal of Palamedes is to clear the screen which is, line by line, filling up with dice. Players control a small character near the bottom of the screen, who can only be moved to the left or right. The number of the dice the player is holding can be changed with the B button, pressing the A button will shoot the dice upwards. If the die hits another one with a matching number, the targeted dice disappears from the playing area and is added to a column at the bottom of the screen. Pressing down after lining up at least three dice of either the same number or consecutive numbers in the bottom row will destroy up to 5 lines at once. +There are 3 play modes: The standard single player mode, which requires the player to destroy a set number of lines in order to advance to the next stage; a tournament mode in which the player has to duel a number of CPU-controlled opponents and a two player mode. + 0.70 + 19900101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + palamed.zip + Taito Classics + 320x224 + media/mixrbv2/palamed.png + + + + palamed.zip + Palamedes (US) + The goal of Palamedes is to clear the screen which is, line by line, filling up with dice. Players control a small character near the bottom of the screen, who can only be moved to the left or right. The number of the dice the player is holding can be changed with the B button, pressing the A button will shoot the dice upwards. If the die hits another one with a matching number, the targeted dice disappears from the playing area and is added to a column at the bottom of the screen. Pressing down after lining up at least three dice of either the same number or consecutive numbers in the bottom row will destroy up to 5 lines at once. +There are 3 play modes: The standard single player mode, which requires the player to destroy a set number of lines in order to advance to the next stage; a tournament mode in which the player has to duel a number of CPU-controlled opponents and a two player mode. + 0.70 + 19900101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/palamed.png + + + + pandoras.zip + Pandora's Palace + Pandora's Palace is a platform game in which the player takes on the role of a Roman emperor and must make their way from the top left corner of the screen to the exit at the bottom right corner. This can only be achieved utilising the poles and moving platforms the form each stage. + +Burning fires litter the platforms and these must either be avoided or jumped over. Constantly-spawning enemies also patrol each stage and while they won't kill the emperor directly on contact, they can push him into fires or over the edge of platforms, costing the player a life. + +Each stage has a set number of flashing bunches of grapes hanging from platforms and buildings, picking these up temporarily sees the laurel leaves and gown the Roman Emperor is wearing replaced with a roman helmet and tunic. While is this mode the emperor can destroy enemies by jumping on their heads, earning bonus points. + 0.90 + 19840101T000000 + Konami + Konami + Platform / Run Jump + 2915 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/pandoras.png + + + + pangb.zip + Pang (bootleg, set 1) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pangbold.zip + Pang (bootleg, set 2) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pangb2.zip + Pang (bootleg, set 4) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pangbold2.zip + Pang (bootleg, set 5) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pangbold3.zip + Pang (bootleg, set 6) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pang.zip + Pang (World) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + pangpang.zip + Pang Pang + A "Tumble Pop" style game. With every stage boss you defeat, you are rewarded with a picture of a nude woman. + 0.30 + 19940101T000000 + Dong Gue La Mi Ltd. + Dong Gue La Mi Ltd. + Platform / Run Jump + 2915 + 1-2 + SemiCom + 320x240 + media/mixrbv2/pangpang.png + + + + pangpoms.zip + Pang Pom's + A colourful static-screen platform game in which players must burst all of the balloons on the screen to advance to the next stage. A number of balloons reveal prizes and bonus points. + 0.70 + 19920101T000000 + Metro 3D + Metro 3D + Platform / Run Jump + 2915 + 1-2 + Mitchell + 360x224 + media/mixrbv2/pangpoms.png + + + + pangpomsm.zip + Pang Pom's (Mitchell) + A colourful static-screen platform game in which players must burst all of the balloons on the screen to advance to the next stage. A number of balloons reveal prizes and bonus points. + 0.70 + 19920101T000000 + Metro 3D + Metro 3D + Platform / Run Jump + 2915 + 1-2 + pangpoms.zip + Mitchell + 360x224 + media/mixrbv2/pangpoms.png + + + + pangpomsn.zip + Pang Pom's (Nova) + A colourful static-screen platform game in which players must burst all of the balloons on the screen to advance to the next stage. A number of balloons reveal prizes and bonus points. + 0.70 + 19920101T000000 + Metro 3D + Metro 3D + Platform / Run Jump + 2915 + 1-2 + pangpoms.zip + Mitchell + 360x224 + media/mixrbv2/pangpoms.png + + + + pang3r1.zip + Pang! 3 (950511 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3r1a.zip + Pang! 3 (950511 Euro, alt) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3.zip + Pang! 3 (950601 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3b.zip + Pang! 3 (bootleg set 1, 950511 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3b2.zip + Pang! 3 (bootleg set 2, 950601 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3b3.zip + Pang! 3 (bootleg set 3, 950511 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3b4.zip + Pang! 3 (bootleg set 4, 950511 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3b5.zip + Pang! 3 (bootleg set 5, 950601 Euro) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + pang3j.zip + Pang! 3: Kaitou Tachi no Karei na Gogo (950511 Japan) + Pang! 3 is the second sequel to the superb 1989 original, Pang! 3 retains the same gameplay of its predecessors but adds vastly improved graphics and a choice of three difficulty levels; Beginner, Normal and Panic. On both the 'Normal' and 'Panic' skill levels, players can choose from 4 different playable characters; each possessing different strengths and weaknesses, such as a double harpoon or quick shots. On the beginner level, players can only use the Mexican character. + +Another notable difference is in the game's use of backdrops: instead of the world landmarks of the first two games, Pang! 3 features classical works of art in the form of paintings and sculptures. + 0.85 + 19950101T000000 + Mitchell + Capcom + Puzzle-Game + 26 + 1-2 + pang3.zip + Capcom Play System + 384x224 + media/mixrbv2/pang3.png + + + + panicbom.zip + Panic Bomber + That one-player game consists in facing nine opponents through duels with individual screens. Each one in his playground have to stack blocks composed of three different colored helmets. Like Tetris, it is possible to rotate, move left or right or accelerate the fall of these blocks. Starting from three identical helmets lined up horizontally, vertically or diagonally, they explode and generate a bomb in the playground. When they disappear, they can initiate chain reactions, for example with the blocks lying above falling. After a certain number of removed blocks, comes an activated bomb: player have to place it in order to make the most of these bombs explode on his table. + 0.65 + 19950101T000000 + SNK + Hudson + Puzzle-Game / Fall + 2912 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/panicbom.png + + + + paprazzi.zip + Paparazzi + A "Lady Killer" rip-off. + 0.50 + 19960101T000000 + Adult + 413 + Mame + 270 + 380x224 + media/mixrbv2/paprazzi.png + + + + pturn.zip + Parallel Turn + A skiing game with six events. The screen scrolls from top to bottom with the player viewed directly from above. Events are: + + Ski Lift - Hit Run to move and Jump to mount the empty ski chair. You have 30 seconds to pick a chair. Each chair passed puts you higher up in the rankings. + Slalom - Control the skier downhill past slalom flags and through the time-bonus gates. Overtake the other skiers to increase your ranking. + Ski Jump - Run to increase your speed and jump to takeoff. + Biathalon - Ski to a set of targets then aim the crosshairs and shoot. Each target gives a one second bonus. + Dog Sled - A 100m distance race against the computer. Hit the run button to move. + Downhill - Similar to the slalom event. + 0.70 + 19840101T000000 + Jaleco + Jaleco + Sports / Skiing + 2902 + 1-2 + Jaleco + 270 + 256x224 + media/mixrbv2/pturn.png + + + + parodiusa.zip + Parodius DA! (Asia) + +Parodius Da! is a horizontally-scrolling shoot-em-up in which the Great Octopus has threatened Earth. To help Parodius save the planet, the player and his friends must begin their search across the world to find the enemy and destroy him. + +Parodius Da! was created as a parody of Konami's own "Gradius" series of shoot-em-ups but adopted a graphical style that was entirely its own; something that becomes evident at the very start of the game when players can chose to pilot either a penguin or an octopus rather that the traditional Gradius ship. + 0.90 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + parodius.zip + Konami Classics + 288x224 + media/mixrbv2/parodius.png + + + + parodiusj.zip + Parodius DA! (Japan) + +Parodius Da! is a horizontally-scrolling shoot-em-up in which the Great Octopus has threatened Earth. To help Parodius save the planet, the player and his friends must begin their search across the world to find the enemy and destroy him. + +Parodius Da! was created as a parody of Konami's own "Gradius" series of shoot-em-ups but adopted a graphical style that was entirely its own; something that becomes evident at the very start of the game when players can chose to pilot either a penguin or an octopus rather that the traditional Gradius ship. + 0.90 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + parodius.zip + Konami Classics + 288x224 + media/mixrbv2/parodius.png + + + + parodius.zip + Parodius DA! (World, set 1) + +Parodius Da! is a horizontally-scrolling shoot-em-up in which the Great Octopus has threatened Earth. To help Parodius save the planet, the player and his friends must begin their search across the world to find the enemy and destroy him. + +Parodius Da! was created as a parody of Konami's own "Gradius" series of shoot-em-ups but adopted a graphical style that was entirely its own; something that becomes evident at the very start of the game when players can chose to pilot either a penguin or an octopus rather that the traditional Gradius ship. + 0.90 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/parodius.png + + + + parodiuse.zip + Parodius DA! (World, set 2) + +Parodius Da! is a horizontally-scrolling shoot-em-up in which the Great Octopus has threatened Earth. To help Parodius save the planet, the player and his friends must begin their search across the world to find the enemy and destroy him. + +Parodius Da! was created as a parody of Konami's own "Gradius" series of shoot-em-ups but adopted a graphical style that was entirely its own; something that becomes evident at the very start of the game when players can chose to pilot either a penguin or an octopus rather that the traditional Gradius ship. + 0.90 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + parodius.zip + Konami Classics + 288x224 + media/mixrbv2/parodius.png + + + + ppchamp.zip + Pasha Pasha Champ Mini Game Festival + It's a collection of nineteen minigames that you can either choose to play one-by-one in an attempt to clear them all without running out of lives, or by selecting your favourites from a list. +You've got three colour-coded buttons: red on the left, green in the middle and blue on the right. The majority of Got-Cha's minigames involve pressing the correct colour at the right moment, so try to fix the position of each colour firmly in you mind. Occasionally red and blue work as left and right, too. + 0.50 + 19970101T000000 + Dong Sung + Dong Sung + Compilation + 34 + 1-3 + gotcha.zip + Mame + 320x240 + media/mixrbv2/gotcha.png + + + + pass.zip + Pass + A maze game that is a bootleg of Go! Go! Mile Smile. + + 0.50 + 19920101T000000 + Oksan + Oksan + Action + 10 + 1-2 + Mame + 320x224 + media/mixrbv2/pass.png + + + + passshtjd.zip + Passing Shot (Japan, 4 Players, FD1094 317-0070 decrypted) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passshtj.zip + Passing Shot (Japan, 4 Players, FD1094 317-0070) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passsht16a.zip + Passing Shot (Japan, 4 Players, System 16A, FD1094 317-0071) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passshtd.zip + Passing Shot (World, 2 Players, FD1094 317-0080 decrypted) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passsht.zip + Passing Shot (World, 2 Players, FD1094 317-0080) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passshtad.zip + Passing Shot (World, 4 Players, FD1094 317-0074 decrypted) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + passshta.zip + Passing Shot (World, 4 Players, FD1094 317-0074) + Passing Shot has 4 levels. The first level is in France, then in Australia, U.S.A. and finally the level 4 is in England. For the first 3 levels the player only plays the final. However, in England the player goes to the quarter-finals then the semi-finals before reaching the final. + +This game can be played with men or women. It can also be played with 2 persons in pairs matches. + 0.70 + 19880101T000000 + SEGA + SEGA + Sports / Tennis + 2867 + 1-4 + passsht.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/passsht.png + + + + patapata.zip + Pata Pata Panic + Is one of those games where you have to raise flags with the correct orders, some can be tricky as you dont have to raise/lower the flags, as the game continues, the more correct answers, the faster your reflexes needs to be, because the timer will be faster, but the voices are random speeds, sometimes faster, sometimes slower. + 19930101T000000 + Atlus + Atlus + Thinking + 3511 + 1 + Atlus + 480x352 + media/mixrbv2/patapata.png + + + + peekaboo.zip + Peek-a-Boo! (Japan, ver. 1.1) + Utilisez la balle pour détruire le mur de briques. Une fois que toutes les briques sont détruites, vous obtenez une récompense (femme en petite tenue) et avancez d'un niveau. + 0.50 + 19930101T000000 + Jaleco + Jaleco + Action / Breakout games + 2917 + 1-2 + Jaleco + 256x224 + media/mixrbv2/peekaboo.png + + + + peekaboou.zip + Peek-a-Boo! (North America, ver 1.0) + Utilisez la balle pour détruire le mur de briques. Une fois que toutes les briques sont détruites, vous obtenez une récompense (femme en petite tenue) et avancez d'un niveau. + 0.50 + 19930101T000000 + Jaleco + Jaleco + Action / Breakout games + 2917 + 1-2 + peekaboo.zip + Jaleco + 256x224 + media/mixrbv2/peekaboo.png + + + + pengob.zip + Pengo (bootleg) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo.zip + Pengo (set 1 rev C, encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo2.zip + Pengo (set 2, encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo2u.zip + Pengo (set 2, rev A, not encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo3u.zip + Pengo (set 3, not encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo4.zip + Pengo (set 4, encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo5.zip + Pengo (set 5, encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengo6.zip + Pengo (set 6, encrypted) + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pengadvb.zip + Penguin Adventure (bootleg of MSX version) + Heart: there is 4 types: red, green, blue and yellow. +Red: 1000 pts +Green: Timer +50 +Blue: Ride a cloud and you can fly +Yellow: Invincibility and you can break by body-attack + +Basic Items you can buy: +Gun: Fire and kill an enemy/boss. +Gold Feather: It enables moving left/right in jumping. +Hat with Propeller: It enables long jump. Flight duration is increased with holding Jump button. +Speed Shoes: Max speed up (8 though default is 6) +Bell: Warning tone is played when "Warp" point comes near. +Necklace: You can play a slot-machine as many times as you want (Default is 3 times) +Ring: No damage against sea anemone in the sea +Bracelet: It is required to get secret items +Gold Helmet: Guard a lighting attack by Mun-muku 3 times +Silver Helmet: Guard body-attack by Uniya and Harisen-uni 3 times +Cloth: Guard body-attack by Ahou and Bat 3 times +Glasses: It enables you to see the invisible enemy "Vega". +Torch: No damage when you hit the attack by Ika-dasu. +Map: It requires to finish several stage (otherwise, you zapped...) + +Bonus Stage: If you are in jumping at Dist = 420, wing item appears and you can go to bonus stage. +Get normal fish and golden fish (1UP!) before you hit a meteo or time over. + 0.40 + 19880101T000000 + bootleg + bootleg + Platform / Run Jump Scrolling + 2897 + 1 + Konami Classics + 280x216 + media/mixrbv2/pengadvb.png + + + + pkunwarj.zip + Penguin-Kun Wars (Japan) + A timed game where a penguin rolls spheres across a table attempting to hit its opponent for points. The character with the fewest spheres on its side of the table at the end of the match is the winner. + 0.70 + 19850101T000000 + UPL + UPL + Sports / Dodgeball + 2970 + 1-2 + pkunwar.zip + Mame + 256x192 + media/mixrbv2/pkunwar.png + + + + pkunwar.zip + Penguin-Kun Wars (US) + A timed game where a penguin rolls spheres across a table attempting to hit its opponent for points. The character with the fewest spheres on its side of the table at the end of the match is the winner. + 0.70 + 19850101T000000 + UPL + UPL + Sports / Dodgeball + 2970 + 1-2 + Mame + 256x192 + media/mixrbv2/pkunwar.png + + + + penta.zip + Penta + Pengo is an action game set in an overhead maze constructed of ice blocks. The player controls Pengo, a red penguin that lives in the Antarctic and fights the blob-like Sno-Bees. The objective of the game is for Pengo to survive a series of rounds by eliminating all Sno-Bees, while amassing bonuses by bringing together the three diamonds dispersed in the maze. + 0.90 + 19820101T000000 + Action + 10 + 1-2 + pengo.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/pengo.png + + + + pbillrd.zip + Perfect Billiard + Perfect Billiards is an overhead billiards. + 0.50 + 19870101T000000 + Nihon Systems + Nihon Systems + Sports / Pool + 3028 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/pbillrd.png + + + + pbillrdsa.zip + Perfect Billiard (MC-8123, 317-5008) + Perfect Billiards is an overhead billiards. + 0.50 + 19870101T000000 + Nihon Systems + Nihon Systems + Sports / Pool + 3028 + 1-2 + pbillrd.zip + Sega Classics + 256x224 + media/mixrbv2/pbillrd.png + + + + perfrman.zip + Performan (Japan) + A static-screen shoot'em up in which the player controls a robot named Performan that moves in four directions. The character's weapon is a Perfor-Boomerang that shoots in front of the player and a button allows the player to dig tunnels underground. + 0.90 + 19850101T000000 + Toaplan + Toaplan + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/perfrman.png + + + + perfrmanu.zip + Performan (US) + A static-screen shoot'em up in which the player controls a robot named Performan that moves in four directions. The character's weapon is a Perfor-Boomerang that shoots in front of the player and a button allows the player to dig tunnels underground. + 0.90 + 19850101T000000 + Toaplan + Toaplan + Action + 10 + 1-2 + perfrman.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/perfrman.png + + + + pestplce.zip + Pest Place + Mario Bros. is a superb, single-screen platform game in which the legendary "Mario Bros.", Mario and Luigi, must try to rid each level of a number of pests that have infested the waterworks: Shellcreepers (turtles), Sidesteppers (crabs that need to be hit twice) and Fighterflies (flies that can only be attacked when they touch a platform). + +Players can jump upwards to hit the platform above them, which will 'flip' any enemies on the above platform onto their backs. The prone enemies can then be kicked into the water to remove them. A 'POW' button also appears on a number of screen; this can be 'butted' by a player, causing all on-screen enemies to flip onto their backs; as well as destroying any enemy fireballs that may be around. Each POW can only be used a maximum of three times. + +As well as the game's enemies, players are also hampered by the huge amount of inertia that comes into play when controlling Mario or Luigi. This is due to the low degree of traction that exists between the Mario brothers and the platforms. On later phases, ice appears on the platforms reducing the amount of traction even further. As the game progresses, water droplets hang below the platforms and freeze into deadly icicles, which will eventually break off and fall. + 0.90 + 19830101T000000 + Nintendo + Nintendo + Platform + 7 + 1-2 + mario.zip + Nintendo Classics + 256x224 + media/mixrbv2/mario.png + + + + cppicf.zip + Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 1) + The player controls the Ice-cream man Peter Pepper with the object of placing ice-cream scoops into cones. The player can also put a scoop into a cone that already has a scoop. When all scoops are in cones, the player is taken to the next Pattern. Throwing an ice-cream scoop can send it up on a platform depending on the position. Living confectioneries and utensils will try to hinder Peter's progress, but they can be taken out by pushing or throwing an ice-cream scoop directly on them. Also enemies cannot harm Peter while they/he is climbing a ladder. + 0.50 + 19840101T000000 + Data East + Platform / Run Jump + 2915 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cppicf.png + + + + cppicf2.zip + Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 2) + The player controls the Ice-cream man Peter Pepper with the object of placing ice-cream scoops into cones. The player can also put a scoop into a cone that already has a scoop. When all scoops are in cones, the player is taken to the next Pattern. Throwing an ice-cream scoop can send it up on a platform depending on the position. Living confectioneries and utensils will try to hinder Peter's progress, but they can be taken out by pushing or throwing an ice-cream scoop directly on them. Also enemies cannot harm Peter while they/he is climbing a ladder. + 0.50 + 19840101T000000 + Data East + Platform / Run Jump + 2915 + 1-2 + cppicf.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cppicf.png + + + + pettanp.zip + Pettan Pyuu (Japan) + Crush and conquer, and date Pettanko!! + +Use plates to defeat 20 different-dimensional maze bugs! + +Charge towards the plate and the plate will fall, and if you press the button, the plate will rise. There are 4 types of plates, each with different movements, so use them effectively! + +If you defeat the enemy together with Pettanko, you will have 100 times more courage and 2 times more points. + 0.30 + 19840101T000000 + Sunsoft + Sunsoft + Action + 10 + 1-2 + banbam.zip + Mame + 240x224 + media/mixrbv2/banbam.png + + + + phantasm.zip + Phantasm (Japan) + While walking out with his girlfriend the game's hero is ambushed by unknown enemies who snatch his girlfriend and shoot the hero dead. Now, as a wandering spirit with the ability to possess almost anybody he comes across, the hero is summoned by his girlfriend's father and given a mission to save her from the mysterious crime syndicate that holds her hostage. Only then can the hero rest in peace. + +The player's character 'inhabits' a body with which to combat the game's enemies. When that body is killed, providing there is a living enemy nearby (other than that of a boss) the player can posses them and continue playing. Each time this is done, it costs the player some of their 'spirit energy'. Should the hero die when there are no enemies close by for the player to possess; the game is over. + 0.50 + 19910101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + avspirit.zip + Jaleco + 256x224 + media/mixrbv2/avspirit.png + + + + phelios.zip + Phelios + A great vertical shoot'em up game based on Greek mythology. + +The player controls the sun god Apollo who is riding of his winged horse Pegasus flying through ancient Greece on a mission to rescue his sister Artemis the goddess of the moon, from the clutches of the fiend Typhon. Shoot all enemies like harpies and skeletons along with goblins and colossal enemy bosses. + +Pressing the fire button makes his sword fire a tiny shot, while holding it down charges the sword, firing a bigger fireball upon release. Even the smallest enemies take multiple hits, so the standard shot is of little use. + 0.60 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/phelios.png + + + + pheliosj.zip + Phelios (Japan) + A great vertical shoot'em up game based on Greek mythology. + +The player controls the sun god Apollo who is riding of his winged horse Pegasus flying through ancient Greece on a mission to rescue his sister Artemis the goddess of the moon, from the clutches of the fiend Typhon. Shoot all enemies like harpies and skeletons along with goblins and colossal enemy bosses. + +Pressing the fire button makes his sword fire a tiny shot, while holding it down charges the sword, firing a bigger fireball upon release. Even the smallest enemies take multiple hits, so the standard shot is of little use. + 0.60 + 19880101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + phelios.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/phelios.png + + + + phoenix.zip + Phoenix (Amstar) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenix2.zip + Phoenix (Amstar, set 2) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixass.zip + Phoenix (Assa, Spanish bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixa.zip + Phoenix (Centuri, set 1) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixb.zip + Phoenix (Centuri, set 2) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixdal.zip + Phoenix (D&L bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixgu.zip + Phoenix (G. Universal Video bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixc2.zip + Phoenix (G.G.I. Corporation, set 1) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixc3.zip + Phoenix (G.G.I. Corporation, set 2) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixc4.zip + Phoenix (G.G.I. Corporation, set 3) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixha.zip + Phoenix (Hellomat Automaten bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixi.zip + Phoenix (IDI bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixc.zip + Phoenix (Irecsa / G.G.I. Corporation) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixs.zip + Phoenix (Sonic, Spanish bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenix3.zip + Phoenix (T.P.N. bootleg) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixj.zip + Phoenix (Taito Japan) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenixt.zip + Phoenix (Taito) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + phoenxp2.zip + Phoenix Part 2 + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + photof.zip + Photo Finish (bootleg?) + Gate-In! - Wai Wai Jockey (c) 1984 Jaleco. An early Horse Racing game. - TECHNICAL - Main CPU : M6502 (@ 2 Mhz) Sound CPU : M6502 (@ 600 Khz) Sound Chips : (2x) SN76496 (@ 2 Mhz), DAC Players : 2 Control : 4-way joystick Buttons : 2 - TRIVIA - Relea + 19840101T000000 + Jaleco + Sports with Animals + 2650 + 1-2 + wwjgtin.zip + Jaleco + 240x224 + media/mixrbv2/wwjgtin.png + + + + phozon.zip + Phozon (Japan) + Phozon is an unusual puzzle/arcade hybrid in which the player controls a black molecule with four red spikes. The idea is for the player to align other floating molecules onto their own molecule to create an increasingly complex pattern; this must match the "blue print" molecule that is situated in the middle of the screen. To make molecules adhere to the player's molecule, the player simply touches the target molecule with their own. If a molecule attaches in a place that does not fit the pattern shown in the middle of the screen, the player must press the reject button to make if float away. Groups of multi-coloured rotating spheres move around the screen and must be avoided. + 0.70 + 19830101T000000 + Namco + Namco + Various + 39 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/phozon.png + + + + phozons.zip + Phozon (Sidam) + Phozon is an unusual puzzle/arcade hybrid in which the player controls a black molecule with four red spikes. The idea is for the player to align other floating molecules onto their own molecule to create an increasingly complex pattern; this must match the "blue print" molecule that is situated in the middle of the screen. To make molecules adhere to the player's molecule, the player simply touches the target molecule with their own. If a molecule attaches in a place that does not fit the pattern shown in the middle of the screen, the player must press the reject button to make if float away. Groups of multi-coloured rotating spheres move around the screen and must be avoided. + 0.70 + 19830101T000000 + Namco + Namco + Various + 39 + 1-2 + phozon.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/phozon.png + + + + pickin.zip + Pickin' + Pickin' (c) 1983 Valadon Automation. - TECHNICAL - Main CPU : Z80 (@ 3.072 Mhz) Sound Chips : AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 224 x 256 pixels Screen refresh : 60.00 Hz Palette Colors : 64 Players : 2 Control : 8-wa + 0.50 + 19830101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/pickin.png + + + + pbaction.zip + Pinball Action (set 1) + Pinball Action features three separate pinball areas in addition to the starting area. Each of the additional 'faces' has a challenge which, when completed, allows a player access to a special three extra credits. The three faces feature challenges modelled on ten-pin bowling, poker, and slot machines. + 0.70 + 19850101T000000 + Tehkan Ltd. + Tehkan Ltd. + Pinball + 31 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/pbaction.png + + + + pbaction2.zip + Pinball Action (set 2, encrypted) + Pinball Action features three separate pinball areas in addition to the starting area. Each of the additional 'faces' has a challenge which, when completed, allows a player access to a special three extra credits. The three faces feature challenges modelled on ten-pin bowling, poker, and slot machines. + 0.70 + 19850101T000000 + Tehkan Ltd. + Tehkan Ltd. + Pinball + 31 + 1-2 + pbaction.zip + Mame + 270 + 256x224 + media/mixrbv2/pbaction.png + + + + pbaction3.zip + Pinball Action (set 3, encrypted) + Pinball Action features three separate pinball areas in addition to the starting area. Each of the additional 'faces' has a challenge which, when completed, allows a player access to a special three extra credits. The three faces feature challenges modelled on ten-pin bowling, poker, and slot machines. + 0.70 + 19850101T000000 + Tehkan Ltd. + Tehkan Ltd. + Pinball + 31 + 1-2 + pbaction.zip + Mame + 270 + 256x224 + media/mixrbv2/pbaction.png + + + + pbaction4.zip + Pinball Action (set 4, encrypted) + Pinball Action features three separate pinball areas in addition to the starting area. Each of the additional 'faces' has a challenge which, when completed, allows a player access to a special three extra credits. The three faces feature challenges modelled on ten-pin bowling, poker, and slot machines. + 0.70 + 19850101T000000 + Tehkan Ltd. + Tehkan Ltd. + Pinball + 31 + 1-2 + pbaction.zip + Mame + 270 + 256x224 + media/mixrbv2/pbaction.png + + + + pbactiont.zip + Pinball Action (Tecfri License) + Pinball Action features three separate pinball areas in addition to the starting area. Each of the additional 'faces' has a challenge which, when completed, allows a player access to a special three extra credits. The three faces feature challenges modelled on ten-pin bowling, poker, and slot machines. + 0.70 + 19850101T000000 + Tehkan Ltd. + Tehkan Ltd. + Pinball + 31 + 1-2 + pbaction.zip + Mame + 270 + 256x224 + media/mixrbv2/pbaction.png + + + + pinbo.zip + Pinbo (set 1) + Pinbo (c) 1984 Jaleco. - TECHNICAL - Game ID : PB-8421 Main CPU : M6502 (@ 2 Mhz) Sound CPU : Z80 (@ 3 Mhz) Sound Chips : (2x) AY8910 (@ 1.25 Mhz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Released in August 1984. A bootleg of thi + 19840101T000000 + Jaleco + Jaleco + Pinball + 31 + 1-2 + Jaleco + 90 + 256x224 + media/mixrbv2/pinbo.png + + + + ppmast93.zip + Ping Pong Masters '93 + Ping Pong Masters '93 is an arcade ping pong game. + 0.50 + 19930101T000000 + Electronic Devices S.R.L. + Sports / Table tennis + 2966 + 1-2 + Mame + 256x256 + media/mixrbv2/ppmast93.png + + + + pballoon.zip + Pioneer Balloon + Guide a balloon across a variety of frontiers dropping bombs on your enemies. Dodge arrows shot from a covered wagon, boomerangs thrown by natives, coconuts hurled by gorillas, geyser sprays, cannonballs and deadly birds. Finally, navigate the balloon over mountains and make a precise landing at Fort Freedom. + 0.50 + 19820101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/pballoon.png + + + + pballoonr.zip + Pioneer Balloon (Rock-Ola license) + Guide a balloon across a variety of frontiers dropping bombs on your enemies. Dodge arrows shot from a covered wagon, boomerangs thrown by natives, coconuts hurled by gorillas, geyser sprays, cannonballs and deadly birds. Finally, navigate the balloon over mountains and make a precise landing at Fort Freedom. + 0.50 + 19820101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + pballoon.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/pballoon.png + + + + pipedrmj.zip + Pipe Dream (Japan) + Put your advanced plumbing skills to the maximum test and connect the points on the board in the least moves possible! Use the pieces of pipe supplied to plug the gaps and fix the leaks as quickly as possible. You're against the clock and at the mercy of pipe supply so think fast and lay pipe quickly! + 0.80 + 19900101T000000 + Video System + Video System + Puzzle-Game / Glide + 2891 + 1-2 + pipedrm.zip + Video System Co. + 352x240 + media/mixrbv2/pipedrm.png + + + + pipedrmt.zip + Pipe Dream (Taiwan) + Put your advanced plumbing skills to the maximum test and connect the points on the board in the least moves possible! Use the pieces of pipe supplied to plug the gaps and fix the leaks as quickly as possible. You're against the clock and at the mercy of pipe supply so think fast and lay pipe quickly! + 0.80 + 19900101T000000 + Video System + Video System + Puzzle-Game / Glide + 2891 + 1-2 + pipedrm.zip + Video System Co. + 352x240 + media/mixrbv2/pipedrm.png + + + + pipedrmu.zip + Pipe Dream (US) + Put your advanced plumbing skills to the maximum test and connect the points on the board in the least moves possible! Use the pieces of pipe supplied to plug the gaps and fix the leaks as quickly as possible. You're against the clock and at the mercy of pipe supply so think fast and lay pipe quickly! + 0.80 + 19900101T000000 + Video System + Video System + Puzzle-Game / Glide + 2891 + 1-2 + pipedrm.zip + Video System Co. + 352x240 + media/mixrbv2/pipedrm.png + + + + pipedrm.zip + Pipe Dream (World) + Put your advanced plumbing skills to the maximum test and connect the points on the board in the least moves possible! Use the pieces of pipe supplied to plug the gaps and fix the leaks as quickly as possible. You're against the clock and at the mercy of pipe supply so think fast and lay pipe quickly! + 0.80 + 19900101T000000 + Video System + Video System + Puzzle-Game / Glide + 2891 + 1-2 + Video System Co. + 352x240 + media/mixrbv2/pipedrm.png + + + + pipibibsp.zip + Pipi & Bibis / Whoopee!! (prototype) + Pipi & Bibis is a platform game for one or two players, in which the aim is to infiltrate buildings and plant time bombs at the computer terminals that litter the levels. The planting of the final bomb starts the detonation sequence, players must then quickly reach the level's exit before the bombs explode. + +Each level is populated with enemy scientists and agents, and any contact with these will result in the loss of a life. To help combat this, players are armed with a 'stun gun' which will knock the enemy to the floor, allowing the player to pass. If an enemy is held in the stun gun's beam for several seconds, the enemy will fall to the platform below. + +At the completion of each level, part of a cartoon picture of woman in a state of undress is shown. The entire picture is revealed once every four levels. + 0.70 + 19910101T000000 + Toaplan + Toaplan + Platform + 7 + pipibibs.zip + Toaplan + 320x240 + media/mixrbv2/pipibibs.png + + + + whoopee.zip + Pipi & Bibis / Whoopee!! (Teki Paki hardware) + Pipi & Bibis is a platform game for one or two players, in which the aim is to infiltrate buildings and plant time bombs at the computer terminals that litter the levels. The planting of the final bomb starts the detonation sequence, players must then quickly reach the level's exit before the bombs explode. + +Each level is populated with enemy scientists and agents, and any contact with these will result in the loss of a life. To help combat this, players are armed with a 'stun gun' which will knock the enemy to the floor, allowing the player to pass. If an enemy is held in the stun gun's beam for several seconds, the enemy will fall to the platform below. + +At the completion of each level, part of a cartoon picture of woman in a state of undress is shown. The entire picture is revealed once every four levels. + 0.70 + 19910101T000000 + Toaplan + Toaplan + Platform + 7 + pipibibs.zip + Toaplan + 320x240 + media/mixrbv2/pipibibs.png + + + + pipibibs.zip + Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1) + Pipi & Bibis is a platform game for one or two players, in which the aim is to infiltrate buildings and plant time bombs at the computer terminals that litter the levels. The planting of the final bomb starts the detonation sequence, players must then quickly reach the level's exit before the bombs explode. + +Each level is populated with enemy scientists and agents, and any contact with these will result in the loss of a life. To help combat this, players are armed with a 'stun gun' which will knock the enemy to the floor, allowing the player to pass. If an enemy is held in the stun gun's beam for several seconds, the enemy will fall to the platform below. + +At the completion of each level, part of a cartoon picture of woman in a state of undress is shown. The entire picture is revealed once every four levels. + 0.70 + 19910101T000000 + Toaplan + Toaplan + Platform + 7 + Toaplan + 320x240 + media/mixrbv2/pipibibs.png + + + + pipibibsa.zip + Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2) + Pipi & Bibis is a platform game for one or two players, in which the aim is to infiltrate buildings and plant time bombs at the computer terminals that litter the levels. The planting of the final bomb starts the detonation sequence, players must then quickly reach the level's exit before the bombs explode. + +Each level is populated with enemy scientists and agents, and any contact with these will result in the loss of a life. To help combat this, players are armed with a 'stun gun' which will knock the enemy to the floor, allowing the player to pass. If an enemy is held in the stun gun's beam for several seconds, the enemy will fall to the platform below. + +At the completion of each level, part of a cartoon picture of woman in a state of undress is shown. The entire picture is revealed once every four levels. + 0.70 + 19910101T000000 + Toaplan + Toaplan + Platform + 7 + pipibibs.zip + Toaplan + 320x240 + media/mixrbv2/pipibibs.png + + + + piranha.zip + Piranha + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + piranhah.zip + Piranha (hack) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + piranhao.zip + Piranha (older) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + piratpet.zip + Pirate Pete + Jungle King is a jungle adventure game where players take on the role of Jungle King, a Tarzan-like jungle man, who is going in search of his Jungle Princess, who has been kidnapped by a pair of barbaric cannibals. + +Jungle King has four stages, each with its own unique scenarios, so each stage could be considered a separate game in its own right. + 0.90 + 19820101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + junglek.zip + Taito Classics + 256x224 + media/mixrbv2/junglek.png + + + + higemaru.zip + Pirate Ship Higemaru + Take on the role of Momotaro who must launch barrels at enemies to stop the evil Higemaru pirates. + 0.40 + 19840101T000000 + Capcom + Capcom + Action + 10 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/higemaru.png + + + + pirates.zip + Pirates (set 1) + A shooter game about pirates very similar to games like Cabal or Blood Bros. Features destructible backgrounds and boss fights. Collect pieces of the treasure map from 3 islands to unlock the toughest challenge! + 0.50 + 19940101T000000 + NIX + NIX + Shooter / 3rd person + 2899 + 1-2 + Mame + 288x224 + media/mixrbv2/pirates.png + + + + piratesb.zip + Pirates (set 2) + A shooter game about pirates very similar to games like Cabal or Blood Bros. Features destructible backgrounds and boss fights. Collect pieces of the treasure map from 3 islands to unlock the toughest challenge! + 0.50 + 19940101T000000 + NIX + NIX + Shooter / 3rd person + 2899 + 1-2 + pirates.zip + Mame + 288x224 + media/mixrbv2/pirates.png + + + + pisces.zip + Pisces + On stage 1, you can ignore as many yellow ships as possible, and only aim for the blue ones. When the yellow ones move off screen there is often a chance that the next wave will include a blue ship. Since the blue ships are worth more points they are worth waiting for. +On stage 2 the birds do not fire until they are fully developed. You can usually take out 3 or 4 of them before they start firing. +On stage 2 you can concentrate on continual fire on birds wings when there are only 2 or 3 remaining, as this awards 20 points per hit and does not destroy the bird. You can rack up a good score by doing this, but watch out for the falling bullets. +The asteroids positioning on the docking stage is totally random, so this stage is often down to chance. Do not use your thrusters to maximize your bonus points. +On stage 4, the ships which come down from the cloud move across you from left to right and back again. You can time your firing so that they are hit when directly above you. Note that only the mother-ship fires at you so you can take out the ships when not directly below the cloud, and be safe in the knowledge that you have no bullets to avoid. + 0.80 + 19820101T000000 + Subelectro + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/pisces.png + + + + piscesb.zip + Pisces (bootleg) + On stage 1, you can ignore as many yellow ships as possible, and only aim for the blue ones. When the yellow ones move off screen there is often a chance that the next wave will include a blue ship. Since the blue ships are worth more points they are worth waiting for. +On stage 2 the birds do not fire until they are fully developed. You can usually take out 3 or 4 of them before they start firing. +On stage 2 you can concentrate on continual fire on birds wings when there are only 2 or 3 remaining, as this awards 20 points per hit and does not destroy the bird. You can rack up a good score by doing this, but watch out for the falling bullets. +The asteroids positioning on the docking stage is totally random, so this stage is often down to chance. Do not use your thrusters to maximize your bonus points. +On stage 4, the ships which come down from the cloud move across you from left to right and back again. You can time your firing so that they are hit when directly above you. Note that only the mother-ship fires at you so you can take out the ships when not directly below the cloud, and be safe in the knowledge that you have no bullets to avoid. + 0.80 + 19820101T000000 + Subelectro + Shooter / Space Invaders Like + 2900 + 1-2 + pisces.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/pisces.png + + + + pistoldm.zip + Pistol Daimyo no Bouken (Japan) + Bravoman spinoff starring one of the bosses of the first Bravoman game. + 0.50 + 19900101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/pistoldm.png + + + + pitnrun.zip + Pit & Run - F-1 Race (set 1) + Pit & Run - F1 Race (c) 1984 Taito. - TECHNICAL - Prom Stickers : A11 Main CPU : Z80 (@ 4 Mhz), M68705 (@ 2 Mhz) Sound CPU : Z80 (@ 2.5 Mhz) Sound Chips : (2x) AY8910 (@ 1.536 Mhz) Players : 1 Control : 8-way joystick Buttons : 2 - TRIVIA - Released + 0.50 + 19840101T000000 + Taito + Race, Driving / Race + 2924 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/pitnrun.png + + + + pitnruna.zip + Pit & Run - F-1 Race (set 2) + Pit & Run - F1 Race (c) 1984 Taito. - TECHNICAL - Prom Stickers : A11 Main CPU : Z80 (@ 4 Mhz), M68705 (@ 2 Mhz) Sound CPU : Z80 (@ 2.5 Mhz) Sound Chips : (2x) AY8910 (@ 1.536 Mhz) Players : 1 Control : 8-way joystick Buttons : 2 - TRIVIA - Released + 0.50 + 19840101T000000 + Taito + Race, Driving / Race + 2924 + 1-2 + pitnrun.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/pitnrun.png + + + + pitfight3.zip + Pit Fighter (rev 3) + Three digitized brawlers face off co-operatively against a variety of street thugs, with gameplay featuring crowd interference and usable weapons. Players also get to fight each other in a 'Grudge Match'. Pit-Fighter featured impressive camera zoom and side-to-side pan but was somewhat flawed as a gameplay experience. On the dedicated cabinet version, up to three players can play simultaneously. + 0.90 + 19900101T000000 + Atari + Atari + Fight / Versus + 2885 + 1-3 + pitfight.zip + Atari Classics + 336x240 + media/mixrbv2/pitfight.png + + + + pitfight.zip + Pit Fighter (rev 9) + Three digitized brawlers face off co-operatively against a variety of street thugs, with gameplay featuring crowd interference and usable weapons. Players also get to fight each other in a 'Grudge Match'. Pit-Fighter featured impressive camera zoom and side-to-side pan but was somewhat flawed as a gameplay experience. On the dedicated cabinet version, up to three players can play simultaneously. + 0.90 + 19900101T000000 + Atari + Atari + Fight / Versus + 2885 + 1-3 + Atari Classics + 336x240 + media/mixrbv2/pitfight.png + + + + pitapat.zip + Pitapat Puzzle + 19970101T000000 + F2 System + F2 System + Puzzle-Game + 26 + 1-2 + Mame + media/mixrbv2/pitapat.png + + + + pitfall2.zip + Pitfall II (315-5093) + You're the adventurer, the world famous jungle explorer and fortune hunter extraordinaire, Pitfall Harry. Make your way through a lost forest / cavern system. Collect treasure as you go for more points. + 0.90 + 19850101T000000 + SEGA + SEGA + Platform / Run Jump Scrolling + 2897 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/pitfall2.png + + + + pitfall2a.zip + Pitfall II (315-5093, Flicky Conversion) + You're the adventurer, the world famous jungle explorer and fortune hunter extraordinaire, Pitfall Harry. Make your way through a lost forest / cavern system. Collect treasure as you go for more points. + 0.90 + 19850101T000000 + SEGA + SEGA + Platform / Run Jump Scrolling + 2897 + 1-2 + pitfall2.zip + Sega Classics + 512x224 + media/mixrbv2/pitfall2.png + + + + pitfall2u.zip + Pitfall II (not encrypted) + You're the adventurer, the world famous jungle explorer and fortune hunter extraordinaire, Pitfall Harry. Make your way through a lost forest / cavern system. Collect treasure as you go for more points. + 0.90 + 19850101T000000 + SEGA + SEGA + Platform / Run Jump Scrolling + 2897 + 1-2 + pitfall2.zip + Sega Classics + 512x224 + media/mixrbv2/pitfall2.png + + + + pkscram.zip + PK Scramble + 0.30 + 19930101T000000 + Cosmo Electronics Corporation + Cosmo Electronics Corporation + Sports / Soccer + 2847 + 1 + Mame + 256x192 + media/mixrbv2/pkscram.png + + + + pprobe.zip + Planet Probe (prototype?) + A prototype vertical space shoot'em up game with a parallax background. + +The player controls a probe sent to a mysterious planet and is attacked by several types of enemies. Face the attacks using all the available weapons and escape from the planet to complete the mission. + 0.60 + 19850101T000000 + Crux + Shooter / Space Invaders Like + 2900 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/pprobe.png + + + + plgirls.zip + Play Girls + Play Girls (c) 1992 Hot-B. - TECHNICAL - Taito L System hardware Main CPU : Z80 (@ 6 Mhz) Sound Chips : YM2203 (@ 3 Mhz) Screen orientation : Vertical Video resolution : 224 x 320 pixels Screen refresh : 60.00 Hz Palette Colors : 256 Players : 2 Cont + 0.50 + 19920101T000000 + Hot-B + Action / Breakout games + 2917 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/plgirls.png + + + + plgirls2.zip + Play Girls 2 + Play Girls 2 (c) 1993 Hot-B. - TECHNICAL - Taito L System hardware Main CPU : Z80 (@ 6 Mhz) Sound Chips : YM2203 (@ 3 Mhz) Screen orientation : Vertical Video resolution : 224 x 320 pixels Screen refresh : 60.00 Hz Palette Colors : 256 Players : 2 Co + 0.50 + 19930101T000000 + Hot-B + Shooter / Space Invaders Like + 2900 + 1 + Taito Classics + 270 + 320x224 + media/mixrbv2/plgirls2.png + + + + plgirls2b.zip + Play Girls 2 (bootleg) + Play Girls 2 (c) 1993 Hot-B. - TECHNICAL - Taito L System hardware Main CPU : Z80 (@ 6 Mhz) Sound Chips : YM2203 (@ 3 Mhz) Screen orientation : Vertical Video resolution : 224 x 320 pixels Screen refresh : 60.00 Hz Palette Colors : 256 Players : 2 Co + 0.50 + 19930101T000000 + Hot-B + Shooter / Space Invaders Like + 2900 + 1 + plgirls2.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/plgirls2.png + + + + playball.zip + PlayBall! (prototype) + PlayBall! (c) 1983 Williams. - TECHNICAL - Main CPU : M6809 (@ 1 Mhz) Sound CPU : M6808 (@ 894.75 Khz) Sound Chips : DAC, HC55516 (@ 894.75 Khz) Screen orientation : Vertical Video resolution : 231 x 292 pixels Screen refresh : 60.00 Hz Palette colors + 0.70 + 19830101T000000 + Williams + Action + 10 + 1-2 + Midway Classics + 270 + 292x231 + media/mixrbv2/playball.png + + + + pgoal.zip + Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219) + Released in 1996, Pleasure Goal (Japanese title: Futsal) is Saurus' first and only football (Soccer) game for the Neo Geo. It features 16 teams which compete for the "Saurus Cup". Your team plays against all the others in your group, then it goes into an elimination tournament's semifinals and then the final to win the cup. It's worth mentioning that Pleasure Goal's rules barely base on Futsal, which is basically a 5-on-5 player indoor soccer style. + 0.75 + 19960101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/pgoal.png + + + + pleiadbl.zip + Pleiads (bootleg set 1) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiadsb2.zip + Pleiads (bootleg set 2) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiadce.zip + Pleiads (Centuri) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiadsi.zip + Pleiads (Irecsa) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiadsn.zip + Pleiads (Niemer S.A.) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiadss.zip + Pleiads (Spanish bootleg) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + pleiads.zip + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + pleiads.zip + Pleiads (Tehkan) + Pleiads is a 2-D, space shooter style game. With its many interesting visual and audio effects, this game is sure to challenge the most avid player. + +Each round of play includes 4 different stages. With the onset of the melodious background tune, the first stage of play begins. + +Against a backdrop of planets and twinkling stars, the Earth City must be protected from sixteen attacking Martians. These Martian attackers have the ability to transform from flying Martians, to walking Martians, or to UFOs. The walking Martians build barriers across the Earth City. These barriers must be destroyed. + +The Earth Spaceship can be maneuvered right and left. With the use of the 'warp' button, it can be randomly relocated when necessary. These, plus a backup of stationary defense weapons, aid in protecting the Earth City and Spaceship, as well as in destroying the Martian Attackers. When all but the two final Martians have been destroyed, a tone of dusk shades the Earth City. As these two attackers meet their end, the Earth Spaceship ascends into space to meet the challenge of Stage II. + +In this second stage of play, the Earth Spaceship encounters eight Space Monsters. To destroy these Monsters, they must be hit in the direct center. When a Space Monster with burning wings is destroyed, up to 400 points can be added to your score. When all the Space Monsters have been destroyed, the Earth Spaceship prepares for Stage III. + +In this third stage of play, the Earth Spaceship is confronted with the Martian Space Battleship and its unseen forces. This Martian Battleship contains five closed chambers, each protected by a rocket flame. Each chamber opens periodically at random, to release a defending reserve of Martian attackers. When a flame below an open chamber is extinguished, point value of the Martian Space Battleship increases. This enemy ship can be destroyed by either eliminating all sixteen Martian attackers, or by extinguishing all five rocket flames. When the Martian Space Battleship finally explodes, the Earth Spaceship moves on to Stage IV. + +This last stage of play begins with an emergency signal, SOS, SOS, SOS, AT ONCE RETURN TO EARTH. The Earth Spaceship is now ready to be guided on its journey, through a landing corridor, back to its home base. The Earth Spaceship must be carefully maneuvered around other spaceships in order to avoid destruction. Clearing flags will add bonus points to your score. When the Earth Spaceship has been safely maneuvered to its arrival target, 500 to 4,000 points will be added to your score, while bursts of fireworks greet your arrival and signal the beginning of a new round of play. + 0.70 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + Mame + 270 + 256x208 + media/mixrbv2/pleiads.png + + + + plottingu.zip + Plotting (US) + Export version. for more information about the game itself please see the original Japanese version entry; "Flipull". + 0.80 + 19890101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + plotting.zip + Taito Classics + 320x224 + media/mixrbv2/plotting.png + + + + plotting.zip + Plotting (World set 1) + Export version. for more information about the game itself please see the original Japanese version entry; "Flipull". + 0.80 + 19890101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/plotting.png + + + + plottinga.zip + Plotting (World set 2, protected) + Export version. for more information about the game itself please see the original Japanese version entry; "Flipull". + 0.80 + 19890101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + plotting.zip + Taito Classics + 320x224 + media/mixrbv2/plotting.png + + + + plottingb.zip + Plotting (World set 3, earliest version) + Export version. for more information about the game itself please see the original Japanese version entry; "Flipull". + 0.80 + 19890101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + plotting.zip + Taito Classics + 320x224 + media/mixrbv2/plotting.png + + + + plumppop.zip + Plump Pop (Japan) + Use a trampoline to bounce a baby animal into the blocks. You can choose from a cat, a dog and a pig. + 0.70 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/plumppop.png + + + + plusalph.zip + Plus Alpha + Plus Alpha is a top-view type shooter game with bright and very childish-looking graphics - but wait, don't judge a game only because it looks childish. Some people don't like games with graphics like this, but you have to know the difference between childish-looking graphics and childish *gameplay*. Plus Alpha never makes you feel like you're playing a game that's meant for children - because it's helluva lot of fun to play, and unlike some other games with graphics similar to Plus Alpha, it's very very hard to beat. + 0.70 + 19890101T000000 + Jaleco + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 270 + 256x224 + media/mixrbv2/plusalph.png + + + + pnickj.zip + Pnickies (940608 Japan) + A falling blocks game released only to arcades. Like-colored blocks merge together and more points are awarded for larger masses. + 0.70 + 19940101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/pnickj.png + + + + pnyaaa.zip + Pochi and Nyaa (Ver 2.00) + A nice puzzle game that is pretty similar to Super Puzzle Fighter but doesnt reach the same quality level! + 0.70 + 20030101T000000 + Aiky + Taito + Puzzle-Game / Fall + 2912 + 1-2 + pnyaa.zip + Neo-Geo + 320x224 + media/mixrbv2/pnyaa.png + + + + pnyaa.zip + Pochi and Nyaa (Ver 2.02) + A nice puzzle game that is pretty similar to Super Puzzle Fighter but doesnt reach the same quality level! + 0.70 + 20030101T000000 + Aiky + Taito + Puzzle-Game / Fall + 2912 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/pnyaa.png + + + + pfghtj.zip + Pocket Fighter (970904 Japan) + Super Gem Fighter: Mini Mix / Pocket Fighter is a superb, abstract and humorous fighting game featuring miniaturized renditions from several Capcom fighting games; including the legendary "Street Fighter" series, as well as "Darkstalkers" and the little-known "Red Earth". + +During a bout, players will be able to release coloured gems from successful attacks against their opponent, as well as from wooden chests that regularly appear. Collecting these gems will 'power-up' the player's character, giving them more powerful attacks. There are two bars and three sub-bars in the interface. The two main bars are the life bar and the super bar; the first indicates the player's health and the second their ability to throw super combos. The Super Bar itself can be filled up to nine levels, allowing players to execute more super combos. Each super combo has a level assigned to it, and it uses Super Bars depending on it. + 0.85 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sgemf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sgemf.png + + + + pcktgal.zip + Pocket Gal (Japan) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + pcktgalb.zip + Pocket Gal (Yada East bootleg) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + pcktgal.zip + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + pcktgal2.zip + Pocket Gal 2 (English) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + pcktgal.zip + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + pcktgal2j.zip + Pocket Gal 2 (Japanese) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + pcktgal.zip + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + pgalvip.zip + Pocket Gals V.I.P (set 1) + 19960101T000000 + A.C.E. + A.C.E. + Sports / Pool + 3028 + Comad + 256x224 + media/mixrbv2/pgalvip.png + + + + pgalvipa.zip + Pocket Gals V.I.P (set 2) + 19960101T000000 + A.C.E. + A.C.E. + Sports / Pool + 3028 + pgalvip.zip + Comad + 256x224 + media/mixrbv2/pgalvip.png + + + + poitto.zip + Poitto! + Poitto is a puzzle game where the object is to match three bottles of the same color horizontally, vertically or diagonally to clear them. Match four bottles to cast a spell and attack the opponent. Make a chain reaction to attack with multiple spells. The game has two modes. In Vs. Mode you try to make your opponent's bottles reach the top while preventing your own from doing so. When you complete bottle lines, some of your opponents bottles will be turned into "timer bottles" which cannot be made to disappear until the timer runs out. In Monster Mode you play against monsters that have bounties on their heads and you need to get the monster's platform raised to the top so as to crush them. + 0.50 + 19930101T000000 + Metro 3D + Puzzle-Game / Fall + 2912 + 1-2 + Mitchell + 360x224 + media/mixrbv2/poitto.png + + + + poittoc.zip + Poitto! (revision C) + Poitto is a puzzle game where the object is to match three bottles of the same color horizontally, vertically or diagonally to clear them. Match four bottles to cast a spell and attack the opponent. Make a chain reaction to attack with multiple spells. The game has two modes. In Vs. Mode you try to make your opponent's bottles reach the top while preventing your own from doing so. When you complete bottle lines, some of your opponents bottles will be turned into "timer bottles" which cannot be made to disappear until the timer runs out. In Monster Mode you play against monsters that have bounties on their heads and you need to get the monster's platform raised to the top so as to crush them. + 0.50 + 19930101T000000 + Metro 3D + Puzzle-Game / Fall + 2912 + 1-2 + poitto.zip + Mitchell + 360x224 + media/mixrbv2/poitto.png + + + + pkladies.zip + Poker Ladies + Il s'agit d'un jeu de poker érotique. Vous défiez 9 filles dans le jeu. Tout résultat supérieur à une paire de valets vous rapportent des points. Les filles se déshabillent en trois étapes (il s’agit de dessins statiques) et vous pouvez "jouer" avec elle lorsque vous l'avez dévêtu), du genre mouiller sa culotte, activer un serpent qui titille sa poitrine,... + +Les graphismes sont simples, et les dessins des filles de bonne qualité. La bande son n'est pas transcendante mais rappelle un saloon. La voix off fait un peu robot féminin, mais cela passe + + + + 19890101T000000 + Mitchell + Casino / Cards + 2872 + 1 + Mitchell + 384x240 + media/mixrbv2/pkladies.png + + + + pkladiesla.zip + Poker Ladies (Leprechaun ver. 401) + Il s'agit d'un jeu de poker érotique. Vous défiez 9 filles dans le jeu. Tout résultat supérieur à une paire de valets vous rapportent des points. Les filles se déshabillent en trois étapes (il s’agit de dessins statiques) et vous pouvez "jouer" avec elle lorsque vous l'avez dévêtu), du genre mouiller sa culotte, activer un serpent qui titille sa poitrine,... + +Les graphismes sont simples, et les dessins des filles de bonne qualité. La bande son n'est pas transcendante mais rappelle un saloon. La voix off fait un peu robot féminin, mais cela passe + + + + 19890101T000000 + Mitchell + Casino / Cards + 2872 + 1 + pkladies.zip + Mitchell + 384x240 + media/mixrbv2/pkladies.png + + + + pkladiesl.zip + Poker Ladies (Leprechaun ver. 510) + Il s'agit d'un jeu de poker érotique. Vous défiez 9 filles dans le jeu. Tout résultat supérieur à une paire de valets vous rapportent des points. Les filles se déshabillent en trois étapes (il s’agit de dessins statiques) et vous pouvez "jouer" avec elle lorsque vous l'avez dévêtu), du genre mouiller sa culotte, activer un serpent qui titille sa poitrine,... + +Les graphismes sont simples, et les dessins des filles de bonne qualité. La bande son n'est pas transcendante mais rappelle un saloon. La voix off fait un peu robot féminin, mais cela passe + + + + 19890101T000000 + Mitchell + Casino / Cards + 2872 + 1 + pkladies.zip + Mitchell + 384x240 + media/mixrbv2/pkladies.png + + + + poknight.zip + Poker Night + Homebrew Poker simulation Game as we can found in Casino. +The fact that you are not playing against a virtual opponent and that the bluff is not possible, get rid of the fun part of Poker games. + 0.60 + 20030101T000000 + Jeff Kurtz + Homebrew + Casino / Cards + 2872 + 1 + Neo-Geo + media/mixrbv2/poknight.png + + + + pokonyan.zip + Pokonyan (Japan 940322) + Pokonyan! Balloon is a rare Capcom Game from Kids Amusement park, you are in a balloon, droping flower and catching other ballon. + 0.55 + 19940101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1 + Capcom Play System + 384x224 + media/mixrbv2/pokonyan.png + + + + polluxn.zip + Pollux (Japan, NTC license) + +A vertically scrolling shooter. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + pollux.zip + Mame + 270 + 384x240 + media/mixrbv2/pollux.png + + + + pollux.zip + Pollux (set 1) + +A vertically scrolling shooter. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/pollux.png + + + + polluxa.zip + Pollux (set 2) + +A vertically scrolling shooter. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + pollux.zip + Mame + 270 + 384x240 + media/mixrbv2/pollux.png + + + + polluxa2.zip + Pollux (set 3) + +A vertically scrolling shooter. + 0.50 + 19910101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + pollux.zip + Mame + 270 + 384x240 + media/mixrbv2/pollux.png + + + + pompingw.zip + Pomping World (Japan) + One or two players control safari-suited characters armed with harpoon guns, who must destroy the numerous different-sized balloons that litter each stage. When hit by a harpoon, the balloons break down into smaller fragments. + 0.90 + 19890101T000000 + Mitchell + Mitchell + Shooter / 3rd person + 2899 + 1-2 + pang.zip + Mitchell + 384x240 + media/mixrbv2/pang.png + + + + ponpoko.zip + Ponpoko + Ponpoko is a platform game similar to Donkey Kong and Mario Bros. + +In Ponpoko, the player controls a Tanuki (a Japanese raccoon dog) that can climb ladders, walk across floors and jump over gaps and tacks while trying to avoid red and yellow snakes. The player must collect all the fruits and vegetables in order to advance to the next level. There are also baskets that contain either points or snakes. Once the final level is reached (the beer mug level) the game will repeat that level endlessly. + 0.60 + 19820101T000000 + Sigma Enterprises + Sigma Enterprises + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/ponpoko.png + + + + ponpokov.zip + Ponpoko (Venture Line) + Ponpoko is a platform game similar to Donkey Kong and Mario Bros. + +In Ponpoko, the player controls a Tanuki (a Japanese raccoon dog) that can climb ladders, walk across floors and jump over gaps and tacks while trying to avoid red and yellow snakes. The player must collect all the fruits and vegetables in order to advance to the next level. There are also baskets that contain either points or snakes. Once the final level is reached (the beer mug level) the game will repeat that level endlessly. + 0.60 + 19820101T000000 + Sigma Enterprises + Sigma Enterprises + Platform / Run Jump + 2915 + 1-2 + ponpoko.zip + Namco Classics + 288x224 + media/mixrbv2/ponpoko.png + + + + pootan.zip + Pootan + The player takes on the role of a bow-and-arrow welding pig who must protect her piglets from the pack of hungry wolves ballooning up or down the cliff face. The pig is suspended in a winch-controlled cage and must move vertically up and down, shooting the balloons and sending the wolves plummeting to the ground. Any wolves she misses will, having safely reached the ground, climb a ladder to try and bite her. Also, if any of the wolves reach the ground, more piglets will be captured by them. Mother Pig must try to kill as many wolves as possible without letting them reach the ground. + +On the second level, the wolves use balloons to float upwards to the top of a high cliff. If enough of them reach the cliff, they will push a huge boulder down onto Mother Pig's cage. After this level has been completed, the piglets who have been captured are rescued and the game starts over with increased difficulty. + +There is also a bonus round where Mother Pig will attempt to eliminate as many wolves on ascending balloons as possible by throwing as few slabs of meat as possible for a maximum bonus score. + 0.90 + 19820101T000000 + Konami + bootleg + Shooter / 3rd person + 2899 + 1-2 + pooyan.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/pooyan.png + + + + pooyan.zip + Pooyan + The player takes on the role of a bow-and-arrow welding pig who must protect her piglets from the pack of hungry wolves ballooning up or down the cliff face. The pig is suspended in a winch-controlled cage and must move vertically up and down, shooting the balloons and sending the wolves plummeting to the ground. Any wolves she misses will, having safely reached the ground, climb a ladder to try and bite her. Also, if any of the wolves reach the ground, more piglets will be captured by them. Mother Pig must try to kill as many wolves as possible without letting them reach the ground. + +On the second level, the wolves use balloons to float upwards to the top of a high cliff. If enough of them reach the cliff, they will push a huge boulder down onto Mother Pig's cage. After this level has been completed, the piglets who have been captured are rescued and the game starts over with increased difficulty. + +There is also a bonus round where Mother Pig will attempt to eliminate as many wolves on ascending balloons as possible by throwing as few slabs of meat as possible for a maximum bonus score. + 0.90 + 19820101T000000 + Konami + bootleg + Shooter / 3rd person + 2899 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/pooyan.png + + + + pooyans.zip + Pooyan (Stern) + The player takes on the role of a bow-and-arrow welding pig who must protect her piglets from the pack of hungry wolves ballooning up or down the cliff face. The pig is suspended in a winch-controlled cage and must move vertically up and down, shooting the balloons and sending the wolves plummeting to the ground. Any wolves she misses will, having safely reached the ground, climb a ladder to try and bite her. Also, if any of the wolves reach the ground, more piglets will be captured by them. Mother Pig must try to kill as many wolves as possible without letting them reach the ground. + +On the second level, the wolves use balloons to float upwards to the top of a high cliff. If enough of them reach the cliff, they will push a huge boulder down onto Mother Pig's cage. After this level has been completed, the piglets who have been captured are rescued and the game starts over with increased difficulty. + +There is also a bonus round where Mother Pig will attempt to eliminate as many wolves on ascending balloons as possible by throwing as few slabs of meat as possible for a maximum bonus score. + 0.90 + 19820101T000000 + Konami + bootleg + Shooter / 3rd person + 2899 + 1-2 + pooyan.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/pooyan.png + + + + popbounc.zip + Pop 'n Bounce / Gapporin + Pop'n Bounce is a puzzle game similar to Break Out; the player must bounce a ball off a paddle in order to knock out a wall of sprites. However, in Pop'n Bounce, the sprites are of assorted living creatures instead of bricks. + 0.70 + 19970101T000000 + SNK + SNK + Action / Breakout games + 2917 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/popbounc.png + + + + popbingo.zip + Pop Bingo + And another game that combines standard puzzle mechanics with unrelated play, this time Snow Pop is developed with an element of Bingo. Now some of the snowballs have letters written on them which are used to clear a bingo board. The player who completes a line on the graph first wins. Between the stages awaits a bonus round, with nude photographs. Feels a bit awkward in combination with the overall cute style of the game. + 0.50 + 19960101T000000 + Dooyong + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 384x240 + media/mixrbv2/popbingo.png + + + + popflamen.zip + Pop Flamer (bootleg on Naughty Boy PCB) + Players control a mouse with a flamethrower and must pops all the balloons on the level and burn off all the annoying monsters while avoiding being touched by them, also can get the power drink power-up to transform into the 'Super Mouse' and you can score high points by swallowing the nearby monsters in one gulp! + +Once are pops all the balloons on the level, you advance to the next round. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + popflame.zip + Jaleco + 270 + 288x224 + media/mixrbv2/popflame.png + + + + popflameb.zip + Pop Flamer (hack?) + Players control a mouse with a flamethrower and must pops all the balloons on the level and burn off all the annoying monsters while avoiding being touched by them, also can get the power drink power-up to transform into the 'Super Mouse' and you can score high points by swallowing the nearby monsters in one gulp! + +Once are pops all the balloons on the level, you advance to the next round. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + popflame.zip + Jaleco + 270 + 288x224 + media/mixrbv2/popflame.png + + + + popflamea.zip + Pop Flamer (not protected) + Players control a mouse with a flamethrower and must pops all the balloons on the level and burn off all the annoying monsters while avoiding being touched by them, also can get the power drink power-up to transform into the 'Super Mouse' and you can score high points by swallowing the nearby monsters in one gulp! + +Once are pops all the balloons on the level, you advance to the next round. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + popflame.zip + Jaleco + 270 + 288x224 + media/mixrbv2/popflame.png + + + + popflame.zip + Pop Flamer (protected) + Players control a mouse with a flamethrower and must pops all the balloons on the level and burn off all the annoying monsters while avoiding being touched by them, also can get the power drink power-up to transform into the 'Super Mouse' and you can score high points by swallowing the nearby monsters in one gulp! + +Once are pops all the balloons on the level, you advance to the next round. + 0.60 + 19820101T000000 + Jaleco + Jaleco + Action + 10 + 1-2 + Jaleco + 270 + 288x224 + media/mixrbv2/popflame.png + + + + popspops.zip + Pop's Pop's + The goal of the game is to retrieve the title of a song. When the game is launched, the player can select a beginner or mania level. Next a spinning wheel is shown. The player has to press the "stop"-button and the wheel will slow down. When it stops, it is known how many points the player will get if he can guess a letter which is somewhere in the title. + +On next screen the player gets the name of the singer/group of which he must find the title. The number of words and the number of characters for every word are also shown in a similar way as in the game Wheel of Fortune. At the bottom of the screen is the alphabet. The user can select any of the 26 characters. When he selects a letter which is indeed in the title, all those positions are revealed. The user gets a temporary score where the amount of found letters are multiplied with the score defined in previous screen. The user can then select another letter. If it's in the title, a similar score calculation is done and then doubled. If the user then guesses another correct letter, the score calculation is tripled... In case a wrong letter is selected, the score is reset to 0 points and the spinning wheel appears. + +The game is ended when the user selected three letters which are not in the title. It is also finished once the title has been guessed. The only way to have a score is to guess the title. + 0.30 + 19990101T000000 + Afega + Quiz / English + 2931 + 1-2 + NMK + 256x224 + media/mixrbv2/popspops.png + + + + popeyebl.zip + Popeye (bootleg) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + popeye.zip + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeyej.zip + Popeye (Japan, Sky Skipper hardware) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + popeye.zip + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeyejo.zip + Popeye (Japan, Sky Skipper hardware, Older) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + popeye.zip + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeyeu.zip + Popeye (revision D not protected) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + popeye.zip + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeye.zip + Popeye (revision D) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeyef.zip + Popeye (revision F) + Popeye is a superb and demanding platform game featuring characters from the famous King Features Syndicate cartoon show of the same name. The aim of the game is to rescue Popeye's girlfriend, Olive Oyl. This is achieved by catching a set number of objects thrown down by Olive from the top of the screen; such as hearts, letters and musical notes. Popeye is constantly pursued in his quest by love rival, Brutus (originally known as Bluto). Popeye must either run away from Brutus or grab some spinach and punch him off the screen (he will, of course, return). + +Should any of Olive Oyl's items fail to be caught, they will fall into the water at the bottom of the screen. Popeye will then have only a few seconds to retrieve the object or a life is lost. Several other Popeye characters also make an appearance in the game; namely Wimpy, Swee'Pea, the Sea Hag, and her vulture Bernard. The game's three levels are the dock scene, the street scene and the shipboard scene. These repeat with increasing difficulty. + 0.90 + 19820101T000000 + Nintendo + Nintendo + Platform / Run Jump + 2915 + 1-2 + popeye.zip + Nintendo Classics + 512x448 + media/mixrbv2/popeye.png + + + + popeyeman.zip + Popeye-Man + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + popper.zip + Popper + In this game, you control a rabbit, whose goal is to jump to every maze in order to complete a level. + + 0.60 + 19830101T000000 + bootleg + Omori Electric Co., Ltd. + Platform / Run Jump + 2915 + 1-2 + Mame + 270 + 264x224 + media/mixrbv2/popper.png + + + + porky.zip + Porky + A pig drove around a city landscape avoiding potholes while shooting wolves with smoked sausages and dodging falling bombs and barbecue forks. For bonus points he could jump into the air to catch flying piglets. + 0.30 + 19850101T000000 + Shinkai Inc. + Shinkai Inc. + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Namco Classics + 270 + 256x224 + media/mixrbv2/porky.png + + + + portman.zip + Port Man + Catch the falling luggage and throw it up onto the ship. After that, catch the falling boxes of dynamite for points. The game then repeats the levels with the action becoming faster. + 0.50 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + dockman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/dockman.png + + + + porter.zip + Port Man (bootleg on Moon Cresta hardware) + Catch the falling luggage and throw it up onto the ship. After that, catch the falling boxes of dynamite for points. The game then repeats the levels with the action becoming faster. + 0.50 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + dockman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/dockman.png + + + + portmanj.zip + Port Man (Japan) + Catch the falling luggage and throw it up onto the ship. After that, catch the falling boxes of dynamite for points. The game then repeats the levels with the action becoming faster. + 0.50 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + dockman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/dockman.png + + + + potopoto.zip + Poto Poto (Japan, Rev A) + If the pieces that support the lower pieces break, the entire hanging structure breaks. Breaking tiles in groups of three is a good thing that earns points. + 0.50 + 19940101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/potopoto.png + + + + poundforj.zip + Pound for Pound (Japan) + An overhead boxing game where you fight to become the best in the world. + 0.50 + 19900101T000000 + Sports + 685 + poundfor.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/poundfor.png + + + + poundforu.zip + Pound for Pound (US) + An overhead boxing game where you fight to become the best in the world. + 0.50 + 19900101T000000 + Sports + 685 + poundfor.zip + Irem Classics + 270 + 384x256 + media/mixrbv2/poundfor.png + + + + poundfor.zip + Pound for Pound (World) + An overhead boxing game where you fight to become the best in the world. + 0.50 + 19900101T000000 + Sports + 685 + Irem Classics + 270 + 384x256 + media/mixrbv2/poundfor.png + + + + powerbal.zip + Power Balls + Power Balls is a block breaking style action game developed and published by Playmark for Arcades. + +When starting the game, players choose a character, which each have their own strengths and weaknesses. + +Players then start a stage on the left side of the screen with various objects littering the right. A ball is then hit towards the right which will damage the objects. When the ball is returned towards the player they must hit the ball back or they will lose a life. + +Once all of the objects are destroyed, players will move to the next stage. Every set amount of stages players will face a boss which must be hit in the same way as the obstacles. + 0.70 + 19940101T000000 + Playmark + Playmark + Action + 10 + 1-2 + Mame + 320x240 + media/mixrbv2/powerbal.png + + + + pdriftj.zip + Power Drift (Japan) + +Power Drift is a fast-moving lap-based racing game in which players choose to race on one of five different circuits, each made up of five stages. The game's tracks have a 'roller-coaster' feel to them, with steep climbs, sudden drops and tight chicanes. It's also possible to fall from many of the higher, raised sections of a track, sending the car crashing to the ground below and losing valuable seconds. Each race takes place over four laps and players must finish in 3rd place or better to progress to the next stage. Finishing lower than third place results in a 'game over' but players can insert more credits to continue from the current stage. + +In addition to its twisting, abstract courses, Power Drift also features a tilting axis; as players steer left and right, the screen display mirrors the controller's movements and tilts on its axis (in a fashion similar to another Sega game, "After Burner"). The game's difficulty level is determined by the type of car the player chooses to race with. The RED car (with bigger wheels) sets the difficulty level at 'easy', the BLUE car at 'normal', the ORANGE car at 'hard' and GREY car at 'hardest'. + +The game's five circuits are labelled from A to E, with each having its own visual theme (for example, circuit A is city-based, circuit B desert-based, circuit C beach-based etc.) + +The circuits and their corresponding stages are: +Course A - Springfield Ovalshape, Foofy Hilltop, Snowhill Drive, Octopus Oval, Curry De Parl +Course B - Swingshot City, Phantom Riverbend, Octangular Ovalshape, Charlotte Beach, Highland Spheres +Course C - Bum Beach, Jason Bendyline, Nighthawk City, Zanussi Island, Wasteman Freefall +Course D - Mexico Colours, Oxygen Desert, Jamie Road, Monaco Da Farce, Blow Hairpin +Course E - Aisthorpe Springrose Valley, Patterson Nightcity, Lydia Rightaway, Bungalow Ridgeway, Karen Longway + +"Power Drift" features two hidden bonus courses. Finishing in first place on all tracks of courses B and D will allow players will get to race a special track using the bike from Sega's classic 1985 racer, "Hang-On". Finish first on all five tracks of any given group (A to E) and players will get to race a special track using the jet from "After Burner". + +Each course has its own theme song, and they are as follows: +Course A - Side Street +Course B - Like the Wind +Course C - Silent Language +Course D - Adjustment Mind +Course E - Artistic Traps + 0.90 + 19880101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + pdrift.zip + Sega Classics + 320x224 + media/mixrbv2/pdrift.png + + + + pdrifta.zip + Power Drift (World) + +Power Drift is a fast-moving lap-based racing game in which players choose to race on one of five different circuits, each made up of five stages. The game's tracks have a 'roller-coaster' feel to them, with steep climbs, sudden drops and tight chicanes. It's also possible to fall from many of the higher, raised sections of a track, sending the car crashing to the ground below and losing valuable seconds. Each race takes place over four laps and players must finish in 3rd place or better to progress to the next stage. Finishing lower than third place results in a 'game over' but players can insert more credits to continue from the current stage. + +In addition to its twisting, abstract courses, Power Drift also features a tilting axis; as players steer left and right, the screen display mirrors the controller's movements and tilts on its axis (in a fashion similar to another Sega game, "After Burner"). The game's difficulty level is determined by the type of car the player chooses to race with. The RED car (with bigger wheels) sets the difficulty level at 'easy', the BLUE car at 'normal', the ORANGE car at 'hard' and GREY car at 'hardest'. + +The game's five circuits are labelled from A to E, with each having its own visual theme (for example, circuit A is city-based, circuit B desert-based, circuit C beach-based etc.) + +The circuits and their corresponding stages are: +Course A - Springfield Ovalshape, Foofy Hilltop, Snowhill Drive, Octopus Oval, Curry De Parl +Course B - Swingshot City, Phantom Riverbend, Octangular Ovalshape, Charlotte Beach, Highland Spheres +Course C - Bum Beach, Jason Bendyline, Nighthawk City, Zanussi Island, Wasteman Freefall +Course D - Mexico Colours, Oxygen Desert, Jamie Road, Monaco Da Farce, Blow Hairpin +Course E - Aisthorpe Springrose Valley, Patterson Nightcity, Lydia Rightaway, Bungalow Ridgeway, Karen Longway + +"Power Drift" features two hidden bonus courses. Finishing in first place on all tracks of courses B and D will allow players will get to race a special track using the bike from Sega's classic 1985 racer, "Hang-On". Finish first on all five tracks of any given group (A to E) and players will get to race a special track using the jet from "After Burner". + +Each course has its own theme song, and they are as follows: +Course A - Side Street +Course B - Like the Wind +Course C - Silent Language +Course D - Adjustment Mind +Course E - Artistic Traps + 0.90 + 19880101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + pdrift.zip + Sega Classics + 320x224 + media/mixrbv2/pdrift.png + + + + pdrifte.zip + Power Drift (World, Earlier) + +Power Drift is a fast-moving lap-based racing game in which players choose to race on one of five different circuits, each made up of five stages. The game's tracks have a 'roller-coaster' feel to them, with steep climbs, sudden drops and tight chicanes. It's also possible to fall from many of the higher, raised sections of a track, sending the car crashing to the ground below and losing valuable seconds. Each race takes place over four laps and players must finish in 3rd place or better to progress to the next stage. Finishing lower than third place results in a 'game over' but players can insert more credits to continue from the current stage. + +In addition to its twisting, abstract courses, Power Drift also features a tilting axis; as players steer left and right, the screen display mirrors the controller's movements and tilts on its axis (in a fashion similar to another Sega game, "After Burner"). The game's difficulty level is determined by the type of car the player chooses to race with. The RED car (with bigger wheels) sets the difficulty level at 'easy', the BLUE car at 'normal', the ORANGE car at 'hard' and GREY car at 'hardest'. + +The game's five circuits are labelled from A to E, with each having its own visual theme (for example, circuit A is city-based, circuit B desert-based, circuit C beach-based etc.) + +The circuits and their corresponding stages are: +Course A - Springfield Ovalshape, Foofy Hilltop, Snowhill Drive, Octopus Oval, Curry De Parl +Course B - Swingshot City, Phantom Riverbend, Octangular Ovalshape, Charlotte Beach, Highland Spheres +Course C - Bum Beach, Jason Bendyline, Nighthawk City, Zanussi Island, Wasteman Freefall +Course D - Mexico Colours, Oxygen Desert, Jamie Road, Monaco Da Farce, Blow Hairpin +Course E - Aisthorpe Springrose Valley, Patterson Nightcity, Lydia Rightaway, Bungalow Ridgeway, Karen Longway + +"Power Drift" features two hidden bonus courses. Finishing in first place on all tracks of courses B and D will allow players will get to race a special track using the bike from Sega's classic 1985 racer, "Hang-On". Finish first on all five tracks of any given group (A to E) and players will get to race a special track using the jet from "After Burner". + +Each course has its own theme song, and they are as follows: +Course A - Side Street +Course B - Like the Wind +Course C - Silent Language +Course D - Adjustment Mind +Course E - Artistic Traps + 0.90 + 19880101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + pdrift.zip + Sega Classics + 320x224 + media/mixrbv2/pdrift.png + + + + pdrift.zip + Power Drift (World, Rev A) + +Power Drift is a fast-moving lap-based racing game in which players choose to race on one of five different circuits, each made up of five stages. The game's tracks have a 'roller-coaster' feel to them, with steep climbs, sudden drops and tight chicanes. It's also possible to fall from many of the higher, raised sections of a track, sending the car crashing to the ground below and losing valuable seconds. Each race takes place over four laps and players must finish in 3rd place or better to progress to the next stage. Finishing lower than third place results in a 'game over' but players can insert more credits to continue from the current stage. + +In addition to its twisting, abstract courses, Power Drift also features a tilting axis; as players steer left and right, the screen display mirrors the controller's movements and tilts on its axis (in a fashion similar to another Sega game, "After Burner"). The game's difficulty level is determined by the type of car the player chooses to race with. The RED car (with bigger wheels) sets the difficulty level at 'easy', the BLUE car at 'normal', the ORANGE car at 'hard' and GREY car at 'hardest'. + +The game's five circuits are labelled from A to E, with each having its own visual theme (for example, circuit A is city-based, circuit B desert-based, circuit C beach-based etc.) + +The circuits and their corresponding stages are: +Course A - Springfield Ovalshape, Foofy Hilltop, Snowhill Drive, Octopus Oval, Curry De Parl +Course B - Swingshot City, Phantom Riverbend, Octangular Ovalshape, Charlotte Beach, Highland Spheres +Course C - Bum Beach, Jason Bendyline, Nighthawk City, Zanussi Island, Wasteman Freefall +Course D - Mexico Colours, Oxygen Desert, Jamie Road, Monaco Da Farce, Blow Hairpin +Course E - Aisthorpe Springrose Valley, Patterson Nightcity, Lydia Rightaway, Bungalow Ridgeway, Karen Longway + +"Power Drift" features two hidden bonus courses. Finishing in first place on all tracks of courses B and D will allow players will get to race a special track using the bike from Sega's classic 1985 racer, "Hang-On". Finish first on all five tracks of any given group (A to E) and players will get to race a special track using the jet from "After Burner". + +Each course has its own theme song, and they are as follows: +Course A - Side Street +Course B - Like the Wind +Course C - Silent Language +Course D - Adjustment Mind +Course E - Artistic Traps + 0.90 + 19880101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + Sega Classics + 320x224 + media/mixrbv2/pdrift.png + + + + powerdrv.zip + Power Drive + Up to three players choose to be one of three monster truck characters, each indicated by a different name and color: Daddy's Girl (red), Captain Crush (yellow) or Sheriff Perry (blue). If only one or two people are playing the game, there will be one or two black, computer-controlled monster trucks called Black Lightning who will compete in the race. Players repeatedly press both of the Tire buttons to propel their monster truck and use the "Wheelie" lever to make the truck do a wheelie to help overcome obstacles. +Some of the races on this game include speed rallies, car crushes, high jumps, sled pulls, etc. The game will continue if you manage to make to first place in one of the races during the play. If you only get second place, third place or fail to finish the race three times, the game will end. However, continuous play is available. + 0.70 + 19860101T000000 + Bally Midway + Bally Midway + Race, Driving / Race + 2924 + 1-3 + Midway Classics + 512x480 + media/mixrbv2/powerdrv.png + + + + powerins.zip + Power Instinct (USA) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + powerinsa.zip + Power Instinct (USA, bootleg set 1) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + powerinsb.zip + Power Instinct (USA, bootleg set 2) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + powerinsc.zip + Power Instinct (USA, bootleg set 3) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + powerinspu.zip + Power Instinct (USA, prototype) + Those of our clan inherit the fighting spirit of our bloodline "Goketsuji." The name responsible for the ongoing feud for control of the clan. + +As outlined in the family code, the bloodline must continue to grow even stronger and eliminate all those who are weak. + +The Goketsuji Clan is currently the 3rd wealthiest family in the world. As a result, there are many who seek control the clan and the family fortune. + +Some train endlessly building up their strength, others polish up their fighting skills with experience, and still others concentrate on their fighting spirit, all for control of the clan. + +Because there were so many fighters vying for control of the clan, Oshima, the 3rd Goketsuji Leader, declared the following to all: + +The clan will hold a fighting tournament every 5 years. + +The winner of this "test of strength" tournament will assume immediate control of the Goketsuji clan until the next tournament, at which time the seat for control will be open once again. Any member with blood ties to the clan may enter. + +- Decreed this day in the 14th year of the Taisho era - + +And presently... + 0.60 + 19930101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + powerins.zip + Atlus + 320x224 + media/mixrbv2/powerins.png + + + + pwrinst2k.zip + Power instinct 2 (Korea, ver. 94/04/08) + Oume Goketsuji, Leader of the Goketsuji clan for the last 60 years, finally was defeated by her younger sister, Otane, the day where she surpassed her older sister finally had arrived. + +One night, Oshima Goketsuji unexpectedly appeared in front of Oume and offered her help to take revenge of Otane. + +According to the rules of the clan, if the leader dies or quits, one new tournament should be held immediately to find a successor. + +That same night Oshima and Oume sent their servants to dispose of Otane, so while Otane slept, she was kidnapped and thrown to the ocean. + +Next day Kuroko found a letter supposedly written by Otane, where she declined to her right to be the leader of the clan. + +One week later all the competitors from the previous tournament and other family members were convoked to be informed about Otane's decision and the beginning of a new tournament. + 0.80 + 19940101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + pwrinst2.zip + Atlus + 320x240 + media/mixrbv2/pwrinst2.png + + + + pwrinst2.zip + Power Instinct 2 (USA, ver. 94/04/08) + Oume Goketsuji, Leader of the Goketsuji clan for the last 60 years, finally was defeated by her younger sister, Otane, the day where she surpassed her older sister finally had arrived. + +One night, Oshima Goketsuji unexpectedly appeared in front of Oume and offered her help to take revenge of Otane. + +According to the rules of the clan, if the leader dies or quits, one new tournament should be held immediately to find a successor. + +That same night Oshima and Oume sent their servants to dispose of Otane, so while Otane slept, she was kidnapped and thrown to the ocean. + +Next day Kuroko found a letter supposedly written by Otane, where she declined to her right to be the leader of the clan. + +One week later all the competitors from the previous tournament and other family members were convoked to be informed about Otane's decision and the beginning of a new tournament. + 0.80 + 19940101T000000 + Atlus + Atlus + Fight / Versus + 2885 + 1-2 + Atlus + 320x240 + media/mixrbv2/pwrinst2.png + + + + pspikesk.zip + Power Spikes (Korea) + It's the successor to Power Spikes. Released in 1994, this game features a new league of robotic players. + 0.70 + 19910101T000000 + Video System + Video System + Sports / Volleyball + 2883 + 1-2 + pspikes.zip + Video System Co. + 352x240 + media/mixrbv2/pspikes.png + + + + pspikesu.zip + Power Spikes (US) + It's the successor to Power Spikes. Released in 1994, this game features a new league of robotic players. + 0.70 + 19910101T000000 + Video System + Video System + Sports / Volleyball + 2883 + 1-2 + pspikes.zip + Video System Co. + 352x240 + media/mixrbv2/pspikes.png + + + + pspikes.zip + Power Spikes (World) + It's the successor to Power Spikes. Released in 1994, this game features a new league of robotic players. + 0.70 + 19910101T000000 + Video System + Video System + Sports / Volleyball + 2883 + 1-2 + Video System Co. + 352x240 + media/mixrbv2/pspikes.png + + + + pspikes2.zip + Power Spikes II (NGM-068) + Power Spikes 2 on Neo Geo is a sport game in which you control one of three categories of volleyball teams: male or female internationals and futuristic teams. The encounters are divided into three phases of the game: attack, defense and service. Vary the attacks by the panoply of special moves and anticipate your opponent to come out the winner of various tournaments. + 0.70 + 19940101T000000 + SNK + Video System + Sports / Volleyball + 2883 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/pspikes2.png + + + + psurge.zip + Power Surge + You are a spark trying to destroy resistors and enemy sparks. Try to complete the circuit so as to move on to the next level. + 0.50 + 19880101T000000 + Action + 10 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/psurge.png + + + + pgearr1.zip + Powered Gear - strategic variant armor equipment (940916 Japan) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + pgear.zip + Powered Gear - strategic variant armor equipment (941024 Japan) + In the year 2281, the war spanning half a century over territory between the United World Forces and the Raian Kingdom had at last come to an end. + +But this peace was not to last. A year after a truce was signed between the two forces, former Raian army captain Azrael, who has converted himself into a cyborg in an attempt to become "the perfect warrior", has marshalled several thousand other cyborgs and declared war against the Raian Kingdom. Robbing mobile weapons from the army, this group of rogues has invaded the Raian capital of Merkid and has begun to abduct the civilians. + +The United World Government, receiving an emergency message from the planet Raia, has but one choice: to organize and dispatch an army formed around its elite corps, a squadron of warriors called "Bloody Armor", to eradicate the enemy forces and rescue the civilians. + +And so, in October 2282, the United World Forces begin to launch its attack upon the planet Raia. + +The most intense battle in human history is about to begin... + 0.70 + 19940101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + armwar.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/armwar.png + + + + preisle2.zip + Prehistoric Isle 2 + The sequel to "Prehistoric Isle in 1930", release more that 10 years after the first one. + 0.70 + 19990101T000000 + Yumekobo + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/preisle2.png + + + + prehislek.zip + Prehistoric Isle in 1930 (Korea) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + prehisle.zip + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + prehisleu.zip + Prehistoric Isle in 1930 (US) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + prehisle.zip + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + prehisleb.zip + Prehistoric Isle in 1930 (World, bootleg) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + prehisle.zip + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + prehisle.zip + Prehistoric Isle in 1930 (World, set 1) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + prehislea.zip + Prehistoric Isle in 1930 (World, set 2) + Prehistoric Isle in 1930 is a horizontally scrolling shooting game developed by SNK and released in arcades in 1989. + +Ships have been mysteriously disappearing in the vicinity of the Bahamas for years. Now, in 1930, the United States government sends an expedition to the area in a flying boat to determine the cause. As they survey the ocean, the expedition comes across an uncharted landmass which they dub "Greenhell Isle" and launches two reconnaissance biplanes to take a closer look. As they investigate the island, the biplanes come under attack by dinosaurs and other life forms that were thought to have become extinct millions of years ago. + +The player takes control of a biplane armed with a forward-firing machine gun. It can also be equipped with an option weapon pod that can be rotated clockwise around the craft. The option's attack changes depending on where it is currently positioned: + +When directly above or below the plane, the option fires energy waves that reflect back upon contact with a surface. +When diagonally above the plane, the option fires balls of energy that bounce off surfaces at a 45 degree angle. +When diagonally below the plane, the option drops bombs. +When directly in front of the plane, the option replaces the default machine gun with its own flame cannon. +When directly behind the plane, the option deploys aerial mines. + 0.70 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + prehisle.zip + SNK Classics + 256x224 + media/mixrbv2/prehisle.png + + + + sailormnjee.zip + Pretty Soldier Sailor Moon (Enhanced Edition v5 Final, Hack) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormno.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, Europe) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnoh.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, Hong Kong) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnoj.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, Japan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnok.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, Korea) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnot.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, Taiwan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnou.zip + Pretty Soldier Sailor Moon (ver. 95/03/21, USA) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnn.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, Europe) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnnh.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, Hong Kong) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnnj.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, Japan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnnk.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, Korea) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnnt.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, Taiwan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnnu.zip + Pretty Soldier Sailor Moon (ver. 95/03/22, USA) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormn.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, Europe) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnh.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, Hong Kong) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnj.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, Japan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnk.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, Korea) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnt.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, Taiwan) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + sailormnu.zip + Pretty Soldier Sailor Moon (ver. 95/03/22B, USA) + The game is a side-scrolling "beat-'em-up" game, one or two players pick their desired Senshi and travel through various stages defeating enemies. Items are sometimes dropped by enemies that can range from items that restore health, give extra points, or crystals that allow the Senshi to perform special attacks. Up to five crystals can be collected per player to power up the Senshi's special attacks. During the most difficult moments in battle, Tuxedo Mask will appear and throw a rose, which is a bonus to pick up and depart. + 0.80 + 19950101T000000 + Gazelle + Banpresto + Beat'em Up + 1 + 1-2 + sailormn.zip + Banpresto + 320x240 + media/mixrbv2/sailormn.png + + + + primella.zip + Primella + A puzzle game where you have to arrange colored number-blocks so that they disappear. + 0.50 + 19940101T000000 + Dooyong + Casino + 320 + 1-2 + gundl94.zip + Mame + 384x256 + media/mixrbv2/gundl94.png + + + + neoprimo.zip + Primo Demo + 20130101T000000 + iocerom.com + iocerom.com + Mame + media/mixrbv2/neoprimo.png + + + cprobowl.zip + Pro Bowling (DECO Cassette) (US) + 0.50 + 19830101T000000 + Data East + Data East + Sports / Bowling + 2901 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cprobowl.png + + + + cpsoccerj.zip + Pro Soccer (DECO Cassette) (Japan) + Pro Soccer (c) 1983 Data East. - TECHNICAL - DECO Cassette System hardware [Cassette No.33] Main CPU : M6502 (@ 750 Khz), M6502 (@ 500 Khz), I8X41 (@ 500 Khz) Sound Chips : (2x) AY8910 (@ 1.5 Mhz) Players : 2 Control : stick Buttons : 2 - TRIVIA - R + 19830101T000000 + Data East + Data East + Sports / Soccer + 2847 + 1-2 + cpsoccer.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cpsoccer.png + + + + cpsoccer.zip + Pro Soccer (DECO Cassette) (US) + Pro Soccer (c) 1983 Data East. - TECHNICAL - DECO Cassette System hardware [Cassette No.33] Main CPU : M6502 (@ 750 Khz), M6502 (@ 500 Khz), I8X41 (@ 500 Khz) Sound Chips : (2x) AY8910 (@ 1.5 Mhz) Players : 2 Control : stick Buttons : 2 - TRIVIA - R + 19830101T000000 + Data East + Data East + Sports / Soccer + 2847 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cpsoccer.png + + + + cptennisj.zip + Pro Tennis (DECO Cassette) (Japan) + 0.30 + 19820101T000000 + Data East + Data East + Sports / Tennis + 2867 + 1-2 + cptennis.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cptennis.png + + + + cptennis.zip + Pro Tennis (DECO Cassette) (US) + 0.30 + 19820101T000000 + Data East + Data East + Sports / Tennis + 2867 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cptennis.png + + + + wldcourt.zip + Pro Tennis World Court (Japan) + Pro Tennis: World Court (Puro Tenisu: Wārudo Kōto) is a tennis sports arcade game that was released by Namco in 1988 only in Japan. It runs upon Namco System 1 hardware and was inspired by the 1987 Famicom game "Family Tennis". In August 1988, the game was ported to the PC Engine console, in which a new tennis-based role-playing quest mode was added, and was later ported to the North American TurboGrafx-16 console by NEC under the title of "World Court Tennis" in 1989. A sequel named Super World Court was released in 1992, which ran on Namco NA-1 hardware and allowed up to four players to play simultaneously. + 0.50 + 19880101T000000 + Namco + Namco + Sports / Tennis + 2867 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/wldcourt.png + + + + ws89.zip + Pro Yakyuu World Stadium '89 (Japan) + A Japanese baseball game that is essentially an arcade rendition of Namco's 'Family Stadium' for the Nintendo Famicom. + 0.70 + 19880101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + ws.zip + Namco Classics + 288x224 + media/mixrbv2/ws.png + + + + ws90.zip + Pro Yakyuu World Stadium '90 (Japan) + A Japanese baseball game that is essentially an arcade rendition of Namco's 'Family Stadium' for the Nintendo Famicom. + 0.70 + 19880101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + ws.zip + Namco Classics + 288x224 + media/mixrbv2/ws.png + + + + ws.zip + Pro Yakyuu World Stadium (Japan) + A Japanese baseball game that is essentially an arcade rendition of Namco's 'Family Stadium' for the Nintendo Famicom. + 0.70 + 19880101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/ws.png + + + + progeara.zip + Progear (010117 Asia) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progear.zip + Progear (010117 USA) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progearjd.zip + Progear No Arashi (010117 Japan Phoenix Edition) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progearj.zip + Progear No Arashi (010117 Japan) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progearjbl.zip + Progear No Arashi (010117 Japan, decrypted set) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progearud.zip + Progear(010117 USA Phoenix Edition) + In a time when the industrialization of the world had just begun, various inventions appeared and changed the life of the peaceful kingdom. One of them was a propeller that evolved from pure wind generation by using the created electricity to re-rotate it. It was called 'The Professional Gear', or just 'Progear'. This invention was the key to conquer the great wide open sky. Another discovery made the ancient dream of the immortal body come true. But it was affordable only by some wealthy elderly. They formed a new council called 'the Motorouin' and declared the current government as a corruptive and greedy establishment and that they want to correct it by a new educational system, in order to create a new race of man. So they built a military force to realize the first step of their plan, which was the takeover of the kingdom. The government decided to stop the aggression by putting it's own army in motion. It was a dreadful battle with many victims. But it was won by the Motorouin. This battle is mentioned in the books of history as 'The Punishment of the Sages'. + +A group of young pilots, actually children whose families were killed in that war, finally decided to fight back. They secretly developed a new powerful weapon which adults were not able to use. They called it 'Gun Flyer' and installed it in all of their planes. The Storm of Progear was about to begin! + 0.80 + 20010101T000000 + Cave + Capcom + Shoot'em Up + 79 + 1-2 + progear.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/progear.png + + + + progress.zip + Progress + The player controls a powerful tank through different overhead view stages and must destroy all the enemies in the way using two machineguns and the turret guided by a Crosshair while avoid colliding with enemies and the unceasing attacks from all directions to keep the progress of the mission and reach the end stage. + 0.50 + 19840101T000000 + Chuo Co. Ltd. + Chuo Co. Ltd + Shooter / Vehicle, Vertical + 2921 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/progress.png + + + + promutrv.zip + Progressive Music Trivia (Question set 1) + 0.70 + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + Mame + 270 + 256x224 + media/mixrbv2/promutrv.png + + + + promutrva.zip + Progressive Music Trivia (Question set 2) + 0.70 + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + promutrv.zip + Mame + 270 + 256x224 + media/mixrbv2/promutrv.png + + + + promutrvb.zip + Progressive Music Trivia (Question set 3) + 0.70 + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + promutrv.zip + Mame + 270 + 256x224 + media/mixrbv2/promutrv.png + + + + promutrvc.zip + Progressive Music Trivia (Question set 4) + 0.70 + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + promutrv.zip + Mame + 270 + 256x224 + media/mixrbv2/promutrv.png + + + + proneon.zip + Project Neon (Caravan Edition, prealpha v0.4.19) + Project Neon is a homebrew for Neo Geo MVS/AES; it's a vertical shoot'em up. + 20190101T000000 + Fullset + Fullset + Shoot'em up / Vertical + 2851 + 1-2 + Neo-Geo + media/mixrbv2/proneon.png + + + + psychic5j.zip + Psychic 5 (Japan) + Psychic 5 is a 2D action platformer game. It is the prequel to the Famicom game Esper Boukentai. You control one of five Espers, characters with psychic abilities, and have to maneuver through a total of 8 maze-like levels, finding and defeating Satan at the end of each. Players can jump and attack, or slow their descent in mid-air by hovering (holding up). + +Two Espers are available at the start, with the rest unlocked by finding and breaking Magic Jars. Each Esper has different attributes; for example, the large Bunta is slow, but extremely powerful and very good at pushing open the many doors that block progress throughout the stages. + +Players can switch between Espers at the start of each level, after beginning a new life or by using phone booths scattered throughout the stages. The enemies are possessed objects like clocks and furniture, as well as a witch named Zara who is perpetually flying across the stage; if defeated, she will grant temporary access to a useful broom power-up. + + 0.60 + 19870101T000000 + NMK + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + psychic5.zip + Jaleco + 270 + 256x224 + media/mixrbv2/psychic5.png + + + + psychic5.zip + Psychic 5 (World) + Psychic 5 is a 2D action platformer game. It is the prequel to the Famicom game Esper Boukentai. You control one of five Espers, characters with psychic abilities, and have to maneuver through a total of 8 maze-like levels, finding and defeating Satan at the end of each. Players can jump and attack, or slow their descent in mid-air by hovering (holding up). + +Two Espers are available at the start, with the rest unlocked by finding and breaking Magic Jars. Each Esper has different attributes; for example, the large Bunta is slow, but extremely powerful and very good at pushing open the many doors that block progress throughout the stages. + +Players can switch between Espers at the start of each level, after beginning a new life or by using phone booths scattered throughout the stages. The enemies are possessed objects like clocks and furniture, as well as a witch named Zara who is perpetually flying across the stage; if defeated, she will grant temporary access to a useful broom power-up. + + 0.60 + 19870101T000000 + NMK + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + Jaleco + 270 + 256x224 + media/mixrbv2/psychic5.png + + + + psychosj.zip + Psycho Soldier (Japan) + Psycho Soldier is a side-scrolling shooter featuring two-player simultaneous play. +The major character is a girl named Athena. She fires blasts of psychic energy as her main weapon. She can collect orbs which she can control telepathically. +These orbs protect her from some projectiles and can also be launched at targets. The orbs will explode on impact. Her companion, a boy named Kensu, can help her with his own powers. Together they clean up a ruined city full of monsters and mutants. + 0.50 + 19870101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + psychos.zip + SNK Classics + 400x224 + media/mixrbv2/psychos.png + + + + psychos.zip + Psycho Soldier (US) + Psycho Soldier is a side-scrolling shooter featuring two-player simultaneous play. +The major character is a girl named Athena. She fires blasts of psychic energy as her main weapon. She can collect orbs which she can control telepathically. +These orbs protect her from some projectiles and can also be launched at targets. The orbs will explode on impact. Her companion, a boy named Kensu, can help her with his own powers. Together they clean up a ruined city full of monsters and mutants. + 0.50 + 19870101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + SNK Classics + 400x224 + media/mixrbv2/psychos.png + + + + oscarj1.zip + Psycho-Nics Oscar (Japan revision 1) + The players controls a powerful mecha robot named Oscar he representing the last hope to the humanity against the oppression of the machines, he must go forward through vast and exotic terrains of the Ordio City and destroy all mechanical enemies, while accumulates power-ups capsules to choose the "selectors" to be upgrade your weaponry and abilities to earn points as you go to the levels and confront giants and powerful mecha bosses to recover peace and save the city. + 0.60 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + oscar.zip + Data East Classics + 256x240 + media/mixrbv2/oscar.png + + + + oscarj2.zip + Psycho-Nics Oscar (Japan revision 2) + The players controls a powerful mecha robot named Oscar he representing the last hope to the humanity against the oppression of the machines, he must go forward through vast and exotic terrains of the Ordio City and destroy all mechanical enemies, while accumulates power-ups capsules to choose the "selectors" to be upgrade your weaponry and abilities to earn points as you go to the levels and confront giants and powerful mecha bosses to recover peace and save the city. + 0.60 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + oscar.zip + Data East Classics + 256x240 + media/mixrbv2/oscar.png + + + + oscaru.zip + Psycho-Nics Oscar (US) + The players controls a powerful mecha robot named Oscar he representing the last hope to the humanity against the oppression of the machines, he must go forward through vast and exotic terrains of the Ordio City and destroy all mechanical enemies, while accumulates power-ups capsules to choose the "selectors" to be upgrade your weaponry and abilities to earn points as you go to the levels and confront giants and powerful mecha bosses to recover peace and save the city. + 0.60 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + oscar.zip + Data East Classics + 256x240 + media/mixrbv2/oscar.png + + + + oscar.zip + Psycho-Nics Oscar (World revision 0) + The players controls a powerful mecha robot named Oscar he representing the last hope to the humanity against the oppression of the machines, he must go forward through vast and exotic terrains of the Ordio City and destroy all mechanical enemies, while accumulates power-ups capsules to choose the "selectors" to be upgrade your weaponry and abilities to earn points as you go to the levels and confront giants and powerful mecha bosses to recover peace and save the city. + 0.60 + 19870101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/oscar.png + + + + puckmanb.zip + Puck Man (Bootleg set 1) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + puckmanh.zip + Puck Man (bootleg set 2) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + puckman.zip + Puck Man (Japan set 1) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + puckmod.zip + Puck Man (Japan set 2) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pacmansp.zip + Puck Man (Spanish, 'Made in Greece' bootleg) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + puckmanf.zip + PuckMan (speedup hack) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + pulstar.zip + Pulstar + An alien threat looms over the galaxy and only you and your trusty star fighter can defeat them. + +Pulstar is a 2D side-scrolling shooter in which you control your ship as it makes its way past stages filled with waves after waves of enemies bent on your destruction. You can upgrade your main weapons by collecting power-ups and charging up energy allows you to release charged attacks at the cost of power-up consumption. Additionally your ship comes with an ever-prescent "option" gun pod that floats around your ship and which can be positioned in several configurations to help protect the ship or increase its firepower. + +While completely 2D, the game uses pre-rendered 3D sprites and includes fully animated cutscenes between each level. Also features support for two-player gameplay. + 0.85 + 19950101T000000 + Aicom + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/pulstar.png + + + + punchita.zip + Punch-Out!! (Italian bootleg) + The player assumes the role of a green-haired boxer, who must fight his way through six increasingly larger-than-life boxers to earn the title of 'Champ' in this superb 1-on-1 fighting game. + +During matches, the player's boxer is viewed from behind as a wire-frame (so the player's opponent can be seen). Players must time their punches, dodges and blocks in order to defeat the opposing boxer. + +The player's opponents are each rendered as humorous cartoon-like caricatures - adding much to the game's atmosphere - and each boxer fights in a slightly different style, forcing players to adapt to their strategy. The top monitor is used for statistics while the bottom one is used to display the actual fight. + 0.60 + 19840101T000000 + Nintendo + Nintendo + Sports / Boxing + 2929 + 1 + punchout.zip + Nintendo Classics + 256x224 + media/mixrbv2/punchout.png + + + + punchoutj.zip + Punch-Out!! (Japan) + The player assumes the role of a green-haired boxer, who must fight his way through six increasingly larger-than-life boxers to earn the title of 'Champ' in this superb 1-on-1 fighting game. + +During matches, the player's boxer is viewed from behind as a wire-frame (so the player's opponent can be seen). Players must time their punches, dodges and blocks in order to defeat the opposing boxer. + +The player's opponents are each rendered as humorous cartoon-like caricatures - adding much to the game's atmosphere - and each boxer fights in a slightly different style, forcing players to adapt to their strategy. The top monitor is used for statistics while the bottom one is used to display the actual fight. + 0.60 + 19840101T000000 + Nintendo + Nintendo + Sports / Boxing + 2929 + 1 + punchout.zip + Nintendo Classics + 256x224 + media/mixrbv2/punchout.png + + + + punchouta.zip + Punch-Out!! (Rev A) + The player assumes the role of a green-haired boxer, who must fight his way through six increasingly larger-than-life boxers to earn the title of 'Champ' in this superb 1-on-1 fighting game. + +During matches, the player's boxer is viewed from behind as a wire-frame (so the player's opponent can be seen). Players must time their punches, dodges and blocks in order to defeat the opposing boxer. + +The player's opponents are each rendered as humorous cartoon-like caricatures - adding much to the game's atmosphere - and each boxer fights in a slightly different style, forcing players to adapt to their strategy. The top monitor is used for statistics while the bottom one is used to display the actual fight. + 0.60 + 19840101T000000 + Nintendo + Nintendo + Sports / Boxing + 2929 + 1 + punchout.zip + Nintendo Classics + 256x224 + media/mixrbv2/punchout.png + + + + punchout.zip + Punch-Out!! (Rev B) + The player assumes the role of a green-haired boxer, who must fight his way through six increasingly larger-than-life boxers to earn the title of 'Champ' in this superb 1-on-1 fighting game. + +During matches, the player's boxer is viewed from behind as a wire-frame (so the player's opponent can be seen). Players must time their punches, dodges and blocks in order to defeat the opposing boxer. + +The player's opponents are each rendered as humorous cartoon-like caricatures - adding much to the game's atmosphere - and each boxer fights in a slightly different style, forcing players to adapt to their strategy. The top monitor is used for statistics while the bottom one is used to display the actual fight. + 0.60 + 19840101T000000 + Nintendo + Nintendo + Sports / Boxing + 2929 + 1 + Nintendo Classics + 256x224 + media/mixrbv2/punchout.png + + + + punkshotj.zip + Punk Shot (Japan 2 Players) + Punk Shot takes up to four players to downtown NYC for some two-on-two street basketball, no referee, no rules. The opposing two-man teams face off for a match played in four quarters (2 to 5 minutes each), on improvised courts in 3 different locations: the alley, the park, and the harbor. + +Naturally, it ain't just about being cool and shooting some b-ball outside of the school: on each side you have a couple of guys who are up to no good, with a constant enthusiasm for making trouble in the neighborhood. As such, Punk Shot joyfully turns basketball into a full-contact sport - heads will be bashed, noses punched, and private parts kicked. To top it off, each court features an assortment of environmental hazards, from slippery banana peels and having your butt set on fire, to the park dogs and their special taste for pants. + 0.60 + 19900101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-4 + punkshot.zip + Konami Classics + 288x224 + media/mixrbv2/punkshot.png + + + + punkshot2.zip + Punk Shot (US 2 Players) + Punk Shot takes up to four players to downtown NYC for some two-on-two street basketball, no referee, no rules. The opposing two-man teams face off for a match played in four quarters (2 to 5 minutes each), on improvised courts in 3 different locations: the alley, the park, and the harbor. + +Naturally, it ain't just about being cool and shooting some b-ball outside of the school: on each side you have a couple of guys who are up to no good, with a constant enthusiasm for making trouble in the neighborhood. As such, Punk Shot joyfully turns basketball into a full-contact sport - heads will be bashed, noses punched, and private parts kicked. To top it off, each court features an assortment of environmental hazards, from slippery banana peels and having your butt set on fire, to the park dogs and their special taste for pants. + 0.60 + 19900101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-4 + punkshot.zip + Konami Classics + 288x224 + media/mixrbv2/punkshot.png + + + + punkshot.zip + Punk Shot (US 4 Players) + Punk Shot takes up to four players to downtown NYC for some two-on-two street basketball, no referee, no rules. The opposing two-man teams face off for a match played in four quarters (2 to 5 minutes each), on improvised courts in 3 different locations: the alley, the park, and the harbor. + +Naturally, it ain't just about being cool and shooting some b-ball outside of the school: on each side you have a couple of guys who are up to no good, with a constant enthusiasm for making trouble in the neighborhood. As such, Punk Shot joyfully turns basketball into a full-contact sport - heads will be bashed, noses punched, and private parts kicked. To top it off, each court features an assortment of environmental hazards, from slippery banana peels and having your butt set on fire, to the park dogs and their special taste for pants. + 0.60 + 19900101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/punkshot.png + + + + punkshot2e.zip + Punk Shot (World 2 Players) + Punk Shot takes up to four players to downtown NYC for some two-on-two street basketball, no referee, no rules. The opposing two-man teams face off for a match played in four quarters (2 to 5 minutes each), on improvised courts in 3 different locations: the alley, the park, and the harbor. + +Naturally, it ain't just about being cool and shooting some b-ball outside of the school: on each side you have a couple of guys who are up to no good, with a constant enthusiasm for making trouble in the neighborhood. As such, Punk Shot joyfully turns basketball into a full-contact sport - heads will be bashed, noses punched, and private parts kicked. To top it off, each court features an assortment of environmental hazards, from slippery banana peels and having your butt set on fire, to the park dogs and their special taste for pants. + 0.60 + 19900101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-4 + punkshot.zip + Konami Classics + 288x224 + media/mixrbv2/punkshot.png + + + + pururun.zip + Pururun + Link 4 or more coloured blobs on the grid to make them pop. Each blob has an outer colour and an inner colour and when the blobs pop, they change into their inner colour. Keep linking the blobs until you guide our heroes Pipi and Moko to the goal. You can try to link outer/inner combinations to help them reach the goal quicker. + 0.70 + 19950101T000000 + Metro 3D + Banpresto + Various + 39 + 1-2 + Mitchell + 320x224 + media/mixrbv2/pururun.png + + + + pushmans.zip + Pushman (American Sammy license) + For fans of Sokoban type games, with a little more challenge. Some monsters chase you but on the other hand you have the limited possibility of shooting blocks. Monsters die if you crush them with a block or with a turnstile. Funny but quickly boring, the music is quite average. + 19900101T000000 + Comad + Comad + Various + 39 + 1-2 + pushman.zip + Comad + 256x224 + media/mixrbv2/pushman.png + + + + pushman.zip + Pushman (Korea, set 1) + For fans of Sokoban type games, with a little more challenge. Some monsters chase you but on the other hand you have the limited possibility of shooting blocks. Monsters die if you crush them with a block or with a turnstile. Funny but quickly boring, the music is quite average. + 19900101T000000 + Comad + Comad + Various + 39 + 1-2 + Comad + 256x224 + media/mixrbv2/pushman.png + + + + pushmana.zip + Pushman (Korea, set 2) + For fans of Sokoban type games, with a little more challenge. Some monsters chase you but on the other hand you have the limited possibility of shooting blocks. Monsters die if you crush them with a block or with a turnstile. Funny but quickly boring, the music is quite average. + 19900101T000000 + Comad + Comad + Various + 39 + 1-2 + pushman.zip + Comad + 256x224 + media/mixrbv2/pushman.png + + + + puyoja.zip + Puyo Puyo (Japan, Rev A) + Puyo Puyo is an incredibly addictive and original puzzle game in which players must form chains of four or more beans (known as 'Puyos') of the same colour to make to disappear. + +Players can hinder their opponent by forming Puyo combinations; a successfully formed chain removes some some of the player's Puyos and causes 'junk' Puyos to fall into the opponent's play area. As these Junk Puyos are transparent, they cannot be used to form a chain and can only be destroyed when a nearby chain is created. + 0.90 + 19920101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + puyo.zip + Sega Classics + 256x224 + media/mixrbv2/puyo.png + + + + puyoj.zip + Puyo Puyo (Japan, Rev B) + Puyo Puyo is an incredibly addictive and original puzzle game in which players must form chains of four or more beans (known as 'Puyos') of the same colour to make to disappear. + +Players can hinder their opponent by forming Puyo combinations; a successfully formed chain removes some some of the player's Puyos and causes 'junk' Puyos to fall into the opponent's play area. As these Junk Puyos are transparent, they cannot be used to form a chain and can only be destroyed when a nearby chain is created. + 0.90 + 19920101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + puyo.zip + Sega Classics + 256x224 + media/mixrbv2/puyo.png + + + + puyo.zip + Puyo Puyo (World) + Puyo Puyo is an incredibly addictive and original puzzle game in which players must form chains of four or more beans (known as 'Puyos') of the same colour to make to disappear. + +Players can hinder their opponent by forming Puyo combinations; a successfully formed chain removes some some of the player's Puyos and causes 'junk' Puyos to fall into the opponent's play area. As these Junk Puyos are transparent, they cannot be used to form a chain and can only be destroyed when a nearby chain is created. + 0.90 + 19920101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/puyo.png + + + + puyobl.zip + Puyo Puyo (World, bootleg) + Puyo Puyo is an incredibly addictive and original puzzle game in which players must form chains of four or more beans (known as 'Puyos') of the same colour to make to disappear. + +Players can hinder their opponent by forming Puyo combinations; a successfully formed chain removes some some of the player's Puyos and causes 'junk' Puyos to fall into the opponent's play area. As these Junk Puyos are transparent, they cannot be used to form a chain and can only be destroyed when a nearby chain is created. + 0.90 + 19920101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + puyo.zip + Sega Classics + 256x224 + media/mixrbv2/puyo.png + + + + puyopuy2.zip + Puyo Puyo 2 (Japan) + Sequel to the hugely popular Puyo Puyo. Though there is not much difference between this and the original, it is just as addictive and fun. + 0.90 + 19940101T000000 + Compile + Compile + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/puyopuy2.png + + + + pzloop2jr1.zip + Puzz Loop 2 (010205 Japan) + Gameplay is exactly the same as its predecessor, Puzz Loop , with the player needing to deplete all the colored balls before they hit the center of the screen. + 0.70 + 20010101T000000 + Mitchell + Mitchell + Puzzle-Game / Throw + 2923 + 1-2 + pzloop2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/pzloop2.png + + + + pzloop2jd.zip + Puzz Loop 2 (010226 Japan Phoenix Edition) + Gameplay is exactly the same as its predecessor, Puzz Loop , with the player needing to deplete all the colored balls before they hit the center of the screen. + 0.70 + 20010101T000000 + Mitchell + Mitchell + Puzzle-Game / Throw + 2923 + 1-2 + pzloop2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/pzloop2.png + + + + pzloop2j.zip + Puzz Loop 2 (010226 Japan) + Gameplay is exactly the same as its predecessor, Puzz Loop , with the player needing to deplete all the colored balls before they hit the center of the screen. + 0.70 + 20010101T000000 + Mitchell + Mitchell + Puzzle-Game / Throw + 2923 + 1-2 + pzloop2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/pzloop2.png + + + + pzloop2.zip + Puzz Loop 2 (010302 Euro) + Gameplay is exactly the same as its predecessor, Puzz Loop , with the player needing to deplete all the colored balls before they hit the center of the screen. + 0.70 + 20010101T000000 + Mitchell + Mitchell + Puzzle-Game / Throw + 2923 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/pzloop2.png + + + + ichirj.zip + Puzzle & Action: Ichidant-R (Japan) + Ichidant-R - Puzzle & Action is a puzzle game with lots of minigames. + 0.70 + 19940101T000000 + SEGA + SEGA + Compilation + 34 + 1-2 + ichir.zip + Sega Classics + 256x224 + media/mixrbv2/ichir.png + + + + ichirjbl.zip + Puzzle & Action: Ichidant-R (Japan) (bootleg) + Ichidant-R - Puzzle & Action is a puzzle game with lots of minigames. + 0.70 + 19940101T000000 + SEGA + SEGA + Compilation + 34 + 1-2 + ichir.zip + Sega Classics + 256x224 + media/mixrbv2/ichir.png + + + + ichirk.zip + Puzzle & Action: Ichidant-R (Korea) + Ichidant-R - Puzzle & Action is a puzzle game with lots of minigames. + 0.70 + 19940101T000000 + SEGA + SEGA + Compilation + 34 + 1-2 + ichir.zip + Sega Classics + 256x224 + media/mixrbv2/ichir.png + + + + ichir.zip + Puzzle & Action: Ichidant-R (World) + Ichidant-R - Puzzle & Action is a puzzle game with lots of minigames. + 0.70 + 19940101T000000 + SEGA + SEGA + Compilation + 34 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/ichir.png + + + + ichirbl.zip + Puzzle & Action: Ichidant-R (World) (bootleg) + Ichidant-R - Puzzle & Action is a puzzle game with lots of minigames. + 0.70 + 19940101T000000 + SEGA + SEGA + Compilation + 34 + 1-2 + ichir.zip + Sega Classics + 256x224 + media/mixrbv2/ichir.png + + + + tantr.zip + Puzzle & Action: Tant-R (Japan) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + tantrbl.zip + Puzzle & Action: Tant-R (Japan) (bootleg set 1) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + tantr.zip + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + tantrbl2.zip + Puzzle & Action: Tant-R (Japan) (bootleg set 2) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + tantr.zip + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + tantrbl3.zip + Puzzle & Action: Tant-R (Japan) (bootleg set 3) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + tantr.zip + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + tantrbl4.zip + Puzzle & Action: Tant-R (Japan) (bootleg set 4) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + tantr.zip + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + tantrkor.zip + Puzzle & Action: Tant-R (Korea) + Tant-R - Puzzle & Action is a fun puzzle game with lots of mini-games. + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + tantr.zip + Sega Classics + 256x224 + media/mixrbv2/tantr.png + + + + pbobble.zip + Puzzle Bobble (Japan, B-System) + 19940101T000000 + bublbust.zip + Mame + 320x224 + media/mixrbv2/bublbust.png + + + pbobblenb.zip + Puzzle Bobble / Bust-A-Move (Neo-Geo) (bootleg) + Puzzle Bobble (known as Bust-A-Move outside of Japan) is a spin-off of the Bubble Bobble series, featuring themes from the original game (such as enemies trapped in bubbles by the cutesy dinosaur duo Bub and Bob that must be popped). Players attempt to clear a board of colored bubbles by firing other bubbles at an angle and matching multiple bubbles of the same color. Its characteristically cute Japanese animation and music, along with its play mechanics and level designs, made it successful as an arcade title and spawned several sequels and ports to home gaming systems. + 0.80 + 19940101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + pbobblen.zip + Neo-Geo + 512x256 + media/mixrbv2/pbobblen.png + + + + pbobblen.zip + Puzzle Bobble / Bust-A-Move (Neo-Geo) (NGM-083) + Puzzle Bobble (known as Bust-A-Move outside of Japan) is a spin-off of the Bubble Bobble series, featuring themes from the original game (such as enemies trapped in bubbles by the cutesy dinosaur duo Bub and Bob that must be popped). Players attempt to clear a board of colored bubbles by firing other bubbles at an angle and matching multiple bubbles of the same color. Its characteristically cute Japanese animation and music, along with its play mechanics and level designs, made it successful as an arcade title and spawned several sequels and ports to home gaming systems. + 0.80 + 19940101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + Neo-Geo + 512x256 + media/mixrbv2/pbobblen.png + + + + pbobbl2n.zip + Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo) + Bub and Bob are back! Like in Tetris in reverse, you shoot bubbles at an array of different-colored bubbles stuck in an ever descending ceiling, attempting to match them up three by three to make them disappear. This edition contains both puzzle challenges, multiplayer and normal progressive stages. + 0.75 + 19990101T000000 + Taito + Taito + Puzzle-Game / Throw + 2923 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/pbobbl2n.png + + + + pzlbreak.zip + Puzzle Break (set 1) + A one or two player puzzle game published and developed by SemiCom in 1997. The aim of the game is to remove blocks that lower from the top of the play area by deflecting balls with a paddle. + 0.80 + 19970101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + SemiCom + 256x224 + media/mixrbv2/pzlbreak.png + + + + pzlbreaka.zip + Puzzle Break (set 2) + A one or two player puzzle game published and developed by SemiCom in 1997. The aim of the game is to remove blocks that lower from the top of the play area by deflecting balls with a paddle. + 0.80 + 19970101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + pzlbreak.zip + SemiCom + 256x224 + media/mixrbv2/pzlbreak.png + + + + puzlclub.zip + Puzzle Club (Japan prototype) + Puzzle Club is a sliding block puzzle video game. The objective of each stage is to make every row in the puzzle show matching animated icons before the timer reaches zero. Once a row is matched that row is shifted to the bottom of the puzzle. Once all of the rows are matched the stage is completed and the players score is tallied. + 0.70 + 19900101T000000 + Namco + Namco + Compilation + 34 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/puzlclub.png + + + + pclubys.zip + Puzzle Club (Yun Sung, set 1) + This game contains 6 games: Magic Eye (150 levels and different backgrounds), Box Logic (a "Logic Pro" clone with 72 nudity background), Mad Ball (a breakout featuring 42 levels and 72 nudity background), Magic Bubble (a "Puzzle Bobble" clone featuring 30 levels and as usual 72 nudity background), Bogle Puyo (a "Puyo Puyo" clone), Rocktris (a "Tetris" clone featuring 72 nudity background). + 0.70 + 20000101T000000 + Yun Sung + Yun Sung + Action + 10 + Namco Classics + 320x240 + media/mixrbv2/pclubys.png + + + + pclubysa.zip + Puzzle Club (Yun Sung, set 2) + This game contains 6 games: Magic Eye (150 levels and different backgrounds), Box Logic (a "Logic Pro" clone with 72 nudity background), Mad Ball (a breakout featuring 42 levels and 72 nudity background), Magic Bubble (a "Puzzle Bobble" clone featuring 30 levels and as usual 72 nudity background), Bogle Puyo (a "Puyo Puyo" clone), Rocktris (a "Tetris" clone featuring 72 nudity background). + 0.70 + 20000101T000000 + Yun Sung + Yun Sung + Action + 10 + pclubys.zip + Namco Classics + 320x240 + media/mixrbv2/pclubys.png + + + + puzzledp.zip + Puzzle De Pon! + The player clears the colored balls on the screen by firing balls against other balls of the same colour, the objective of the game is not to clear the screen of balls. It is instead to clear all the balls from around the level shape, referred to as the "drop token". Once this shape is freed, it explodes and the player travels onto the next level. There are 39 levels in the game, divided in groups of three levels. In the first two levels, the shape is something generic; in the third level the shape is a Zodiac sign, up to level 36 (since there are 12 signs). Level 39's shape is the Solar Symbol. + 0.85 + 19950101T000000 + Visco + Visco + Puzzle-Game / Throw + 2923 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/puzzledp.png + + + + puzzldpr.zip + Puzzle De Pon! R! + The player clears the colored balls on the screen by firing balls against other balls of the same colour, the objective of the game is not to clear the screen of balls. It is instead to clear all the balls from around the level shape, referred to as the "drop token". Once this shape is freed, it explodes and the player travels onto the next level. There are 39 levels in the game, divided in groups of three levels. In the first two levels, the shape is something generic; in the third level the shape is a Zodiac sign, up to level 36 (since there are 12 signs). Level 39's shape is the Solar Symbol. + 0.85 + 19950101T000000 + Visco + Visco + Puzzle-Game / Throw + 2923 + 1-2 + puzzledp.zip + Neo-Geo + 320x224 + media/mixrbv2/puzzledp.png + + + + 4in1boot.zip + Puzzle King + Compilation of 4 games : PacMan 2, Tetris, HyperMan 2 and Snow Bros. + 0.50 + 20020101T000000 + K1 Soft + K1 Soft + Compilation + 34 + 1-2 + SemiCom + 256x224 + media/mixrbv2/4in1boot.png + + + + uopoko.zip + Puzzle Uo Poko (International, ver. 98/02/06) + Uo Poko is a puzzle game for one or two players (co-operative). The aim is to clear the screen of coloured glass balls by dropping like-coloured balls down onto them. Connecting three or more like-coloured balls creates a chain reaction and causes them to disappear. + +Balls are launched into the play area via a joystick controlled 'pinball-plunger' and as in Pinball, the further the plunger is pulled back, the further the coloured ball will travel. Mastering the strength and distance required is essential in order to drop each ball accurately onto its target. To allow players to learn how to use the plunger, the first two stages feature a guide line which shows exactly where a ball will drop. From the third stage onwards, players must use their judgement alone. + +Bonus points are awarded if a stage is completed quickly enough. If too much time is taken, however, the bottom of the stage will start to rise, pushing the balls already in play towards the top of the screen. If the top of the screen is reached, the game is over. + +Uo Poko features thirty stages of play. + 0.85 + 19980101T000000 + Cave + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + Cave + 320x240 + media/mixrbv2/uopoko.png + + + + uopokoj.zip + Puzzle Uo Poko (Japan, ver. 98/02/06) + Uo Poko is a puzzle game for one or two players (co-operative). The aim is to clear the screen of coloured glass balls by dropping like-coloured balls down onto them. Connecting three or more like-coloured balls creates a chain reaction and causes them to disappear. + +Balls are launched into the play area via a joystick controlled 'pinball-plunger' and as in Pinball, the further the plunger is pulled back, the further the coloured ball will travel. Mastering the strength and distance required is essential in order to drop each ball accurately onto its target. To allow players to learn how to use the plunger, the first two stages feature a guide line which shows exactly where a ball will drop. From the third stage onwards, players must use their judgement alone. + +Bonus points are awarded if a stage is completed quickly enough. If too much time is taken, however, the bottom of the stage will start to rise, pushing the balls already in play towards the top of the screen. If the top of the screen is reached, the game is over. + +Uo Poko features thirty stages of play. + 0.85 + 19980101T000000 + Cave + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + uopoko.zip + Cave + 320x240 + media/mixrbv2/uopoko.png + + + + joyjoy.zip + Puzzled / Joy Joy Kid (NGM-021)(NGH-021) + This game is a crossover between Tetris and Breakout (or Arkanoid) in that your balloon is trapped at the bottom of the puzzle, and you have to break the lines down far enough to give it a clear flight path to the top. Open up a space, and your balloon (shark-shaped if you're the boy) floats to the top, and it's on to the next floor in the tower. Sound easy? It is... at first. The tower is divided into multiple floors, with 10 stages (puzzles) per floor. There are over 50 puzzles here and the action gets pretty furious. + 0.70 + 19910101T000000 + SNK + SNK + Puzzle-Game + 26 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/joyjoy.png + + + + puzzlia.zip + Puzzli (revision A) + Puzzli is a puzzle game where the goal is to line up three or more fish of the same color from the top of the screen to catch them. Connections can be made horizontally, vertically or in a combination of the two (L shape). The player controls a small boat on the water surface. The boat contains the player character, as well as the secondary character who can hold another fish, which the player can swap with their current fish. You complete a stage when you have caught all of them, if they reach the bottom, the game is over. + 0.70 + 19950101T000000 + Metro 3D + Banpresto + Puzzle-Game / Fall + 2912 + 1-2 + puzzli.zip + Mitchell + 320x224 + media/mixrbv2/puzzli.png + + + + puzzli.zip + Puzzli (revision B) + Puzzli is a puzzle game where the goal is to line up three or more fish of the same color from the top of the screen to catch them. Connections can be made horizontally, vertically or in a combination of the two (L shape). The player controls a small boat on the water surface. The boat contains the player character, as well as the secondary character who can hold another fish, which the player can swap with their current fish. You complete a stage when you have caught all of them, if they reach the bottom, the game is over. + 0.70 + 19950101T000000 + Metro 3D + Banpresto + Puzzle-Game / Fall + 2912 + 1-2 + Mitchell + 320x224 + media/mixrbv2/puzzli.png + + + + puzzlove.zip + PuzzLove + 0.60 + 19940101T000000 + Para + Para + Compilation + 34 + Mame + 320x240 + media/mixrbv2/puzzlove.png + + + + puzzlovek.zip + PuzzLove (Korea) + 0.60 + 19940101T000000 + Para + Para + Compilation + 34 + puzzlove.zip + Mame + 320x240 + media/mixrbv2/puzzlove.png + + + + puzznicb.zip + Puzznic (bootleg, set 1) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + puzznic.zip + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + puzznicba.zip + Puzznic (bootleg, set 2) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + puzznic.zip + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + puzznici.zip + Puzznic (Italian bootleg) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + puzznic.zip + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + puzznicj.zip + Puzznic (Japan) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + puzznic.zip + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + puzznicu.zip + Puzznic (US) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + puzznic.zip + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + puzznic.zip + Puzznic (World) + Puzznic is a puzzle game in which the aim is to move symbol-bearing blocks onto identically-symboled blocks in order to eliminate them. Blocks can only be moved left or right, or dropped downwards. + +The order in which the blocks are eliminated needs careful planning, as it's sometimes necessary to destroy three blocks at a time, or use blocks as bridges for other blocks. Some puzzle screens have moving background blocks that act as elevators, making careful timing essential. + 0.80 + 19890101T000000 + Taito + Taito + Various + 39 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/puzznic.png + + + + pyros.zip + Pyros (US) + Two young children, Pyros and Erika, have unexpectedly strayed into a wonderland called 'Wardner's Forest'. Upon entering the magical forest, the young girl is changed into a crystal ball by evil warlock and ruler of the forest, 'Wardner'. She is taken to a secret place deep inside the woods. The brave young Pyros, armed only with a magical flame as a weapon, sets out to rescue his female companion from the clutches of the evil Wardner and bring her safely home. + +At the end of every level, Pyros enters a shop. The player can use any gold that has been collected on route to buy useful items; such as extra health, time and more powerful weapons. Wardner is an accomplished and playable platform game with smooth, colourful graphics and finely honed gameplay. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Platform / Fighter Scrolling + 2896 + 1-2 + wardner.zip + Taito Classics + 320x240 + media/mixrbv2/wardner.png + + + + qberttst.zip + Q*bert (early test version) + Q*bert is an isometric platform game with puzzle elements where the player controls the titular protagonist from a third-person perspective. Q*bert starts each game at the top of a pyramid of cubes, and moves by jumping diagonally from cube to cube. Landing on a cube causes it to change color, and changing every cube to the target color allows the player to progress to the next stage. + 0.90 + 19820101T000000 + D. Gottlieb & Co. + D. Gottlieb & Co. + Platform / Run Jump + 2915 + 1-2 + qbert.zip + Gottlieb + 270 + 256x240 + media/mixrbv2/qbert.png + + + + qbertj.zip + Q*bert (Japan) + Q*bert is an isometric platform game with puzzle elements where the player controls the titular protagonist from a third-person perspective. Q*bert starts each game at the top of a pyramid of cubes, and moves by jumping diagonally from cube to cube. Landing on a cube causes it to change color, and changing every cube to the target color allows the player to progress to the next stage. + 0.90 + 19820101T000000 + D. Gottlieb & Co. + D. Gottlieb & Co. + Platform / Run Jump + 2915 + 1-2 + qbert.zip + Gottlieb + 270 + 256x240 + media/mixrbv2/qbert.png + + + + qbert.zip + Q*bert (US set 1) + Q*bert is an isometric platform game with puzzle elements where the player controls the titular protagonist from a third-person perspective. Q*bert starts each game at the top of a pyramid of cubes, and moves by jumping diagonally from cube to cube. Landing on a cube causes it to change color, and changing every cube to the target color allows the player to progress to the next stage. + 0.90 + 19820101T000000 + D. Gottlieb & Co. + D. Gottlieb & Co. + Platform / Run Jump + 2915 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/qbert.png + + + + qberta.zip + Q*bert (US set 2) + Q*bert is an isometric platform game with puzzle elements where the player controls the titular protagonist from a third-person perspective. Q*bert starts each game at the top of a pyramid of cubes, and moves by jumping diagonally from cube to cube. Landing on a cube causes it to change color, and changing every cube to the target color allows the player to progress to the next stage. + 0.90 + 19820101T000000 + D. Gottlieb & Co. + D. Gottlieb & Co. + Platform / Run Jump + 2915 + 1-2 + qbert.zip + Gottlieb + 270 + 256x240 + media/mixrbv2/qbert.png + + + + qbertqub.zip + Q*bert's Qubes + The object of Q?bert's Qubes is to jump around diamond formation of 25 cubes and rotate them so that one or more rows of cubes match the shown target cube (a tic-tac-toe) while avoiding the meltniks, the rat and the purple guys. Jumping on anything green is safe, catching the turtle slows down enemies for a short time and catching the freeze ball freezes enemies for a short time. + + + 0.70 + 19830101T000000 + Mylstar + Mylstar + Platform / Run Jump + 2915 + 1-2 + Gottlieb + 270 + 256x240 + media/mixrbv2/qbertqub.png + + + + qix.zip + Qix (Rev 2) + The objective of Qix is to claim a certain proportion of the playing field as your own. At the start of each level, the playing field is just a large, empty rectangle, containing the Qix - a stick-like entity that performs peculiar, erratic motions within the confines of the rectangle. The player controls a small marker that can move around the edges of the rectangle. To claim an area of the screen, the player must detach from an edge and draw Stix within the rectangle. Stix are simply lines traced out by moving the marker. When the marker traces out a closed shape, the area enclosed by the shape becomes solid and has been claimed. The player may draw either Fast Stix, which appear blue when solid, or Slow Stix, which appear red. Slow Stix take longer to draw, but are worth twice as many points. Once the player has claimed an area, the marker can safely move along the border of that claimed area. To complete a level, the player must claim 75% or more of the rectangle's area. + 0.90 + 19810101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/qix.png + + + + qixb.zip + Qix (set 2, larger roms) + The objective of Qix is to claim a certain proportion of the playing field as your own. At the start of each level, the playing field is just a large, empty rectangle, containing the Qix - a stick-like entity that performs peculiar, erratic motions within the confines of the rectangle. The player controls a small marker that can move around the edges of the rectangle. To claim an area of the screen, the player must detach from an edge and draw Stix within the rectangle. Stix are simply lines traced out by moving the marker. When the marker traces out a closed shape, the area enclosed by the shape becomes solid and has been claimed. The player may draw either Fast Stix, which appear blue when solid, or Slow Stix, which appear red. Slow Stix take longer to draw, but are worth twice as many points. Once the player has claimed an area, the marker can safely move along the border of that claimed area. To complete a level, the player must claim 75% or more of the rectangle's area. + 0.90 + 19810101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + qix.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/qix.png + + + + qixa.zip + Qix (set 2, smaller roms) + The objective of Qix is to claim a certain proportion of the playing field as your own. At the start of each level, the playing field is just a large, empty rectangle, containing the Qix - a stick-like entity that performs peculiar, erratic motions within the confines of the rectangle. The player controls a small marker that can move around the edges of the rectangle. To claim an area of the screen, the player must detach from an edge and draw Stix within the rectangle. Stix are simply lines traced out by moving the marker. When the marker traces out a closed shape, the area enclosed by the shape becomes solid and has been claimed. The player may draw either Fast Stix, which appear blue when solid, or Slow Stix, which appear red. Slow Stix take longer to draw, but are worth twice as many points. Once the player has claimed an area, the marker can safely move along the border of that claimed area. To complete a level, the player must claim 75% or more of the rectangle's area. + 0.90 + 19810101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + qix.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/qix.png + + + + qixo.zip + Qix (set 3, earlier) + The objective of Qix is to claim a certain proportion of the playing field as your own. At the start of each level, the playing field is just a large, empty rectangle, containing the Qix - a stick-like entity that performs peculiar, erratic motions within the confines of the rectangle. The player controls a small marker that can move around the edges of the rectangle. To claim an area of the screen, the player must detach from an edge and draw Stix within the rectangle. Stix are simply lines traced out by moving the marker. When the marker traces out a closed shape, the area enclosed by the shape becomes solid and has been claimed. The player may draw either Fast Stix, which appear blue when solid, or Slow Stix, which appear red. Slow Stix take longer to draw, but are worth twice as many points. Once the player has claimed an area, the marker can safely move along the border of that claimed area. To complete a level, the player must claim 75% or more of the rectangle's area. + 0.90 + 19810101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + qix.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/qix.png + + + + qix2.zip + Qix II (Tournament) + The objective of Qix is to claim a certain proportion of the playing field as your own. At the start of each level, the playing field is just a large, empty rectangle, containing the Qix - a stick-like entity that performs peculiar, erratic motions within the confines of the rectangle. The player controls a small marker that can move around the edges of the rectangle. To claim an area of the screen, the player must detach from an edge and draw Stix within the rectangle. Stix are simply lines traced out by moving the marker. When the marker traces out a closed shape, the area enclosed by the shape becomes solid and has been claimed. The player may draw either Fast Stix, which appear blue when solid, or Slow Stix, which appear red. Slow Stix take longer to draw, but are worth twice as many points. Once the player has claimed an area, the marker can safely move along the border of that claimed area. To complete a level, the player must claim 75% or more of the rectangle's area. + 0.90 + 19810101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + qix.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/qix.png + + + + quantump.zip + Quantum (prototype) + Quantum is a reflex-based vector game set in the sub-atomic world of quantum physics, in which the player controls a probe (or 'Sparkler') and must fully encircle atomic particles for points without touching various other particles. Once the particles are surrounded by the probe's tail they are destroyed. + +The game features numerous particle types that must be encircled and destroyed or avoided. First, there are nuclei around which electrons orbit. When a nucleus is encircled (snared) and explodes, the Electrons change into Positrons which, if they are encircled before flying off the screen, are worth extra points. + +As play progresses, Pulsars appear. These travel towards the player's probe, pulsating their arms in and out as they move. The probe is destroyed if it makes contact with any part of a Pulsar. Other deadly particles include triangular Photons, self-deviding Splitters and diamond-shaped Triphons. + +In later stages, the nuclei join together, forming bonds. The player's probe is destroyed if it crosses the bonds when they are red, but can safely cross when they are yellow. + 0.40 + 19820101T000000 + General Computer Corporation + Atari + Puzzle-Game + 26 + 1 + quantum.zip + Atari Classics + 270 + media/mixrbv2/quantum.png + + + + quantum1.zip + Quantum (rev 1) + Quantum is a reflex-based vector game set in the sub-atomic world of quantum physics, in which the player controls a probe (or 'Sparkler') and must fully encircle atomic particles for points without touching various other particles. Once the particles are surrounded by the probe's tail they are destroyed. + +The game features numerous particle types that must be encircled and destroyed or avoided. First, there are nuclei around which electrons orbit. When a nucleus is encircled (snared) and explodes, the Electrons change into Positrons which, if they are encircled before flying off the screen, are worth extra points. + +As play progresses, Pulsars appear. These travel towards the player's probe, pulsating their arms in and out as they move. The probe is destroyed if it makes contact with any part of a Pulsar. Other deadly particles include triangular Photons, self-deviding Splitters and diamond-shaped Triphons. + +In later stages, the nuclei join together, forming bonds. The player's probe is destroyed if it crosses the bonds when they are red, but can safely cross when they are yellow. + 0.40 + 19820101T000000 + General Computer Corporation + Atari + Puzzle-Game + 26 + 1 + quantum.zip + Atari Classics + 270 + media/mixrbv2/quantum.png + + + + quantum.zip + Quantum (rev 2) + Quantum is a reflex-based vector game set in the sub-atomic world of quantum physics, in which the player controls a probe (or 'Sparkler') and must fully encircle atomic particles for points without touching various other particles. Once the particles are surrounded by the probe's tail they are destroyed. + +The game features numerous particle types that must be encircled and destroyed or avoided. First, there are nuclei around which electrons orbit. When a nucleus is encircled (snared) and explodes, the Electrons change into Positrons which, if they are encircled before flying off the screen, are worth extra points. + +As play progresses, Pulsars appear. These travel towards the player's probe, pulsating their arms in and out as they move. The probe is destroyed if it makes contact with any part of a Pulsar. Other deadly particles include triangular Photons, self-deviding Splitters and diamond-shaped Triphons. + +In later stages, the nuclei join together, forming bonds. The player's probe is destroyed if it crosses the bonds when they are red, but can safely cross when they are yellow. + 0.40 + 19820101T000000 + General Computer Corporation + Atari + Puzzle-Game + 26 + 1 + Atari Classics + 270 + media/mixrbv2/quantum.png + + + + quarteta.zip + Quartet (8751 315-5194) + Quartet is a platform shoot-em-up hybrid from Sega for one to four players, selected from either Joe (yellow), Mary (red), Lee (blue) and Edgar (green). The action takes place over a number of sideways scrolling levels, the bulk of which consist of straightforward platform action. On some levels, however, there are jet packs for the players to collect, and the gameplay's emphasis switched to that of a standard, sideways scrolling shoot-em-up. + +The object of the game is to destroy an army of robots that have taken over an Earth colony satellite station. Each level has a boss character that must be destroyed. Upon its death it releases a door key that must be used to exit the level. Weapon and character power-ups can be collected to aid players in their task. + 0.70 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-4 + quartet.zip + Sega Classics + 320x224 + media/mixrbv2/quartet.png + + + + quartet.zip + Quartet (Rev A, 8751 317-unknown) + Quartet is a platform shoot-em-up hybrid from Sega for one to four players, selected from either Joe (yellow), Mary (red), Lee (blue) and Edgar (green). The action takes place over a number of sideways scrolling levels, the bulk of which consist of straightforward platform action. On some levels, however, there are jet packs for the players to collect, and the gameplay's emphasis switched to that of a standard, sideways scrolling shoot-em-up. + +The object of the game is to destroy an army of robots that have taken over an Earth colony satellite station. Each level has a boss character that must be destroyed. Upon its death it releases a door key that must be used to exit the level. Weapon and character power-ups can be collected to aid players in their task. + 0.70 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-4 + Sega Classics + 320x224 + media/mixrbv2/quartet.png + + + + quartet2.zip + Quartet 2 (8751 317-0010) + Quartet is a platform shoot-em-up hybrid from Sega for one to four players, selected from either Joe (yellow), Mary (red), Lee (blue) and Edgar (green). The action takes place over a number of sideways scrolling levels, the bulk of which consist of straightforward platform action. On some levels, however, there are jet packs for the players to collect, and the gameplay's emphasis switched to that of a standard, sideways scrolling shoot-em-up. + +The object of the game is to destroy an army of robots that have taken over an Earth colony satellite station. Each level has a boss character that must be destroyed. Upon its death it releases a door key that must be used to exit the level. Weapon and character power-ups can be collected to aid players in their task. + 0.70 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-4 + quartet.zip + Sega Classics + 320x224 + media/mixrbv2/quartet.png + + + + quartet2a.zip + Quartet 2 (unprotected) + Quartet is a platform shoot-em-up hybrid from Sega for one to four players, selected from either Joe (yellow), Mary (red), Lee (blue) and Edgar (green). The action takes place over a number of sideways scrolling levels, the bulk of which consist of straightforward platform action. On some levels, however, there are jet packs for the players to collect, and the gameplay's emphasis switched to that of a standard, sideways scrolling shoot-em-up. + +The object of the game is to destroy an army of robots that have taken over an Earth colony satellite station. Each level has a boss character that must be destroyed. Upon its death it releases a door key that must be used to exit the level. Weapon and character power-ups can be collected to aid players in their task. + 0.70 + 19860101T000000 + SEGA + SEGA + Action + 10 + 1-4 + quartet.zip + Sega Classics + 320x224 + media/mixrbv2/quartet.png + + + + quarth.zip + Quarth (Japan) + A puzzle game. + + + 0.50 + 19890101T000000 + Konami + Konami + Various + 39 + 1-2 + blockhl.zip + Konami Classics + 288x224 + media/mixrbv2/blockhl.png + + + + quester.zip + Quester (Japan) + The player must move a paddle left and right across the bottom of the screen deflecting a ball to hit bricks. Some bricks contain special power-ups to enhance play + 0.70 + 19870101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/quester.png + + + + questers.zip + Quester Special Edition (Japan) + The player must move a paddle left and right across the bottom of the screen deflecting a ball to hit bricks. Some bricks contain special power-ups to enhance play + 0.70 + 19870101T000000 + Namco + Namco + Action / Breakout games + 2917 + 1-2 + quester.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/quester.png + + + + qadjr.zip + Quiz & Dragons (940921 Japan Resale Ver.) + The game plays similar to a board game, where the player is given a predetermined dice roll that moves the player up to six spaces on the board; however, if the player is so given the choice, he can move to a space of his choosing if there is a fork in the road. After landing on a space, the player is given a series of questions (the amount of questions needed to be answered increase as the game progresses) in order to proceed back to the board for another dice roll. The player is given a time limit to answer the question, with points given that vary based on how fast the player answered the question correctly. If the player is successful in answering a question, one of the orbs above the enemy's portrait will light up, indicating a correct answer. If the player answers a question incorrectly, he will lose a life point. if the player loses all life points, the player must continue within the time limit or else the game is over. + 0.70 + 19920101T000000 + Capcom + Capcom + Quiz / English + 2931 + 1-2 + qad.zip + Capcom Play System + 384x224 + media/mixrbv2/qad.png + + + + qad.zip + Quiz & Dragons (capcom quiz game 920701 USA) + The game plays similar to a board game, where the player is given a predetermined dice roll that moves the player up to six spaces on the board; however, if the player is so given the choice, he can move to a space of his choosing if there is a fork in the road. After landing on a space, the player is given a series of questions (the amount of questions needed to be answered increase as the game progresses) in order to proceed back to the board for another dice roll. The player is given a time limit to answer the question, with points given that vary based on how fast the player answered the question correctly. If the player is successful in answering a question, one of the orbs above the enemy's portrait will light up, indicating a correct answer. If the player answers a question incorrectly, he will lose a life point. if the player loses all life points, the player must continue within the time limit or else the game is over. + 0.70 + 19920101T000000 + Capcom + Capcom + Quiz / English + 2931 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/qad.png + + + + inufuku.zip + Quiz & Variety Sukusuku Inufuku (Japan) + 0.70 + 19980101T000000 + Video System + Quiz / Japanese + 2894 + 1-2 + Video System Co. + 320x224 + media/mixrbv2/inufuku.png + + + + quizdaisk.zip + Quiz Daisousa Sen - The Last Count Down (Korean release) + Japanese Quizz game + 0.55 + 19910101T000000 + SNK + SNK + Quiz / Japanese + 2894 + 1-2 + quizdais.zip + Neo-Geo + 320x224 + media/mixrbv2/quizdais.png + + + + quizdais.zip + Quiz Daisousa Sen - The Last Count Down (NGM-023)(NGH-023) + Japanese Quizz game + 0.55 + 19910101T000000 + SNK + SNK + Quiz / Japanese + 2894 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/quizdais.png + + + + quizf1.zip + Quiz F1 1-2 Finish (Japan) + 0.50 + 19920101T000000 + Irem + Irem + Quiz / Japanese + 2894 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/quizf1.png + + + + qgakumon.zip + Quiz Gakumon no Susume (Japan ver. JA2 Type L) + 0.70 + 19930101T000000 + Konami + Konami + Quiz / Japanese + 2894 + 1-2 + Konami Classics + 304x224 + media/mixrbv2/qgakumon.png + + + + quizkofk.zip + Quiz King of Fighters (Korean release) + Japanese Quiz on the King of Fighters saga. + 0.60 + 19950101T000000 + Saurus + SNK + Quiz / Japanese + 2894 + 1-2 + quizkof.zip + Neo-Geo + 320x224 + media/mixrbv2/quizkof.png + + + + quizkof.zip + Quiz King of Fighters (SAM-080)(SAH-080) + Japanese Quiz on the King of Fighters saga. + 0.60 + 19950101T000000 + Saurus + SNK + Quiz / Japanese + 2894 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/quizkof.png + + + + qzkklogy.zip + Quiz Kokology + A Japanese quiz game. + 0.50 + 19920101T000000 + Tecmo + Tecmo + Quiz / Japanese + 2894 + 1-2 + Tecmo + 384x240 + media/mixrbv2/qzkklogy.png + + + + qzkklgy2.zip + Quiz Kokology 2 + A Japanese quiz game. + 0.50 + 19930101T000000 + Tecmo + Tecmo + Quiz / Japanese + 2894 + 1-2 + Tecmo + 384x240 + media/mixrbv2/qzkklgy2.png + + + + quizdai2.zip + Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042)(NGH-042) + Japanese Quiz + 0.60 + 19920101T000000 + SNK + SNK + Quiz / Japanese + 2894 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/quizdai2.png + + + + qndream.zip + Quiz Nanairo Dreams - nijiirochou no kiseki (nanairo dreams 960826 Japan) + Quiz Nanairo Dreams - Nijiirochou no Kiseki is a quiz game where your goal is to befriend a number of female and obtain the crystals which are used to defeat the Devil King. + 0.90 + 19960101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/qndream.png + + + + quizo.zip + Quiz Olympic (set 1) + A Korean quiz game based on the Olympic Games. + 0.50 + 19850101T000000 + Seoul Coin Corp. + Seoul Coin Corp. + Quiz / Korean + 2951 + 1 + Mame + 320x200 + media/mixrbv2/quizo.png + + + + quizoa.zip + Quiz Olympic (set 2) + A Korean quiz game based on the Olympic Games. + 0.50 + 19850101T000000 + Seoul Coin Corp. + Seoul Coin Corp. + Quiz / Korean + 2951 + 1 + quizo.zip + Mame + 320x200 + media/mixrbv2/quizo.png + + + + qsangoku.zip + Quiz Sangokushi (Japan) + As the title implies, this is primarily a quiz game; however, it also has elements of strategy. It is possible to play against the computer or compete with another player. The strategy part of the game is set in the Three Kingdoms era. The player chooses one of the famous historical leaders from the time period, and the country he/she plans to invade. Each leader has different statistics (such as "knowledge"), which influence the difficulty of the following trivia questions. + +The timed quiz begins immediately after the choice of a "war scenario", depicted as a "battle of minds" between famous Three Kingdoms characters. However, the quiz itself is dedicated to Japanese geography, history, and pop culture, having nothing to do with the history of China. On several occasions, the players are also able to choose exactly in which field to compete (Japanese popular music, anime, sports, etc.). + 0.50 + 19910101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Classics + 384x240 + media/mixrbv2/qsangoku.png + + + + qzshowby.zip + Quiz Sekai wa SHOW by shobai (Japan) + Quiz Sekai wa SHOW by Shobai (c) 1993 Taito. - TECHNICAL - Taito B System hardware Prom Stickers : D72 Main CPU : 68000 (@ 16 Mhz), Z80 (@ 4 Mhz) Sound Chips : YM2610B (@ 8 Mhz) Players : 4 Buttons : 4 - TRIVIA - Released in May 1994 in Japan only. + 0.70 + 19930101T000000 + Taito + Taito + Quiz / Japanese + 2894 + 1-4 + Taito Classics + 320x224 + media/mixrbv2/qzshowby.png + + + + qtono1.zip + Quiz Tonosama no Yabou (Japan) + It is a quiz game with a feudal Japanese war theme. + 0.50 + 19910101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Classics + 384x240 + media/mixrbv2/qtono1.png + + + + qtono2j.zip + Quiz Tonosama no Yabou 2 Zenkoku-ban (tonosama 2 950123 Japan) + Quiz Tonosama no Yabou 2 - Zenkoku-ban is a feudal Japanese quiz game from Capcom. + 0.50 + 19950101T000000 + Capcom + Capcom + Quiz / Japanese + 2894 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/qtono2j.png + + + + rittam.zip + R&T (Rod-Land prototype?) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + rodland.zip + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rshark.zip + R-Shark + A space-themed vertically scrolling shoot'em up that is very similar to, and no better than, the myriad of similar shoot' em ups that were around at the time. Despite its name, R-Shark has nothing whatsoever in common with Irem's superb "R-type" series. + 0.50 + 19950101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/rshark.png + + + + rtypejp.zip + R-Type (Japan prototype) + RType is a sideways-scrolling shoot-em-up in which the evil Bydo Empire rules the galaxy through fear and intimidation and it's up to the player - piloting their heavily-armed R-9 space ship - to battle through eight tough levels to the heart of the Bydo stronghold and defeat them. + +The game's revolutionary weapons system is its real stroke of genius. The first of numerous innovations that R?Type bought to the genre is the beam weapon: when the fire button is held down, a 'power meter' starts to charge up; once the meter is full, releasing the fire button unleashes a very powerful plasma burst capable of inflicting much greater damage to enemy ships or even destroying numerous enemies simultaneously. The trade-off is that charging the weapon takes up valuable seconds, giving the Bydo ships time to attack. + +The most significant addition to R-type's arsenal is the now-legendary 'Force Pod'. This takes the form of an invincible, detachable laser-firing pod that can be attached to either the front or rear of the player's ship, or can be detached completely, after which the pod sits some distance either ahead or behind the player's ship, tracking its movements and providing additional fire power. When attached to the R9 ship, the pod acts as a shield. This forms a crucial part of R?Type's gameplay and has to be fully utilised to navigate certain sections of the game, such as the huge mothership that comprises the game's 3rd stage. + +R?Type's levels are designed to make full use of its unique weapons system, making for very linear and demanding gameplay in which losing or picking up the wrong weapon at the wrong time often leads to an instant death. Its intelligent, precise and demanding level design, gave the world its first truly 'strategic' shoot-em-up. + 0.90 + 19870101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype.zip + Irem Classics + 384x256 + media/mixrbv2/rtype.png + + + + rtypej.zip + R-Type (Japan) + RType is a sideways-scrolling shoot-em-up in which the evil Bydo Empire rules the galaxy through fear and intimidation and it's up to the player - piloting their heavily-armed R-9 space ship - to battle through eight tough levels to the heart of the Bydo stronghold and defeat them. + +The game's revolutionary weapons system is its real stroke of genius. The first of numerous innovations that R?Type bought to the genre is the beam weapon: when the fire button is held down, a 'power meter' starts to charge up; once the meter is full, releasing the fire button unleashes a very powerful plasma burst capable of inflicting much greater damage to enemy ships or even destroying numerous enemies simultaneously. The trade-off is that charging the weapon takes up valuable seconds, giving the Bydo ships time to attack. + +The most significant addition to R-type's arsenal is the now-legendary 'Force Pod'. This takes the form of an invincible, detachable laser-firing pod that can be attached to either the front or rear of the player's ship, or can be detached completely, after which the pod sits some distance either ahead or behind the player's ship, tracking its movements and providing additional fire power. When attached to the R9 ship, the pod acts as a shield. This forms a crucial part of R?Type's gameplay and has to be fully utilised to navigate certain sections of the game, such as the huge mothership that comprises the game's 3rd stage. + +R?Type's levels are designed to make full use of its unique weapons system, making for very linear and demanding gameplay in which losing or picking up the wrong weapon at the wrong time often leads to an instant death. Its intelligent, precise and demanding level design, gave the world its first truly 'strategic' shoot-em-up. + 0.90 + 19870101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype.zip + Irem Classics + 384x256 + media/mixrbv2/rtype.png + + + + rtypeu.zip + R-Type (US) + RType is a sideways-scrolling shoot-em-up in which the evil Bydo Empire rules the galaxy through fear and intimidation and it's up to the player - piloting their heavily-armed R-9 space ship - to battle through eight tough levels to the heart of the Bydo stronghold and defeat them. + +The game's revolutionary weapons system is its real stroke of genius. The first of numerous innovations that R?Type bought to the genre is the beam weapon: when the fire button is held down, a 'power meter' starts to charge up; once the meter is full, releasing the fire button unleashes a very powerful plasma burst capable of inflicting much greater damage to enemy ships or even destroying numerous enemies simultaneously. The trade-off is that charging the weapon takes up valuable seconds, giving the Bydo ships time to attack. + +The most significant addition to R-type's arsenal is the now-legendary 'Force Pod'. This takes the form of an invincible, detachable laser-firing pod that can be attached to either the front or rear of the player's ship, or can be detached completely, after which the pod sits some distance either ahead or behind the player's ship, tracking its movements and providing additional fire power. When attached to the R9 ship, the pod acts as a shield. This forms a crucial part of R?Type's gameplay and has to be fully utilised to navigate certain sections of the game, such as the huge mothership that comprises the game's 3rd stage. + +R?Type's levels are designed to make full use of its unique weapons system, making for very linear and demanding gameplay in which losing or picking up the wrong weapon at the wrong time often leads to an instant death. Its intelligent, precise and demanding level design, gave the world its first truly 'strategic' shoot-em-up. + 0.90 + 19870101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype.zip + Irem Classics + 384x256 + media/mixrbv2/rtype.png + + + + rtypeb.zip + R-Type (World bootleg) + RType is a sideways-scrolling shoot-em-up in which the evil Bydo Empire rules the galaxy through fear and intimidation and it's up to the player - piloting their heavily-armed R-9 space ship - to battle through eight tough levels to the heart of the Bydo stronghold and defeat them. + +The game's revolutionary weapons system is its real stroke of genius. The first of numerous innovations that R?Type bought to the genre is the beam weapon: when the fire button is held down, a 'power meter' starts to charge up; once the meter is full, releasing the fire button unleashes a very powerful plasma burst capable of inflicting much greater damage to enemy ships or even destroying numerous enemies simultaneously. The trade-off is that charging the weapon takes up valuable seconds, giving the Bydo ships time to attack. + +The most significant addition to R-type's arsenal is the now-legendary 'Force Pod'. This takes the form of an invincible, detachable laser-firing pod that can be attached to either the front or rear of the player's ship, or can be detached completely, after which the pod sits some distance either ahead or behind the player's ship, tracking its movements and providing additional fire power. When attached to the R9 ship, the pod acts as a shield. This forms a crucial part of R?Type's gameplay and has to be fully utilised to navigate certain sections of the game, such as the huge mothership that comprises the game's 3rd stage. + +R?Type's levels are designed to make full use of its unique weapons system, making for very linear and demanding gameplay in which losing or picking up the wrong weapon at the wrong time often leads to an instant death. Its intelligent, precise and demanding level design, gave the world its first truly 'strategic' shoot-em-up. + 0.90 + 19870101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype.zip + Irem Classics + 384x256 + media/mixrbv2/rtype.png + + + + rtype.zip + R-Type (World) + RType is a sideways-scrolling shoot-em-up in which the evil Bydo Empire rules the galaxy through fear and intimidation and it's up to the player - piloting their heavily-armed R-9 space ship - to battle through eight tough levels to the heart of the Bydo stronghold and defeat them. + +The game's revolutionary weapons system is its real stroke of genius. The first of numerous innovations that R?Type bought to the genre is the beam weapon: when the fire button is held down, a 'power meter' starts to charge up; once the meter is full, releasing the fire button unleashes a very powerful plasma burst capable of inflicting much greater damage to enemy ships or even destroying numerous enemies simultaneously. The trade-off is that charging the weapon takes up valuable seconds, giving the Bydo ships time to attack. + +The most significant addition to R-type's arsenal is the now-legendary 'Force Pod'. This takes the form of an invincible, detachable laser-firing pod that can be attached to either the front or rear of the player's ship, or can be detached completely, after which the pod sits some distance either ahead or behind the player's ship, tracking its movements and providing additional fire power. When attached to the R9 ship, the pod acts as a shield. This forms a crucial part of R?Type's gameplay and has to be fully utilised to navigate certain sections of the game, such as the huge mothership that comprises the game's 3rd stage. + +R?Type's levels are designed to make full use of its unique weapons system, making for very linear and demanding gameplay in which losing or picking up the wrong weapon at the wrong time often leads to an instant death. Its intelligent, precise and demanding level design, gave the world its first truly 'strategic' shoot-em-up. + 0.90 + 19870101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/rtype.png + + + + rtype2j.zip + R-Type II (Japan) + The sequel to the hugely successful original finds the evil Bydo Empire once again intent on the destruction of all mankind in this sideways scrolling, six-level shoot-em-up. + +The innovative weapons system of the original game - the 'Beam Weapon' and 'Force Pod' - make a welcome return and remain unchanged for the sequel. + +The tight, demanding gameplay and high emphasis on correct usage of the weapons system also return - although the sequel is, if anything, even more demanding than its already unforgiving predecessor; with more durable enemies and trickier level design. + +R?Type II features three new weapon shot types: +Green - Search Laser - fires semi-homing lasers that can bend at 45° angles. +Grey - Shotgun Laser - fires large shells that travel a short distance before exploding powerfully. +Scatter Bomb - drops bombs to the ground; when these explode, the explosion scatters forwards along the ground. This is a supporting weapon that can be equipped instead of missiles. + +In addition to the new weapons, R-type II's Beam Weapon has received an upgrade. As with the first game, holding down the fire button makes a power gauge fill up, releases the button then unleashes a powerful plasma shot. For the sequel, however, continuing to hold down the button causes the gauge to charge up further. This 'double-charged' gauge flashes blue and red and releases an even more powerful plasma burst. + 0.90 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype2.zip + Irem Classics + 384x256 + media/mixrbv2/rtype2.png + + + + rtype2jc.zip + R-Type II (Japan, revision C) + The sequel to the hugely successful original finds the evil Bydo Empire once again intent on the destruction of all mankind in this sideways scrolling, six-level shoot-em-up. + +The innovative weapons system of the original game - the 'Beam Weapon' and 'Force Pod' - make a welcome return and remain unchanged for the sequel. + +The tight, demanding gameplay and high emphasis on correct usage of the weapons system also return - although the sequel is, if anything, even more demanding than its already unforgiving predecessor; with more durable enemies and trickier level design. + +R?Type II features three new weapon shot types: +Green - Search Laser - fires semi-homing lasers that can bend at 45° angles. +Grey - Shotgun Laser - fires large shells that travel a short distance before exploding powerfully. +Scatter Bomb - drops bombs to the ground; when these explode, the explosion scatters forwards along the ground. This is a supporting weapon that can be equipped instead of missiles. + +In addition to the new weapons, R-type II's Beam Weapon has received an upgrade. As with the first game, holding down the fire button makes a power gauge fill up, releases the button then unleashes a powerful plasma shot. For the sequel, however, continuing to hold down the button causes the gauge to charge up further. This 'double-charged' gauge flashes blue and red and releases an even more powerful plasma burst. + 0.90 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + rtype2.zip + Irem Classics + 384x256 + media/mixrbv2/rtype2.png + + + + rtype2.zip + R-Type II (World) + The sequel to the hugely successful original finds the evil Bydo Empire once again intent on the destruction of all mankind in this sideways scrolling, six-level shoot-em-up. + +The innovative weapons system of the original game - the 'Beam Weapon' and 'Force Pod' - make a welcome return and remain unchanged for the sequel. + +The tight, demanding gameplay and high emphasis on correct usage of the weapons system also return - although the sequel is, if anything, even more demanding than its already unforgiving predecessor; with more durable enemies and trickier level design. + +R?Type II features three new weapon shot types: +Green - Search Laser - fires semi-homing lasers that can bend at 45° angles. +Grey - Shotgun Laser - fires large shells that travel a short distance before exploding powerfully. +Scatter Bomb - drops bombs to the ground; when these explode, the explosion scatters forwards along the ground. This is a supporting weapon that can be equipped instead of missiles. + +In addition to the new weapons, R-type II's Beam Weapon has received an upgrade. As with the first game, holding down the fire button makes a power gauge fill up, releases the button then unleashes a powerful plasma shot. For the sequel, however, continuing to hold down the button causes the gauge to charge up further. This 'double-charged' gauge flashes blue and red and releases an even more powerful plasma burst. + 0.90 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/rtype2.png + + + + rpunch.zip + Rabbit Punch (US) + Cut scenes from the original Rabio Lepus were eliminated in "Rabbit Punch". These include a picture appearing when the spaceship flies out of the castle at the start, pictures when the two bunny girls and Rabbit King are rescued and scenes at the ending. + 0.70 + 19870101T000000 + V-System Co. + V-System Co. + Shoot'em Up + 79 + 1-2 + rabiolep.zip + Midway Classics + 288x216 + media/mixrbv2/rabiolep.png + + + + rabiolep.zip + Rabio Lepus (Japan) + Cut scenes from the original Rabio Lepus were eliminated in "Rabbit Punch". These include a picture appearing when the spaceship flies out of the castle at the start, pictures when the two bunny girls and Rabbit King are rescued and scenes at the ending. + 0.70 + 19870101T000000 + V-System Co. + V-System Co. + Shoot'em Up + 79 + 1-2 + Midway Classics + 288x216 + media/mixrbv2/rabiolep.png + + + + racherod.zip + Racing Hero (FD1094 317-0144 decrypted) + Race a motorcycle against other bikes, cars, trucks and the obligatory tight time limit. Racing Hero is the spiritual successor both to Sega's wonderful "Hang-On" series, and to their most famous racing game, "Out Run". + +Some of Racing Hero's stages mirrored the racing-through-traffic gameplay of the Ferrari-based racer, for example perhaps the biggest similarity to Out Run is that at the end of each stage, the player can choose which route he or she wishes to take next. This differs somewhat from "Out Run"'s highly impressive forked-road method. In Racing Hero, the player is presented with a seperate stage-select screen and simply highlights the flag of whichever country they wish to tackle next. + 0.90 + 19890101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + rachero.zip + Sega Classics + 320x224 + media/mixrbv2/rachero.png + + + + rachero.zip + Racing Hero (FD1094 317-0144) + Race a motorcycle against other bikes, cars, trucks and the obligatory tight time limit. Racing Hero is the spiritual successor both to Sega's wonderful "Hang-On" series, and to their most famous racing game, "Out Run". + +Some of Racing Hero's stages mirrored the racing-through-traffic gameplay of the Ferrari-based racer, for example perhaps the biggest similarity to Out Run is that at the end of each stage, the player can choose which route he or she wishes to take next. This differs somewhat from "Out Run"'s highly impressive forked-road method. In Racing Hero, the player is presented with a seperate stage-select screen and simply highlights the flag of whichever country they wish to tackle next. + 0.90 + 19890101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + Sega Classics + 320x224 + media/mixrbv2/rachero.png + + + + rackemup.zip + Rack 'em Up (program code L) + Rack &#039;Em Up &copy; 1987 Konami. + +A vertical pool game where you can play either 9-ball or rotation. + 0.50 + 19870101T000000 + Konami + Sports / Pool + 3028 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/rackemup.png + + + + racknrol.zip + Rack + Roll + Rack + Roll &copy; 1986 Status Games. + +The object of the game is to clear a rack with limited shots. + 0.50 + 19860101T000000 + Senko Industries + Sports / Pool + 3028 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/racknrol.png + + + + rdaction.zip + Rad Action / NinjaKun Ashura no Shou + This game is known in US as "Rad Action" and "JT 104", outside US as "Ninja Kid-II", and in Japan as 'Ninja-kun - Ashura no Shou' (translates from Japanese as 'Ninja Kid - Chronicle of Ashura'). + 0.70 + 19870101T000000 + UPL + UPL + Platform / Shooter Scrolling + 2887 + 1-2 + ninjakd2.zip + Mame + 256x192 + media/mixrbv2/ninjakd2.png + + + + radarscp1.zip + Radar Scope (TRS01) + As captain of the Sonic Spaceport, players must defend their station against enemy spaceships called Gamma Raiders, which attack with vengeance and swiftly retreat to formation. The object of the game is to destroy 48 enemy Gamma Raiders before there is total disintegration of all the Spaceports on the player's side. + +Players can counterattack with the Rapid-Fire Laser Blaster which zooms the lasers over the three-dimensional-esque field of curving vectors, while it intercepts enemies. The lower on the radar screen that you destroy a Gamma Raider, the more points will be earned. If exploding decoys damage the Sonic Spaceport, the Laser Blaster's firing speed will reduce. The Laser Blaster's "Damage Meter" will light up as damage is incurred and when fully illuminated, will weaken the Laser Blaster's offensive powers. To reverse this, the players must attack and destroy all remaining Gamma Raiders. + +Players are given a wide range of flexibility in controlling the difficulty levels of the game. Extra Spaceports are awarded at 7,000, 10,000, 15,000 and 20,000 points, as determined by the players. The initial number of Spaceports may also be pre-programmed at 3, 4, 5 or 6. When the required number of spaceships is destroyed, players receive an extra point bonus. + 0.50 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + radarscp.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/radarscp.png + + + + radarscp.zip + Radar Scope (TRS02, rev. D) + As captain of the Sonic Spaceport, players must defend their station against enemy spaceships called Gamma Raiders, which attack with vengeance and swiftly retreat to formation. The object of the game is to destroy 48 enemy Gamma Raiders before there is total disintegration of all the Spaceports on the player's side. + +Players can counterattack with the Rapid-Fire Laser Blaster which zooms the lasers over the three-dimensional-esque field of curving vectors, while it intercepts enemies. The lower on the radar screen that you destroy a Gamma Raider, the more points will be earned. If exploding decoys damage the Sonic Spaceport, the Laser Blaster's firing speed will reduce. The Laser Blaster's "Damage Meter" will light up as damage is incurred and when fully illuminated, will weaken the Laser Blaster's offensive powers. To reverse this, the players must attack and destroy all remaining Gamma Raiders. + +Players are given a wide range of flexibility in controlling the difficulty levels of the game. Extra Spaceports are awarded at 7,000, 10,000, 15,000 and 20,000 points, as determined by the players. The initial number of Spaceports may also be pre-programmed at 3, 4, 5 or 6. When the required number of spaceships is destroyed, players receive an extra point bonus. + 0.50 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + Nintendo Classics + 270 + 256x224 + media/mixrbv2/radarscp.png + + + + radarscpc.zip + Radar Scope (TRS02?, rev. C) + As captain of the Sonic Spaceport, players must defend their station against enemy spaceships called Gamma Raiders, which attack with vengeance and swiftly retreat to formation. The object of the game is to destroy 48 enemy Gamma Raiders before there is total disintegration of all the Spaceports on the player's side. + +Players can counterattack with the Rapid-Fire Laser Blaster which zooms the lasers over the three-dimensional-esque field of curving vectors, while it intercepts enemies. The lower on the radar screen that you destroy a Gamma Raider, the more points will be earned. If exploding decoys damage the Sonic Spaceport, the Laser Blaster's firing speed will reduce. The Laser Blaster's "Damage Meter" will light up as damage is incurred and when fully illuminated, will weaken the Laser Blaster's offensive powers. To reverse this, the players must attack and destroy all remaining Gamma Raiders. + +Players are given a wide range of flexibility in controlling the difficulty levels of the game. Extra Spaceports are awarded at 7,000, 10,000, 15,000 and 20,000 points, as determined by the players. The initial number of Spaceports may also be pre-programmed at 3, 4, 5 or 6. When the required number of spaceships is destroyed, players receive an extra point bonus. + 0.50 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + radarscp.zip + Nintendo Classics + 270 + 256x224 + media/mixrbv2/radarscp.png + + + + radradj.zip + Radical Radial (Japan) + This is an interesting take on the shooter genre, with three unique sections in each stage. You control a tire with the ability to jump and shoot. When you jump, you can only be hit by the enemies in the first stage. + +In the first level, you need to dodge or jump over rocks as bat-like enemies rush down the screen, weaving across it. Occasionally a string of enemies will appear that give a bonus of 1000 if you hit them all. You can also pick up bonus items worth 300 points each. + +In the second level, you are driving down a busy road. You need to doge cars as they erratically move across the screen. Occasionally an ambulance will drive up the screen, and if it hits a vehicle it will go flying across the screen. Watch out for the blue trucks in this section. Midway through this part, a green truck appears which drops stars. They are worth 500 each. There are broken down vehicles on the road, along with oil slicks. The pickups worth 300 points make a return. + +The third level is a bonus round. You continue driving down the road, but now there are only oil slicks. You need to collect as many point pickups as possible. If you die in this section, it jumps to the next level, and you do not lose a life. You get a bonus if you get every pickup. You are then given a bonus based on your time for the last stage. + +There is a difficulty spike at the third stage. The extra life is at 50000. You only get one extra life during the course of the game. The game is infinite. + 0.70 + 19820101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Vertical + 2921 + 1-2 + radrad.zip + Nichibutsu + 256x224 + media/mixrbv2/radrad.png + + + + radrad.zip + Radical Radial (US) + This is an interesting take on the shooter genre, with three unique sections in each stage. You control a tire with the ability to jump and shoot. When you jump, you can only be hit by the enemies in the first stage. + +In the first level, you need to dodge or jump over rocks as bat-like enemies rush down the screen, weaving across it. Occasionally a string of enemies will appear that give a bonus of 1000 if you hit them all. You can also pick up bonus items worth 300 points each. + +In the second level, you are driving down a busy road. You need to doge cars as they erratically move across the screen. Occasionally an ambulance will drive up the screen, and if it hits a vehicle it will go flying across the screen. Watch out for the blue trucks in this section. Midway through this part, a green truck appears which drops stars. They are worth 500 each. There are broken down vehicles on the road, along with oil slicks. The pickups worth 300 points make a return. + +The third level is a bonus round. You continue driving down the road, but now there are only oil slicks. You need to collect as many point pickups as possible. If you die in this section, it jumps to the next level, and you do not lose a life. You get a bonus if you get every pickup. You are then given a bonus based on your time for the last stage. + +There is a difficulty spike at the third stage. The extra life is at 50000. You only get one extra life during the course of the game. The game is infinite. + 0.70 + 19820101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Vertical + 2921 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/radrad.png + + + + raflesia.zip + Rafflesia (315-5162) + Rafflesia is a deep space shooter from Coreland - it has a similar eerie feel to it as in other space shooters such as "Brain" and "4-D Warriors". + +The game scrolls vertically as you maneuver your ship through hordes of enemies while collecting the tears of Rafflesia to power up your weapons. Each sector has a large boss enemy to defeat. + +Can you survive to reach the final battle against Rafflesia himself? + 0.70 + 19860101T000000 + Coreland + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/raflesia.png + + + + raflesiau.zip + Rafflesia (not encrypted) + Rafflesia is a deep space shooter from Coreland - it has a similar eerie feel to it as in other space shooters such as "Brain" and "4-D Warriors". + +The game scrolls vertically as you maneuver your ship through hordes of enemies while collecting the tears of Rafflesia to power up your weapons. Each sector has a large boss enemy to defeat. + +Can you survive to reach the final battle against Rafflesia himself? + 0.70 + 19860101T000000 + Coreland + SEGA + Shoot'em Up + 79 + 1-2 + raflesia.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/raflesia.png + + + + rotdh.zip + Rage of the Dragons (NGH-2640) + Originally designed by Evoga to be a sequel to the 1995 fighting game Double Dragon (changing it to a homage after failing to acquire the intellectual rights to the series), Rage of the Dragons is a 2-on-2 tag-team fighting game with the same art style as Noise Factory's earlier Sengoku 3. + +The story involves various pairs of martial artists and those with supernatural powers, with everybody having personal motivations for fighting in Sunshine City. Some of these fighters harness the power of dragon spirits (with brothers Billy and Jimmy Lewis controlling the Blue and Red Dragons and main antagonist Johann controlling the Black Dragon). + 0.70 + 20020101T000000 + Evoga / Playmore + SNK + Fight / Versus + 2885 + 1-2 + rotd.zip + Neo-Geo + 320x224 + media/mixrbv2/rotd.png + + + + rotd.zip + Rage of the Dragons (NGM-264?) + Originally designed by Evoga to be a sequel to the 1995 fighting game Double Dragon (changing it to a homage after failing to acquire the intellectual rights to the series), Rage of the Dragons is a 2-on-2 tag-team fighting game with the same art style as Noise Factory's earlier Sengoku 3. + +The story involves various pairs of martial artists and those with supernatural powers, with everybody having personal motivations for fighting in Sunshine City. Some of these fighters harness the power of dragon spirits (with brothers Billy and Jimmy Lewis controlling the Blue and Red Dragons and main antagonist Johann controlling the Black Dragon). + 0.70 + 20020101T000000 + Evoga / Playmore + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/rotd.png + + + + ragnagrd.zip + Ragnagard / Shin-Oh-Ken + This is a fighting game originaly designed in 3D , and 2D sprites transposed (known as Computer Graphics, or CG), like Donkey Kong Country or Pulstar. Story: It is a world occupied by gods, the world in which reign the god of the Arc of Orion. He decided to offer his succession in a tournament at eight gods. The winner will have access to the throne of the god of the Arc of Orion. A struggle between the gods is about to begin. + 0.75 + 19960101T000000 + Saurus + Saurus + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ragnagrd.png + + + + raidenk.zip + Raiden (Korea) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidenkb.zip + Raiden (Korea, bootleg) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raiden.zip + Raiden (set 1) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidena.zip + Raiden (set 2) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidenb.zip + Raiden (set 3) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raident.zip + Raiden (Taiwan) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidenub.zip + Raiden (US set 3) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidenu.zip + Raiden (US, set 1) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidenua.zip + Raiden (US, set 2, SEI8904 + SEI9008 PCBs) + In the year 2090, Earth has suddenly become the target of deranged aliens. Following the invasion, a new cutting-edge weapon, the Raiden Supersonic Attack Fighter, based on the destroyed alien craft, is created for humanity's hope for survival. + 0.90 + 19900101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + 1-2 + raiden.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/raiden.png + + + + raidendxch.zip + Raiden DX (China) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxg.zip + Raiden DX (Germany) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxnl.zip + Raiden DX (Holland) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxa1.zip + Raiden DX (Hong Kong, set 1) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxa2.zip + Raiden DX (Hong Kong, set 2) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxj.zip + Raiden DX (Japan, set 1) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxja.zip + Raiden DX (Japan, set 2) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxk.zip + Raiden DX (Korea) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxpt.zip + Raiden DX (Portugal) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendx.zip + Raiden DX (UK) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raidendxu.zip + Raiden DX (US) + Raiden DX is an arcade shoot'em up. The game features similar vertically scrolling shooter gameplay as in its predecessors Raiden and Raiden II. The player controls a jet fighter and blasts his way through various stages which are divided into levels. + +When destroying buildings and enemies the player can collect power-ups to gain better weapons, bombs, missiles and score extra points. There are three stages, Practice, Novice and Expert. Practice features one level only. Novice features 5 levels and Expert features 8 levels, including remixed versions of the Novice and Practice levels. At the end of each level the player has to defeat a level boss. + 0.90 + 19940101T000000 + Seibu Kaihatsu + Fabtek + Shoot'em Up + 79 + raidendx.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raidendx.png + + + + raiden2eub.zip + Raiden II (easier, US set 3) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2eup.zip + Raiden II (easier, US, prototype? 11-16) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2eg.zip + Raiden II (Easy Version, Germany) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2ea.zip + Raiden II (Easy Version, Japan?) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2e.zip + Raiden II (Easy Version, Korea?) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2eua.zip + Raiden II (Easy Version, US set 1) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2eu.zip + Raiden II (Easy Version, US set 2) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2f.zip + Raiden II (France) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2g.zip + Raiden II (Germany) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2dx.zip + Raiden II (harder, Raiden DX Hardware) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2nl.zip + Raiden II (Holland) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2hk.zip + Raiden II (Hong Kong) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2i.zip + Raiden II (Italy) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2j.zip + Raiden II (Japan) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2k.zip + Raiden II (Korea) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2es.zip + Raiden II (Spain) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2sw.zip + Raiden II (Switzerland) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2.zip + Raiden II (US, set 1) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + raiden2u.zip + Raiden II (US, set 2) + Excellent sequel to the classic original "Raiden". As in the original, players control a fighter jet/spaceship through various levels while shooting down other planes and bombing tanks on the ground. + 0.90 + 19930101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + 1-2 + raiden2.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/raiden2.png + + + + r2dx_v33.zip + Raiden II New / Raiden DX (newer V33 PCB) (Raiden DX EEPROM) + A re-release of the original 1993 Raiden II. The only differences with the original are that the levels appear in a slightly different order, and the musical score is different. + 0.80 + 19960101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/r2dx_v33.png + + + + r2dx_v33_r2.zip + Raiden II New / Raiden DX (newer V33 PCB) (Raiden II EEPROM) + A re-release of the original 1993 Raiden II. The only differences with the original are that the levels appear in a slightly different order, and the musical score is different. + 0.80 + 19960101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shoot'em Up + 79 + r2dx_v33.zip + Seibu Kaihatsu + 270 + 320x240 + media/mixrbv2/r2dx_v33.png + + + + raiders5.zip + Raiders5 + RAIDERS5 is a shooting puzzle game released by UPL in 1985. Players aim to escape by destroying all of the targets on the stage. Find the exit! + 0.90 + 19850101T000000 + UPL + UPL + Action + 10 + 1-2 + Taito Classics + 256x192 + media/mixrbv2/raiders5.png + + + + raiders5t.zip + Raiders5 (Japan) + RAIDERS5 is a shooting puzzle game released by UPL in 1985. Players aim to escape by destroying all of the targets on the stage. Find the exit! + 0.90 + 19850101T000000 + UPL + UPL + Action + 10 + 1-2 + raiders5.zip + Taito Classics + 256x192 + media/mixrbv2/raiders5.png + + + + raiga.zip + Raiga - Strato Fighter (Japan) + Strato Fighter, otherwise known as Raiga: Strato Fighter is a horizontally scrolling shooter in which two players may play simultaneously. The game sets players in the year 2135 on a mission to save the Earth from colony-based, militant alien invaders using the MB-OG Raiga (Thunder Fang). + 0.50 + 19910101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + stratof.zip + Tecmo + 256x224 + media/mixrbv2/stratof.png + + + + stratof.zip + Raiga - Strato Fighter (US) + Strato Fighter, otherwise known as Raiga: Strato Fighter is a horizontally scrolling shooter in which two players may play simultaneously. The game sets players in the year 2135 on a mission to save the Earth from colony-based, militant alien invaders using the MB-OG Raiga (Thunder Fang). + 0.50 + 19910101T000000 + Tecmo + Tecmo + Shoot'em Up + 79 + 1-2 + Tecmo + 256x224 + media/mixrbv2/stratof.png + + + + rchasej.zip + Rail Chase (Japan) + Rail Chase is a lightgun controlled one or two player shooting game, in which the players travel in a minecart through a huge rail network; pursued by a multitude of weapon-carrying enemies. The fast-paced action also features sections in which the player comes across junctions in the track and can chose whether to go left or right - the chosen route usually dictating how many tack obstacles and enemies the player must face - this is achieved by shooting the signposts that are situated in the middle of the points. Some sections also have the player's minecart leave the track entirely and travel over open ground. + 0.50 + 19910101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + rchase.zip + Sega Classics + 320x224 + media/mixrbv2/rchase.png + + + + rchase.zip + Rail Chase (World) + Rail Chase is a lightgun controlled one or two player shooting game, in which the players travel in a minecart through a huge rail network; pursued by a multitude of weapon-carrying enemies. The fast-paced action also features sections in which the player comes across junctions in the track and can chose whether to go left or right - the chosen route usually dictating how many tack obstacles and enemies the player must face - this is achieved by shooting the signposts that are situated in the middle of the points. Some sections also have the player's minecart leave the track entirely and travel over open ground. + 0.50 + 19910101T000000 + SEGA + SEGA + Lightgun Shooter + 32 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/rchase.png + + + + raimaisj.zip + Raimais (Japan) + Raimais is a great maze chase game. + +The players take the lead of beautiful Rika Midorikawa, a heroine of bikers, in order to rescue her kidnapped brother, she must ride her 3 wheeled jet vehicle to challenge and explores the labyrinths while collect all the dots and pick the power-ups to defeat or avoid all the enemies in each stage, to open the exits and destroy the big bosses and win to rescue his captive brother. + 0.60 + 19880101T000000 + Taito + Taito + Action + 10 + 1-2 + raimais.zip + Taito Classics + 320x224 + media/mixrbv2/raimais.png + + + + raimaisjo.zip + Raimais (Japan, first revision) + Raimais is a great maze chase game. + +The players take the lead of beautiful Rika Midorikawa, a heroine of bikers, in order to rescue her kidnapped brother, she must ride her 3 wheeled jet vehicle to challenge and explores the labyrinths while collect all the dots and pick the power-ups to defeat or avoid all the enemies in each stage, to open the exits and destroy the big bosses and win to rescue his captive brother. + 0.60 + 19880101T000000 + Taito + Taito + Action + 10 + 1-2 + raimais.zip + Taito Classics + 320x224 + media/mixrbv2/raimais.png + + + + raimais.zip + Raimais (World) + Raimais is a great maze chase game. + +The players take the lead of beautiful Rika Midorikawa, a heroine of bikers, in order to rescue her kidnapped brother, she must ride her 3 wheeled jet vehicle to challenge and explores the labyrinths while collect all the dots and pick the power-ups to defeat or avoid all the enemies in each stage, to open the exits and destroy the big bosses and win to rescue his captive brother. + 0.60 + 19880101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/raimais.png + + + + rbislande.zip + Rainbow Islands (Extra) + Rainbow Islands Extra Version is a modified version of Rainbow Islands; the game is exactly the same except the stages' enemies and bosses appear in a different order (much like Bubble Bobble's Super Mode). Rainbow Islands Extra was released in limited quantities in the arcade. The game was also included as a mode in the Sega Mega Drive version of Rainbow Islands. + 19880101T000000 + Taito + Taito + Platform + 7 + 1-2 + Taito Classics + media/mixrbv2/rbislande.png + + + + rbisland.zip + Rainbow Islands (new version) + Rainbow Islands - The Story of Bubble Bobble 2 is a sequel to the legendary "Bubble Bobble" - released a year earlier - one or two players (who, unlike 'Bubble Bobble', no longer play simultaneously) take on the role of Bub and Bob, who have now been returned to their original human form after their success in Bubble Bobble. The returning heroes have been asked to rescue the Rainbow Islands from the clutches of the various enemies who have overrun the islands in their absence. + +Bob and Bob are each armed with the ability to create solid rainbows. This ingenious game-play device acts as both a weapon (to either kill an enemy instantly, or trap it then collapse the rainbow onto it, the latter essential for collecting bonus gems - as detailed in 'Tips and Tricks') and as a temporary platform that allows the players to reach previously inaccessible parts of the level, as they race to reach the top of the island before the game's tight time limit expires. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/rbisland.png + + + + rbislando.zip + Rainbow Islands (old version) + Rainbow Islands - The Story of Bubble Bobble 2 is a sequel to the legendary "Bubble Bobble" - released a year earlier - one or two players (who, unlike 'Bubble Bobble', no longer play simultaneously) take on the role of Bub and Bob, who have now been returned to their original human form after their success in Bubble Bobble. The returning heroes have been asked to rescue the Rainbow Islands from the clutches of the various enemies who have overrun the islands in their absence. + +Bob and Bob are each armed with the ability to create solid rainbows. This ingenious game-play device acts as both a weapon (to either kill an enemy instantly, or trap it then collapse the rainbow onto it, the latter essential for collecting bonus gems - as detailed in 'Tips and Tricks') and as a temporary platform that allows the players to reach previously inaccessible parts of the level, as they race to reach the top of the island before the game's tight time limit expires. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + rbisland.zip + Taito Classics + 320x224 + media/mixrbv2/rbisland.png + + + + rallybik.zip + Rally Bike / Dash Yarou + Rally Bike - known in Japan as Dash Yarou ("Dash Rascal"), is a 1988 racing arcade game developed by Toaplan and published by Taito. +Rally Bike is a bird's eye viewed motorcycle road racing game, where the player controls a motorcycle and must cross the finish line before an established number of competitor bikes. Fuel is a major obstacle, as running out of it results in game over. Any accident will cause great reduction of fuel, and stopping to refuel will cause competitor bikes to take advantage. Competitors never run out of fuel. Game includes 6 stages, each placed in an American city (from San Francisco to New York) and 2 bonus stages. Difficulty increases progressively and new obstacles like cars, trucks, rivers and ramps come as stages advance. + 0.70 + 19880101T000000 + Toaplan + Toaplan + Race, Driving + 28 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/rallybik.png + + + + rallyxa.zip + Rally X + In Rally-X, the player drives a car around a maze picking up all of the yellow flags, of which there are ten, before the car's fuel runs out. The game-play has a similar feel to another Namco legend, "Pac-Man"; although in Rally-X, the mazes are much larger and, with each maze having only ten flags to collect, is more sparsely populated than Namco's pill-eating legend. + +In-game opponents consist of red enemy cars that try to ram into and destroy the player's car, a problem compounded by the fact that enemy cars are faster than the player's. A smoke screen can be activated which trails behind the player's car and causes any pursuing enemies to crash. Each maze also has rock formations which, if crashed into, will result in the loss of a player car. A radar display to the right hand side of the playing area shows the positions of both the flags, and the enemy vehicles. + 0.80 + 19800101T000000 + Namco + Namco + Action + 10 + 1-2 + rallyx.zip + Namco Classics + 288x224 + media/mixrbv2/rallyx.png + + + + rallyx.zip + Rally X (32k Ver.?) + In Rally-X, the player drives a car around a maze picking up all of the yellow flags, of which there are ten, before the car's fuel runs out. The game-play has a similar feel to another Namco legend, "Pac-Man"; although in Rally-X, the mazes are much larger and, with each maze having only ten flags to collect, is more sparsely populated than Namco's pill-eating legend. + +In-game opponents consist of red enemy cars that try to ram into and destroy the player's car, a problem compounded by the fact that enemy cars are faster than the player's. A smoke screen can be activated which trails behind the player's car and causes any pursuing enemies to crash. Each maze also has rock formations which, if crashed into, will result in the loss of a player car. A radar display to the right hand side of the playing area shows the positions of both the flags, and the enemy vehicles. + 0.80 + 19800101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/rallyx.png + + + + rallyxm.zip + Rally X (Midway) + In Rally-X, the player drives a car around a maze picking up all of the yellow flags, of which there are ten, before the car's fuel runs out. The game-play has a similar feel to another Namco legend, "Pac-Man"; although in Rally-X, the mazes are much larger and, with each maze having only ten flags to collect, is more sparsely populated than Namco's pill-eating legend. + +In-game opponents consist of red enemy cars that try to ram into and destroy the player's car, a problem compounded by the fact that enemy cars are faster than the player's. A smoke screen can be activated which trails behind the player's car and causes any pursuing enemies to crash. Each maze also has rock formations which, if crashed into, will result in the loss of a player car. A radar display to the right hand side of the playing area shows the positions of both the flags, and the enemy vehicles. + 0.80 + 19800101T000000 + Namco + Namco + Action + 10 + 1-2 + rallyx.zip + Namco Classics + 288x224 + media/mixrbv2/rallyx.png + + + + rallyxmr.zip + Rally X (Model Racing) + In Rally-X, the player drives a car around a maze picking up all of the yellow flags, of which there are ten, before the car's fuel runs out. The game-play has a similar feel to another Namco legend, "Pac-Man"; although in Rally-X, the mazes are much larger and, with each maze having only ten flags to collect, is more sparsely populated than Namco's pill-eating legend. + +In-game opponents consist of red enemy cars that try to ram into and destroy the player's car, a problem compounded by the fact that enemy cars are faster than the player's. A smoke screen can be activated which trails behind the player's car and causes any pursuing enemies to crash. Each maze also has rock formations which, if crashed into, will result in the loss of a player car. A radar display to the right hand side of the playing area shows the positions of both the flags, and the enemy vehicles. + 0.80 + 19800101T000000 + Namco + Namco + Action + 10 + 1-2 + rallyx.zip + Namco Classics + 288x224 + media/mixrbv2/rallyx.png + + + + ikariram.zip + Rambo 3 (bootleg of Ikari, Joystick hack) + Ikari Warriors is a vertically-scrolling run 'n' gun shoot-em-up in which one or two players take on the roles of two bandana-wearing musclebound soldiers as they engage in jungle warfare, fighting over land and water to reach the village of Ikari. + +Players can rotate their guns through 360 degrees, allowing them to fire and move in all directions. Standing between the soldiers and their destination is a multitude of enemy soldiers, tanks, helicopters and reinforced bunkers. + +The enemy soldiers utilise a number of different weapons, including machine-guns, grenades, super grenades and flame-throwers. The game's standard enemy troops wear blue uniforms, but there are also enemies in red uniforms that when killed, often drop power-ups that either give players more ammunition, increase the power of bullets and grenades or even kill all enemies on the screen. The players' munitions are limited in number so additional ammo and grenades must to be picked up along the way. + +While most of the action takes place on foot, unoccupied enemy tanks can be found that can be entered and driven. Tanks offer increased firepower as well as resistance to enemy shots. Too many enemy hits, however, will eventually see the tank explode, this is proceeded by a warning flash to allow the player to exit the tank before the explosion. Should the player be caught inside when the tank explodes, a life is lost. Tanks also have a limited amount of fuel but extra fuel can be found to replenish it. + +Another obstacle that players need to be wary of, whether on foot or in a tank, are hidden land-mines. These cannot initially be seen put will appear and flash as the player approaches. These cannot be destroyed and contact with them results in an instant death. + +Unlike most arcade games, Ikari Warriors is not separated into different stages; the game takes place over one huge, scrolling stage. Ikari Warriors does have a continue feature, but it's only possible to continue from where the last game ended by first holding down the FIRE button, then pressing the start button. Simply pressing the start button restarts the game from the very beginning. + 0.90 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + ikari.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/ikari.png + + + + rambo3.zip + Rambo III (Europe) + Rambo III is a series of video games based on the film of the same name. Like in the film, their main plots center on former Vietnam-era Green Beret John Rambo being called back to duty one last time to rescue his former commander, Colonel Sam Trautman, who was captured during a covert operation mission in Soviet Union-controlled Afghanistan. The console versions are developed and published by Sega, the PC DOS version was developed by Ocean and published by Taito and Ocean developed and published the rest (Atari ST, Amiga, Spectrum, C64, Amstrad). Taito also released an arcade game based on the film. + 0.60 + 19880101T000000 + Ocean + SEGA + Shooter / 3rd person + 2899 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/rambo3.png + + + + rambo3p.zip + Rambo III (Europe, Proto?) + Rambo III is a series of video games based on the film of the same name. Like in the film, their main plots center on former Vietnam-era Green Beret John Rambo being called back to duty one last time to rescue his former commander, Colonel Sam Trautman, who was captured during a covert operation mission in Soviet Union-controlled Afghanistan. The console versions are developed and published by Sega, the PC DOS version was developed by Ocean and published by Taito and Ocean developed and published the rest (Atari ST, Amiga, Spectrum, C64, Amstrad). Taito also released an arcade game based on the film. + 0.60 + 19880101T000000 + Ocean + SEGA + Shooter / 3rd person + 2899 + 1-2 + rambo3.zip + Taito Classics + 320x224 + media/mixrbv2/rambo3.png + + + + rambo3u.zip + Rambo III (US) + Rambo III is a series of video games based on the film of the same name. Like in the film, their main plots center on former Vietnam-era Green Beret John Rambo being called back to duty one last time to rescue his former commander, Colonel Sam Trautman, who was captured during a covert operation mission in Soviet Union-controlled Afghanistan. The console versions are developed and published by Sega, the PC DOS version was developed by Ocean and published by Taito and Ocean developed and published the rest (Atari ST, Amiga, Spectrum, C64, Amstrad). Taito also released an arcade game based on the film. + 0.60 + 19880101T000000 + Ocean + SEGA + Shooter / 3rd person + 2899 + 1-2 + rambo3.zip + Taito Classics + 320x224 + media/mixrbv2/rambo3.png + + + + rampage2.zip + Rampage (Rev 2, 8/4/86) + George, Lizzy and Ralph were just ordinary Americans, until an experiment went wrong, turning them into a Gorilla, Lizard and Werewolf respectively. Following this, the three of them plan to go round destroying buildings, and up to 3 human players can join in. + +Smashing at the edges of the buildings for long enough will make them collapse. The police and military are after you, and will shoot at you, so try to destroy them (failing that, you can avoid the bullets). You will need to eat regularly, with things like plants on offer, to avoid shrinking back to being human. + 0.90 + 19860101T000000 + Bally Midway + Barcrest / Red Gaming + Adventure + 13 + 1-3 + rampage.zip + Midway Classics + 128x40 + media/mixrbv2/rampage.png + + + + rampage.zip + Rampage (Rev 3, 8/27/86) + George, Lizzy and Ralph were just ordinary Americans, until an experiment went wrong, turning them into a Gorilla, Lizard and Werewolf respectively. Following this, the three of them plan to go round destroying buildings, and up to 3 human players can join in. + +Smashing at the edges of the buildings for long enough will make them collapse. The police and military are after you, and will shoot at you, so try to destroy them (failing that, you can avoid the bullets). You will need to eat regularly, with things like plants on offer, to avoid shrinking back to being human. + 0.90 + 19860101T000000 + Bally Midway + Barcrest / Red Gaming + Adventure + 13 + 1-3 + Midway Classics + 128x40 + media/mixrbv2/rampage.png + + + + rapheroa.zip + Rapid Hero (Media Trading) + Arcadia is a vertical shooter, developed and published by NMK, which was released in Japan in 1994. Nihon Maicom Kaihatsu, simply known as NMK, is a defunct Japanese game developer. The game it's been created by some of the programmers of "Thunder Dragon 2" + 0.60 + 19940101T000000 + NMK + Shoot'em Up + 79 + 1-2 + arcadian.zip + NMK + 270 + 384x224 + media/mixrbv2/arcadian.png + + + + raphero.zip + Rapid Hero (NMK) + Arcadia is a vertical shooter, developed and published by NMK, which was released in Japan in 1994. Nihon Maicom Kaihatsu, simply known as NMK, is a defunct Japanese game developer. The game it's been created by some of the programmers of "Thunder Dragon 2" + 0.60 + 19940101T000000 + NMK + Shoot'em Up + 79 + 1-2 + arcadian.zip + NMK + 270 + 384x224 + media/mixrbv2/arcadian.png + + + + rastanu.zip + Rastan (US Rev 1) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastanua.zip + Rastan (US) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastanub.zip + Rastan (US, Earlier code base) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastan.zip + Rastan (World Rev 1) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastana.zip + Rastan (World) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastanb.zip + Rastan (World, Earlier code base) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastsaga.zip + Rastan Saga (Japan Rev 1) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastsagaa.zip + Rastan Saga (Japan Rev 1, Earlier code base) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastsagab.zip + Rastan Saga (Japan, Earlier code base) + Rastan saga known in North America simply as Rastan, is a 1987 hack and slash platform arcade game developed and published by Taito. + 0.90 + 19870101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + rastan.zip + Taito Classics + 320x240 + media/mixrbv2/rastan.png + + + + rastsag2.zip + Rastan Saga 2 (Japan) + Nastar also known as "Rastan Saga II". + +A sequel to Rastan. Defeat the monsters with various attack methods and three different weapons! + +In the land of Rastania stands a most sacred shrine called Sky Scraper. It is said that the man who rules Sky Scraper rules the Earth. An evil tribe is now trying to invade this holy place so that they might rule. To protect the shrine, a courageous young man has challenged the invaders... + 0.50 + 19880101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + nastar.zip + Taito Classics + 320x224 + media/mixrbv2/nastar.png + + + + razmataz.zip + Razzmatazz + Razzmatazz is a dial-controlled single-screen vertical shooter from Sega that only saw a very limited release of 6 machines to test locations in 1983. It can be considered a spiritual sequel to Sega's Carnival from 1980. + +The game alternates between "Tin Can Round" and "Bear Round" boards. The "Tin Can Round" is a shooting gallery similar to Carnival, where the player must shoot all the cans and bottles while fending off enemy ducks. A bonus "Duck-Frenzy Round" can be entered by racking up cans to spell out the word on the top row. The "Bear Round" involves shooting a polar bear to change its direction and guide it to eat all the fish without falling off the ice floe. + 0.50 + 19830101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/razmataz.png + + + + reactor.zip + Reactor + A 36-year-old Arcade Video Game + +Reactor © 1982 Gottlieb. + +The player controls a cursor that can move freely within a screen-sized arena, the nuclear reactor. The center contains a sun-type gravitational power source, the slowly overheating reactor core. The surrounding wall or the sun, if touched results in death. The cursor is controlled with a trackball by the player, who has to roll it fast in one direction in order to overcome the momentum of gravitation imposed by the sun. Swarms of enemy objects named after various radioactive particles float around in the reactor arena, obeying simple physical laws. These enemies can freely bounce into the walls at low speeds, have a repulsive force against each other and actively attack the player cursor. Boss types often break up into several smaller particles. + +The object is to survive the sun and walls while gaining the highest score possible. It takes a delicate touch. Rather than moving the cursor/avatar left, right, up and down as in many arcade games, it is controlled by gravity and moves freely; with the player only being able to accelerate it rather than control its movements directly. Meanwhile the enemy particles are getting so aggressive that it can get very difficult to avoid being pulled in by the sun or touching a wall. + +The basic gameplay consists of accelerating the cursor just at the right times so that it circles the reactor core with enough speed to have control via its own momentum when the enemy particles try to knock it off course, and then to place decoys and actually use the acceleration of the ball itself to knock enemies into control rods, traps or the reactor core. By pressing the primary button the player cursor can go into high power mode, providing higher repulsion of enemies and conversely higher risk to the player. + +To ease the task the player also has a certain number of decoys at their disposal. Pressing the secondary button places a decoy to attract the enemies, luring them into two traps in the corners of the screen for bonus points, into destroying reactor rods or directly into the walls to kill them. Destroying a row of reactor rods gives the player one more decoy, as well as resetting the size of the slowly swelling reactor core. + +A time limit is enforced by the slowly swelling reactor core, which limits the space to move about in the arena. Although the reactor doesn't actually melt down, the decreasing space provides for gradually increasing difficulty. After defeating the first wave of enemies, the solid reactor core changes into Vortex core, unlike the Protect core, is lethal to touch (thus making such levels significantly harder). + 0.90 + 19820101T000000 + Gottlieb + 256x240 + media/mixrbv2/reactor.png + + + + reaktor.zip + Reaktor (Track & Field conversion) + Reaktor (c) 1987 Zilec. - TECHNICAL - Main CPU : Z80 (@ 3.072 Mhz), Z80 (@ 3.579545 Mhz) Sound Chips : DAC (@ 3.579545 Mhz), SN76496 (@ 1.789772 Mhz), VLM5030 (@ 3.58 Mhz) Palette colors : 32 Players : 1 Buttons : 1 - SOURCES - Game's rom. + 0.50 + 19870101T000000 + Zilec Electronics + Zilec Electronics + Action / Breakout games + 2917 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/reaktor.png + + + + rbff1a.zip + Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision) + The fourth title of fighting Fatal Fury series. Now, you can destroy fight scene objects and the "Fatal Fury 2" fighters are back forming this list: Terry Bogard, Andy Bogard, Joe Higashi, Franco Bash, Mai Shiranui, Bob Wilson, Geese Howard, Billy Kane, Hon-Fu, Ryuji Yamazaki, Sokaku Mochizuki, Blue Mary, Kim Kaphwan, Jin Chonrei, Jin Chonshu and Duck King. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff1.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff1.png + + + + rbff1k.zip + Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release) + The fourth title of fighting Fatal Fury series. Now, you can destroy fight scene objects and the "Fatal Fury 2" fighters are back forming this list: Terry Bogard, Andy Bogard, Joe Higashi, Franco Bash, Mai Shiranui, Bob Wilson, Geese Howard, Billy Kane, Hon-Fu, Ryuji Yamazaki, Sokaku Mochizuki, Blue Mary, Kim Kaphwan, Jin Chonrei, Jin Chonshu and Duck King. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff1.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff1.png + + + + rbff1ka.zip + Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release, bug fix revision) + The fourth title of fighting Fatal Fury series. Now, you can destroy fight scene objects and the "Fatal Fury 2" fighters are back forming this list: Terry Bogard, Andy Bogard, Joe Higashi, Franco Bash, Mai Shiranui, Bob Wilson, Geese Howard, Billy Kane, Hon-Fu, Ryuji Yamazaki, Sokaku Mochizuki, Blue Mary, Kim Kaphwan, Jin Chonrei, Jin Chonshu and Duck King. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff1.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff1.png + + + + rbff1.zip + Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095)(NGH-095) + The fourth title of fighting Fatal Fury series. Now, you can destroy fight scene objects and the "Fatal Fury 2" fighters are back forming this list: Terry Bogard, Andy Bogard, Joe Higashi, Franco Bash, Mai Shiranui, Bob Wilson, Geese Howard, Billy Kane, Hon-Fu, Ryuji Yamazaki, Sokaku Mochizuki, Blue Mary, Kim Kaphwan, Jin Chonrei, Jin Chonshu and Duck King. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/rbff1.png + + + + rbff2k.zip + Real Bout Fatal Fury 2 - The Newcomers (Korean release) + SNK's Fatal Fury fighting series reaches its 7th episode bringing a lot of "innovations" and some significant changes, starting from characters: all the 20 fighters from previous game return with new artworks and battle stages completely redrawn, as well as some remodeled (or new) moves. + +The traditional fighting system comes with sensible modifications, like the removal of both "Rank System" (SSS, SS, S, AAA etc.) and ground breakable objects. The match system using 2 battle plans (foreground/background) remains semi-intact, because now some battle fields (like Cheng Sinzan's stage) uses a single plane, forcing the players to use only the basic defense to avoid attacks. + +But the main addition of this title (and the reason for subtitle "The Newcomers") are 2 new characters entering for Fatal Fury's main cast: Rick Strowd, a mysterious fighter with a particular fighting style and Li Xiangfei, a young female Chinese martial arts fighter. + + 0.95 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff2.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff2.png + + + + rbff2h.zip + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGH-2400) + SNK's Fatal Fury fighting series reaches its 7th episode bringing a lot of "innovations" and some significant changes, starting from characters: all the 20 fighters from previous game return with new artworks and battle stages completely redrawn, as well as some remodeled (or new) moves. + +The traditional fighting system comes with sensible modifications, like the removal of both "Rank System" (SSS, SS, S, AAA etc.) and ground breakable objects. The match system using 2 battle plans (foreground/background) remains semi-intact, because now some battle fields (like Cheng Sinzan's stage) uses a single plane, forcing the players to use only the basic defense to avoid attacks. + +But the main addition of this title (and the reason for subtitle "The Newcomers") are 2 new characters entering for Fatal Fury's main cast: Rick Strowd, a mysterious fighter with a particular fighting style and Li Xiangfei, a young female Chinese martial arts fighter. + + 0.95 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff2.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff2.png + + + + rbff2.zip + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGM-2400) + SNK's Fatal Fury fighting series reaches its 7th episode bringing a lot of "innovations" and some significant changes, starting from characters: all the 20 fighters from previous game return with new artworks and battle stages completely redrawn, as well as some remodeled (or new) moves. + +The traditional fighting system comes with sensible modifications, like the removal of both "Rank System" (SSS, SS, S, AAA etc.) and ground breakable objects. The match system using 2 battle plans (foreground/background) remains semi-intact, because now some battle fields (like Cheng Sinzan's stage) uses a single plane, forcing the players to use only the basic defense to avoid attacks. + +But the main addition of this title (and the reason for subtitle "The Newcomers") are 2 new characters entering for Fatal Fury's main cast: Rick Strowd, a mysterious fighter with a particular fighting style and Li Xiangfei, a young female Chinese martial arts fighter. + + 0.95 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/rbff2.png + + + + rbff2bh.zip + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (Secret Character Hack) + SNK's Fatal Fury fighting series reaches its 7th episode bringing a lot of "innovations" and some significant changes, starting from characters: all the 20 fighters from previous game return with new artworks and battle stages completely redrawn, as well as some remodeled (or new) moves. + +The traditional fighting system comes with sensible modifications, like the removal of both "Rank System" (SSS, SS, S, AAA etc.) and ground breakable objects. The match system using 2 battle plans (foreground/background) remains semi-intact, because now some battle fields (like Cheng Sinzan's stage) uses a single plane, forcing the players to use only the basic defense to avoid attacks. + +But the main addition of this title (and the reason for subtitle "The Newcomers") are 2 new characters entering for Fatal Fury's main cast: Rick Strowd, a mysterious fighter with a particular fighting style and Li Xiangfei, a young female Chinese martial arts fighter. + + 0.95 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbff2.zip + Neo-Geo + 320x224 + media/mixrbv2/rbff2.png + + + + rbffspec.zip + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special + It was the sequel of Real Bout Fatal Fury, with which sixth delivery of the series was arrived at his, in this we had 20 characters (Terry Bogard, Andy Bogard, Joe Higashi, Mai Shiranui, Tung Fu Rue, Cheng Chinzan, Laurence Blood, Wolfgang Krauser, Duck King, Kim Kaphwan, Blue Mary, Hon-Fu, Bob Wilson, Mochizuki Sokaku, Franco Bash, Ryuji Yamazaki, Jin Chonshu, Jin Chonrei, Billy Kane and Geese Howard) and their aspects are 100% remodeled. +Also, the game maintains the capacity to destroy some things of the fight zone. + 0.95 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/rbffspec.png + + + + rbffspbh.zip + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Boss Hack) + It was the sequel of Real Bout Fatal Fury, with which sixth delivery of the series was arrived at his, in this we had 20 characters (Terry Bogard, Andy Bogard, Joe Higashi, Mai Shiranui, Tung Fu Rue, Cheng Chinzan, Laurence Blood, Wolfgang Krauser, Duck King, Kim Kaphwan, Blue Mary, Hon-Fu, Bob Wilson, Mochizuki Sokaku, Franco Bash, Ryuji Yamazaki, Jin Chonshu, Jin Chonrei, Billy Kane and Geese Howard) and their aspects are 100% remodeled. +Also, the game maintains the capacity to destroy some things of the fight zone. + 0.95 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbffspec.zip + Neo-Geo + 320x224 + media/mixrbv2/rbffspec.png + + + + rbffspeck.zip + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release) + It was the sequel of Real Bout Fatal Fury, with which sixth delivery of the series was arrived at his, in this we had 20 characters (Terry Bogard, Andy Bogard, Joe Higashi, Mai Shiranui, Tung Fu Rue, Cheng Chinzan, Laurence Blood, Wolfgang Krauser, Duck King, Kim Kaphwan, Blue Mary, Hon-Fu, Bob Wilson, Mochizuki Sokaku, Franco Bash, Ryuji Yamazaki, Jin Chonshu, Jin Chonrei, Billy Kane and Geese Howard) and their aspects are 100% remodeled. +Also, the game maintains the capacity to destroy some things of the fight zone. + 0.95 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + rbffspec.zip + Neo-Geo + 320x224 + media/mixrbv2/rbffspec.png + + + + recordbr.zip + Recordbreaker (World) + Recordbreaker is an Olympic sports game from Taito. Compete in different events and go for the gold medal. + 0.50 + 19880101T000000 + Taito + Taito + Sports / Running trails + 2877 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/recordbr.png + + + + redbarona.zip + Red Baron + Red Baron is a realistic flying simulation. Your player is a World War I fighter pilot searching the skies for the enemy. The horizon shifts and tilts as he maneuvers the joystick. Three dimensional hills and valleys sweep by below. + +Suddenly out of the horizon, an enemy biplane appears. The pilot dives, climbs, lines up the plane in his sights! He fires a deadly hail of tracers and the enemy airplane tumbles to earth. + +But watch out, there are more coming. The first four planes are relatively slow. As time progresses, the player moves more quickly and the enemy planes take more evasive action, adding to the difficulty and challenge. + +Next the player faces ground targets. An observation blimp floats into view over a low rise of hills. Bright ground objects start to appear, a tank, a pill-box, then dimmer targets, a pyramid, a building. They make good targets for strafing runs but danger can appear at any time. + +As the game progresses, tanks, pill-boxes and blimps will begin shooting back. The game is composed of randomly alternating series of ground and plane phases. Finally, the planes will also shoot at the player. + +There are other dangers too. Dive too low and the player can crash and explode on a mountain. Squeeze the trigger too long and the guns overheat. And an enemy plane can get on the pilot's tail, almost certain death unless the player is a flying ace. + +When a player is hit by a returning plane, bullet holes and cracks appear on the screen, his plane plummets to earth and explodes. If an enemy shell finds its mark, the result is the same but the shell remains visible. + 0.70 + 19800101T000000 + Atari + Atari + Shooter + 2646 + 1 + redbaron.zip + Atari Classics + 640x480 + media/mixrbv2/redbaron.png + + + + redbaron.zip + Red Baron (Revised Hardware) + Red Baron is a realistic flying simulation. Your player is a World War I fighter pilot searching the skies for the enemy. The horizon shifts and tilts as he maneuvers the joystick. Three dimensional hills and valleys sweep by below. + +Suddenly out of the horizon, an enemy biplane appears. The pilot dives, climbs, lines up the plane in his sights! He fires a deadly hail of tracers and the enemy airplane tumbles to earth. + +But watch out, there are more coming. The first four planes are relatively slow. As time progresses, the player moves more quickly and the enemy planes take more evasive action, adding to the difficulty and challenge. + +Next the player faces ground targets. An observation blimp floats into view over a low rise of hills. Bright ground objects start to appear, a tank, a pill-box, then dimmer targets, a pyramid, a building. They make good targets for strafing runs but danger can appear at any time. + +As the game progresses, tanks, pill-boxes and blimps will begin shooting back. The game is composed of randomly alternating series of ground and plane phases. Finally, the planes will also shoot at the player. + +There are other dangers too. Dive too low and the player can crash and explode on a mountain. Squeeze the trigger too long and the guns overheat. And an enemy plane can get on the pilot's tail, almost certain death unless the player is a flying ace. + +When a player is hit by a returning plane, bullet holes and cracks appear on the screen, his plane plummets to earth and explodes. If an enemy shell finds its mark, the result is the same but the shell remains visible. + 0.70 + 19800101T000000 + Atari + Atari + Shooter + 2646 + 1 + Atari Classics + 640x480 + media/mixrbv2/redbaron.png + + + + redclash.zip + Red Clash + You pilot a space ship that can move in all four directions, but only fires straight up in the direction you are scrolling, through space or vertical canyons. Flying saucers and other space meanies rain down upon you in criss-crossing formations. Screen level is a cat symbol. + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + Kaneko + 270 + 240x192 + media/mixrbv2/redclash.png + + + + redclashs.zip + Red Clash (Suntronics) + You pilot a space ship that can move in all four directions, but only fires straight up in the direction you are scrolling, through space or vertical canyons. Flying saucers and other space meanies rain down upon you in criss-crossing formations. Screen level is a cat symbol. + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + redclash.zip + Kaneko + 270 + 240x192 + media/mixrbv2/redclash.png + + + + redclasht.zip + Red Clash (Tehkan, set 1) + You pilot a space ship that can move in all four directions, but only fires straight up in the direction you are scrolling, through space or vertical canyons. Flying saucers and other space meanies rain down upon you in criss-crossing formations. Screen level is a cat symbol. + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + redclash.zip + Kaneko + 270 + 240x192 + media/mixrbv2/redclash.png + + + + redclashta.zip + Red Clash (Tehkan, set 2) + You pilot a space ship that can move in all four directions, but only fires straight up in the direction you are scrolling, through space or vertical canyons. Flying saucers and other space meanies rain down upon you in criss-crossing formations. Screen level is a cat symbol. + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + redclash.zip + Kaneko + 270 + 240x192 + media/mixrbv2/redclash.png + + + + redhawke.zip + Red Hawk (Excellent Co., Ltd) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawkb.zip + Red Hawk (horizontal, bootleg) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawkg.zip + Red Hawk (horizontal, Greece) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawki.zip + Red Hawk (horizontal, Italy) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawks.zip + Red Hawk (horizontal, Spain, set 1) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawksa.zip + Red Hawk (horizontal, Spain, set 2) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawkk.zip + Red Hawk (Korea) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redhawk.zip + Red Hawk (USA, Canada & South America) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + stagger1.zip + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + redrobin.zip + Red Robin + A side-scrolling game in the style of Super Mario Bros., you clear a board by collecting jewellery and other valuables. Watch out for obstacles and other items looking to take you out! + 0.30 + 19860101T000000 + Elettronolo + Elettronolo + Platform / Run Jump Scrolling + 2897 + 1-2 + Kaneko + 270 + 256x224 + media/mixrbv2/redrobin.png + + + + reguluso.zip + Regulus (315-5033) + The Player Tank enters in to the "Mechanical Animal Zone" which is full of mystery... there is no returning. While advancing through the various spectacular scenes, the Player Tank encounters the unbelievably fierce attack of the "Mechanical Animal Corps". The enemy's enormous fortress suddenly appears! This is an adventure science fiction game. + 0.50 + 19830101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + regulus.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/regulus.png + + + + regulus.zip + Regulus (315-5033, rev. A) + The Player Tank enters in to the "Mechanical Animal Zone" which is full of mystery... there is no returning. While advancing through the various spectacular scenes, the Player Tank encounters the unbelievably fierce attack of the "Mechanical Animal Corps". The enemy's enormous fortress suddenly appears! This is an adventure science fiction game. + 0.50 + 19830101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/regulus.png + + + + regulusu.zip + Regulus (not encrypted) + The Player Tank enters in to the "Mechanical Animal Zone" which is full of mystery... there is no returning. While advancing through the various spectacular scenes, the Player Tank encounters the unbelievably fierce attack of the "Mechanical Animal Corps". The enemy's enormous fortress suddenly appears! This is an adventure science fiction game. + 0.50 + 19830101T000000 + SEGA + SEGA + Shooter / Vehicle, Vertical + 2921 + 1-2 + regulus.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/regulus.png + + + + relief.zip + Relief Pitcher (set 1, 07 Jun 1992 / 28 May 1992) + A baseball game with an option of playing a standard baseball game or playing as a relief pitcher through a series of games. + 0.50 + 19920101T000000 + Atari + Atari + Sports / Baseball + 2853 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/relief.png + + + + relief2.zip + Relief Pitcher (set 2, 26 Apr 1992 / 08 Apr 1992) + A baseball game with an option of playing a standard baseball game or playing as a relief pitcher through a series of games. + 0.50 + 19920101T000000 + Atari + Atari + Sports / Baseball + 2853 + 1-2 + relief.zip + Atari Classics + 336x240 + media/mixrbv2/relief.png + + + + relief3.zip + Relief Pitcher (set 3, 10 Apr 1992 / 08 Apr 1992) + A baseball game with an option of playing a standard baseball game or playing as a relief pitcher through a series of games. + 0.50 + 19920101T000000 + Atari + Atari + Sports / Baseball + 2853 + 1-2 + relief.zip + Atari Classics + 336x240 + media/mixrbv2/relief.png + + + + renegadeb.zip + Renegade (US bootleg) + Classic arcade beat-em-up that would get many ports done for other systems. Pioneered gameplay elements which would become the foundations of the scrolling beat 'em up genre. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + renegade.zip + Taito Classics + 240x240 + media/mixrbv2/renegade.png + + + + renegade.zip + Renegade (US) + Classic arcade beat-em-up that would get many ports done for other systems. Pioneered gameplay elements which would become the foundations of the scrolling beat 'em up genre. + 0.50 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Beat'em Up + 1 + 1-2 + Taito Classics + 240x240 + media/mixrbv2/renegade.png + + + + repulse.zip + Repulse + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + rescue.zip + Rescue + The player pilots a rescue helicopter and must try to rescue numerous airmen who have parachuted into the sea below. The rescue chopper is under constant attack from enemy helicopters, while sharks swim in the ocean below and will kill any floating airmen they come across. Later levels also have enemy subs and ships all intent on foiling the rescue mission. Players must be careful to avoid the falling wreckage of any enemy helicopters they have just destroyed, and also need to be wary of hitting any parachuting airmen with their 'copter blades, as this will kill the airmen instantly. + +In a very similar vein to Williams' legendary "Robotron", also released in '82, the rescue chopper is armed with a gun that can fire in eight different directions, irrespective of the direction the rescue chopper is flying in. In addition to the eight-way gun, the 'copter can also drop missiles from its underside, which is essential for destroying enemy subs and ships. + +To complete a stage, players must pick up a set number of fallen airmen from the sea (determined at the start of each level) and deposit them safely onto a nearby island. + 0.50 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Plane + 2928 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/rescue.png + + + + retofinv.zip + Return of the Invaders + Return of the Invaders is a full colour update of the legendary original; featuring challenge stages and circling aliens. Return of the Invaders, while playable enough in its own right, would be vastly improved upon by its sequel, "Super Space Invaders '91", released five years' later. + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 288x224 + media/mixrbv2/retofinv.png + + + + retofinvb1.zip + Return of the Invaders (bootleg no MCU set 1) + Return of the Invaders is a full colour update of the legendary original; featuring challenge stages and circling aliens. Return of the Invaders, while playable enough in its own right, would be vastly improved upon by its sequel, "Super Space Invaders '91", released five years' later. + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + retofinv.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/retofinv.png + + + + retofinvb2.zip + Return of the Invaders (bootleg no MCU set 2) + Return of the Invaders is a full colour update of the legendary original; featuring challenge stages and circling aliens. Return of the Invaders, while playable enough in its own right, would be vastly improved upon by its sequel, "Super Space Invaders '91", released five years' later. + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + retofinv.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/retofinv.png + + + + retofinvb3.zip + Return of the Invaders (bootleg no MCU set 3) + Return of the Invaders is a full colour update of the legendary original; featuring challenge stages and circling aliens. Return of the Invaders, while playable enough in its own right, would be vastly improved upon by its sequel, "Super Space Invaders '91", released five years' later. + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + retofinv.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/retofinv.png + + + + retofinvb.zip + Return of the Invaders (bootleg w/MCU) + Return of the Invaders is a full colour update of the legendary original; featuring challenge stages and circling aliens. Return of the Invaders, while playable enough in its own right, would be vastly improved upon by its sequel, "Super Space Invaders '91", released five years' later. + 0.70 + 19850101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + retofinv.zip + Taito Classics + 270 + 288x224 + media/mixrbv2/retofinv.png + + + + jedi.zip + Return of the Jedi + Return of the Jedi is a scrolling shoot-em-up based on the legendary Star Wars trilogy (specifically, the third film, 'Episode VI: Return of the Jedi') and - unlike its vector-based prequel - is rendered in an isometric forced-perspective viewpoint, similar to that pioneered in Sega's 1982 classic, "Zaxxon". + +The ultimate aim of the game is to reach and destroy the Death Star and escape alive. Success is achieved by surviving an 'attack wave', which consists of four different scenes. Play switches between Endor and space-based scenes, with each one putting the player in control of a different vehicle from the movie. + +The scenes are based on three distinct locations taken from the original movie. They are: The forest moon of Endor, Attack on the Death Star, and Space battle. + +SCENE 1: Speeder Bike chase on Endor as Princess Leia. The goal is to reach the Ewok village alive. +SCENE 2: Scout Walker chase on Endor as Chewbacca. The goal is to reach the shield generator. +SCENE 3: Millennium Falcon attack on Death Star as Lando. The goal is to reach and destroy the Death Star power reactor. +SCENE 4: Millennium Falcon escape from exploding Death Star. The goal is to escape the exploding Death Star. +SPLIT SCENE: Play switches between scenes 2 and 3. + +The scenes loop for as long as the player has lives remaining; although to increase variety, the order in which they appear is randomised as play progresses. Each successive wave increases in difficulty. + 0.70 + 19840101T000000 + Atari + Atari + Shooter / Vehicle, Diagonal + 2934 + 1 + Atari Classics + 296x240 + media/mixrbv2/jedi.png + + + + revngr84.zip + Revenger '84 (set 1) + 19840101T000000 + Action + 10 + Mame + 270 + 272x236 + media/mixrbv2/revngr84.png + + + + revenger.zip + Revenger '84 (set 2) + 19840101T000000 + Action + 10 + revngr84.zip + Mame + 270 + 272x236 + media/mixrbv2/revngr84.png + + + + rezon.zip + Rezon + A reasonably playable, if wholly unremarkable sideways-scrolling shoot-em-up that unashamedly rips off Irem's legendary "R?Type". Unfortunately, Rezon lacks any of R?Type's innovations in either level design or the weapons available to the player. One attribute it does share with the Irem classic, however, is that it is extremely difficult. + 0.70 + 19910101T000000 + Allumer + Allumer + Shoot'em Up + 79 + 1-2 + Seta + 384x240 + media/mixrbv2/rezon.png + + + + rezont.zip + Rezon (Taito) + A reasonably playable, if wholly unremarkable sideways-scrolling shoot-em-up that unashamedly rips off Irem's legendary "R?Type". Unfortunately, Rezon lacks any of R?Type's innovations in either level design or the weapons available to the player. One attribute it does share with the Irem classic, however, is that it is extremely difficult. + 0.70 + 19910101T000000 + Allumer + Allumer + Shoot'em Up + 79 + 1-2 + rezon.zip + Seta + 384x240 + media/mixrbv2/rezon.png + + + + ribbit.zip + Ribbit! + Ribbit! is a one or co-operative two-player abstract arcade game and is an unofficial sequel to Konami's seminal 1981 release, "Frogger". + +Unlike its legendary prequel (in which players had to guide a frog to his home at top of each screen without being killed) the aim here is to guide a toad around a screen, eating benign insects - such as Ants and Dragon-flies - while avoiding harmful ones - such as Spiders and Rats. A level is only complete once a set amount of insects have been eaten. + 0.70 + 19910101T000000 + SEGA + Action + 10 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/ribbit.png + + + + ribbitj.zip + Ribbit! (Japan) + Ribbit! is a one or co-operative two-player abstract arcade game and is an unofficial sequel to Konami's seminal 1981 release, "Frogger". + +Unlike its legendary prequel (in which players had to guide a frog to his home at top of each screen without being killed) the aim here is to guide a toad around a screen, eating benign insects - such as Ants and Dragon-flies - while avoiding harmful ones - such as Spiders and Rats. A level is only complete once a set amount of insects have been eaten. + 0.70 + 19910101T000000 + SEGA + Action + 10 + 1-2 + ribbit.zip + Sega Classics + 256x224 + media/mixrbv2/ribbit.png + + + + ridleofp.zip + Riddle of Pythagoras (Japan) + Bounce a ball around the screen to eliminate blocks and score points. Deflect the ball using your paddle. + + + 0.50 + 19860101T000000 + SEGA + SEGA + Action / Breakout games + 2917 + 1 + Sega Classics + 270 + 256x192 + media/mixrbv2/ridleofp.png + + + + ridhero.zip + Riding Hero (NGM-006)(NGH-006) + Riding Hero is a motorcycle racing game with three modes of play: W.G.P. mode, R.P.G. (Story) mode, and Multi-Play mode. + +In W.G.P mode, you pick your bike that you want to use, and then race up to ten world circuits, including France, Germany, Italy, U.S.A, Spain, Sweden, and more. You race against the top riders. Try to aim for the top. + +R.P.G. mode is interactive. You travel between locations, and explore them, and speak to any people here. You start with no bike, so you must go to the Bike Shop and purchase one. Then with some help with the owner, you can race against up to six opponents. The more races you win, the more money you earn. Keep winning and you will be able to race the Suzuki 8-hour. During this mode, a timer will count down. If this expires, you must insert a coin in order to continue. + +Multi-Play mode lets you "link" cabinets together so that two players can race each other side-by-side. + 0.90 + 19900101T000000 + SNK + SNK + Motorcycle Race, 3rd Pers. + 2871 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ridhero.png + + + + ridheroh.zip + Riding Hero (set 2) + Riding Hero is a motorcycle racing game with three modes of play: W.G.P. mode, R.P.G. (Story) mode, and Multi-Play mode. + +In W.G.P mode, you pick your bike that you want to use, and then race up to ten world circuits, including France, Germany, Italy, U.S.A, Spain, Sweden, and more. You race against the top riders. Try to aim for the top. + +R.P.G. mode is interactive. You travel between locations, and explore them, and speak to any people here. You start with no bike, so you must go to the Bike Shop and purchase one. Then with some help with the owner, you can race against up to six opponents. The more races you win, the more money you earn. Keep winning and you will be able to race the Suzuki 8-hour. During this mode, a timer will count down. If this expires, you must insert a coin in order to continue. + +Multi-Play mode lets you "link" cabinets together so that two players can race each other side-by-side. + 0.90 + 19900101T000000 + SNK + SNK + Motorcycle Race, 3rd Pers. + 2871 + 1-2 + ridhero.zip + Neo-Geo + 320x224 + media/mixrbv2/ridhero.png + + + + ringfgt.zip + Ring Fighter (set 1) + VS Gong Fight es un juego de boxeo arcade, que fue lanzado por Kaneko en 1984 y licenciado a Taito Corporation para su fabricación y distribución en los Estados Unidos, bajo el nombre de Ring Fighter. Los jugadores deben usar un joystick de 4 vías para tomar el control de un boxeador (1P's usa guantes azules, baúles y botas, pero 2P's usa guantes rojos), con dos botones para hacerlos golpear y bloquear - y si sólo un jugador está jugando el juego, 2P's boxer será controlado por la CPU y silueteado en negro. Los niveles de energía de ambos boxeadores se muestran en las esquinas superior izquierda y superior derecha de la pantalla, con sus niveles de "daño" en las esquinas inferior izquierda y inferior derecha de la pantalla; el número de la ronda actual y su tiempo restante también se muestran en el centro superior de la pantalla. Al igual que en el boxeo real, tienes que golpear a tu oponente antes de que se acabe el tiempo, para proceder a la siguiente ronda - y una vez que lo hayas hecho, tendrás que enfrentarte a otro oponente de la CPU, o se acabará el juego para el perdedor. + 0.30 + 19840101T000000 + Kaneko + Kaneko + Sports / Boxing + 2929 + 1-2 + vsgongf.zip + Kaneko + 270 + 256x240 + media/mixrbv2/vsgongf.png + + + + ringfgt2.zip + Ring Fighter (set 2) + VS Gong Fight es un juego de boxeo arcade, que fue lanzado por Kaneko en 1984 y licenciado a Taito Corporation para su fabricación y distribución en los Estados Unidos, bajo el nombre de Ring Fighter. Los jugadores deben usar un joystick de 4 vías para tomar el control de un boxeador (1P's usa guantes azules, baúles y botas, pero 2P's usa guantes rojos), con dos botones para hacerlos golpear y bloquear - y si sólo un jugador está jugando el juego, 2P's boxer será controlado por la CPU y silueteado en negro. Los niveles de energía de ambos boxeadores se muestran en las esquinas superior izquierda y superior derecha de la pantalla, con sus niveles de "daño" en las esquinas inferior izquierda y inferior derecha de la pantalla; el número de la ronda actual y su tiempo restante también se muestran en el centro superior de la pantalla. Al igual que en el boxeo real, tienes que golpear a tu oponente antes de que se acabe el tiempo, para proceder a la siguiente ronda - y una vez que lo hayas hecho, tendrás que enfrentarte a otro oponente de la CPU, o se acabará el juego para el perdedor. + 0.30 + 19840101T000000 + Kaneko + Kaneko + Sports / Boxing + 2929 + 1-2 + vsgongf.zip + Kaneko + 270 + 256x240 + media/mixrbv2/vsgongf.png + + + + ringking.zip + Ring King (US set 1) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + kingofb.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + ringking2.zip + Ring King (US set 2) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + kingofb.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + ringking3.zip + Ring King (US set 3) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + kingofb.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + ringkingw.zip + Ring King (US, Wood Place Inc.) + Ring King is a boxing game in which the action in the ring is viewed in a 3D top-down view and a full range of moves is provided, with the standard jabs complimented by body punches and the ability to dodge, duck or raise your guard. Each punch... + 0.70 + 19850101T000000 + Wood Place + Data East + Sports + 685 + kingofb.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kingofb.png + + + + ringohja.zip + Ring no Ohja (Japan 2 Players ver. N) + A wrestling game in which you select 2 wrestlers from a choice of 8 and compete in tag-team battles. + 0.50 + 19880101T000000 + Konami + Konami + Sports / Wrestling + 2861 + 1-4 + mainevt.zip + Konami Classics + 288x224 + media/mixrbv2/mainevt.png + + + + ringdesta.zip + Ring of Destruction - slammasters II (940831 Asia) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + ringdestb.zip + Ring of Destruction - slammasters II (940902 Brazil) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + ringdstd.zip + Ring of Destruction - slammasters II (940902 Euro Phoenix Edition) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + ringdest.zip + Ring of Destruction - slammasters II (940902 Euro) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + ringdesth.zip + Ring of Destruction - slammasters II (940902 Hispanic) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + riot.zip + Riot + Play as Paul or Bobby in this side-scrolling beat 'em up from Sega and Westone. + 0.50 + 19920101T000000 + Tecmo + NMK + Shooter / 3rd person + 2899 + 1-2 + NMK + 256x224 + media/mixrbv2/riot.png + + + + riotw.zip + Riot (Woong Bi license) + Play as Paul or Bobby in this side-scrolling beat 'em up from Sega and Westone. + 0.50 + 19920101T000000 + Tecmo + NMK + Shooter / 3rd person + 2899 + 1-2 + riot.zip + NMK + 256x224 + media/mixrbv2/riot.png + + + + riotcity.zip + Riot City (Japan) + Riot City is a side-scrolling beat-em-up for one or two players who take on the roles of 'Paul' or 'Bobby', two talented fighters who are given the task of breaking a drug syndicate known as "MID". It has also been discovered that Paul's girlfriend has been kidnapped by the syndicate and must be rescued. + +MID's hideout is located on Riot Island, an island full of abandoned, run-down buildings that has since become a slum. Locations include apartments, a hospital, a factory and a casino. + 0.50 + 19910101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/riotcity.png + + + + riskchal.zip + Risky Challenge + Manipulate the blocks and guide the character walking around freely to the exit while protecting it from obstacles such as enemies. + 0.70 + 19930101T000000 + Irem + Irem + Puzzle-Game / Fall + 2912 + 1-2 + Irem Classics + 320x240 + media/mixrbv2/riskchal.png + + + + rpatrolb.zip + River Patrol (bootleg) + You are the captain of a river patrol ship in this top-down game. Your mission: To save the poor souls who fell into the river. But it is not that easy, in your way lays some big boulders, crocodiles and some tree logs, all waiting to sink your vessel. + 0.60 + 19810101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + rpatrol.zip + Nichibutsu + 256x224 + media/mixrbv2/rpatrol.png + + + + rpatrol.zip + River Patrol (Japan) + You are the captain of a river patrol ship in this top-down game. Your mission: To save the poor souls who fell into the river. But it is not that easy, in your way lays some big boulders, crocodiles and some tree logs, all waiting to sink your vessel. + 0.60 + 19810101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/rpatrol.png + + + + rpatroln.zip + River Patrol (Japan, unprotected) + You are the captain of a river patrol ship in this top-down game. Your mission: To save the poor souls who fell into the river. But it is not that easy, in your way lays some big boulders, crocodiles and some tree logs, all waiting to sink your vessel. + 0.60 + 19810101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + rpatrol.zip + Nichibutsu + 256x224 + media/mixrbv2/rpatrol.png + + + + roadf.zip + Road Fighter (set 1) + Road Fighter is an exhilarating, high-speed scrolling racing game. + +A unique characteristic of Road Fighter is the fact that bumping into an enemy car does not count as a miss. The counter-steering technique required to 'straighten' your car after bumping into an enemy provided a new level of racing game fun to fans. + 0.50 + 19840101T000000 + Konami + Konami + Race, Driving / Race + 2924 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/roadf.png + + + + roadf2.zip + Road Fighter (set 2) + Road Fighter is an exhilarating, high-speed scrolling racing game. + +A unique characteristic of Road Fighter is the fact that bumping into an enemy car does not count as a miss. The counter-steering technique required to 'straighten' your car after bumping into an enemy provided a new level of racing game fun to fans. + 0.50 + 19840101T000000 + Konami + Konami + Race, Driving / Race + 2924 + 1-2 + roadf.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/roadf.png + + + + roadf3.zip + Road Fighter (set 3, conversion hack on Hyper Sports PCB) + Road Fighter is an exhilarating, high-speed scrolling racing game. + +A unique characteristic of Road Fighter is the fact that bumping into an enemy car does not count as a miss. The counter-steering technique required to 'straighten' your car after bumping into an enemy provided a new level of racing game fun to fans. + 0.50 + 19840101T000000 + Konami + Konami + Race, Driving / Race + 2924 + 1-2 + roadf.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/roadf.png + + + + roboarmy.zip + Robo Army (set 1) + A mad scientist decides to create an army of robots to destroy the city, capture all the citizens, and use their brains for more robots to take over the world. You control one of two robots who use its fists and special attacks to take on the army throughout a jungle stage and various buildings in the destroyed city. Robots and robot dogs sometimes leave arms or metal bars that can be used as weapons. At the end of each area, you need to defeat a boss in order to proceed to the next area. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/roboarmy.png + + + + roboarmya.zip + Robo Army (set 2) + A mad scientist decides to create an army of robots to destroy the city, capture all the citizens, and use their brains for more robots to take over the world. You control one of two robots who use its fists and special attacks to take on the army throughout a jungle stage and various buildings in the destroyed city. Robots and robot dogs sometimes leave arms or metal bars that can be used as weapons. At the end of each area, you need to defeat a boss in order to proceed to the next area. + 0.70 + 19910101T000000 + SNK + SNK + Beat'em Up + 1 + 1-2 + roboarmy.zip + Neo-Geo + 320x224 + media/mixrbv2/roboarmy.png + + + + robowres.zip + Robo Wres 2001 + Robo Wres 2001 is a robot wrestling game. + 0.30 + 19860101T000000 + Sanritsu Denki + Sanritsu Denki + Sports / Wrestling + 2861 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/robowres.png + + + + robocopi.zip + Robocop (FMV Demo) + Neo-Geo + media/mixrbv2/robocopi.png + + + robotron87.zip + Robotron: 2084 (1987 'shot-in-the-corner' bugfix) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + robotron.zip + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + robotron12.zip + Robotron: 2084 (2012 'wave 201 start' hack) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + robotron.zip + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + robotrontd.zip + Robotron: 2084 (2015 'tie-die V2' hack) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + robotron.zip + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + robotron.zip + Robotron: 2084 (Solid Blue label) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + robotronun.zip + Robotron: 2084 (Unidesa license) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + robotron.zip + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + robotronyo.zip + Robotron: 2084 (Yellow/Orange label) + +Set in the year 2084, Robotron is a single-screen shoot-em-up in which super-intelligent self-aware robots known as 'Robotrons' - designed and built to help mankind - have revolted against their creators and vowed to either reprogram the humans into Robotrons or, failing this, wipe-out the human race entirely. + +The player must destroy the robots and rescue the Earth's remaining human families. The player's only weapon is a multi-directional Anti-Robot Laser Gun. Used effectively, it will give players the power to destroy all the Robot waves, with the exception of the indestructible 'Hulk' unit. + +At the start of the attack wave, players will have three chances to wipe out the enemy and advance to the next wave. Every 25,000 points players are granted another chance to complete their mission. + +MAN, WOMAN, CHILD: These are the only three types of human clones left on Earth. Defenseless and easy prey to the Robots, they are totally dependent upon players for their survival and will wander aimlessly until the player makes contact with them. Touching them will place them under the player's protective powers and earn them the following points: 1,000 for rescuing the 1st human; 2,000 for the 2nd: 3,000 for the 3rd; 4,000 for the 4th; 5,000 for the 5th; and 5,000 for every additional human saved. At the beginning of each new wave and when the player loses a turn, rescue scoring will again begin at 1,000. + + + 0.90 + 19820101T000000 + Vid Kidz + Vid Kidz + Shooter + 2646 + 1-2 + robotron.zip + Midway Classics + 292x240 + media/mixrbv2/robotron.png + + + + rocnrope.zip + Roc'n Rope + Roc'n Rope is an incredibly difficult yet playable platform game featuring four different levels. The player takes on the role of a an archaeologist whose mission is to return the missing tail feathers to the golden Phoenix. The archaeologist is armed with a harpoon gun and uses it to fire a rope into a platform above, in order to climb up the rope and progress up the level. This is vaguely similar to the superb 'telescopic arm' feature that appeared in Capcom's superb "Bionic Commando". + +All levels are patrolled by enemies in the form of dinosaurs and cavemen and all are deadly to the touch. Some cavemen will pull on the harpoon rope while the archaeologist is climbing it. This will result in the player falling from the rope and losing a life. The archaeologist is armed with a light ray that will kill the enemies. + +A breakdown of the game's four levels: + +The first level is possibly the most difficult in the game. Players begin at the bottom left of the screen and must work their way up to the Roc, who is sitting at the upper right of the screen. There are many layers of ledges coming out from the sides of the screen. While the middle of the screen is open to the sky (except for a few floating platforms). To reach the top, players must use the harpoon gun to climb diagonally back and forth until they reach the top (ensuring that the Phoenix feathers have been collected on the way). +The second level is set underground. There are a lot of dinosaurs on this screen and far fewer platforms than on the first level. Many of the platforms stretch completely across the screen, so there aren't many pitfalls to be wary of. Once again, players must get the archaeologist to the top of the screen to complete the level. +The third level is set outdoors. A 'ferris wheel' style rotating platform sits in the center of the screen, but this can be avoided if players don't wish to use it. The easiest route to the top is on the right-hand side of the level. +The fourth and final level is shaped a little like a mountain. The player's main concern here is a large waterfall in the center of the screen. Players must time their harpoon climb just right to avoid being killed by the deadly waters. Once this level is finished, the game starts over with an increased level of difficulty. + 0.90 + 19830101T000000 + Konami + Konami + Platform / Run Jump + 2915 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/rocnrope.png + + + + rocnropek.zip + Roc'n Rope (Kosuka) + Roc'n Rope is an incredibly difficult yet playable platform game featuring four different levels. The player takes on the role of a an archaeologist whose mission is to return the missing tail feathers to the golden Phoenix. The archaeologist is armed with a harpoon gun and uses it to fire a rope into a platform above, in order to climb up the rope and progress up the level. This is vaguely similar to the superb 'telescopic arm' feature that appeared in Capcom's superb "Bionic Commando". + +All levels are patrolled by enemies in the form of dinosaurs and cavemen and all are deadly to the touch. Some cavemen will pull on the harpoon rope while the archaeologist is climbing it. This will result in the player falling from the rope and losing a life. The archaeologist is armed with a light ray that will kill the enemies. + +A breakdown of the game's four levels: + +The first level is possibly the most difficult in the game. Players begin at the bottom left of the screen and must work their way up to the Roc, who is sitting at the upper right of the screen. There are many layers of ledges coming out from the sides of the screen. While the middle of the screen is open to the sky (except for a few floating platforms). To reach the top, players must use the harpoon gun to climb diagonally back and forth until they reach the top (ensuring that the Phoenix feathers have been collected on the way). +The second level is set underground. There are a lot of dinosaurs on this screen and far fewer platforms than on the first level. Many of the platforms stretch completely across the screen, so there aren't many pitfalls to be wary of. Once again, players must get the archaeologist to the top of the screen to complete the level. +The third level is set outdoors. A 'ferris wheel' style rotating platform sits in the center of the screen, but this can be avoided if players don't wish to use it. The easiest route to the top is on the right-hand side of the level. +The fourth and final level is shaped a little like a mountain. The player's main concern here is a large waterfall in the center of the screen. Players must time their harpoon climb just right to avoid being killed by the deadly waters. Once this level is finished, the game starts over with an increased level of difficulty. + 0.90 + 19830101T000000 + Konami + Konami + Platform / Run Jump + 2915 + 1-2 + rocnrope.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/rocnrope.png + + + + rockclim.zip + Rock Climber + You control a guy who attempts to climb a rock. + + 0.50 + 19810101T000000 + Action + 10 + Taito Classics + 256x224 + media/mixrbv2/rockclim.png + + + + rockduck.zip + Rock Duck (prototype?) + Rock Duck (c) 1983 Datel. - TECHNICAL - Main CPU : M6502 (@ 1.5 Mhz) Sound Chips : (2x) AY8910 (@ 1.5 Mhz) Palette colors : 8 Players : 2 Buttons : 1 - SOURCES - Game's rom. + 0.50 + 19830101T000000 + Datel SAS + Datel SAS + Action + 10 + 1-2 + Technos + 270 + 240x240 + media/mixrbv2/rockduck.png + + + + rocktris.zip + Rock Tris + 0.50 + 19940101T000000 + Yun Sung + Yun Sung + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 384x240 + media/mixrbv2/rocktris.png + + + + rockn3.zip + Rock'n 3 (Japan) + The third game in Jaleco's Rock'n series of rhythm games. + +The player presses a tilting "pick switch" in time with the instrument (selectable from guitar, bass, and keyboard) while simultaneously pressing a foot pedal in time with the drums. In MAME, this is emulated as simply pressing two buttons. + 0.70 + 19990101T000000 + Jaleco + Jaleco + Music and Dance + 425 + 1 + Jaleco + 270 + 320x224 + media/mixrbv2/rockn3.png + + + + rockn4.zip + Rock'n 4 (Japan, prototype) + The fourth mainline game in Jaleco's Rock'n series of rhythm games, released after the two-player Rock'n MegaSession and before the sole home console release, Rock'n MegaStage. + +The player presses a tilting "pick switch" in time with the instrument (selectable from guitar, bass, and keyboard) while simultaneously pressing a foot pedal in time with the drums. In MAME, this is emulated as simply pressing two buttons. + +This was the final arcade release in the Rock'n series due to Jaleco settling a lawsuit from Konami over the games' similarity to the beatmania series, forcing them to withdraw all boards from the arcade market. + 0.70 + 20000101T000000 + Jaleco + Jaleco + Music and Dance + 425 + 1 + Jaleco + 270 + 320x224 + media/mixrbv2/rockn4.png + + + + rockragea.zip + Rock'n Rage (prototype?) + Two rock stars must battle through 5 stages battling enemies from different time periods. + 0.50 + 19860101T000000 + Konami + Konami + Action + 10 + 1-2 + rockrage.zip + Konami Classics + 256x224 + media/mixrbv2/rockrage.png + + + + rockrage.zip + Rock'n Rage (World) + Two rock stars must battle through 5 stages battling enemies from different time periods. + 0.50 + 19860101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/rockrage.png + + + + rockn.zip + Rock'n Tread (Japan) + The first game in Jaleco's Rock'n series of rhythm games. + +The player presses a tilting "pick switch" in time with the instrument (selectable from guitar, bass, and keyboard) while simultaneously pressing a foot pedal in time with the drums. In MAME, this is emulated as simply pressing two buttons. + 0.70 + 19990101T000000 + Jaleco + Music and Dance + 425 + 1 + Jaleco + 270 + 320x224 + media/mixrbv2/rockn.png + + + + rockna.zip + Rock'n Tread (Japan, alternate) + The first game in Jaleco's Rock'n series of rhythm games. + +The player presses a tilting "pick switch" in time with the instrument (selectable from guitar, bass, and keyboard) while simultaneously pressing a foot pedal in time with the drums. In MAME, this is emulated as simply pressing two buttons. + 0.70 + 19990101T000000 + Jaleco + Music and Dance + 425 + 1 + rockn.zip + Jaleco + 270 + 320x224 + media/mixrbv2/rockn.png + + + + rockn2.zip + Rock'n Tread 2 (Japan) + The second game in Jaleco's Rock'n series of rhythm games. + +The player presses a tilting "pick switch" in time with the instrument (selectable from guitar, bass, and keyboard) while simultaneously pressing a foot pedal in time with the drums. In MAME, this is emulated as simply pressing two buttons. + 0.70 + 19990101T000000 + Jaleco + Music and Dance + 425 + 1 + Jaleco + 270 + 320x224 + media/mixrbv2/rockn2.png + + + + rockmanj.zip + Rockman - the power battle (950922 Japan) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + rockman2j.zip + Rockman 2 - the power fighters (960708 Japan) + Building upon the previous game, you must battle Dr. Wily's evil robot criminals with the help of Megaman, Protoman, Bass & Duo. Features cool 2-D graphics and the same tried & true Mega Man controls. Pay attention to Dr. Light's advice and you may reach Dr. Wily's fortress and come out victorious! + 0.65 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/megaman2.png + + + + rmancp2j.zip + Rockman: The Power Battle (950922 Japan) + Have you ever pictured a Rockman or Megaman game that allows to skip all the platform elements and just grapple against the bosses? That's pretty much the main idea in this game! Choose from Rockman/Megaman, Protoman or Bass and battle against classic bosses in the series. Features great 2-D graphics, solid control, and a nice use of strategy (since the right order of weapons will rid you of specific enemies in no time!). + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + megaman.zip + Capcom Play System + 384x224 + media/mixrbv2/megaman.png + + + + rodlandjb2.zip + Rod-Land (Japan bootleg with unencrypted program and GFX) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + rodland.zip + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rodlandjb.zip + Rod-Land (Japan bootleg with unencrypted program) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + rodland.zip + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rodlandj.zip + Rod-Land (Japan) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + rodland.zip + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rodland.zip + Rod-Land (World, set 1) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rodlanda.zip + Rod-Land (World, set 2) + Rod-Land is a cute and colourful platform game for one or two players in which two fairy sisters - 'Tam' and 'Rit' - must rescue their kidnapped mother from the 'Maboots Tower' fortress. + +The fairies are armed with the 'Rods of Sheesanomo' - two magical rods that enable the fairies to catch enemies in a force-field and slam them into the platforms to kill them - and must clear each level of enemies to move onto the next and eventually reach and infiltrate the Tower. + +As well as the magical rods used for attacking enemies, the fairies can also create a magical ladder - in a fashion very similar to that used in Taito's "Rainbow islands" - which can be utilised anywhere on a level and allows players to reach other platforms or escape from pursuing enemies. Each player can utilise only one magically-created ladder at any one time and the creation of a new ladder removes the previously-created one. + +A level is only completed when all enemies have been killed. Some defeated enemies drop bonus items, such as fruit, missiles and bombs. + +Each of the game's levels features brightly coloured flowers. If players manage to collect all of these, the 'Extra Game' mode begins. During this time-limited mode all of the level's enemies turn red and move much faster. If the enemies are killed in time, they drop an alphabetic letter that can be collected to spell the word 'EXTRA' and earn players an extra life. + 0.70 + 19900101T000000 + Jaleco + Jaleco + Platform / Run Jump + 2915 + 1-2 + rodland.zip + Jaleco + 256x224 + media/mixrbv2/rodland.png + + + + rollace.zip + Roller Aces (set 1) + In Fighting Roller, You compete in an obstacle race on roller skates. + 0.50 + 19830101T000000 + Kaneko + Taito + Sports + 685 + 1-2 + fightrol.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/fightrol.png + + + + rollace2.zip + Roller Aces (set 2) + In Fighting Roller, You compete in an obstacle race on roller skates. + 0.50 + 19830101T000000 + Kaneko + Taito + Sports + 685 + 1-2 + fightrol.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/fightrol.png + + + + rjammer.zip + Roller Jammer + Roller derby competition. + 0.50 + 19840101T000000 + Nichibutsu + Nichibutsu + Fight / Vertical + 2922 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/rjammer.png + + + + rollergj.zip + Rollergames (Japan) + Rollergames is the name of two 1990 Konami video games, one a coin-operated arcade game by, the other a Nintendo Entertainment System game, and both based on the television show of the same name. This arcade game is faithful to the show unlike the NES version of RollerGames, which is a side-scrolling game. The game is for two players and features all the skaters and managers from the league. + +Score values are cut in half from the real show (and rounded up if needed), and feature only four 99-second cycles instead of 45-second cycles within four 6-minute periods. + + 0.50 + 19910101T000000 + Konami + Konami + Sports + 685 + 1-2 + rollerg.zip + Konami Classics + 288x224 + media/mixrbv2/rollerg.png + + + + rollerg.zip + Rollergames (US) + Rollergames is the name of two 1990 Konami video games, one a coin-operated arcade game by, the other a Nintendo Entertainment System game, and both based on the television show of the same name. This arcade game is faithful to the show unlike the NES version of RollerGames, which is a side-scrolling game. The game is for two players and features all the skaters and managers from the league. + +Score values are cut in half from the real show (and rounded up if needed), and feature only four 99-second cycles instead of 45-second cycles within four 6-minute periods. + + 0.50 + 19910101T000000 + Konami + Konami + Sports + 685 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/rollerg.png + + + + rthunder0.zip + Rolling Thunder (oldest) + Rolling Thunder is a single-player scrolling platform shoot-em-up in which a James Bond-esque secret agent codenamed 'Albatross' has been ordered by the Rolling Thunder anti-espionage unit to stop the criminal organization known as Geldra. Albatross must also rescue captured field agent, Lelia Blitz and overthrow Geldra's leader, Maboo. + 0.90 + 19860101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + rthunder.zip + Namco Classics + 288x224 + media/mixrbv2/rthunder.png + + + + rthunder1.zip + Rolling Thunder (rev 1) + Rolling Thunder is a single-player scrolling platform shoot-em-up in which a James Bond-esque secret agent codenamed 'Albatross' has been ordered by the Rolling Thunder anti-espionage unit to stop the criminal organization known as Geldra. Albatross must also rescue captured field agent, Lelia Blitz and overthrow Geldra's leader, Maboo. + 0.90 + 19860101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + rthunder.zip + Namco Classics + 288x224 + media/mixrbv2/rthunder.png + + + + rthunder2.zip + Rolling Thunder (rev 2) + Rolling Thunder is a single-player scrolling platform shoot-em-up in which a James Bond-esque secret agent codenamed 'Albatross' has been ordered by the Rolling Thunder anti-espionage unit to stop the criminal organization known as Geldra. Albatross must also rescue captured field agent, Lelia Blitz and overthrow Geldra's leader, Maboo. + 0.90 + 19860101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + rthunder.zip + Namco Classics + 288x224 + media/mixrbv2/rthunder.png + + + + rthunder.zip + Rolling Thunder (rev 3) + Rolling Thunder is a single-player scrolling platform shoot-em-up in which a James Bond-esque secret agent codenamed 'Albatross' has been ordered by the Rolling Thunder anti-espionage unit to stop the criminal organization known as Geldra. Albatross must also rescue captured field agent, Lelia Blitz and overthrow Geldra's leader, Maboo. + 0.90 + 19860101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/rthunder.png + + + + rthundera.zip + Rolling Thunder (rev 3, hack) + Rolling Thunder is a single-player scrolling platform shoot-em-up in which a James Bond-esque secret agent codenamed 'Albatross' has been ordered by the Rolling Thunder anti-espionage unit to stop the criminal organization known as Geldra. Albatross must also rescue captured field agent, Lelia Blitz and overthrow Geldra's leader, Maboo. + 0.90 + 19860101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + rthunder.zip + Namco Classics + 288x224 + media/mixrbv2/rthunder.png + + + + rthun2.zip + Rolling Thunder 2 + Rolling Thunder 2 is a straight sequel to the superb 1986 original, Rolling Thunder 2 sees one or two players taking control of secret agents in this scrolling, platform shoot-em-up. The agents once again find themselves up against the sinister GERDRA organization and its many armed agents. Gameplay is very similar to the original, with doors both releasing enemies and hiding weapons and ammunition for the players to collect. + 0.90 + 19900101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/rthun2.png + + + + rthun2j.zip + Rolling Thunder 2 (Japan) + Rolling Thunder 2 is a straight sequel to the superb 1986 original, Rolling Thunder 2 sees one or two players taking control of secret agents in this scrolling, platform shoot-em-up. The agents once again find themselves up against the sinister GERDRA organization and its many armed agents. Gameplay is very similar to the original, with doors both releasing enemies and hiding weapons and ammunition for the players to collect. + 0.90 + 19900101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + rthun2.zip + Namco Classics + 288x224 + media/mixrbv2/rthun2.png + + + + rompers.zip + Rompers (Japan, new version (Rev B)) + The player must take up control of Chap a gardener wearing a straw hat, who must collect all the keys in sixty-one maze-inspired gardens in order to rescue his girlfriend, Rumina. He can push the walls in the gardens over to crush the various enemies that pursue him, but they are immediately be resurrected in the form of eggs which hatch after a few seconds. Each round also has a preset time limit to ensure that the player does not dawdle - and once it runs out, a green-haired female vampire known as Tsukaima who cannot be crushed by the walls appears. The game's enemies include white blobs known as Pyokorin, flame-breathing pink Triceratops-esque creatures known as Kerara, armadillos known as Gororin which can roll over Chap, purple seals known as Todorin which can breathe ice, sponges known as Bekabeka, which can push walls onto Chap, turquoise blobs known as Fumajime Pyokorin, which occasionally pause to take a long drag on their cigarettes, helmet-wearing creatures known as Nachibo, which take two crushes to kill, wolves known as Taggus which can throw bombs at Chap, spiders known as Oogumo, which can spin webs for Chap to run into - and this game's main antagonist, an evil scientist named Gurerin who only appears in the final round, where players not only have to collect all the keys, but also push the walls onto his four clones (two of whom can breathe fire, the other two can breathe ice). + 0.70 + 19890101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/rompers.png + + + + romperso.zip + Rompers (Japan, old version) + The player must take up control of Chap a gardener wearing a straw hat, who must collect all the keys in sixty-one maze-inspired gardens in order to rescue his girlfriend, Rumina. He can push the walls in the gardens over to crush the various enemies that pursue him, but they are immediately be resurrected in the form of eggs which hatch after a few seconds. Each round also has a preset time limit to ensure that the player does not dawdle - and once it runs out, a green-haired female vampire known as Tsukaima who cannot be crushed by the walls appears. The game's enemies include white blobs known as Pyokorin, flame-breathing pink Triceratops-esque creatures known as Kerara, armadillos known as Gororin which can roll over Chap, purple seals known as Todorin which can breathe ice, sponges known as Bekabeka, which can push walls onto Chap, turquoise blobs known as Fumajime Pyokorin, which occasionally pause to take a long drag on their cigarettes, helmet-wearing creatures known as Nachibo, which take two crushes to kill, wolves known as Taggus which can throw bombs at Chap, spiders known as Oogumo, which can spin webs for Chap to run into - and this game's main antagonist, an evil scientist named Gurerin who only appears in the final round, where players not only have to collect all the keys, but also push the walls onto his four clones (two of whom can breathe fire, the other two can breathe ice). + 0.70 + 19890101T000000 + Namco + Namco + Action + 10 + 1-2 + rompers.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/rompers.png + + + + clapapa2.zip + Rootin' Tootin' (DECO Cassette) (US) + In La Pa Pa, you controls a tuba, trying to collect musical notes and bonus items for points while avoiding other instruments. + 0.50 + 19830101T000000 + Data East + Data East + Action + 10 + 1-2 + clapapa.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/clapapa.png + + + + clapapa.zip + Rootin' Tootin' / La-Pa-Pa (DECO Cassette) (US) + In La Pa Pa, you controls a tuba, trying to collect musical notes and bonus items for points while avoiding other instruments. + 0.50 + 19830101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/clapapa.png + + + + ropeman.zip + Ropeman (bootleg of Roc'n Rope) + Roc'n Rope is an incredibly difficult yet playable platform game featuring four different levels. The player takes on the role of a an archaeologist whose mission is to return the missing tail feathers to the golden Phoenix. The archaeologist is armed with a harpoon gun and uses it to fire a rope into a platform above, in order to climb up the rope and progress up the level. This is vaguely similar to the superb 'telescopic arm' feature that appeared in Capcom's superb "Bionic Commando". + +All levels are patrolled by enemies in the form of dinosaurs and cavemen and all are deadly to the touch. Some cavemen will pull on the harpoon rope while the archaeologist is climbing it. This will result in the player falling from the rope and losing a life. The archaeologist is armed with a light ray that will kill the enemies. + +A breakdown of the game's four levels: + +The first level is possibly the most difficult in the game. Players begin at the bottom left of the screen and must work their way up to the Roc, who is sitting at the upper right of the screen. There are many layers of ledges coming out from the sides of the screen. While the middle of the screen is open to the sky (except for a few floating platforms). To reach the top, players must use the harpoon gun to climb diagonally back and forth until they reach the top (ensuring that the Phoenix feathers have been collected on the way). +The second level is set underground. There are a lot of dinosaurs on this screen and far fewer platforms than on the first level. Many of the platforms stretch completely across the screen, so there aren't many pitfalls to be wary of. Once again, players must get the archaeologist to the top of the screen to complete the level. +The third level is set outdoors. A 'ferris wheel' style rotating platform sits in the center of the screen, but this can be avoided if players don't wish to use it. The easiest route to the top is on the right-hand side of the level. +The fourth and final level is shaped a little like a mountain. The player's main concern here is a large waterfall in the center of the screen. Players must time their harpoon climb just right to avoid being killed by the deadly waters. Once this level is finished, the game starts over with an increased level of difficulty. + 0.90 + 19830101T000000 + Konami + Konami + Platform / Run Jump + 2915 + 1-2 + rocnrope.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/rocnrope.png + + + + roundup.zip + Round-Up + The object of Round-Up is for the player to maneuver his white robot in 1 of 4 directions within a maze, capture a red character robot as they move about the maze, and race to the center to change the 9 white balls located there to red. The player may only change one white ball to red at a time after he has captured a red robot, and must evade 4 chaser monsters in the process. Bonus point may be earned when capturing the elusive 'red king' that appears on the screen. Capture him and momentarily immobilize the chasers, but do not come in contact with the yellow robots--or your much-needed red robots will be changed to white and force you to change strategy. Play is over when the chasers have captured all of the player's robots. But, should the player be successful in changing all of the balls in the center to red, the pattern clears and a different challenge is presented. A 3x3 or 4x4 tri-colored pattern will appear at the bottom of the screen and a slightly different tri-colored cube of corresponding size will appear at the center of the screen. The player may earn bonus points by moving the directional arrow and rearranging the colors of the cube at the center of the screen to match the sample pattern presented at the bottom of the screen. The player is given 90 seconds to rearrange the cube as many times as he can. Action returns to the maze whether you win or lose the cube challenge. All in all, an exciting and challenging game where patience and skill are required. + 0.50 + 19810101T000000 + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/roundup.png + + + + route16bl.zip + Route 16 (bootleg) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + route16a.zip + Route 16 (Centuri license, set 1) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + route16b.zip + Route 16 (Centuri license, set 2) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + route16c.zip + Route 16 (Centuri license, set 3, bootleg?) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + route16.zip + Route 16 (Sun Electronics, set 1) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + route16d.zip + Route 16 (Sun Electronics, set 2) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + routex.zip + Route X (bootleg, set 1) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + routexa.zip + Route X (bootleg, set 2) + Route 16 is a challenging race car game, integrating special features to excite the beginner as well as the seasoned player. The vivid video screen is fascinating, and is complimented by exceptional audio during game play. + +The red car is controlled by the joystick feature, and is pursued through 16 different routes (mazes) by three chase cars. The search mode reveals an overview of all 16 routes, and the search mode appears whenever the car exits a route. In the search mode, the player car becomes a red cube, and the chase cars become yellow cubes. + +Whenever the player car exits one route, there is a one second delay for a total overview of the game. + +Each route has dead-ends, zig-zags, and multiple entrances and exits. + +Some routes have the dollar symbol ($), and the player scores 200 points each time this symbol is cleared. The dollar symbols randomly chance to oil slicks, and when encountered, the oil slicks slow down the player car. + +The question mark symbol (?) is surrounded by check points and will either reveal a bomb symbol or a bell mark after the player car clears the check point. The bell will add 800 points to the player's score when cleared. Player skill is tested here to avoid the bomb if it appears. + +Some routes have a flag symbol, and when the player car clears the symbol, the pursuing cars become dollar symbols, and every effort should be made by the player to chase them down, and add extra points to his score. + +One route has a flickering bonus car symbol. When the symbol appears, clear it and earn an additional player car. + +One route has an additional game feature. When the player car enters the maze, it is pursued by an attacking monster. The player car cannot clear or collide with the monster, but must avoid it, or be destroyed. + +The high-speed button is another feature of Route 16. When pushed, the player car is accelerated to escape the chase cars. Usage of the high-speed button reduces the player car's fuel. At the end of each round, bonus points are added to the player's score for remaining fuel. + +After all the symbols are cleared, the round ends. In successive rounds, additional dollar symbols ($), and additional enemy chase cars are added. + 0.60 + 19810101T000000 + Tehkan Ltd. + Tehkan Ltd. + Action + 10 + 1-2 + route16.zip + Mame + 270 + 256x256 + media/mixrbv2/route16.png + + + + rugrats.zip + Rug Rats + Wiping, later rereleased as Rug Rats, is Dig Dug-style arcade game that was released by Nichibutsu in 1982; it utilises two Zilog Z80 microprocessors (running up at 3.072 MHz) and a custom sound chip running at the same speed. The player must use a 4-way joystick to take control of a vacuum cleaner (which bears a striking resemblance to Numatic International's then-new "Henry") with a single button to make it spray soapbubbles at germs (of which there are three different types, "Baddons", "Bilbolas" and "Bigimbas"), and roll over them while they're stunned to suck them up - and it can also pass over rugs to make them roll up and squash any germs standing on them, but it can also be a victim of this. + + + 0.70 + 19820101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + wiping.zip + Nichibutsu + 270 + 288x224 + media/mixrbv2/wiping.png + + + + rumba.zip + Rumba Lumber + You're a caveman in a big old forest, and life would be great if that pesky pterodactyl wasn't always flying about. Luckily, it only seems to fly around above trees, so you hatch a brilliant plan – get the pterodactyl to fly above only a small patch of forest, and live your life in peace. Who doesn't love a good bit of deforestation, after all? So the idea is to run around the map, chopping down trees until the pterodactyl is trapped in an area of four trees or fewer. + +If you find one, you can run a stone wheel across the forest to take out a whole row of trees, but mostly you'll be chopping them down one at a time – and that's a bit of a pain because the enemies here are super aggressive. The pterodactyl can shoot fire at you, a dinosaur runs around the areas you've cleared and can also travel through the forest, and if the very fast mole shows up, you're done for. Different stage layouts with obstacles like rivers and thunder clouds liven things up as you make hard won progress, but only the most persistent gamers will take to Rumba Lumber. + 0.60 + 19840101T000000 + Taito + Taito + Action + 10 + Taito Classics + 270 + 256x224 + media/mixrbv2/rumba.png + + + + rundeep.zip + Run Deep + You control one or two boats floating along the high seas. The boats are armed with depth charges for dropping on the aquatic wildlife and submarines in the depth far below. Homing torpedoes, Polaris missiles, mines, Stingray style vessels and other boat-wrecking hazards make up the threats to avoid or destroy. Bonus capsules which float up to the surface boost the boat's speed, increase depth charge power, give the player temporary invincibility and other normal features but of a marine vein. The depth charges take their time to float to their target so plan ahead using the map, submarines at different heights in the water pose further problems. This game also has good backgrounds. + 0.50 + 19870101T000000 + Wood Place + Wood Place Inc. + Shooter / Space Invaders Like + 2900 + 1-2 + thedeep.zip + Mame + 270 + 256x248 + media/mixrbv2/thedeep.png + + + + rushcrsh.zip + Rush & Crash (Japan) + It's the 21st century in America. Technology has improved by leaps and bounds, and now (most) people live in peace. But in a small town somewhere, a vicious terrorist group known as Zapper is terrorizing small towns and kidnapping innocent people so that they can build a secret weapon. And, as it turns out, the family and friends of someone code-named "Super Joe" just so happened to be one of the innocents caught! Now Super Joe's hungry for revenge. Can Super Joe and his armored car destroy the Zapper organization and save his town from utter destruction in time? The Speed Rumbler is a action game where the player races against the clock in an armored car piloted by Super Joe, destroying other cars and saving captives along the way. Super Joe's car is armed with a gun that he can use to shoot down enemy cars, but the enemy cars have a few tricks up their sleeve, so Super Joe should always be on guard. As the player progresses through the game's six stages, Super Joe can be given a boost by saving captives, who then award him with bonus points, increased fire power, or speed-ups. If Super Joe's car is destroyed, he can continue the fight on foot with his rifle. But unfortunately, Super Joe is not as powerful as his car - one hit and he's history. Super Joe has 24 "hours" to destroy Zapper. The game is over when Super Joe runs out of lives or time - or if he successfully completes his mission. + 0.90 + 19860101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + srumbler.zip + Capcom Classics + 270 + 352x240 + media/mixrbv2/srumbler.png + + + + rushatck.zip + Rush'n Attack (US) + Green Beret is a sideways-scrolling action/platform game set during the Cold War, in which a US Special Forces Marine must infiltrate a Russian military base to save four POW's from being executed by firing squad. + +Initially, the soldier is armed with only a combat knife, but by killing the certain enemy troops, players can obtain either a three-shot flamethrower, a four-shot RPG, or a three-pack of hand grenades. + +The Marine can jump or lie down to avoid the enemy bullets, as well as climbing ladders to avoid enemies and projectiles, as well as the flashing land mines that litter the levels. While it's possible to remain still in one area to rack up points, if players take too long to proceed, the game will start sending out tougher enemies and eventually a stealth-like bomber will appear to take out the player. There is also an unseen time limit that will kill off players if they take too long to complete the stage. + +The game has four stages in total: a missile base, a harbour, an air Base and a Siberian POW Camp. At the end of each stage the Marine will face a group of enemies specific to that stage: Stage 1 ends with a truckload of running and jump-kicking soldiers, Stage 2 with a pack of fierce dogs and their handlers, Stage 3 with three Gyro-copters and Stage 4 with a number of multi-shot flamethrower operators. + +The game is completed once the captives have been rescued at the end of the fourth stage, after which the action starts over with an increased level of difficulty. + 0.80 + 19860101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + gberet.zip + Konami Classics + 240x224 + media/mixrbv2/gberet.png + + + + rygar.zip + Rygar (US set 1) + Rygar is a classic game for many home consoles. It also has an Arcade version that plays different than the home console versions. + 0.90 + 19860101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1 + Tecmo + 256x224 + media/mixrbv2/rygar.png + + + + rygar2.zip + Rygar (US set 2) + Rygar is a classic game for many home consoles. It also has an Arcade version that plays different than the home console versions. + 0.90 + 19860101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1 + rygar.zip + Tecmo + 256x224 + media/mixrbv2/rygar.png + + + + rygar3.zip + Rygar (US set 3 Old Version) + Rygar is a classic game for many home consoles. It also has an Arcade version that plays different than the home console versions. + 0.90 + 19860101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1 + rygar.zip + Tecmo + 256x224 + media/mixrbv2/rygar.png + + + + rygarb.zip + Rygar (US, bootleg) + Rygar is a classic game for many home consoles. It also has an Arcade version that plays different than the home console versions. + 0.90 + 19860101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1 + rygar.zip + Tecmo + 256x224 + media/mixrbv2/rygar.png + + + + ryujina.zip + Ryu Jin (Japan, ET910000A PCB) + The title of this game translates from Japanese as 'Dragon God'. The player can choose between 4 different ships, each equiped with 4 basic weapon (Vulcan, Laser, Homing Missile and Option Laser) and a unique special attack: +Usable fighter & special attack: +Sword Breaker (Blue) - Fireball Bomb +Vaulge (Green) - Lightning Volt +Shamseel (Red) - Flash Bomb +Phalcyon (Purple) - Wave Attack + 0.70 + 19930101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + ryujin.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/ryujin.png + + + + ryujin.zip + Ryu Jin (Japan, ET910000B PCB) + The title of this game translates from Japanese as 'Dragon God'. The player can choose between 4 different ships, each equiped with 4 basic weapon (Vulcan, Laser, Homing Missile and Option Laser) and a unique special attack: +Usable fighter & special attack: +Sword Breaker (Blue) - Fireball Bomb +Vaulge (Green) - Lightning Volt +Shamseel (Red) - Flash Bomb +Phalcyon (Purple) - Wave Attack + 0.70 + 19930101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x224 + media/mixrbv2/ryujin.png + + + + ryukyua.zip + RyuKyu (Japan) (FD1094 317-5023) + RyuKyu is a highly playable yet challenging puzzle game which uses elements of Poker. In this game, players attempt to make a five-card hand either vertically, horizontially or diagonally to score points and must meet the round's score criteria to progress. The hands are ranked from One Pair to 5-of-a-Kind. + 0.50 + 19900101T000000 + Success + Success + Casino + 320 + 1 + ryukyu.zip + Sega Classics + 320x224 + media/mixrbv2/ryukyu.png + + + + ryukyud.zip + RyuKyu (Japan, FD1094 317-5023 decrypted) + RyuKyu is a highly playable yet challenging puzzle game which uses elements of Poker. In this game, players attempt to make a five-card hand either vertically, horizontially or diagonally to score points and must meet the round's score criteria to progress. The hands are ranked from One Pair to 5-of-a-Kind. + 0.50 + 19900101T000000 + Success + Success + Casino + 320 + 1 + ryukyu.zip + Sega Classics + 320x224 + media/mixrbv2/ryukyu.png + + + + ryukyu.zip + RyuKyu (Rev A, Japan) (FD1094 317-5023A) + RyuKyu is a highly playable yet challenging puzzle game which uses elements of Poker. In this game, players attempt to make a five-card hand either vertically, horizontially or diagonally to score points and must meet the round's score criteria to progress. The hands are ranked from One Pair to 5-of-a-Kind. + 0.50 + 19900101T000000 + Success + Success + Casino + 320 + 1 + Sega Classics + 320x224 + media/mixrbv2/ryukyu.png + + + + spyu.zip + S.P.Y. - Special Project Y (US ver. M) + After using your spy-savvy jetpack to land on the secret island, you must stop the evil mastermind from executing his world-dominating plans! + 0.50 + 19890101T000000 + Konami + Shooter + 2646 + 1-2 + spy.zip + Konami Classics + 304x224 + media/mixrbv2/spy.png + + + + spy.zip + S.P.Y. - Special Project Y (World ver. N) + After using your spy-savvy jetpack to land on the secret island, you must stop the evil mastermind from executing his world-dominating plans! + 0.50 + 19890101T000000 + Konami + Shooter + 2646 + 1-2 + Konami Classics + 304x224 + media/mixrbv2/spy.png + + + + srdmissn.zip + S.R.D. Mission + S.R.D. Mission is a vertically scrolling shoot-em-up viewed from above where the screen scrolls constantly. The alien ships fly at you in waves and need shooting with your laser as well as their ground defences destroying with bombs. As your blasting you will see occasionally men standing in blue suits waving or running down the screen, fly over them and you pick them up but be careful not to shoot or bomb them. If you rescue a man in an orange suit your ship gets an upgrade with better lasers and bombs. Touch an alien or their bullets and you lose one of three lives, lose the lives and it's game over with no continues. Two players can play and they take it in turns to play when the other player loses a life. + 0.50 + 19860101T000000 + Taito + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 288x224 + media/mixrbv2/srdmissn.png + + + + ssmissin.zip + S.S. Mission + Alien forces have come and taken over your planet so in this vertically scrolling shoot-em-up viewed from above you must fly your helicopter and destroy them all and save your planet. The game is split into stages and you must face wave after wave of various aliens ships as the game scrolls constantly. You start with basic lasers but power-ups in the shape of helicopters can be collected to upgrade your weapon. You also have three smart-bombs which will destroy all on the screen. At the end of the stage you face a large end of stage boss. Once defeated you move onto the next stage. If you touch any alien ships or bullets then you lose one of three lives and once they are lost it's game over but you can continue where you last died with extra credits. You can play with another player who both play at the same time. + 0.50 + 19920101T000000 + Comad + Comad + Shoot'em Up + 79 + 1-2 + Comad + 270 + 256x224 + media/mixrbv2/ssmissin.png + + + + sabotenb.zip + Saboten Bombers (set 1) + A platform game with gameplay similar to Snow Bros. and Bubble Bobble. + +Saboten Bombers is a single screen platform game. The gameplay consists of throwing bombs at the enemies, and avoiding being hit by the enemy bombs. There are a variety of enemies and colorful backgrounds. The game has over 50 levels, and also a versus mode. The game has many collectables, the most notable of which is the cake which gives the player an extra life after collecting 8 pieces. + 0.50 + 19920101T000000 + Platform / Run Jump + 2915 + 1-2 + NMK + 384x224 + media/mixrbv2/sabotenb.png + + + + sabotenba.zip + Saboten Bombers (set 2) + A platform game with gameplay similar to Snow Bros. and Bubble Bobble. + +Saboten Bombers is a single screen platform game. The gameplay consists of throwing bombs at the enemies, and avoiding being hit by the enemy bombs. There are a variety of enemies and colorful backgrounds. The game has over 50 levels, and also a versus mode. The game has many collectables, the most notable of which is the cake which gives the player an extra life after collecting 8 pieces. + 0.50 + 19920101T000000 + Platform / Run Jump + 2915 + 1-2 + sabotenb.zip + NMK + 384x224 + media/mixrbv2/sabotenb.png + + + + sadari.zip + Sadari + 0.50 + 19930101T000000 + Dooyong (NTC license) + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 384x256 + media/mixrbv2/sadari.png + + + + safarirj.zip + Safari Rally (Japan) + At the flick of a switch, a white car approaches. You must avoid it and select the safest course, in a maze. When the first formation of dots is extinguished, 2 opposite cars dash at you from the upper screen. You must avoid them and run over the Lion and Snake in order to score bonus mystery points... Never be off guard, skid zones are dangerous! When 4 patterns are cleared, 3 cars rush at you!! Only skilled players make it!! + 0.30 + 19790101T000000 + SNK + SNK + Action + 10 + 1-2 + safarir.zip + SNK Classics + 270 + 256x208 + media/mixrbv2/safarir.png + + + + safarir.zip + Safari Rally (World) + At the flick of a switch, a white car approaches. You must avoid it and select the safest course, in a maze. When the first formation of dots is extinguished, 2 opposite cars dash at you from the upper screen. You must avoid them and run over the Lion and Snake in order to score bonus mystery points... Never be off guard, skid zones are dangerous! When 4 patterns are cleared, 3 cars rush at you!! Only skilled players make it!! + 0.30 + 19790101T000000 + SNK + SNK + Action + 10 + 1-2 + SNK Classics + 270 + 256x208 + media/mixrbv2/safarir.png + + + + saiyugoub1.zip + Sai Yu Gou Ma Roku (Japan bootleg 1) + China Gate is a beat'em up / platform game. + 0.50 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Fight + 14 + 1-2 + chinagat.zip + Technos + 256x240 + media/mixrbv2/chinagat.png + + + + saiyugoub2.zip + Sai Yu Gou Ma Roku (Japan bootleg 2) + China Gate is a beat'em up / platform game. + 0.50 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Fight + 14 + 1-2 + chinagat.zip + Technos + 256x240 + media/mixrbv2/chinagat.png + + + + saiyugou.zip + Sai Yu Gou Ma Roku (Japan) + China Gate is a beat'em up / platform game. + 0.50 + 19880101T000000 + Technos Japan Corp. + Technos Japan Corp. + Fight + 14 + 1-2 + chinagat.zip + Technos + 256x240 + media/mixrbv2/chinagat.png + + + + nspiritj.zip + Saigo no Nindou (Japan) + A side scrolling ninja action game. You take control of a ninja who has the ability to make shadow duplicates which trail your movements, and attack at your command. In your path are armies of ninjas, samurais and demons who are constantly out to kill you. + 0.90 + 19880101T000000 + Irem + Irem + Platform + 7 + 1-2 + nspirit.zip + Irem Classics + 384x256 + media/mixrbv2/nspirit.png + + + + stdragonb.zip + Saint Dragon (bootleg) + The galaxy is under threat from a malevolent race of cyborgs. Half animal, half machine, the cyborgs have already conquered most of the galaxy and now have their sights set on the galaxy's last hope, 'The Planet of the Golde + 19890101T000000 + NMK + Jaleco + Shoot'em Up + 79 + 1-2 + stdragon.zip + Jaleco + 256x224 + media/mixrbv2/stdragon.png + + + + stdragon.zip + Saint Dragon (set 1) + The galaxy is under threat from a malevolent race of cyborgs. Half animal, half machine, the cyborgs have already conquered most of the galaxy and now have their sights set on the galaxy's last hope, 'The Planet of the Golde + 19890101T000000 + NMK + Jaleco + Shoot'em Up + 79 + 1-2 + Jaleco + 256x224 + media/mixrbv2/stdragon.png + + + + stdragona.zip + Saint Dragon (set 2) + The galaxy is under threat from a malevolent race of cyborgs. Half animal, half machine, the cyborgs have already conquered most of the galaxy and now have their sights set on the galaxy's last hope, 'The Planet of the Golde + 19890101T000000 + NMK + Jaleco + Shoot'em Up + 79 + 1-2 + stdragon.zip + Jaleco + 256x224 + media/mixrbv2/stdragon.png + + + + salamand.zip + Salamander (version D) + Salamander is a 1 or 2 player sequel to 1985's superb shoot-em-up, "Nemesis". While it retained the same basic gameplay and feel of its predecessor (particularly the superb and innovative weapons system), Salamander featured both superior graphics and a more imaginative approach to level design. The earliest example of the latter appears towards the end of the very first level, in which imposing, organic obstructions grow before the players' eyes. The game's third level - the infamous 'lava' level - is another good example of Salamander's superb design; with huge solar flares constantly erupting both above and below the player's ship that must be carefully navigated to avoid instant loss of life. Salamander introduced further variety to the action with the introduction vertically-scrolling levels, which alternated with the standard side-scrolling levels. + +Salamander's weapon power-up system is as follows: +SPEED UP: Five speed levels. +MISSILE: Press missile button to launch. +LASER: Your forward rockets turn into deadly lasers. +RIPPLE LASER: Use shoot button to fire. +FORCE FIELD: Protect your ship with barriers. +MULTIPLE: Increase your fire power by up to four times. + +Multiple special powers can be obtained, but the LASER cannot be used in conjunction with the RIPPLE Laser. + 0.90 + 19860101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/salamand.png + + + + salamandj.zip + Salamander (version J) + Salamander is a 1 or 2 player sequel to 1985's superb shoot-em-up, "Nemesis". While it retained the same basic gameplay and feel of its predecessor (particularly the superb and innovative weapons system), Salamander featured both superior graphics and a more imaginative approach to level design. The earliest example of the latter appears towards the end of the very first level, in which imposing, organic obstructions grow before the players' eyes. The game's third level - the infamous 'lava' level - is another good example of Salamander's superb design; with huge solar flares constantly erupting both above and below the player's ship that must be carefully navigated to avoid instant loss of life. Salamander introduced further variety to the action with the introduction vertically-scrolling levels, which alternated with the standard side-scrolling levels. + +Salamander's weapon power-up system is as follows: +SPEED UP: Five speed levels. +MISSILE: Press missile button to launch. +LASER: Your forward rockets turn into deadly lasers. +RIPPLE LASER: Use shoot button to fire. +FORCE FIELD: Protect your ship with barriers. +MULTIPLE: Increase your fire power by up to four times. + +Multiple special powers can be obtained, but the LASER cannot be used in conjunction with the RIPPLE Laser. + 0.90 + 19860101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + salamand.zip + Konami Classics + 256x224 + media/mixrbv2/salamand.png + + + + samesame.zip + Same! Same! Same! (1P set) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + samesamenh.zip + Same! Same! Same! (1P set, NEW VER! hack) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + samesame2.zip + Same! Same! Same! (2P set) + Fire Shark takes place around a small island in the South Pacific. It is a continuously-scrolling aerial shooter with a top-down view. Your World War II era biplane has been modified to shoot lasers and drop powerful bombs. +There are ten levels in the game in which you will face aerial, aquatic, and ground enemies. They all fire scores of missiles at you in an attempt to knock you from the sky. +In between levels, your plane will land on a runway for refueling and maintenance. You will receive bonus points for the number of bombs left in your hold and the number of lightning bolt icons you picked up in the prior level. + 0.50 + 19890101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fireshrk.zip + Toaplan + 270 + 320x240 + media/mixrbv2/fireshrk.png + + + + samuraia.zip + Samurai Aces (World) + This game is known in Japan as "Sengoku Ace" (translates from Japanese as 'Civil War Ace'). + +Samurai Aces is the very first game developed by Psikyo (Psikyo was founded in 1992 in Tokyo). + +Note: There are 22 different endings! + 0.90 + 19930101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + Psikyo + 270 + 320x224 + media/mixrbv2/samuraia.png + + + + tsamuraih.zip + Samurai Nihon-Ichi (bootleg, harder) + Set in ancient feudal japan, you play as a samurai warrior and must fend with his katana, advancing and waging battles to death against the enemies and their wild animals, while you jump and you crouch it to dodge the enemy's attacks, move forward through varied zones and keeping the bushido code to well finish your battle. + 0.50 + 19850101T000000 + Kaneko + Kaneko + Fight / 2D + 2914 + 1-2 + tsamurai.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/tsamurai.png + + + + tsamurai.zip + Samurai Nihon-Ichi (set 1) + Set in ancient feudal japan, you play as a samurai warrior and must fend with his katana, advancing and waging battles to death against the enemies and their wild animals, while you jump and you crouch it to dodge the enemy's attacks, move forward through varied zones and keeping the bushido code to well finish your battle. + 0.50 + 19850101T000000 + Kaneko + Kaneko + Fight / 2D + 2914 + 1-2 + Taito Classics + 270 + 256x240 + media/mixrbv2/tsamurai.png + + + + tsamurai2.zip + Samurai Nihon-Ichi (set 2) + Set in ancient feudal japan, you play as a samurai warrior and must fend with his katana, advancing and waging battles to death against the enemies and their wild animals, while you jump and you crouch it to dodge the enemy's attacks, move forward through varied zones and keeping the bushido code to well finish your battle. + 0.50 + 19850101T000000 + Kaneko + Kaneko + Fight / 2D + 2914 + 1-2 + tsamurai.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/tsamurai.png + + + + samshoh.zip + Samurai Shodown / Samurai Spirits (NGH-045) + In early Japan, a man named Shiro Tokisada Amakusa preaches a heretic religion. Little does anyone know that Amakusa is really a servant of the evil Ambrosia, who took over Amakusa's body. Ambrosia wishes to shroud the world in darkness. +Now, choose between 12 warriors (and 3 bonus characters) to fight for the honor of destroying Amakusa, and fulfilling a mission. + 0.75 + 19930101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho.png + + + + samsho.zip + Samurai Shodown / Samurai Spirits (NGM-045) + In early Japan, a man named Shiro Tokisada Amakusa preaches a heretic religion. Little does anyone know that Amakusa is really a servant of the evil Ambrosia, who took over Amakusa's body. Ambrosia wishes to shroud the world in darkness. +Now, choose between 12 warriors (and 3 bonus characters) to fight for the honor of destroying Amakusa, and fulfilling a mission. + 0.75 + 19930101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsho.png + + + + samshoa.zip + Samurai Shodown / Samurai Spirits (NGM-045, alternate board) + In early Japan, a man named Shiro Tokisada Amakusa preaches a heretic religion. Little does anyone know that Amakusa is really a servant of the evil Ambrosia, who took over Amakusa's body. Ambrosia wishes to shroud the world in darkness. +Now, choose between 12 warriors (and 3 bonus characters) to fight for the honor of destroying Amakusa, and fulfilling a mission. + 0.75 + 19930101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho.png + + + + samsho2.zip + Samurai Shodown II / Shin Samurai Spirits - Haohmaru jigokuhen (NGM-063)(NGH-063) + One of SNK's legendary fighting game series has made a return! In Samurai Shodown II, you can take on one of the roles of 15 warriors as you fight your way through the land to defeat the evil Mizuki! Slash, kick, and slice your opponents in half...do whatever it takes...live by the sword, and die by its blade. + 0.80 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsho2.png + + + + samsho2sp.zip + Samurai Shodown II / Shin Samurai Spirits - Haohmaru jigokuhen (Special 2017, hack) + One of SNK's legendary fighting game series has made a return! In Samurai Shodown II, you can take on one of the roles of 15 warriors as you fight your way through the land to defeat the evil Mizuki! Slash, kick, and slice your opponents in half...do whatever it takes...live by the sword, and die by its blade. + 0.80 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho2.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho2.png + + + + samsho3h.zip + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087) + The 12 samurai (and ninja) elite are back, this time to answer the threat of the demon Zankuro, Minazuki. The possessed swordsman has brutally slaughtered innocents in his path, yet could not raise his blade to the cries of an innocent baby. Vowing never to spill innocent blood again, he targets those who live by the way of the sword...but now the hunter becomes the hunted. The third series of Samurai Shodown introduces 2 different techniques for each character. The "Slash" techniques are the original moves of the most of the characters whereas the "Bust" techniques maybe the "darker" version of each character. + 0.85 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho3.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho3.png + + + + samsho3.zip + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087) + The 12 samurai (and ninja) elite are back, this time to answer the threat of the demon Zankuro, Minazuki. The possessed swordsman has brutally slaughtered innocents in his path, yet could not raise his blade to the cries of an innocent baby. Vowing never to spill innocent blood again, he targets those who live by the way of the sword...but now the hunter becomes the hunted. The third series of Samurai Shodown introduces 2 different techniques for each character. The "Slash" techniques are the original moves of the most of the characters whereas the "Bust" techniques maybe the "darker" version of each character. + 0.85 + 19950101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsho3.png + + + + samsho4.zip + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222)(NGH-222) + Bringing a new breath to SNK's swordsman fighting series, this 4th installment marks the return of 3 classic characters (Yagyu Jubei, Charlotte and Tam Tam, now with updated stuff), introduces 2 newcomers for the pantheon (the brothers Sogetsu Kazama and Kazuki Kazama) and brings some new backgrounds. + +In spite of these little improvements, the game preserved (and improved a lot) many elements that did the previous one (Samurai Shodown III: Blades of Blood) a quite popular title, like the dodge move and the chance to choose between two versions of the fighter: the standard one and an alternative dark-styled one (SLASH and BUST, respectively). + +With the intention to provide more action in the battles, the "No Contest" Moves were introduced: working in similar way (and under certain conditions) to the many games of Mortal Kombat Series, your fighter will execute an ultimate-slaughter move in a stunned opponent. + + 0.95 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsho4.png + + + + samsho4sp.zip + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (Special 2017, hack) + Bringing a new breath to SNK's swordsman fighting series, this 4th installment marks the return of 3 classic characters (Yagyu Jubei, Charlotte and Tam Tam, now with updated stuff), introduces 2 newcomers for the pantheon (the brothers Sogetsu Kazama and Kazuki Kazama) and brings some new backgrounds. + +In spite of these little improvements, the game preserved (and improved a lot) many elements that did the previous one (Samurai Shodown III: Blades of Blood) a quite popular title, like the dodge move and the chance to choose between two versions of the fighter: the standard one and an alternative dark-styled one (SLASH and BUST, respectively). + +With the intention to provide more action in the battles, the "No Contest" Moves were introduced: working in similar way (and under certain conditions) to the many games of Mortal Kombat Series, your fighter will execute an ultimate-slaughter move in a stunned opponent. + + 0.95 + 19960101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho4.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho4.png + + + + samsho5b.zip + Samurai Shodown V / Samurai Spirits Zero (bootleg) + Seven years after the fourth game in the series, Samurai Shodown returns. In the game's time frame, this is the earliest game, hence the Japanese title Samurai Spirits Zero. It takes place in 1786 from January through the later summer. The game is therefore considered a prequel to the series. + +The overall gameplay was slightly altered. It is a little faster, and the Slash/Bust system has been removed. Each character now has only one version, or the Bust mode is simply replaced by a new character of very similar setup. Combo slashes, sidestepping and fatalities have also vanished. The basic moves have been modeled after the first games in the series. They consist of three types of slashes, a single kick, and various dodge maneuvers similar to Samurai Shodown II. + +There are 24 characters, a familiar cast with some new faces. Unlike the previous games, it is not possible to kill your opponent. + 0.95 + 20030101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsho5.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho5.png + + + + samsho5x.zip + Samurai Shodown V / Samurai Spirits Zero (hack of XBOX version) + Seven years after the fourth game in the series, Samurai Shodown returns. In the game's time frame, this is the earliest game, hence the Japanese title Samurai Spirits Zero. It takes place in 1786 from January through the later summer. The game is therefore considered a prequel to the series. + +The overall gameplay was slightly altered. It is a little faster, and the Slash/Bust system has been removed. Each character now has only one version, or the Bust mode is simply replaced by a new character of very similar setup. Combo slashes, sidestepping and fatalities have also vanished. The basic moves have been modeled after the first games in the series. They consist of three types of slashes, a single kick, and various dodge maneuvers similar to Samurai Shodown II. + +There are 24 characters, a familiar cast with some new faces. Unlike the previous games, it is not possible to kill your opponent. + 0.95 + 20030101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsho5.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho5.png + + + + samsho5h.zip + Samurai Shodown V / Samurai Spirits Zero (NGH-2700) + Seven years after the fourth game in the series, Samurai Shodown returns. In the game's time frame, this is the earliest game, hence the Japanese title Samurai Spirits Zero. It takes place in 1786 from January through the later summer. The game is therefore considered a prequel to the series. + +The overall gameplay was slightly altered. It is a little faster, and the Slash/Bust system has been removed. Each character now has only one version, or the Bust mode is simply replaced by a new character of very similar setup. Combo slashes, sidestepping and fatalities have also vanished. The basic moves have been modeled after the first games in the series. They consist of three types of slashes, a single kick, and various dodge maneuvers similar to Samurai Shodown II. + +There are 24 characters, a familiar cast with some new faces. Unlike the previous games, it is not possible to kill your opponent. + 0.95 + 20030101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsho5.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho5.png + + + + samsho5.zip + Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 1) + Seven years after the fourth game in the series, Samurai Shodown returns. In the game's time frame, this is the earliest game, hence the Japanese title Samurai Spirits Zero. It takes place in 1786 from January through the later summer. The game is therefore considered a prequel to the series. + +The overall gameplay was slightly altered. It is a little faster, and the Slash/Bust system has been removed. Each character now has only one version, or the Bust mode is simply replaced by a new character of very similar setup. Combo slashes, sidestepping and fatalities have also vanished. The basic moves have been modeled after the first games in the series. They consist of three types of slashes, a single kick, and various dodge maneuvers similar to Samurai Shodown II. + +There are 24 characters, a familiar cast with some new faces. Unlike the previous games, it is not possible to kill your opponent. + 0.95 + 20030101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsho5.png + + + + samsho5a.zip + Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 2) + Seven years after the fourth game in the series, Samurai Shodown returns. In the game's time frame, this is the earliest game, hence the Japanese title Samurai Spirits Zero. It takes place in 1786 from January through the later summer. The game is therefore considered a prequel to the series. + +The overall gameplay was slightly altered. It is a little faster, and the Slash/Bust system has been removed. Each character now has only one version, or the Bust mode is simply replaced by a new character of very similar setup. Combo slashes, sidestepping and fatalities have also vanished. The basic moves have been modeled after the first games in the series. They consist of three types of slashes, a single kick, and various dodge maneuvers similar to Samurai Shodown II. + +There are 24 characters, a familiar cast with some new faces. Unlike the previous games, it is not possible to kill your opponent. + 0.95 + 20030101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsho5.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho5.png + + + + samsh5pf.zip + Samurai Shodown V Perfect / Samurai Spirits Zero Perfect (bootleg, hack) + An ordained meeting of 28 fierce warriors begins, to precede a series of duels to the death. These individuals entrust their fates to their skill and their weapons. For those not up to the task, a cherished end in battle is their only hope. The twenty-eight Samurai characters clash in one epic title. + 0.75 + 20040101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsh5sp.zip + Neo-Geo + 320x224 + media/mixrbv2/samsh5sp.png + + + + samsh5spho.zip + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored) + An ordained meeting of 28 fierce warriors begins, to precede a series of duels to the death. These individuals entrust their fates to their skill and their weapons. For those not up to the task, a cherished end in battle is their only hope. The twenty-eight Samurai characters clash in one epic title. + 0.75 + 20040101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsh5sp.zip + Neo-Geo + 320x224 + media/mixrbv2/samsh5sp.png + + + + samsh5sph.zip + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored) + An ordained meeting of 28 fierce warriors begins, to precede a series of duels to the death. These individuals entrust their fates to their skill and their weapons. For those not up to the task, a cherished end in battle is their only hope. The twenty-eight Samurai characters clash in one epic title. + 0.75 + 20040101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsh5sp.zip + Neo-Geo + 320x224 + media/mixrbv2/samsh5sp.png + + + + samsh5fe.zip + Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-272) (NGH-272) (Final Edition, location test version) + An ordained meeting of 28 fierce warriors begins, to precede a series of duels to the death. These individuals entrust their fates to their skill and their weapons. For those not up to the task, a cherished end in battle is their only hope. The twenty-eight Samurai characters clash in one epic title. + 0.75 + 20040101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + samsh5sp.zip + Neo-Geo + 320x224 + media/mixrbv2/samsh5sp.png + + + + samsh5sp.zip + Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720) + An ordained meeting of 28 fierce warriors begins, to precede a series of duels to the death. These individuals entrust their fates to their skill and their weapons. For those not up to the task, a cherished end in battle is their only hope. The twenty-eight Samurai characters clash in one epic title. + 0.75 + 20040101T000000 + Yuki Enterprise + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/samsh5sp.png + + + + sandscrp.zip + Sand Scorpion + A vertically scrolling shoot'em up. + +'Sasori' is Japanese for...you guessed it...'Scorpion'! + + 0.50 + 19920101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/sandscrp.png + + + + sandscrpb.zip + Sand Scorpion (Chinese Title Screen, Revised Hardware) + A vertically scrolling shoot'em up. + +'Sasori' is Japanese for...you guessed it...'Scorpion'! + + 0.50 + 19920101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + sandscrp.zip + Mame + 270 + 256x224 + media/mixrbv2/sandscrp.png + + + + sandscrpa.zip + Sand Scorpion (Earlier) + A vertically scrolling shoot'em up. + +'Sasori' is Japanese for...you guessed it...'Scorpion'! + + 0.50 + 19920101T000000 + FACE + FACE + Shoot'em Up + 79 + 1-2 + sandscrp.zip + Mame + 270 + 256x224 + media/mixrbv2/sandscrp.png + + + + wofa.zip + Sangokushi II (921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofabl.zip + Sangokushi II (Asia, bootleg, set 1) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofabla.zip + Sangokushi II (Asia, bootleg, set 2) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofah.zip + Sangokushi II (hack set 1, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofaha.zip + Sangokushi II (hack set 2, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofahb.zip + Sangokushi II (hack set 3, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofhfh.zip + Sangokushi II: Huo Fenghuang (Chinese bootleg, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wof3js.zip + Sangokushi II: San Jian Sheng (Chinese bootleg set 1, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wof3jsa.zip + Sangokushi II: San Jian Sheng (Chinese bootleg set 2, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wof3sj.zip + Sangokushi II: San Sheng Jian (Chinese bootleg set 1, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wof3sja.zip + Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofh.zip + Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 1, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofha.zip + Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 2, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + sgyxz.zip + Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 3, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofsj.zip + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 1, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofsja.zip + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 2, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofsjb.zip + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 3, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofsjc.zip + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 4, 921005 Asia) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofchdx.zip + Sangokushi III Gaiden: Kakou-On's Revenge DX (hack) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wofch.zip + Capcom Play System + 384x224 + media/mixrbv2/wofch.png + + + + 3kokushi.zip + Sankokushi (Japan) + Sankokushi is an adult Shanghai solitaire game. Unlike in a standard mahjong solitaire game, tiles are removed in groups of three. These groups may be made up of three matching tiles, or the number sets, 1-3, 4-6, or 7-9. The objective is to find the four, three-tile sets shown at the start of the stage and remove them from the game board before the timer runs out. + +When a tile is selected, other tiles are lit up. Tiles within the number sequence are shown in pink, and matching tiles are shown in orange. The player may request hints by selecting the help button on screen, which will light up all tiles that can be removed from the board at that time. There is also a back button, which the player may select to return tiles to the screen. + +The background image in each stage is an image of a girl. Each girl has two background images, with the second image showing the girl topless. Once a player removes the four tile sets for the stage, the board is cleared and the player may see the entire image. + +After completing a stage the player may use the points he has earned to buy power-ups, such as extra hints or a faster cursor. + +The game is over once the timer has run out or if the player cannot legally remove any more tiles and the board is 'deadlocked'. Upon continuing the player may select to play the same board or play a different one. + 0.50 + 19960101T000000 + Mitchell + Asiatic board game + 2647 + 1-2 + Mitchell + 320x240 + media/mixrbv2/3kokushi.png + + + + ssanchan.zip + Sanrin San Chan (Japan) + Spatter is a fast-moving maze-chase game in which the player takes on the role of a tricycle-pedalling child out collecting flowers, while trying to avoid collisions with the numerous enemies giving chase. + 0.70 + 19840101T000000 + SEGA + SEGA + Action + 10 + 1-2 + spatter.zip + Sega Classics + 479x224 + media/mixrbv2/spatter.png + + + + searcharj.zip + SAR - Search And Rescue (Japan) + When a pioneer spaceship vanishes mysteriously. An investigation reveals that the spaceship crashed near a ravine due to unknown circumstances. Now two SAR (Search and Rescue) operatives are on a mission to find out what happened, and eliminate the alien threat. + 0.50 + 19890101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + searchar.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/searchar.png + + + + searcharu.zip + SAR - Search And Rescue (US) + When a pioneer spaceship vanishes mysteriously. An investigation reveals that the spaceship crashed near a ravine due to unknown circumstances. Now two SAR (Search and Rescue) operatives are on a mission to find out what happened, and eliminate the alien threat. + 0.50 + 19890101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + searchar.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/searchar.png + + + + searchar.zip + SAR - Search And Rescue (World) + When a pioneer spaceship vanishes mysteriously. An investigation reveals that the spaceship crashed near a ravine due to unknown circumstances. Now two SAR (Search and Rescue) operatives are on a mission to find out what happened, and eliminate the alien threat. + 0.50 + 19890101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/searchar.png + + + + sarge.zip + Sarge + Considered by some to be the grandfather of all real-time video battle-games, Sarge was the first coin-op game to give players the ability to deploy multiple vehicles against common adversaries and, of course, each other. + 0.70 + 19850101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/sarge.png + + + + sasuke.zip + Sasuke vs. Commander + A great vertical shoot'em up game. + +You, controls a redheaded ninja warrior named Sasuke, set in feudal Japan in the beautiful city of kioto must protect your master the Shogun, by defeating all the villains ninja Commander. + +The player Sasuke is always at the bottom of the screen can only move left or right and shoot tiny shuriken, he faces off against multiple ninjas stealthily jumping from trees and several powerfull bosses each equipped with their own magics capabilities such as Henshin, Bunshin, Kaen and Hiryuken you must eliminate all the enemies and dodge his falling corpses, to complete the stage. + 0.30 + 19800101T000000 + TOSE + SNK + Shooter / 3rd person + 2899 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/sasuke.png + + + + satansatind.zip + Satan of Saturn (Inder S.A., bootleg) + A space shoot 'em up game. The gameplay is a variation of Space Invaders. + +Fly your spaceship to Saturn, then once on Saturn destroy as many Satan's as possible. Additional bonus points can be accumlated by destroying the comet or attacking dragonflies. An additional spaceship is rewarded if the players score reaches 5,000 or 10,000 points. If the attacking UFOs or enemy rockets are destroyed, points will be scored. The game progresses through 4 different screens. + 0.30 + 19810101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + satansat.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/satansat.png + + + + satansat.zip + Satan of Saturn (set 1) + A space shoot 'em up game. The gameplay is a variation of Space Invaders. + +Fly your spaceship to Saturn, then once on Saturn destroy as many Satan's as possible. Additional bonus points can be accumlated by destroying the comet or attacking dragonflies. An additional spaceship is rewarded if the players score reaches 5,000 or 10,000 points. If the attacking UFOs or enemy rockets are destroyed, points will be scored. The game progresses through 4 different screens. + 0.30 + 19810101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/satansat.png + + + + satansata.zip + Satan of Saturn (set 2) + A space shoot 'em up game. The gameplay is a variation of Space Invaders. + +Fly your spaceship to Saturn, then once on Saturn destroy as many Satan's as possible. Additional bonus points can be accumlated by destroying the comet or attacking dragonflies. An additional spaceship is rewarded if the players score reaches 5,000 or 10,000 points. If the attacking UFOs or enemy rockets are destroyed, points will be scored. The game progresses through 4 different screens. + 0.30 + 19810101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + satansat.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/satansat.png + + + + shollow.zip + Satan's Hollow (set 1) + Satan's Hollow is a 1- or a 2-player game. When playing this game, the Rocket Launcher is under YOUR control. YOU make it move back and forth across the screen to launch Rockets that will eliminate your attackers. These attackers are displayed in groups, called 'racks', across the top of the screen. The first rack is made up of a small number of attackers. The second rack is made up of a larger number of these attackers. And intermixed with the racks of attackers is a rack with only a single fire-breathing Devil's head. + +The attackers and the Devil's Head will try to wipe out your Rocket Launcher. If they do, you lose one player. In emergencies, you have a Shield which goes all around your Rocket Launcher for a short period of time. It is activated by pushing the Shield button on the control console. BUT BE CAREFUL!! This consumes a lot of power and will only last a VERY SHORT TIME! + +Each attacker eliminated will cause a Bridge Section to appear at the lower left corner of the screen EXCEPT: when there is already a Bridge Section there or when you have a Bridge Section in tow under your Rocket Launcher. Pick these Sections up with your Rocket Launcher and move them over to build a Bridge across the gorge at the right side of the screen leading into the land of SATAN. + +When you complete your Bridge into the land of SATAN, you can cross it and do battle with him. If you win you will be rewarded by increased fire power for your Rocket Launcher. If SATAN defeats you, you lose one player. + +As your skill level increases, the number of attackers is increased and the speed that the fire-breathing Devil's Head moves is increased also. + +Bonus Rocket Launchers are awarded to you periodically throughout the game as you reach or pass certain preselected point values. Each attacker has an assigned point value. + +The object of the game is to HAVE FUN while constantly improving your skills as you play, eliminating as many attackers as possible each time to get the highest score. + 0.90 + 19810101T000000 + Arcade Engineering + Bally Midway + Shooter / Space Invaders Like + 2900 + 1-2 + Midway Classics + 270 + 512x480 + media/mixrbv2/shollow.png + + + + shollow2.zip + Satan's Hollow (set 2) + Satan's Hollow is a 1- or a 2-player game. When playing this game, the Rocket Launcher is under YOUR control. YOU make it move back and forth across the screen to launch Rockets that will eliminate your attackers. These attackers are displayed in groups, called 'racks', across the top of the screen. The first rack is made up of a small number of attackers. The second rack is made up of a larger number of these attackers. And intermixed with the racks of attackers is a rack with only a single fire-breathing Devil's head. + +The attackers and the Devil's Head will try to wipe out your Rocket Launcher. If they do, you lose one player. In emergencies, you have a Shield which goes all around your Rocket Launcher for a short period of time. It is activated by pushing the Shield button on the control console. BUT BE CAREFUL!! This consumes a lot of power and will only last a VERY SHORT TIME! + +Each attacker eliminated will cause a Bridge Section to appear at the lower left corner of the screen EXCEPT: when there is already a Bridge Section there or when you have a Bridge Section in tow under your Rocket Launcher. Pick these Sections up with your Rocket Launcher and move them over to build a Bridge across the gorge at the right side of the screen leading into the land of SATAN. + +When you complete your Bridge into the land of SATAN, you can cross it and do battle with him. If you win you will be rewarded by increased fire power for your Rocket Launcher. If SATAN defeats you, you lose one player. + +As your skill level increases, the number of attackers is increased and the speed that the fire-breathing Devil's Head moves is increased also. + +Bonus Rocket Launchers are awarded to you periodically throughout the game as you reach or pass certain preselected point values. Each attacker has an assigned point value. + +The object of the game is to HAVE FUN while constantly improving your skills as you play, eliminating as many attackers as possible each time to get the highest score. + 0.90 + 19810101T000000 + Arcade Engineering + Bally Midway + Shooter / Space Invaders Like + 2900 + 1-2 + shollow.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/shollow.png + + + + slampic.zip + Saturday Night Slam Masters (bootleg with PIC16C57, set 1, 930713 etc) + A 1-on-1 fighting game in which players choose from 10 different wrestlers and take to the ring to try and defeat their larger-than-life opponents. Each wrestler has an assortment of moves, including his own special 'super slam'. The object of the game is to win and defend the championship by pinning or putting a submission hold on your opponent. + 0.90 + 19930101T000000 + Capcom + Capcom + Sports / Wrestling + 2861 + 1-4 + slammast.zip + Capcom Play System + 384x224 + media/mixrbv2/slammast.png + + + + slampic2.zip + Saturday Night Slam Masters (bootleg with PIC16C57, set 2, 930713 etc) + A 1-on-1 fighting game in which players choose from 10 different wrestlers and take to the ring to try and defeat their larger-than-life opponents. Each wrestler has an assortment of moves, including his own special 'super slam'. The object of the game is to win and defend the championship by pinning or putting a submission hold on your opponent. + 0.90 + 19930101T000000 + Capcom + Capcom + Sports / Wrestling + 2861 + 1-4 + slammast.zip + Capcom Play System + 384x224 + media/mixrbv2/slammast.png + + + + slammastu.zip + Saturday Night Slam Masters (slam masters 930713 USA) + A 1-on-1 fighting game in which players choose from 10 different wrestlers and take to the ring to try and defeat their larger-than-life opponents. Each wrestler has an assortment of moves, including his own special 'super slam'. The object of the game is to win and defend the championship by pinning or putting a submission hold on your opponent. + 0.90 + 19930101T000000 + Capcom + Capcom + Sports / Wrestling + 2861 + 1-4 + slammast.zip + Capcom Play System + 384x224 + media/mixrbv2/slammast.png + + + + slammast.zip + Saturday Night Slam Masters (Slam Masters 930713 World) + A 1-on-1 fighting game in which players choose from 10 different wrestlers and take to the ring to try and defeat their larger-than-life opponents. Each wrestler has an assortment of moves, including his own special 'super slam'. The object of the game is to win and defend the championship by pinning or putting a submission hold on your opponent. + 0.90 + 19930101T000000 + Capcom + Capcom + Sports / Wrestling + 2861 + 1-4 + Capcom Play System + 384x224 + media/mixrbv2/slammast.png + + + + saturnzi.zip + Saturn + Defend Saturn by shooting aliens. + 0.50 + 19830101T000000 + Jaleco + Zilec Electronics + Shoot'em Up + 79 + Midway Classics + 270 + 256x224 + media/mixrbv2/saturnzi.png + + + + samsho2k.zip + Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II) + One of SNK's legendary fighting game series has made a return! In Samurai Shodown II, you can take on one of the roles of 15 warriors as you fight your way through the land to defeat the evil Mizuki! Slash, kick, and slice your opponents in half...do whatever it takes...live by the sword, and die by its blade. + 0.80 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho2.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho2.png + + + + samsho2ka.zip + Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 2) + One of SNK's legendary fighting game series has made a return! In Samurai Shodown II, you can take on one of the roles of 15 warriors as you fight your way through the land to defeat the evil Mizuki! Slash, kick, and slice your opponents in half...do whatever it takes...live by the sword, and die by its blade. + 0.80 + 19940101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + samsho2.zip + Neo-Geo + 320x224 + media/mixrbv2/samsho2.png + + + + saurobl.zip + Sauro (bootleg) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + saurop.zip + Sauro (Philko license) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + saurorr.zip + Sauro (Recreativos Real S.A. license) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + sauro.zip + Sauro (set 1) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + Mame + 240x224 + media/mixrbv2/sauro.png + + + + sauroa.zip + Sauro (set 2) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + saurob.zip + Sauro (set 3) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + savgbees.zip + Savage Bees + Exed Exes is an arcade vertical shooter developed by Capcom. It was licensed to Memetron and released outside of Japan in the arcades as Savage Bees Memetron (licensor to the game). It uses similar hardware to Capcom's 1942, but it is more of a spiritual successor to Capcom's earlier shooter Vulgus. It takes place in a science fiction alien hive where you must pilot your ship through many stages protected by insects, some as large as your craft, and some even larger. + +What made Exed Exes stand apart from other shooters, besides the high resolution graphics for its time, and the detailed use of parallax scrolling to indicate depth, was the fact that it was one of the earliest vertical shooters to allow for two player simultaneous play. Rather than waiting for one player to take his turn, two players could enjoy the game at the same time, and even work cooperatively to get further along in the game. + 0.70 + 19850101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + exedexes.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/exedexes.png + + + + savagere.zip + Savage Reign / Fu'un Mokushiroku - kakutou sousei + The evil King Lion has crowned himself as the master of Fuun-Ken, a new style of martial arts that includes throwing weapons in addition to hand-to-hand combat. This does not sit well with the rest of the Fuun-Ken fighters around the world, so they all decide to beat each other up in classic 2 round fights to decide who gets to get down with King Lion himself. + +Savage Reign is a one-on-one 2D fighter in which you select your character and try to defeat all challengers using your basic attacks and special moves. The game features 2 different horizontal planes to which the characters can freely jump to in order to avoid attacks a la Fatal Fury. You cannot escape completely however, as all characters have a throwing weapon they can use in different ways to reach each other no matter where they are. + 0.85 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/savagere.png + + + + savagereb.zip + Savage Reign / Fu'un Mokushiroku - kakutou sousei (Boss Hack) + The evil King Lion has crowned himself as the master of Fuun-Ken, a new style of martial arts that includes throwing weapons in addition to hand-to-hand combat. This does not sit well with the rest of the Fuun-Ken fighters around the world, so they all decide to beat each other up in classic 2 round fights to decide who gets to get down with King Lion himself. + +Savage Reign is a one-on-one 2D fighter in which you select your character and try to defeat all challengers using your basic attacks and special moves. The game features 2 different horizontal planes to which the characters can freely jump to in order to avoid attacks a la Fatal Fury. You cannot escape completely however, as all characters have a throwing weapon they can use in different ways to reach each other no matter where they are. + 0.85 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + savagere.zip + Neo-Geo + 320x224 + media/mixrbv2/savagere.png + + + + scion.zip + Scion + Players have to pilot a aircraft and shoot the alien waves space ships and dodge his attacks, while destroys a giant latticed ground structure, for this you must shoot first a special ship in mid-air to get the extra weapon and now you are ready to throwing bombs for destroy all the square targets, this makes the whole structure collapses in order to continue on to the next scene and later face off to the end boss structure. + 0.50 + 19840101T000000 + Seibu Denshi + Seibu Denshi + Shoot'em Up + 79 + 1-2 + Seibu Kaihatsu + 240x224 + media/mixrbv2/scion.png + + + + scionc.zip + Scion (Cinematronics) + Players have to pilot a aircraft and shoot the alien waves space ships and dodge his attacks, while destroys a giant latticed ground structure, for this you must shoot first a special ship in mid-air to get the extra weapon and now you are ready to throwing bombs for destroy all the square targets, this makes the whole structure collapses in order to continue on to the next scene and later face off to the end boss structure. + 0.50 + 19840101T000000 + Seibu Denshi + Seibu Denshi + Shoot'em Up + 79 + 1-2 + scion.zip + Seibu Kaihatsu + 240x224 + media/mixrbv2/scion.png + + + + scotrsht.zip + Scooter Shooter + Scooter Shooter is a 2D arcade side scrolling shooter with split-screen. Players fly on special scooters and compete against each other (the player can play against CPU or the second player) - they start on the opposite end of map, and go towards the center. They must kill various enemies on road. + 0.50 + 19850101T000000 + Konami + Konami + Shooter / Plane + 2928 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/scotrsht.png + + + + scorpionmc.zip + Scorpion (Moon Cresta hardware) + Maneuver a spaceship through terrains filled with spiders and other creatures. + 0.60 + 19820101T000000 + Zaccaria + Zaccaria + Shoot'em Up + 79 + 1-2 + scorpion.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scorpion.png + + + + scorpion.zip + Scorpion (set 1) + Maneuver a spaceship through terrains filled with spiders and other creatures. + 0.60 + 19820101T000000 + Zaccaria + Zaccaria + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/scorpion.png + + + + scorpiona.zip + Scorpion (set 2) + Maneuver a spaceship through terrains filled with spiders and other creatures. + 0.60 + 19820101T000000 + Zaccaria + Zaccaria + Shoot'em Up + 79 + 1-2 + scorpion.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scorpion.png + + + + scorpionb.zip + Scorpion (set 3) + Maneuver a spaceship through terrains filled with spiders and other creatures. + 0.60 + 19820101T000000 + Zaccaria + Zaccaria + Shoot'em Up + 79 + 1-2 + scorpion.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scorpion.png + + + + scramble.zip + Scramble + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramblb.zip + Scramble (bootleg on Galaxian hardware) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramb2.zip + Scramble (bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramblebb.zip + Scramble (bootleg?) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramce.zip + Scramble (Centromatic S.A., Spanish bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramblebf.zip + Scramble (Karateko, French bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scrampt.zip + Scramble (Petaco S.A., Spanish bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scrambler.zip + Scramble (Reben S.A. Spanish bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scramrf.zip + Scramble (Recreativos Franco, Spanish bootleg) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scrambles.zip + Scramble (Stern) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + scregg.zip + Scrambled Egg + A one or two player maze game published and developed by Technos in 1983. The player must run around a maze kicking Eggs into walls to break them open, revealing chicks. Chicks then must be kicked off the screen. + 0.50 + 19830101T000000 + Technos Japan Corp. + Tecmo + Action + 10 + 1-2 + Technos + 270 + 240x240 + media/mixrbv2/scregg.png + + + + screwloo.zip + Screw Loose (prototype) + The player controls a blue robot character named "Robop" around a 3-D perspective playfield grid, while shooting enemies and gathering items for points and beware the Inchworm it will steal your robotics hands! + +Your character, Robop, must navigate his way around a playfied shooting records, snipes and bees to earn points. Gathering hamburgers, nuts, briefcases and atoms will light up the bulbs. The levels advance when all the bulbs have been lit. Robop must avoid the inchworm and pick up his hands if they become detached from his body. The game ends if all Robop hands are pushed off the screen by the inchworm or he is destroyed by the Cherry Bomb. + +The left joystick moves Robop, while the right joystick fires. The joystick buttons activate Robop's Super!Charge that both speeds him up and shields him from attack. + 0.70 + 19830101T000000 + Mylstar Electronics + Mylstar + Shooter + 2646 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/screwloo.png + + + + cscrtry.zip + Scrum Try (DECO Cassette) (US) (set 1) + 0.30 + 19840101T000000 + Data East + Data East + Sports / Rugby + 2948 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cscrtry.png + + + + cscrtry2.zip + Scrum Try (DECO Cassette) (US) (set 2) + 0.30 + 19840101T000000 + Data East + Data East + Sports / Rugby + 2948 + 1-2 + cscrtry.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cscrtry.png + + + + scudhamm.zip + Scud Hammer + An absolutely insane paper-rock-scissors game where the winner gets to beat the living crap out of the opponent. + 0.50 + 19940101T000000 + Jaleco + Jaleco + Various + 39 + 1 + Jaleco + 270 + 256x224 + media/mixrbv2/scudhamm.png + + + + sdfight.zip + SD Fighters (Korea) + A Korean fighting game featuring 8 Super Deformed characters. + 0.50 + 19960101T000000 + SemiCom + SemiCom + Fight / Versus + 2885 + 1-2 + SemiCom + 320x240 + media/mixrbv2/sdfight.png + + + + neobattl.zip + SD Gundam Neo Battling (Japan) + Choose an SD Gundam and destroy Zion units in this vertically scrolling shooter. Hold down the Shoot button for a few seconds and release to use the SD Gundam's secret weapon. + 0.50 + 19920101T000000 + Banpresto + Banpresto + Shoot'em Up + 79 + 1-2 + Banpresto + 270 + 384x240 + media/mixrbv2/neobattl.png + + + + sdgndmps.zip + SD Gundam Psycho Salamander no Kyoui + The title of this game translates from Japanese as "Mobile Suit Super Deformed Gundam - Menace of Psycho Salamander". + 0.50 + 19910101T000000 + Banpresto + Banpresto + Shooter / Run and Gun + 2903 + 1-2 + Banpresto + 320x224 + media/mixrbv2/sdgndmps.png + + + + grainbow.zip + SD Gundam Sangokushi Rainbow Tairiku Senki (Japan) + SD stands for 'Super Deformed', and refers to the exaggerated body proportions of the characters. + +The title of this game translates from Japanese as 'SD Gundam - Knights of the Three Rainbow Kingdoms'. + 19930101T000000 + Banpresto + Banpresto + Platform / Shooter Scrolling + 2887 + 1-2 + Banpresto + 320x224 + media/mixrbv2/grainbow.png + + + + grainbowk.zip + SD Gundam Sangokushi Rainbow Tairiku Senki (Korea) + SD stands for 'Super Deformed', and refers to the exaggerated body proportions of the characters. + +The title of this game translates from Japanese as 'SD Gundam - Knights of the Three Rainbow Kingdoms'. + 19930101T000000 + Banpresto + Banpresto + Platform / Shooter Scrolling + 2887 + 1-2 + grainbow.zip + Banpresto + 320x224 + media/mixrbv2/grainbow.png + + + + sdibl.zip + SDI - Strategic Defense Initiative (bootleg, original hardware) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdibl2.zip + SDI - Strategic Defense Initiative (bootleg, set 1) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdibl3.zip + SDI - Strategic Defense Initiative (bootleg, set 2) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdibl4.zip + SDI - Strategic Defense Initiative (bootleg, set 3) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdibl5.zip + SDI - Strategic Defense Initiative (bootleg, set 4) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdibl6.zip + SDI - Strategic Defense Initiative (bootleg, set 5) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdi.zip + SDI - Strategic Defense Initiative (Japan, newer, System 16A, FD1089B 317-0027) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdia.zip + SDI - Strategic Defense Initiative (Japan, old, System 16A, FD1089B 317-0027) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sdib.zip + SDI - Strategic Defense Initiative (System 16B, FD1089A 317-0028) + SDI - Strategic Defense Initiative is a strategic challenge in the science of offensive & defensive warfare. + 0.60 + 19870101T000000 + SEGA + SEGA + Shooter / Missile Command Like + 2945 + 1-2 + sdi.zip + Sega Classics + 320x224 + media/mixrbv2/sdi.png + + + + sfposeid.zip + Sea Fighter Poseidon + A great underwater shooter game. + +The player start on an dive propulsion vehicle that can fire torpedoes. The mission is to rescue all the hostages and avoid or shoot all enemies that come your way to attack you. If your vehicle runs out of fuel can explode to avoid this must be attentive to the fuel indicator, if your tank is almost finished press the dismount button to get off the vehicle. Now the player is swimming freely and your weapon is a powerful harpoon. If you kill the owner of another dive vehicle you can mount it and use torpedoes again. The number of hostages to rescue increases with each level. When all the hostages have been rescued, the level ends. + 0.70 + 19840101T000000 + Taito + Taito + Shooter / Horizontal + 2876 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/sfposeid.png + + + + seawolft.zip + Sea Wolf (Tecfri) + Horizontal scrolling submarine game. Guide your submarine through a hail of depth charges, mines, enemy ships and subs. Collect fuel, triple guns, missiles, and shield on the way. Fight a tough sub at the end of each section. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Shoot'em Up + 79 + 1-2 + sauro.zip + Mame + 240x224 + media/mixrbv2/sauro.png + + + + searchey.zip + Search Eye (English / Korean / Japanese / Italian) + Features 70 levels. + 0.70 + 19990101T000000 + Yun Sung + Yun Sung + Various + 39 + 1-2 + Mame + 320x240 + media/mixrbv2/searchey.png + + + + searcheya.zip + Search Eye (English / Korean) + Features 70 levels. + 0.70 + 19990101T000000 + Yun Sung + Yun Sung + Various + 39 + 1-2 + searchey.zip + Mame + 320x240 + media/mixrbv2/searchey.png + + + + searchp2.zip + Search Eye Plus V2.0 + 0.70 + 19990101T000000 + Yun Sung + Various + 39 + 1-2 + Mame + 320x240 + media/mixrbv2/searchp2.png + + + + sectionz.zip + Section Z (set 1) + As a sole astronaut, you must penetrate the alien Balangool space craft and destroy the evil 'L-Brain'. Make your way through 27 alphabet-labeled levels to find his lair. + +The player maneuvers the space ranger throughout the enemy space station, which consists of 26 alphabetically ordered corridors known as "sections", starting from Section A and ending at the titular Section Z. The game is divided into five stages, each consisting of five sections (with the final stage having six sections to accommodate the spare letter). The player will fight an enemy boss at the end of each stage, concluding with the final battle against the "L Brain" at Section Z. The game's stages alternates between horizontal-scrolling stage (left or right) and upwards vertical-scrolling stages. The player will lose a life every time they get hit by enemy fire. Additional lives can be obtained if the player achieves a high enough score. The game will be over if the player loses all of their lives, although a chance to continue will be provided. + +The controls consists of an eight-way joystick and two buttons, one for shooting and the other for changing the character's aim to the left or right. This allows the player to shoot at one direction while moving away towards the opposite. The player will shoot their rifle towards the left or the right with the fire button, while dropping bombs at the same time to the ground. By destroying certain dome-shaped containers, the player can obtain one of three power-up items represented by letters: S, P, and B. S increases the player's mobility speed, while P increases their firing power; each can improved for up to three increments. However, these power-ups will be lost whenever the player loses a life. The B item will simply give the player bonus points + 0.70 + 19850101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 256x240 + media/mixrbv2/sectionz.png + + + + sectionza.zip + Section Z (set 2) + As a sole astronaut, you must penetrate the alien Balangool space craft and destroy the evil 'L-Brain'. Make your way through 27 alphabet-labeled levels to find his lair. + +The player maneuvers the space ranger throughout the enemy space station, which consists of 26 alphabetically ordered corridors known as "sections", starting from Section A and ending at the titular Section Z. The game is divided into five stages, each consisting of five sections (with the final stage having six sections to accommodate the spare letter). The player will fight an enemy boss at the end of each stage, concluding with the final battle against the "L Brain" at Section Z. The game's stages alternates between horizontal-scrolling stage (left or right) and upwards vertical-scrolling stages. The player will lose a life every time they get hit by enemy fire. Additional lives can be obtained if the player achieves a high enough score. The game will be over if the player loses all of their lives, although a chance to continue will be provided. + +The controls consists of an eight-way joystick and two buttons, one for shooting and the other for changing the character's aim to the left or right. This allows the player to shoot at one direction while moving away towards the opposite. The player will shoot their rifle towards the left or the right with the fire button, while dropping bombs at the same time to the ground. By destroying certain dome-shaped containers, the player can obtain one of three power-up items represented by letters: S, P, and B. S increases the player's mobility speed, while P increases their firing power; each can improved for up to three increments. However, these power-ups will be lost whenever the player loses a life. The B item will simply give the player bonus points + 0.70 + 19850101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + sectionz.zip + Capcom Classics + 256x240 + media/mixrbv2/sectionz.png + + + + sectrzon.zip + Sector Zone (set 1) + The player controls a gliding motorcycle-like vehicle, bumping other riders, collecting power modules and collecting blue people who are stranded. A second area removes the riders and adds rough terrain, while the final leg features a battle with one or more dinosaur tanks, which launch their heads when destroyed. The sequence repeats infinitely, getting progressively difficult. + 0.70 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Horizontal + 2938 + 1-2 + seicross.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/seicross.png + + + + sectrzont.zip + Sector Zone (set 2, Tecfri hardware) + The player controls a gliding motorcycle-like vehicle, bumping other riders, collecting power modules and collecting blue people who are stranded. A second area removes the riders and adds rough terrain, while the final leg features a battle with one or more dinosaur tanks, which launch their heads when destroyed. The sequence repeats infinitely, getting progressively difficult. + 0.70 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Horizontal + 2938 + 1-2 + seicross.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/seicross.png + + + + sectrzona.zip + Sector Zone (set 3) + The player controls a gliding motorcycle-like vehicle, bumping other riders, collecting power modules and collecting blue people who are stranded. A second area removes the riders and adds rough terrain, while the final leg features a battle with one or more dinosaur tanks, which launch their heads when destroyed. The sequence repeats infinitely, getting progressively difficult. + 0.70 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Horizontal + 2938 + 1-2 + seicross.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/seicross.png + + + + seganinj.zip + Sega Ninja (315-5102) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + seganinja.zip + Sega Ninja (315-5113) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + seganinju.zip + Sega Ninja (not encrypted) + A run & gun shooter arcade game released by Sega in 1985, also known as Sega Ninja or The Ninja. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter / Run and Gun + 2903 + 1-2 + seganinj.zip + Sega Classics + 512x224 + media/mixrbv2/seganinj.png + + + + ssonicbr.zip + SegaSonic Bros. (prototype, hack) + 19920101T000000 + Mame + + + sonicfgt.zip + SegaSonic Cosmo Fighter + SegaSonic Cosmo Fighter (ou SegaSonic Cosmo Fighter Galaxy Patrol) é um passeio infantil de 1993 que apresenta Sonic the Hedgehog lutando contra inimigos no espaço que aparecem no monitor dentro do passeio. O objetivo é tentar resgatar os amigos de Sonic (Flicky e sua turma) do Doctor Eggman. O jogo é um shoot-'em-up mostrado de uma perspectiva top-down. + SEGA + 1 + Sega Classics + media/mixrbv2/sonicfgt.png + + + + amatelas.zip + Sei Senshi Amatelass + Become the Mighty Fighting Amazon and you will search jungles and deserts on the most dangerous island on earth. Your mission is to recapture the men you desperately need to save the only race of giant womankind + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Run and Gun + 2903 + 1-2 + amazon.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/amazon.png + + + + seicross.zip + Seicross (set 1) + The player controls a gliding motorcycle-like vehicle, bumping other riders, collecting power modules and collecting blue people who are stranded. A second area removes the riders and adds rough terrain, while the final leg features a battle with one or more dinosaur tanks, which launch their heads when destroyed. The sequence repeats infinitely, getting progressively difficult. + 0.70 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Horizontal + 2938 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/seicross.png + + + + seicrossa.zip + Seicross (set 2) + The player controls a gliding motorcycle-like vehicle, bumping other riders, collecting power modules and collecting blue people who are stranded. A second area removes the riders and adds rough terrain, while the final leg features a battle with one or more dinosaur tanks, which launch their heads when destroyed. The sequence repeats infinitely, getting progressively difficult. + 0.70 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Vehicle, Horizontal + 2938 + 1-2 + seicross.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/seicross.png + + + + sscandal.zip + Seishun Scandal (315-5132, Japan) + My Hero is a very basic beat-'em-up game, where the objective is to travel to the right, punching and kicking enemies while trying not to be hit too many times yourself. Eventually you will come to a clearing and have to fight a boss - defeating him will briefly reunite you with your girlfriend, before she is kidnapped again. The game loops indefinitely, and ends when the player runs out of lives. + 0.70 + 19850101T000000 + SEGA + SEGA + Fight / 2D + 2914 + 1-2 + myhero.zip + Sega Classics + 512x224 + media/mixrbv2/myhero.png + + + + selfeena.zip + Sel Feena + You are in a maze with enemies, key squares and chests. Throw the chest at an enemy to trap them inside. Then throw the chest onto a key square to get coins to come out. Do not wait to long or the enemies will escape. Gather up these coins. If you do not have a chest and are faced with an enemy, use your stun shot to stop the temporarily. If you are surrounded, use your stun blast to temporarily stop all the enemies around and next to you + 0.70 + 19910101T000000 + East Technology + East Technology + Action + 10 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/selfeena.png + + + + grdnstrmj.zip + Sen Jing - Guardian Storm (Japan) + Guardian Storm (known in Korea as Jeon Sin, and mistakenly in MAME as Sen Jin) is a vertical shoot 'em up developed by Afega and published by Apple Industries. Released in May 1998, it has eight stages. Players collect gold that they can trade in for power-ups, bombs, and extra lives between stages. +Guardian Storm runs on the same shooting engine as Red Hawk, so it can be considered as a kind of sequel. The design, however, is much more cartoony, even though the advertisement for the Western release doesn't show it at all. One of the characters is Sun Wukong on a cloud, and there's some crazy enemies like the Dol Hareubang statues of Jeju Island. Powerup pickups during the stages have become much rarer now, more enemies now drop money instead, which can be used to buy upgrades in a store after each stage, but usually spending power is very limited, which is the major reason for this game being much harder than Red Hawk. Guardian Storm was also quite successful internationally. + 0.60 + 19980101T000000 + Afega + Apple Industries + Shoot'em Up + 79 + 1-2 + grdnstrm.zip + NMK + 256x224 + media/mixrbv2/grdnstrm.png + + + + sengokuh.zip + Sengoku / Sengoku Denshou (NGH-017)(US) + A 2D side-scrolling beat 'em up, Sengoku casts you and a friend as two renegade fighters out to beat the crap out of the many assorted gangs that threaten the post-apocalyptic cities of the future. Unfortunately for them they also get caught in a time-warping scheme caused by the evil Nobunaga who attempts to invade the time period with mythical warriors and evil creatures from the Japanese sengoku period. + +The game thus takes you from the city to a spirit-realm from time to time, in which you must fight all sorts of Japanese mythical figures, and release three haunted spirits that can aid you in your battle. Collecting orbs from defeated enemies allows you heal up, gain weapons and even energy attacks and also summon the warrior forms of the spirits you released, which change your character's form and give you a new collection of attacks and powers. + 0.55 + 19910101T000000 + SNK + SNK + Fight + 14 + 1-2 + sengoku.zip + Neo-Geo + 320x224 + media/mixrbv2/sengoku.png + + + + sengoku.zip + Sengoku / Sengoku Denshou (NGM-017)(NGH-017) + A 2D side-scrolling beat 'em up, Sengoku casts you and a friend as two renegade fighters out to beat the crap out of the many assorted gangs that threaten the post-apocalyptic cities of the future. Unfortunately for them they also get caught in a time-warping scheme caused by the evil Nobunaga who attempts to invade the time period with mythical warriors and evil creatures from the Japanese sengoku period. + +The game thus takes you from the city to a spirit-realm from time to time, in which you must fight all sorts of Japanese mythical figures, and release three haunted spirits that can aid you in your battle. Collecting orbs from defeated enemies allows you heal up, gain weapons and even energy attacks and also summon the warrior forms of the spirits you released, which change your character's form and give you a new collection of attacks and powers. + 0.55 + 19910101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sengoku.png + + + + sengoku2.zip + Sengoku 2 / Sengoku Denshou 2 + A sequel to Sengoku, Sengoku 2 once again casts you as two street fighting heroes caught in the midst of a supernatural attack by the undead forces of the evil Nobunaga from the Japanese sengoku period, although this time the game warps you through several time periods and locations to fight evil, from feudal Japan to WWII Europe. + +As in the original, the game plays as a standard 2D side-scrolling beat 'em up, in which you have to proceed through each stage killing all enemies that cross your path and defeating the stage boss to proceed. New for the sequel is the inclusion of swords as your default weapons, which now feature both high and low attacks, as well as a block move that allows you to parry enemy attacks. Collecting orbs gives you weapon upgrades and energy attacks, as well as the ability to morph into any of the three spirits released in the original which give you a new arsenal of moves and powers. + 0.75 + 19930101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sengoku2.png + + + + sengoku3s.zip + Sengoku 3 / Sengoku Densho 2001 (Evolution 1.0, FCHT hack) + The third game in the Sengoku series of beat 'em ups, Sengoku 3 once again pits you and a friend against the undead forces of Nobunaga, however this time you can freely select from a group of different characters each with their own weapons and abilities, as well as choose which location in the world (or level) to tackle whenever you want. + +The game incorporates a more complex fighting system similar to a one-on-one fighting game, by giving players different attack buttons, special moves based on directional inputs, combos and even a super bar used to unleash devastating super moves. You cannot change weapons or transform into other characters as in the previous games, but you can acquire different ranged weapons for additional attacks as well as unlock certain bosses to increase your available characters. + 0.80 + 20010101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + sengoku3.zip + Neo-Geo + 320x224 + media/mixrbv2/sengoku3.png + + + + sengoku3fs.zip + Sengoku 3 / Sengoku Densho 2001 (Feng Shen Edition) + The third game in the Sengoku series of beat 'em ups, Sengoku 3 once again pits you and a friend against the undead forces of Nobunaga, however this time you can freely select from a group of different characters each with their own weapons and abilities, as well as choose which location in the world (or level) to tackle whenever you want. + +The game incorporates a more complex fighting system similar to a one-on-one fighting game, by giving players different attack buttons, special moves based on directional inputs, combos and even a super bar used to unleash devastating super moves. You cannot change weapons or transform into other characters as in the previous games, but you can acquire different ranged weapons for additional attacks as well as unlock certain bosses to increase your available characters. + 0.80 + 20010101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + sengoku3.zip + Neo-Geo + 320x224 + media/mixrbv2/sengoku3.png + + + + sengoku3eb.zip + Sengoku 3 / Sengoku Densho 2001 (Qing Edition) + The third game in the Sengoku series of beat 'em ups, Sengoku 3 once again pits you and a friend against the undead forces of Nobunaga, however this time you can freely select from a group of different characters each with their own weapons and abilities, as well as choose which location in the world (or level) to tackle whenever you want. + +The game incorporates a more complex fighting system similar to a one-on-one fighting game, by giving players different attack buttons, special moves based on directional inputs, combos and even a super bar used to unleash devastating super moves. You cannot change weapons or transform into other characters as in the previous games, but you can acquire different ranged weapons for additional attacks as well as unlock certain bosses to increase your available characters. + 0.80 + 20010101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + sengoku3.zip + Neo-Geo + 320x224 + media/mixrbv2/sengoku3.png + + + + sengoku3.zip + Sengoku 3 / Sengoku Densho 2001 (set 1) + The third game in the Sengoku series of beat 'em ups, Sengoku 3 once again pits you and a friend against the undead forces of Nobunaga, however this time you can freely select from a group of different characters each with their own weapons and abilities, as well as choose which location in the world (or level) to tackle whenever you want. + +The game incorporates a more complex fighting system similar to a one-on-one fighting game, by giving players different attack buttons, special moves based on directional inputs, combos and even a super bar used to unleash devastating super moves. You cannot change weapons or transform into other characters as in the previous games, but you can acquire different ranged weapons for additional attacks as well as unlock certain bosses to increase your available characters. + 0.80 + 20010101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sengoku3.png + + + + sengoku3a.zip + Sengoku 3 / Sengoku Densho 2001 (Set 2) + The third game in the Sengoku series of beat 'em ups, Sengoku 3 once again pits you and a friend against the undead forces of Nobunaga, however this time you can freely select from a group of different characters each with their own weapons and abilities, as well as choose which location in the world (or level) to tackle whenever you want. + +The game incorporates a more complex fighting system similar to a one-on-one fighting game, by giving players different attack buttons, special moves based on directional inputs, combos and even a super bar used to unleash devastating super moves. You cannot change weapons or transform into other characters as in the previous games, but you can acquire different ranged weapons for additional attacks as well as unlock certain bosses to increase your available characters. + 0.80 + 20010101T000000 + Noise Factory + SNK + Fight + 14 + 1-2 + sengoku3.zip + Neo-Geo + 320x224 + media/mixrbv2/sengoku3.png + + + + sngkace.zip + Sengoku Ace (Japan, set 1) + This game is known in Japan as "Sengoku Ace" (translates from Japanese as 'Civil War Ace'). + +Samurai Aces is the very first game developed by Psikyo (Psikyo was founded in 1992 in Tokyo). + +Note: There are 22 different endings! + 0.90 + 19930101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + samuraia.zip + Psikyo + 270 + 320x224 + media/mixrbv2/samuraia.png + + + + sngkacea.zip + Sengoku Ace (Japan, set 2) + This game is known in Japan as "Sengoku Ace" (translates from Japanese as 'Civil War Ace'). + +Samurai Aces is the very first game developed by Psikyo (Psikyo was founded in 1992 in Tokyo). + +Note: There are 22 different endings! + 0.90 + 19930101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + samuraia.zip + Psikyo + 270 + 320x224 + media/mixrbv2/samuraia.png + + + + tengaij.zip + Sengoku Blade - sengoku Ace episode II (Japan) + Nice horizontal shoot'em up with 5 selectable characters who have their own storyline and ending. + 0.60 + 19960101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + tengai.zip + Psikyo + 320x224 + media/mixrbv2/tengai.png + + + + mercsj.zip + Senjo no Ookami II (Ookami 2 900302 Japan) + The US faces a grave crisis! The former president has been kidnapped by a group of revolutionaries while on a trip on Central Africa meant to promote world peace. Take control of three highly skilled anti-terrorist soldiers and venture through enemy lines to save the former president & annihilate the rebel army in the process. Features solid graphics & sound, plenty of weapons & vehicles to use and hulking bosses to defeat. + 0.90 + 19900101T000000 + Capcom + Capcom + Shooter + 2646 + 1-3 + mercs.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/mercs.png + + + + commandoj.zip + Senjou no Ookami + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + senjyo.zip + Senjyo + Senjyo is an arcade game developed in 1983 by Tehkan (now known as Tecmo). The gameplay involves the player controlling a fixed turret on a tank shooting oncoming alien enemies through a cross-hair target. A certain number of enemies must be destroyed to progress to the next stage. The original arcade cabinet was a cocktail table. + 0.70 + 19830101T000000 + Tehkan Ltd. + Tehkan Ltd. + Race, Driving + 28 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/senjyo.png + + + + sfx.zip + SF-X + SF-X (c) 1983 Nichibutsu. - TECHNICAL - Main CPU : Z80 (@ 3.072 Mhz) Sound CPU : (2x) Z80 (@ 1.78975 Mhz) Sound Chips : (2x) AY8910 (@ 1.78975 Mhz), and a DAC for speechs Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Developed by Nihon + 0.50 + 19830101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 768x224 + media/mixrbv2/sfx.png + + + + shackled.zip + Shackled (US) + Move your player through a maze-like level in this shoot'em up. Shoot enemies and collect treasures and keys. + 0.50 + 19860101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/shackled.png + + + + shdancer1.zip + Shadow Dancer (set 1) + Some time after destroying Neo Zeed in Revenge of Shinobi, Joe Musashi decides to spend some time in america with his student, Kato. One day though when a mysterious terrorist group known as Un + 0.80 + 19900101T000000 + SEGA + SEGA + Platform / Fighter Scrolling + 2896 + 1 + shdancer.zip + Sega Classics + 320x224 + media/mixrbv2/shdancer.png + + + + shdancerj.zip + Shadow Dancer (set 2, Japan) + Some time after destroying Neo Zeed in Revenge of Shinobi, Joe Musashi decides to spend some time in america with his student, Kato. One day though when a mysterious terrorist group known as Un + 0.80 + 19900101T000000 + SEGA + SEGA + Platform / Fighter Scrolling + 2896 + 1 + shdancer.zip + Sega Classics + 320x224 + media/mixrbv2/shdancer.png + + + + shdancer.zip + Shadow Dancer (set 3, US) + Some time after destroying Neo Zeed in Revenge of Shinobi, Joe Musashi decides to spend some time in america with his student, Kato. One day though when a mysterious terrorist group known as Un + 0.80 + 19900101T000000 + SEGA + SEGA + Platform / Fighter Scrolling + 2896 + 1 + Sega Classics + 320x224 + media/mixrbv2/shdancer.png + + + + shadfrcej.zip + Shadow Force (Japan, Version 2) + Shadow Force is a side-scrolling platform beat-em-up for one or two players, who choose to play as one of four Ninjas and must use all the means at their disposal to free the world from the grip of the evil Dr. Wong and his terrifying 'Theaser' organization. + +Shadow Force has 6 buttons: 2 for punches (low and high) 2 for kicks (low and high) 1 for jumping and 1 for possessing an enemy. Additional attack moves can be utilised by moving the joystick up or down and pressing punch and kick buttons. It's also possible to combine punch and kick attacks to obtain different combos and while the enemies can do the same, the number and variation of their attacks is generally lower than those available to the players. + +In addition to being able to possess nearby enemies, Shadow Force also features something else new to the side-scrolling beat-em-up genre; at the end of each stage players take part in a bonus round consisting of a one-on-one fight. + +Players can choose to start on any one of the first three stages and the game features 14 different possible endings. + 0.70 + 19930101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-2 + shadfrce.zip + Technos + 320x240 + media/mixrbv2/shadfrce.png + + + + shadfrceu.zip + Shadow Force (US, Version 2) + Shadow Force is a side-scrolling platform beat-em-up for one or two players, who choose to play as one of four Ninjas and must use all the means at their disposal to free the world from the grip of the evil Dr. Wong and his terrifying 'Theaser' organization. + +Shadow Force has 6 buttons: 2 for punches (low and high) 2 for kicks (low and high) 1 for jumping and 1 for possessing an enemy. Additional attack moves can be utilised by moving the joystick up or down and pressing punch and kick buttons. It's also possible to combine punch and kick attacks to obtain different combos and while the enemies can do the same, the number and variation of their attacks is generally lower than those available to the players. + +In addition to being able to possess nearby enemies, Shadow Force also features something else new to the side-scrolling beat-em-up genre; at the end of each stage players take part in a bonus round consisting of a one-on-one fight. + +Players can choose to start on any one of the first three stages and the game features 14 different possible endings. + 0.70 + 19930101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-2 + shadfrce.zip + Technos + 320x240 + media/mixrbv2/shadfrce.png + + + + shadfrce.zip + Shadow Force (World, Version 3) + Shadow Force is a side-scrolling platform beat-em-up for one or two players, who choose to play as one of four Ninjas and must use all the means at their disposal to free the world from the grip of the evil Dr. Wong and his terrifying 'Theaser' organization. + +Shadow Force has 6 buttons: 2 for punches (low and high) 2 for kicks (low and high) 1 for jumping and 1 for possessing an enemy. Additional attack moves can be utilised by moving the joystick up or down and pressing punch and kick buttons. It's also possible to combine punch and kick attacks to obtain different combos and while the enemies can do the same, the number and variation of their attacks is generally lower than those available to the players. + +In addition to being able to possess nearby enemies, Shadow Force also features something else new to the side-scrolling beat-em-up genre; at the end of each stage players take part in a bonus round consisting of a one-on-one fight. + +Players can choose to start on any one of the first three stages and the game features 14 different possible endings. + 0.70 + 19930101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-2 + Technos + 320x240 + media/mixrbv2/shadfrce.png + + + + beast.zip + Shadow of the Beast (Neo Geo demo) + Homebrew Demo + 20020101T000000 + Jeff Kurtz + Homebrew + Platform + 7 + Neo-Geo + media/mixrbv2/beast.png + + + shadoww.zip + Shadow Warriors (World, set 1) + Ryu, the Dragon Ninja, travels the world to defeat evil wherever he finds it. + 0.70 + 19880101T000000 + Tecmo + Ocean + Beat'em Up + 1 + 1-2 + Tecmo + 256x224 + media/mixrbv2/shadoww.png + + + + shadowwa.zip + Shadow Warriors (World, set 2) + Ryu, the Dragon Ninja, travels the world to defeat evil wherever he finds it. + 0.70 + 19880101T000000 + Tecmo + Ocean + Beat'em Up + 1 + 1-2 + shadoww.zip + Tecmo + 256x224 + media/mixrbv2/shadoww.png + + + + shadowld.zip + Shadowland (YD3) + You control Tarousuke, a boy who must travel through a scary world fighting demons and other monsters. + 0.70 + 19870101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/shadowld.png + + + + shangha3j.zip + Shanghai III (Japan) + Szechuan-style solitaire mahjong. + 0.80 + 19930101T000000 + Sunsoft + Sunsoft + Asiatic board game + 2647 + 1-2 + shangha3.zip + Mame + 384x224 + media/mixrbv2/shangha3.png + + + + shangha3u.zip + Shanghai III (US) + Szechuan-style solitaire mahjong. + 0.80 + 19930101T000000 + Sunsoft + Sunsoft + Asiatic board game + 2647 + 1-2 + shangha3.zip + Mame + 384x224 + media/mixrbv2/shangha3.png + + + + shangha3up.zip + Shanghai III (US, prototype) + Szechuan-style solitaire mahjong. + 0.80 + 19930101T000000 + Sunsoft + Sunsoft + Asiatic board game + 2647 + 1-2 + shangha3.zip + Mame + 384x224 + media/mixrbv2/shangha3.png + + + + shangha3.zip + Shanghai III (World) + Szechuan-style solitaire mahjong. + 0.80 + 19930101T000000 + Sunsoft + Sunsoft + Asiatic board game + 2647 + 1-2 + Mame + 384x224 + media/mixrbv2/shangha3.png + + + + shangkid.zip + Shanghai Kid + A fighting game from 1985, notable for being the first to implement a combo system. + 0.50 + 19850101T000000 + Taiyo + Taiyo + Fight / Versus + 2885 + 1-2 + Data East Classics + 288x224 + media/mixrbv2/shangkid.png + + + + shaolins.zip + Shao-lin's Road (set 1) + Kung-fu player jumps around multiple level boards, kicking opponents and collecting power-ups and bonus items. Player defeats by way of three kicks the board "boss" and advances to the next level. + 0.80 + 19850101T000000 + Konami + Konami + Fight + 14 + 1-2 + kicker.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/kicker.png + + + + shaolinb.zip + Shao-lin's Road (set 2) + Kung-fu player jumps around multiple level boards, kicking opponents and collecting power-ups and bonus items. Player defeats by way of three kicks the board "boss" and advances to the next level. + 0.80 + 19850101T000000 + Konami + Konami + Fight + 14 + 1-2 + kicker.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/kicker.png + + + + sharkatt.zip + Shark Attack + Divers come out from nowhere to hunt you down. But you're a shark, and a hungry one at that. So... DINNERTIME! (Just watch out for those harpoons). + 0.50 + 19800101T000000 + Pacific Novelty + Pacific Novelty + Action + 10 + 1-2 + Mame + 256x192 + media/mixrbv2/sharkatt.png + + + + tshingen.zip + Shingen Samurai-Fighter (Japan, English) + The honorable samurai fights to remove the evil samurai and their hordes of soldiers from Japan. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Beat'em Up + 1 + 1-2 + Jaleco + 256x224 + media/mixrbv2/tshingen.png + + + + mikiej.zip + Shinnyuushain Tooru-kun + Guide Mikie around the school, classroom, and locker room to collect hearts which make up a letter from his girlfriend. Head-butt teachers and throw basketballs at them. + 0.60 + 19840101T000000 + Konami + Konami + Action + 10 + 1-2 + mikie.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/mikie.png + + + + shinoblb.zip + Shinobi (beta bootleg, System 16A) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi1d.zip + Shinobi (set 1, System 16A, FD1094 317-0050 decrypted) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi1.zip + Shinobi (set 1, System 16A, FD1094 317-0050) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi2d.zip + Shinobi (set 2, System 16B, FD1094 317-0049 decrypted) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi2.zip + Shinobi (set 2, System 16B, FD1094 317-0049) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi3.zip + Shinobi (set 3, System 16B, MC-8123B 317-0054) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi4.zip + Shinobi (set 4, System 16B, MC-8123B 317-0054) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi5.zip + Shinobi (set 5, System 16B, unprotected) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi.zip + Shinobi (set 6, System 16A, unprotected) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobi6.zip + Shinobi (set 6, System 16B, unprotected) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinobls.zip + Shinobi (Star bootleg, System 16A) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + shinobi.zip + Sega Classics + 320x224 + media/mixrbv2/shinobi.png + + + + shinfz.zip + Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006) + Shinobi is a scrolling platform beat-em-up in which the player takes on the role of Joe Musashi, a Shinobi Ninja, who must fight his way through 5 tough missions - each made up of between 3 to 5 stages - in his quest to rescue the kidnapped Ninja children of the Iga clan; now hostages of an evil Ninja syndicate called "Zeed". To complete a mission, the player must rescue all of the kidnapped children on each level, with the number of hostages remaining displayed on a meter in the bottom left corner of the screen. + +Shinobi was a huge success for Sega, and deservedly so. Its perfectly realized blend of platform and fighting action and is as fine an exponent of the 'easy to get into, difficult to master' gameplay ethic as video games have seen. + 0.70 + 19870101T000000 + SEGA + SEGA + Platform + 7 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/shinfz.png + + + + shippumd.zip + Shippu Mahou Daisakusen - Kingdom Grandprix + A vertically scrolling shooter with a racing theme. You have the choice of either firing (when the button is pressed) or boosting (when the button is held). + 0.80 + 19940101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + kingdmgp.zip + Eighting / Raizing + 270 + 320x240 + media/mixrbv2/kingdmgp.png + + + + shisen.zip + Shisensho - Joshiryo-Hen (Japan) + 0.50 + 19890101T000000 + Asiatic board game + 2647 + matchit.zip + Mame + 512x256 + media/mixrbv2/matchit.png + + + + shisen2.zip + Shisensho II + Match It II (c) 1993 Tamtex. - TECHNICAL - Main CPU : V30 (@ 8 Mhz), Z80 (@ 3.579545 Mhz) Sound Chips : YM2151 (@ 3.579545 Mhz), DAC Players : 2 Control : 8-way Joystick Buttons : 3 - TRIVIA - Released in June 1993. This game is known in Japan as "S + 0.50 + 19930101T000000 + Tamtex + Tamtex + Puzzle-Game / Equalize + 2864 + 1-2 + matchit2.zip + Irem Classics + 384x256 + media/mixrbv2/matchit2.png + + + + shocktro.zip + Shock Troopers (set 1) + Shock Troopers is a 1-2 player game where players select one of eight characters to play as. Each character has their own attack. Players also have to choose one of three routes to take. The object of the game is to go toward the end of the level and defeat the end-of-level boss, which is usually a huge vehicle. Crates that are scattered throughout the levels can be broken into to reveal new weapons and power-ups. + +There is a team mode where players have to select three characters. The characters can be switched on-the-fly during gameplay, which is useful if one of them is badly injured. Players can use the other teammates until life-ups can be found. + 0.80 + 19970101T000000 + Saurus + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/shocktro.png + + + + shocktroa.zip + Shock Troopers (set 2) + Shock Troopers is a 1-2 player game where players select one of eight characters to play as. Each character has their own attack. Players also have to choose one of three routes to take. The object of the game is to go toward the end of the level and defeat the end-of-level boss, which is usually a huge vehicle. Crates that are scattered throughout the levels can be broken into to reveal new weapons and power-ups. + +There is a team mode where players have to select three characters. The characters can be switched on-the-fly during gameplay, which is useful if one of them is badly injured. Players can use the other teammates until life-ups can be found. + 0.80 + 19970101T000000 + Saurus + SNK + Shooter + 2646 + 1-2 + shocktro.zip + Neo-Geo + 320x224 + media/mixrbv2/shocktro.png + + + + shocktr2.zip + Shock Troopers - 2nd Squad + As one of four playable characters each with unique methods of attack and power-ups, go through the level and destroy any enemies that get in your way, and defeat the boss at the end of that area. When you have completed the first area, you need to select a path to continue the game on. + +The second game in the Shock Troopers series enables shot locking, close proximity attacks, and evasive maneuvers allowing for flexible operation. In addition to the four characters, versatile modes of attack are featured using powerful vehicles and special shots. Letters that make up certain keywords can be collected throughout the game, and by collecting each letter in the keyword, you will receive a high score. + + 0.75 + 19980101T000000 + Saurus + SNK + Shooter + 2646 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/shocktr2.png + + + + shocking.zip + Shocking + Shocking is a charming action adventure game wish some puzzle elements. You are a werewolf seeking to return to your normal form and this quest will lead you to save the world. + +Each round features a new objective to complete in order to clear the single screen level and continue on your journey. There are 12 rounds in each stage and each stage ends with a boss battle. Interspersed within the stages are various mini-game challenges where the player can earn extra lives. + +The game is over once you have lost all of your lives. + 0.70 + 19970101T000000 + Yun Sung + Yun Sung + Action + 10 + 1-2 + Mame + 380x224 + media/mixrbv2/shocking.png + + + + shogwarrk.zip + Shogun Warriors (Korea?) + Shogun Warriors plays similarly to some other 2D versus fighting games during its release, which the player's character fights against his or her opponent in best two-out-of-three matches in a single player tournament mode with the computer or against another human player. It is controlled with an 8-way joystick and 4 buttons that perform weak and strong versions of punches and kicks. In one player mode, after selecting a character, the arcade randomly selects an opponent. The opponent order goes randomly and always leaves the last four bosses in a certain order. Some characters stabbed by ones armed with katanas or other sharp weapons can cause blood to spurt out, which became popularized a few months later by Midway's Mortal Kombat. The main unique feature of Shogun Warriors is its "grabbing system". When the player is grabbed by the opponent, the grabber must move the joystick left and right to make it more difficult for his opponent to escape, while the one being grabbed must rapidly press any or all buttons to make it easier to escape. + 0.40 + 19920101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + shogwarr.zip + Kaneko + 256x224 + media/mixrbv2/shogwarr.png + + + + shogwarru.zip + Shogun Warriors (US) + Shogun Warriors plays similarly to some other 2D versus fighting games during its release, which the player's character fights against his or her opponent in best two-out-of-three matches in a single player tournament mode with the computer or against another human player. It is controlled with an 8-way joystick and 4 buttons that perform weak and strong versions of punches and kicks. In one player mode, after selecting a character, the arcade randomly selects an opponent. The opponent order goes randomly and always leaves the last four bosses in a certain order. Some characters stabbed by ones armed with katanas or other sharp weapons can cause blood to spurt out, which became popularized a few months later by Midway's Mortal Kombat. The main unique feature of Shogun Warriors is its "grabbing system". When the player is grabbed by the opponent, the grabber must move the joystick left and right to make it more difficult for his opponent to escape, while the one being grabbed must rapidly press any or all buttons to make it easier to escape. + 0.40 + 19920101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + shogwarr.zip + Kaneko + 256x224 + media/mixrbv2/shogwarr.png + + + + shogwarr.zip + Shogun Warriors (World) + Shogun Warriors plays similarly to some other 2D versus fighting games during its release, which the player's character fights against his or her opponent in best two-out-of-three matches in a single player tournament mode with the computer or against another human player. It is controlled with an 8-way joystick and 4 buttons that perform weak and strong versions of punches and kicks. In one player mode, after selecting a character, the arcade randomly selects an opponent. The opponent order goes randomly and always leaves the last four bosses in a certain order. Some characters stabbed by ones armed with katanas or other sharp weapons can cause blood to spurt out, which became popularized a few months later by Midway's Mortal Kombat. The main unique feature of Shogun Warriors is its "grabbing system". When the player is grabbed by the opponent, the grabber must move the joystick left and right to make it more difficult for his opponent to escape, while the one being grabbed must rapidly press any or all buttons to make it easier to escape. + 0.40 + 19920101T000000 + Kaneko + Kaneko + Fight / Versus + 2885 + 1-2 + Kaneko + 256x224 + media/mixrbv2/shogwarr.png + + + + shootoutj.zip + Shoot Out (Japan) + Shootout is a shooting gallery-style arcade game with a mafia theme. The player must make their way through eight stages before they can take on the boss. In taking down the crowds of bad guys, caution must be exercised in not hitting innocent bystanders. Movement and aiming is handled with the 8-way joystick. And unlike games such as Taito's Operation Wolf, you directly control your player instead of just an aiming reticle. Button one is used for shooting while the second button is used to perform an evasive roll to dodge enemy fire and other hazards. An alternating 2-player mode is also available. + 0.50 + 19850101T000000 + Data East + Data East + Shooter / 3rd person + 2899 + 1-2 + shootout.zip + Data East Classics + 256x240 + media/mixrbv2/shootout.png + + + + shootoutb.zip + Shoot Out (Korean Bootleg) + Shootout is a shooting gallery-style arcade game with a mafia theme. The player must make their way through eight stages before they can take on the boss. In taking down the crowds of bad guys, caution must be exercised in not hitting innocent bystanders. Movement and aiming is handled with the 8-way joystick. And unlike games such as Taito's Operation Wolf, you directly control your player instead of just an aiming reticle. Button one is used for shooting while the second button is used to perform an evasive roll to dodge enemy fire and other hazards. An alternating 2-player mode is also available. + 0.50 + 19850101T000000 + Data East + Data East + Shooter / 3rd person + 2899 + 1-2 + shootout.zip + Data East Classics + 256x240 + media/mixrbv2/shootout.png + + + + shootout.zip + Shoot Out (US) + Shootout is a shooting gallery-style arcade game with a mafia theme. The player must make their way through eight stages before they can take on the boss. In taking down the crowds of bad guys, caution must be exercised in not hitting innocent bystanders. Movement and aiming is handled with the 8-way joystick. And unlike games such as Taito's Operation Wolf, you directly control your player instead of just an aiming reticle. Button one is used for shooting while the second button is used to perform an evasive roll to dodge enemy fire and other hazards. An alternating 2-player mode is also available. + 0.50 + 19850101T000000 + Data East + Data East + Shooter / 3rd person + 2899 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/shootout.png + + + + shtrider.zip + Shot Rider + Prepare for racing! at full speed on the most extreme motorbike race, competing with rivals for supremacy of the road, no rules and you must bump your opponents to expel or eliminate them while avoid being beaten or tumble of the bike, by differents types of vehicles and being careful with the dangerous curves and the different terrains to reach the goal and win the race! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Race, Driving / Motorcycle + 2943 + 1-2 + Seibu Kaihatsu + 270 + 240x256 + media/mixrbv2/shtrider.png + + + + shtriderb.zip + Shot Rider (bootleg) + Prepare for racing! at full speed on the most extreme motorbike race, competing with rivals for supremacy of the road, no rules and you must bump your opponents to expel or eliminate them while avoid being beaten or tumble of the bike, by differents types of vehicles and being careful with the dangerous curves and the different terrains to reach the goal and win the race! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Race, Driving / Motorcycle + 2943 + 1-2 + shtrider.zip + Seibu Kaihatsu + 270 + 240x256 + media/mixrbv2/shtrider.png + + + + shtridera.zip + Shot Rider (Sigma license) + Prepare for racing! at full speed on the most extreme motorbike race, competing with rivals for supremacy of the road, no rules and you must bump your opponents to expel or eliminate them while avoid being beaten or tumble of the bike, by differents types of vehicles and being careful with the dangerous curves and the different terrains to reach the goal and win the race! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Race, Driving / Motorcycle + 2943 + 1-2 + shtrider.zip + Seibu Kaihatsu + 270 + 240x256 + media/mixrbv2/shtrider.png + + + + shuuz2.zip + Shuuz (version 7.1) + A horseshoes game. + 0.70 + 19900101T000000 + Atari + Atari + Sports + 685 + 1-4 + shuuz.zip + Atari Classics + 336x240 + media/mixrbv2/shuuz.png + + + + shuuz.zip + Shuuz (version 8.0) + A horseshoes game. + 0.70 + 19900101T000000 + Atari + Atari + Sports + 685 + 1-4 + Atari Classics + 336x240 + media/mixrbv2/shuuz.png + + + + sichuan2.zip + Sichuan II (hack, set 1) + 0.50 + 19890101T000000 + Asiatic board game + 2647 + matchit.zip + Mame + 512x256 + media/mixrbv2/matchit.png + + + + sichuan2a.zip + Sichuan II (hack, set 2) + 0.50 + 19890101T000000 + Asiatic board game + 2647 + matchit.zip + Mame + 512x256 + media/mixrbv2/matchit.png + + + + sidearmsj.zip + Side Arms - Hyper Dyne (Japan, 861128) + An evil alien race called the 'Bozon' are trying to wipe out Mankind, and Lieutenant Henry and Sergent Sanders are given the responsibility of saving the Human Race. They each climb into a Mobilsuit - a jet-powered, heavily armoured combat suit - and set out on their mission. + +Side Arms is a horizontally - and occasionally vertically - scrolling shoot-em-up for one or two players. Each player has two fire buttons, one for shooting ahead and one for shooting behind; crucial for a game in which enemies attack from all directions. Shooting certain enemies will reveal power-ups - displayed as 'POW' icons - and shooting the icons will either change their type, or reveal a special weapon. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + sidearms.zip + Capcom Classics + 384x224 + media/mixrbv2/sidearms.png + + + + sidearmsur1.zip + Side Arms - Hyper Dyne (US, 861128) + An evil alien race called the 'Bozon' are trying to wipe out Mankind, and Lieutenant Henry and Sergent Sanders are given the responsibility of saving the Human Race. They each climb into a Mobilsuit - a jet-powered, heavily armoured combat suit - and set out on their mission. + +Side Arms is a horizontally - and occasionally vertically - scrolling shoot-em-up for one or two players. Each player has two fire buttons, one for shooting ahead and one for shooting behind; crucial for a game in which enemies attack from all directions. Shooting certain enemies will reveal power-ups - displayed as 'POW' icons - and shooting the icons will either change their type, or reveal a special weapon. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + sidearms.zip + Capcom Classics + 384x224 + media/mixrbv2/sidearms.png + + + + sidearmsu.zip + Side Arms - Hyper Dyne (US, 861202) + An evil alien race called the 'Bozon' are trying to wipe out Mankind, and Lieutenant Henry and Sergent Sanders are given the responsibility of saving the Human Race. They each climb into a Mobilsuit - a jet-powered, heavily armoured combat suit - and set out on their mission. + +Side Arms is a horizontally - and occasionally vertically - scrolling shoot-em-up for one or two players. Each player has two fire buttons, one for shooting ahead and one for shooting behind; crucial for a game in which enemies attack from all directions. Shooting certain enemies will reveal power-ups - displayed as 'POW' icons - and shooting the icons will either change their type, or reveal a special weapon. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + sidearms.zip + Capcom Classics + 384x224 + media/mixrbv2/sidearms.png + + + + sidearms.zip + Side Arms - Hyper Dyne (World, 861129) + An evil alien race called the 'Bozon' are trying to wipe out Mankind, and Lieutenant Henry and Sergent Sanders are given the responsibility of saving the Human Race. They each climb into a Mobilsuit - a jet-powered, heavily armoured combat suit - and set out on their mission. + +Side Arms is a horizontally - and occasionally vertically - scrolling shoot-em-up for one or two players. Each player has two fire buttons, one for shooting ahead and one for shooting behind; crucial for a game in which enemies attack from all directions. Shooting certain enemies will reveal power-ups - displayed as 'POW' icons - and shooting the icons will either change their type, or reveal a special weapon. + 0.70 + 19860101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 384x224 + media/mixrbv2/sidearms.png + + + + sidepcktb.zip + Side Pocket (bootleg, set 1) + Multi-platform pocket billiards (pool) simulator video game. + 0.70 + 19860101T000000 + Data East + Data East + Sports / Pool + 3028 + 1-2 + sidepckt.zip + Data East Classics + 256x224 + media/mixrbv2/sidepckt.png + + + + sidepcktb2.zip + Side Pocket (bootleg, set 2) + Multi-platform pocket billiards (pool) simulator video game. + 0.70 + 19860101T000000 + Data East + Data East + Sports / Pool + 3028 + 1-2 + sidepckt.zip + Data East Classics + 256x224 + media/mixrbv2/sidepckt.png + + + + sidepcktj.zip + Side Pocket (Japan, Cocktail) + Multi-platform pocket billiards (pool) simulator video game. + 0.70 + 19860101T000000 + Data East + Data East + Sports / Pool + 3028 + 1-2 + sidepckt.zip + Data East Classics + 256x224 + media/mixrbv2/sidepckt.png + + + + sidepckt.zip + Side Pocket (World) + Multi-platform pocket billiards (pool) simulator video game. + 0.70 + 19860101T000000 + Data East + Data East + Sports / Pool + 3028 + 1-2 + Data East Classics + 256x224 + media/mixrbv2/sidepckt.png + + + + silentdj.zip + Silent Dragon (Japan) + In the 1990's, a dark force appears on our planet. it's the evil Dr. Bio, the twisted genius behind "Bio-Roid". By using advanced biotechnology, he creates mutant life forms with superhuman strength, terrorizing the human population. To stop the evil doctor, four men, each with courage and fortitude, are chosen to wage a just war against these creatures. And now, that battle has begun! + 0.50 + 19920101T000000 + Taito + Taito + Beat'em Up + 1 + 1-4 + silentd.zip + Taito Classics + 320x224 + media/mixrbv2/silentd.png + + + + silentdu.zip + Silent Dragon (US) + In the 1990's, a dark force appears on our planet. it's the evil Dr. Bio, the twisted genius behind "Bio-Roid". By using advanced biotechnology, he creates mutant life forms with superhuman strength, terrorizing the human population. To stop the evil doctor, four men, each with courage and fortitude, are chosen to wage a just war against these creatures. And now, that battle has begun! + 0.50 + 19920101T000000 + Taito + Taito + Beat'em Up + 1 + 1-4 + silentd.zip + Taito Classics + 320x224 + media/mixrbv2/silentd.png + + + + silentd.zip + Silent Dragon (World) + In the 1990's, a dark force appears on our planet. it's the evil Dr. Bio, the twisted genius behind "Bio-Roid". By using advanced biotechnology, he creates mutant life forms with superhuman strength, terrorizing the human population. To stop the evil doctor, four men, each with courage and fortitude, are chosen to wage a just war against these creatures. And now, that battle has begun! + 0.50 + 19920101T000000 + Taito + Taito + Beat'em Up + 1 + 1-4 + Taito Classics + 320x224 + media/mixrbv2/silentd.png + + + + silkwormb.zip + Silk Worm (bootleg, set 1) + A shooter game where you control either a jeep or a helicopter and travel through the enemy terrain, shooting various enemies. + 0.50 + 19880101T000000 + Tecmo + Tecmo + Shooter / Horizontal + 2876 + 1-2 + silkworm.zip + Tecmo + 256x224 + media/mixrbv2/silkworm.png + + + + silkwormb2.zip + Silk Worm (bootleg, set 2) + A shooter game where you control either a jeep or a helicopter and travel through the enemy terrain, shooting various enemies. + 0.50 + 19880101T000000 + Tecmo + Tecmo + Shooter / Horizontal + 2876 + 1-2 + silkworm.zip + Tecmo + 256x224 + media/mixrbv2/silkworm.png + + + + silkwormj.zip + Silk Worm (Japan) + A shooter game where you control either a jeep or a helicopter and travel through the enemy terrain, shooting various enemies. + 0.50 + 19880101T000000 + Tecmo + Tecmo + Shooter / Horizontal + 2876 + 1-2 + silkworm.zip + Tecmo + 256x224 + media/mixrbv2/silkworm.png + + + + silkwormp.zip + Silk Worm (prototype?) + A shooter game where you control either a jeep or a helicopter and travel through the enemy terrain, shooting various enemies. + 0.50 + 19880101T000000 + Tecmo + Tecmo + Shooter / Horizontal + 2876 + 1-2 + silkworm.zip + Tecmo + 256x224 + media/mixrbv2/silkworm.png + + + + silkworm.zip + Silk Worm (World) + A shooter game where you control either a jeep or a helicopter and travel through the enemy terrain, shooting various enemies. + 0.50 + 19880101T000000 + Tecmo + Tecmo + Shooter / Horizontal + 2876 + 1-2 + Tecmo + 256x224 + media/mixrbv2/silkworm.png + + + + silvland.zip + Silver Land + You are the captain of a river patrol ship in this top-down game. Your mission: To save the poor souls who fell into the river. But it is not that easy, in your way lays some big boulders, crocodiles and some tree logs, all waiting to sink your vessel. + 0.60 + 19810101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + rpatrol.zip + Nichibutsu + 256x224 + media/mixrbv2/rpatrol.png + + + + silvmil.zip + Silver Millennium + 0.70 + 19950101T000000 + Para + Shoot'em Up + 79 + 1-2 + Mame + 270 + 320x240 + media/mixrbv2/silvmil.png + + + + sinistarp.zip + Sinistar (AMOA-82 prototype) + Your intergalactic crystal-mining mission takes you to the antipodes of the known universe. But your parametric DeepSpace scanner faithfully displays the sector of the galaxy you presently occupy (including an area fully three parsecs across, no less)! + +Keep the galaxy safe for all its sinizens! Fiendish Worker ships from the planet Sporg will attempt to fabricate a Sinistar from the remains of derelict planetoids in your very sector. You must not let them do this for two reasons: +1) These planetoids contain the life-sustaining crystals that your civilization requires for its vital technologies. +2) With the eminently unstable Sinistar in their possession, the Sprogites can lay waste to any civilization in your sector. You alone stand in their way. + +You must mine the sinisite crystals. Williams has equipped you with the latest heuristic electret cannon technology. All you need to do is aim at a planetoid and shoot. Now collect your motherlode! + +In fact, only with sinisite can you manufacture sinibombs to eradicate the Sinistar. But you must also rebuff the Workers and disintegrate their even more aggressive comrades-at-arms, the evil skelomorphic Warriors! Intelligent beings everywhere depend on your courage, your dedication, your reserve, your shrewd command of tactical invention! It's up to you, space cadet! + 0.90 + 19820101T000000 + Williams + Williams + Shooter + 2646 + 1-2 + sinistar.zip + Midway Classics + 270 + 292x240 + media/mixrbv2/sinistar.png + + + + sinistar2.zip + Sinistar (revision 2) + Your intergalactic crystal-mining mission takes you to the antipodes of the known universe. But your parametric DeepSpace scanner faithfully displays the sector of the galaxy you presently occupy (including an area fully three parsecs across, no less)! + +Keep the galaxy safe for all its sinizens! Fiendish Worker ships from the planet Sporg will attempt to fabricate a Sinistar from the remains of derelict planetoids in your very sector. You must not let them do this for two reasons: +1) These planetoids contain the life-sustaining crystals that your civilization requires for its vital technologies. +2) With the eminently unstable Sinistar in their possession, the Sprogites can lay waste to any civilization in your sector. You alone stand in their way. + +You must mine the sinisite crystals. Williams has equipped you with the latest heuristic electret cannon technology. All you need to do is aim at a planetoid and shoot. Now collect your motherlode! + +In fact, only with sinisite can you manufacture sinibombs to eradicate the Sinistar. But you must also rebuff the Workers and disintegrate their even more aggressive comrades-at-arms, the evil skelomorphic Warriors! Intelligent beings everywhere depend on your courage, your dedication, your reserve, your shrewd command of tactical invention! It's up to you, space cadet! + 0.90 + 19820101T000000 + Williams + Williams + Shooter + 2646 + 1-2 + sinistar.zip + Midway Classics + 270 + 292x240 + media/mixrbv2/sinistar.png + + + + sinistar.zip + Sinistar (revision 3) + Your intergalactic crystal-mining mission takes you to the antipodes of the known universe. But your parametric DeepSpace scanner faithfully displays the sector of the galaxy you presently occupy (including an area fully three parsecs across, no less)! + +Keep the galaxy safe for all its sinizens! Fiendish Worker ships from the planet Sporg will attempt to fabricate a Sinistar from the remains of derelict planetoids in your very sector. You must not let them do this for two reasons: +1) These planetoids contain the life-sustaining crystals that your civilization requires for its vital technologies. +2) With the eminently unstable Sinistar in their possession, the Sprogites can lay waste to any civilization in your sector. You alone stand in their way. + +You must mine the sinisite crystals. Williams has equipped you with the latest heuristic electret cannon technology. All you need to do is aim at a planetoid and shoot. Now collect your motherlode! + +In fact, only with sinisite can you manufacture sinibombs to eradicate the Sinistar. But you must also rebuff the Workers and disintegrate their even more aggressive comrades-at-arms, the evil skelomorphic Warriors! Intelligent beings everywhere depend on your courage, your dedication, your reserve, your shrewd command of tactical invention! It's up to you, space cadet! + 0.90 + 19820101T000000 + Williams + Williams + Shooter + 2646 + 1-2 + Midway Classics + 270 + 292x240 + media/mixrbv2/sinistar.png + + + + sirio2.zip + Sirio II (Calfesa S.L. Spanish Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + cskater.zip + Skater (DECO Cassette) (Japan) + Top Skater is a virtual skateboarding arcade game that was released in 1997 by Sega. It was controlled by standing on a skateboard peripheral and moving the board with your body movement. + 0.40 + 19830101T000000 + Data East + Sports / Skateboard + 2875 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cskater.png + + + + skullxbo.zip + Skull & Crossbones (rev 5) + Skull & Crossbones is a swashbuckling adventure in which players portray two pirates competing for food, drink, booty, and revenge. Players use a joystick and button to control the unique sword-fighting action. + +The game begins with an encounter with the evil Wizard, who robs our heroes of all of their booty. The pirates swear revenge and set off on a quest to destroy the Wizard and recover their treasure. + +The adventure takes them around the world. The pirates battle the fierce captains and crews of opponent ships. They encounter the soldier guards and the merciless Executioner in the Spanish castle. In the ninja camp they fight the Ninja Master and his followers. On the beach the heroes encounter the dreaded Medusa and a horde of wicked skeletons that rise from the dead. + +Finally, the pirates reach the Wizard's Island, where they must again do battle against the shadow figures of the Executioner, the Ninja Master, and the Medusa before they can fight face-to-face with the evil Wizard. If they make it to the throne room and overcome the Wizard, players are rewarded with a room full of treasure. + +Players use a joystick and sword button in a combination of defensive and offensive maneuvers to battle the various enemies. Players can learn the lunge and back-slash, two. skilled sword-fighting moves that are the most effective. + +In order to increase the long-term appeal of the game, players can select various difficulty levels of easy, medium, and hard to vary their paths through the game. By selecting the longer hard path, players are rewarded with more food, drink, and booty along the way. + 0.70 + 19890101T000000 + Atari + Atari + Beat'em Up + 1 + 1-2 + Atari Classics + 672x240 + media/mixrbv2/skullxbo.png + + + + skyadvntj.zip + Sky Adventure (Japan) + Sky Adventure is a vertically scrolling shoot-em-up. + 0.60 + 19890101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + skyadvnt.zip + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/skyadvnt.png + + + + skyadvntu.zip + Sky Adventure (US) + Sky Adventure is a vertically scrolling shoot-em-up. + 0.60 + 19890101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + skyadvnt.zip + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/skyadvnt.png + + + + skyadvnt.zip + Sky Adventure (World) + Sky Adventure is a vertically scrolling shoot-em-up. + 0.60 + 19890101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/skyadvnt.png + + + + skyalert.zip + Sky Alert + Sky Alert is a vertically scrolling shoot'em up. There are two planes to choose from: Type A and Type B. Both have two primary weapons which can be changed during the game as well as one bomb attack. Type A plane has a laser supported by short range napalm bombs and a wide range attack with homing rockets. While Type B has a spread vulcan cannon accompanied by missiles and a powerful autocannon with spread missiles. + 0.50 + 19920101T000000 + Metro 3D + Metro 3D + Shoot'em Up + 79 + 1-2 + Mitchell + 270 + 360x224 + media/mixrbv2/skyalert.png + + + + skyarmy.zip + Sky Army + Your city is in war, you must fly your red helicopter on enemy territory your mission is to destroy certain enemy targets, for this you must bomb bridges to stop its construction, kill military and eliminate hordes of blue enemy helicopters and others aircraft, later you fly over by vast areas infested with shellfire and enemy submarines to then help build and defend a bridge to be used for attack and win the war. + 0.50 + 19820101T000000 + Shoeisha + Shoei + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x240 + media/mixrbv2/skyarmy.png + + + + skybase.zip + Sky Base + A very rare shoot-em-up. + 0.10 + 19820101T000000 + Omori Electric Co. + Omori Electric Co., Ltd. + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/skybase.png + + + + skydest.zip + Sky Destroyer (Japan) + An excellent and challenging shoot'em up game. + +The player controls a World War II Japanese monoplane of color green, furrowing the sky over enemy waters. + +The pilot has to avoid missiles and destroy a variety of enemies like Submarines, Aircraft, a Navy Destroyer and a Mid-Boss Heavy bombers and the final Bosses to clear next stages and go to bonus zone. + +At each new phase the colour of the sky changes according to day cycle, starts (night, Morning and afternoon) later a hostile island, could view on the horizon and the attack of the enemy becomes more intense. + 19850101T000000 + Taito + Taito + Shooter / Plane + 2928 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/skydest.png + + + + skyfox.zip + Sky Fox + At the player's disposal to fight the approaching enemies, some of them made in pseudo-depth 2.5D graphics with scaled sprites, is a small space fighter capable of firing two types of projectiles: the unlimited but slow rockets and the fast laser shots that are limited by draining the ship's power. The power can be refilled and the ship itself upgraded by collecting the power ups that appear after destroying certain enemies. + +Similar to Gorf, the game features several different types of waves. The player progresses through most of them by either destroying all the enemies or alternatively just surviving their attacks for long enough time. For instance, one stage has a Galaga-style gameplay against rows of monsters led by four witches who are vulnerable only when they open their cloaks, while another features enemy warriors saddle perched on either serpent-like Chinese dragons or Western-style winged dragons. The dragons must to be hit repeatedly in the weak point of their heads to be killed, after which the riders themselves can be shot for a bonus. + 0.50 + 19870101T000000 + Jaleco + Jaleco + Shooter / Space Invaders Like + 2900 + 1-2 + Jaleco + 270 + 320x224 + media/mixrbv2/skyfox.png + + + + skykidd.zip + Sky Kid (CUS60 version) + Sky Kid is a 2-D, scrolling shooter type of game. You play as the character Sky Kid. Sky Kid flies around in a bi-plane and is assigned specific targets during the missions. These missions involved bombing specific targets. This would seem easy, however, there are a few obstacles Sky Kid must overcome to get to the target safely. First, the bi-plane is not equipped with the bomb. Sky Kid must pick up the bomb en route to the target. Second, there are both ground and air units that attempt to keep Sky Kid from accomplishing his mission. Last, Sky Kid may have to navigate through some very inhospitable terrain or navigate around cities in order to get to the target. The targets that Sky Kid must bomb will either be a fortress complex or a ship. As one moves farther up in the missions, it isn't uncommon to have multiple targets in one mission. Perhaps barnstorming would have been a better idea. + 0.70 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + skykid.zip + Namco Classics + 288x224 + media/mixrbv2/skykid.png + + + + skykid.zip + Sky Kid (new version) + Sky Kid is a 2-D, scrolling shooter type of game. You play as the character Sky Kid. Sky Kid flies around in a bi-plane and is assigned specific targets during the missions. These missions involved bombing specific targets. This would seem easy, however, there are a few obstacles Sky Kid must overcome to get to the target safely. First, the bi-plane is not equipped with the bomb. Sky Kid must pick up the bomb en route to the target. Second, there are both ground and air units that attempt to keep Sky Kid from accomplishing his mission. Last, Sky Kid may have to navigate through some very inhospitable terrain or navigate around cities in order to get to the target. The targets that Sky Kid must bomb will either be a fortress complex or a ship. As one moves farther up in the missions, it isn't uncommon to have multiple targets in one mission. Perhaps barnstorming would have been a better idea. + 0.70 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/skykid.png + + + + skykido.zip + Sky Kid (old version) + Sky Kid is a 2-D, scrolling shooter type of game. You play as the character Sky Kid. Sky Kid flies around in a bi-plane and is assigned specific targets during the missions. These missions involved bombing specific targets. This would seem easy, however, there are a few obstacles Sky Kid must overcome to get to the target safely. First, the bi-plane is not equipped with the bomb. Sky Kid must pick up the bomb en route to the target. Second, there are both ground and air units that attempt to keep Sky Kid from accomplishing his mission. Last, Sky Kid may have to navigate through some very inhospitable terrain or navigate around cities in order to get to the target. The targets that Sky Kid must bomb will either be a fortress complex or a ship. As one moves farther up in the missions, it isn't uncommon to have multiple targets in one mission. Perhaps barnstorming would have been a better idea. + 0.70 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + skykid.zip + Namco Classics + 288x224 + media/mixrbv2/skykid.png + + + + skykids.zip + Sky Kid (Sipem) + Sky Kid is a 2-D, scrolling shooter type of game. You play as the character Sky Kid. Sky Kid flies around in a bi-plane and is assigned specific targets during the missions. These missions involved bombing specific targets. This would seem easy, however, there are a few obstacles Sky Kid must overcome to get to the target safely. First, the bi-plane is not equipped with the bomb. Sky Kid must pick up the bomb en route to the target. Second, there are both ground and air units that attempt to keep Sky Kid from accomplishing his mission. Last, Sky Kid may have to navigate through some very inhospitable terrain or navigate around cities in order to get to the target. The targets that Sky Kid must bomb will either be a fortress complex or a ship. As one moves farther up in the missions, it isn't uncommon to have multiple targets in one mission. Perhaps barnstorming would have been a better idea. + 0.70 + 19850101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + skykid.zip + Namco Classics + 288x224 + media/mixrbv2/skykid.png + + + + skykiddx.zip + Sky Kid Deluxe (set 1) + Sky Kid Deluxe is an update to the original featuring: +Battle report between each mission. +New missions (X1-4). +Snow on missions X1 and X3. +Many new characters. + 0.70 + 19860101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/skykiddx.png + + + + skykiddxo.zip + Sky Kid Deluxe (set 2) + Sky Kid Deluxe is an update to the original featuring: +Battle report between each mission. +New missions (X1-4). +Snow on missions X1 and X3. +Many new characters. + 0.70 + 19860101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + skykiddx.zip + Namco Classics + 288x224 + media/mixrbv2/skykiddx.png + + + + skylancr.zip + Sky Lancer + Your space warrior is not content with merely fighting alien forces in his spaceship so his leaves its confines to drift through the depths of space with his jetpack suit and use his laser lance to fight the enemy hordes. In the amazing Sky Lancer you must travel the depths of space and shoot your laser to take out enemy mines, missile launchers and then fight back the alien hordes to survive and complete the intricate missions! + 0.60 + 19830101T000000 + Bordun International + Orca + Casino / Slot machine + 2860 + 1-2 + Mame + 270 + 236x224 + media/mixrbv2/skylancr.png + + + + skylancre.zip + Sky Lancer (Esco Trading Co license) + Your space warrior is not content with merely fighting alien forces in his spaceship so his leaves its confines to drift through the depths of space with his jetpack suit and use his laser lance to fight the enemy hordes. In the amazing Sky Lancer you must travel the depths of space and shoot your laser to take out enemy mines, missile launchers and then fight back the alien hordes to survive and complete the intricate missions! + 0.60 + 19830101T000000 + Bordun International + Orca + Casino / Slot machine + 2860 + 1-2 + skylancr.zip + Mame + 270 + 236x224 + media/mixrbv2/skylancr.png + + + + skyraidr.zip + Sky Raiders + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + skyrobo.zip + Sky Robo + 0.60 + 19890101T000000 + Nichibutsu + Nichibutsu + Shooter / Run and Gun + 2903 + 1-2 + Nichibutsu + 320x240 + media/mixrbv2/skyrobo.png + + + + skysharkb.zip + Sky Shark (bootleg) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + skyshark.zip + Sky Shark (US, set 1) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + skysharka.zip + Sky Shark (US, set 2) + Sky Shark is a top-down shooter similar to Raiden. You start off with four lives and three bombs. With that (you can get more lives at certain point intervals, and more bombs can be found), you, the "Sky Shark" of your squadron, blast through five levels of enemy-infested battlefields with as many as six gun upgrades (Aside from the bombs and the gun upgrade, there are no other weapons to be found at all). Includes three difficulty levels and two-player support. + 0.50 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + fshark.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/fshark.png + + + + skyskipr.zip + Sky Skipper + The wonder kingdom is conquered by giant gorillas the player controls a hero pilot and your mission is to save the king and the royal family and his aides have been kidnaped and caged you must rescue and release them, dropping bombs on gorillas to knock them and catch with your plane all the characters, maneuvering through the maze stay alert to replenish your fuel tank and avoiding colliding with the environment to clear the stage. + 0.50 + 19810101T000000 + Nintendo + Nintendo + Shooter / Plane + 2928 + 1-2 + Nintendo Classics + 512x448 + media/mixrbv2/skyskipr.png + + + + skysmash.zip + Sky Smasher + Classic game in which you are in command of a fighter plane in typical settings (ruined city, warehouses, sea, etc...) to shoot down planes, helicopters and tanks. + 0.50 + 19900101T000000 + Nihon Systems + Nihon Systems + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/skysmash.png + + + + skysoldrbl.zip + Sky Soldiers (bootleg) + Sky Soldiers is a vertical scrolling Shoot em' Up developed by Alpha Denshi and released to arcades in 1988 by Romstar in North America and SNK for the rest of the world. The game features a time travel theme as well as an organized weapon select screen at the beginning of each stage. + +Players travel back in time starting in Great Britain 1945, Germany 1915, Japan 1945, Germany 1944, Vietnam 1974, France 1914, Russia 1974 and finally the space station in the present time, 2110. Each time stage has two levels, both ending in a boss battle save for the final stage, resulting in a total of 15 Areas. + +The ship's weapon system is accessed in the beginning of each stage. The ship’s main shot consists of a semi-automatic Wave Shot. The ship’s bomb weapons include forward firing missiles, fireballs, homing missiles and the buster bomb. The ship can be equipped with only one bomb weapon from either category at a time. The ship can only be loaded with a certain number of Bomb weapons and they can only be resupplied at the end of the level. The only pick-up item in the game is a parachuting human pilot shot down from malfunctioning fighter planes/jets; collecting these pilots results in random bonus points. + 0.50 + 19880101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + skysoldr.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/skysoldr.png + + + + skysoldr.zip + Sky Soldiers (US) + Sky Soldiers is a vertical scrolling Shoot em' Up developed by Alpha Denshi and released to arcades in 1988 by Romstar in North America and SNK for the rest of the world. The game features a time travel theme as well as an organized weapon select screen at the beginning of each stage. + +Players travel back in time starting in Great Britain 1945, Germany 1915, Japan 1945, Germany 1944, Vietnam 1974, France 1914, Russia 1974 and finally the space station in the present time, 2110. Each time stage has two levels, both ending in a boss battle save for the final stage, resulting in a total of 15 Areas. + +The ship's weapon system is accessed in the beginning of each stage. The ship’s main shot consists of a semi-automatic Wave Shot. The ship’s bomb weapons include forward firing missiles, fireballs, homing missiles and the buster bomb. The ship can be equipped with only one bomb weapon from either category at a time. The ship can only be loaded with a certain number of Bomb weapons and they can only be resupplied at the end of the level. The only pick-up item in the game is a parachuting human pilot shot down from malfunctioning fighter planes/jets; collecting these pilots results in random bonus points. + 0.50 + 19880101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/skysoldr.png + + + + skywolf.zip + Sky Wolf (set 1) + Airwolf is a horizontally scrolling shoot'em up game. + 0.30 + 19870101T000000 + Kyugo Boueki + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + airwolf.zip + Mame + 288x224 + media/mixrbv2/airwolf.png + + + + skywolf2.zip + Sky Wolf (set 2) + Airwolf is a horizontally scrolling shoot'em up game. + 0.30 + 19870101T000000 + Kyugo Boueki + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + airwolf.zip + Mame + 288x224 + media/mixrbv2/airwolf.png + + + + skywolf3.zip + Sky Wolf (set 3) + Airwolf is a horizontally scrolling shoot'em up game. + 0.30 + 19870101T000000 + Kyugo Boueki + Kyugo Boueki + Shoot'em Up + 79 + 1-2 + airwolf.zip + Mame + 288x224 + media/mixrbv2/airwolf.png + + + + slapfigha.zip + Slap Fight (A76 set, GX-006-A PCB) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + alcon.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + slapfigh.zip + Slap Fight (A77 set, 8606M PCB) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + alcon.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + slapfighb1.zip + Slap Fight (bootleg set 1) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + alcon.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + slapfighb2.zip + Slap Fight (bootleg set 2) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + alcon.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + slapfighb3.zip + Slap Fight (bootleg set 3) + Vertical scrolling shoot-em-up. Shoot ground targets and collect stars which can be exchanged for various power-ups. Fly over hi-tech landscape. Features end of level bosses, good sound and graphics. + 0.50 + 19860101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + alcon.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/alcon.png + + + + slapshtr.zip + Slap Shooter + Slap shooter est un jeux de hockey sur glace basique, pas de choix d'équipe. Relativement jolie pour 1986. + 19860101T000000 + SEGA + SEGA + Sports + 685 + 1-2 + Sega Classics + media/mixrbv2/slapshtr.png + + + + slither.zip + Slither (set 1) + Slither is similar in nature to the hit arcade game Centipede by Atari. You control your snake as it slither's around the screen. Where this game differs greatly from Centipede is that you can shoot in 4 different directions at the same time to take out the baddies trying to hunt you down. The bad snakes hunting you down will appear from various angles on the screen, often several at a time. The game was bundled with Coleco's Roller Controller and can't be played without it. + 0.30 + 19820101T000000 + Century II + Century II + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/slither.png + + + + slithera.zip + Slither (set 2) + Slither is similar in nature to the hit arcade game Centipede by Atari. You control your snake as it slither's around the screen. Where this game differs greatly from Centipede is that you can shoot in 4 different directions at the same time to take out the baddies trying to hunt you down. The bad snakes hunting you down will appear from various angles on the screen, often several at a time. The game was bundled with Coleco's Roller Controller and can't be played without it. + 0.30 + 19820101T000000 + Century II + Century II + Shooter / Space Invaders Like + 2900 + 1-2 + slither.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/slither.png + + + + snapjack.zip + Snap Jack + Guide a dot-munching, long-jumping, leg-stretching character through right-to-left scrolling scenes of hills and tunnels. Avoid squid-type-things, giant fish, and the kettles and boots on the overhead conveyor. This game is a cross between "Pac-Man" and "Scramble". + 0.70 + 19820101T000000 + Platform / Run Jump Scrolling + 2897 + 1-2 + Universal + 240x192 + media/mixrbv2/snapjack.png + + + + snapper.zip + Snapper (Korea) + Snapper is a fun "Blockade" style game. You controls a hungry snake through various levels, will need eat all the balls as you grow and avoid colliding with his own body, while avoiding enemies to open the exit to the next level. + 0.50 + 19900101T000000 + Philko + Philko + Action + 10 + 1 + Sega Classics + 320x224 + media/mixrbv2/snapper.png + + + + svcboot.zip + SNK vs. Capcom - SVC Chaos (bootleg) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + svc.zip + Neo-Geo + 320x224 + media/mixrbv2/svc.png + + + + svcpcb.zip + SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/svcpcb.png + + + + svcpcba.zip + SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + svcpcb.zip + Neo-Geo + 320x224 + media/mixrbv2/svcpcb.png + + + + svc.zip + SNK vs. Capcom - SVC Chaos (NGM-2690)(NGH-2690) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/svc.png + + + + svcplus.zip + SNK vs. Capcom - SVC Chaos Plus (bootleg set 1) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + svc.zip + Neo-Geo + 320x224 + media/mixrbv2/svc.png + + + + svcplusa.zip + SNK vs. Capcom - SVC Chaos Plus (bootleg set 2) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + svc.zip + Neo-Geo + 320x224 + media/mixrbv2/svc.png + + + + svcsplus.zip + SNK vs. Capcom - SVC Chaos Super Plus (bootleg) + SVC Chaos: SNK vs. Capcom on Neo Geo is a fighting game featuring the warriors of the two famous series Street Fighter and King of Fighters. The game offers an arcade mode where one follows the story of his hero, as well as modes versus, challenge and survival. + 0.90 + 20030101T000000 + SNK + SNK + Fight / Versus + 2885 + 1-2 + svc.zip + Neo-Geo + 320x224 + media/mixrbv2/svc.png + + + + snowboara.zip + Snow Board Championship (Version 2.0) + A snowboarding game. + 0.80 + 19960101T000000 + Gaelco + Gaelco + Sports / Skiing + 2902 + 1-2 + snowboar.zip + Gaelco + 384x240 + media/mixrbv2/snowboar.png + + + + snowboar.zip + Snow Board Championship (Version 2.1) + A snowboarding game. + 0.80 + 19960101T000000 + Gaelco + Gaelco + Sports / Skiing + 2902 + 1-2 + Gaelco + 384x240 + media/mixrbv2/snowboar.png + + + + snowbrosd.zip + Snow Bros. - Nick & Tom (Dooyong license) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbrosj.zip + Snow Bros. - Nick & Tom (Japan) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbros.zip + Snow Bros. - Nick & Tom (set 1) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbrosa.zip + Snow Bros. - Nick & Tom (set 2) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbrosb.zip + Snow Bros. - Nick & Tom (set 3) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbrosc.zip + Snow Bros. - Nick & Tom (set 4) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbroswb.zip + Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + snowbro2.zip + Snow Bros. 2 - with new elves (Hanafram) + Snow Bros 2: With New Elves (known as Otenki Paradise in Japan) is a platformer developed by Toaplan and published by Hanafram in April 1994. The game consists of 6 worlds. The player must clear the screen of enemies to advance to the next stage. The game supports 4 players, but requires a 4 player harness for the additional players. + 0.80 + 19940101T000000 + Toaplan + Hanafram + Platform / Run Jump + 2915 + 1-4 + Toaplan + 320x240 + media/mixrbv2/snowbro2.png + + + + snowbro2ny.zip + Snow Bros. 2 - with new elves (Nyanko) + Snow Bros 2: With New Elves (known as Otenki Paradise in Japan) is a platformer developed by Toaplan and published by Hanafram in April 1994. The game consists of 6 worlds. The player must clear the screen of enemies to advance to the next stage. The game supports 4 players, but requires a 4 player harness for the additional players. + 0.80 + 19940101T000000 + Toaplan + Hanafram + Platform / Run Jump + 2915 + 1-4 + snowbro2.zip + Toaplan + 320x240 + media/mixrbv2/snowbro2.png + + + + snowbro3.zip + Snow Brothers 3 - Magical Adventure + Snow Brothers 3 - Magical Adventure is an unofficial sequel running on hacked hardware of the first game in the series, Magical Adventure plays identically to "Snow Bros"; the only difference being that the players' characters are wearing football strips and now encase the game's enemies in a giant football. + 0.90 + 20020101T000000 + Syrmex + Syrmex + Platform / Run Jump + 2915 + 1-2 + SemiCom + 256x224 + media/mixrbv2/snowbro3.png + + + + socbrawlh.zip + Soccer Brawl (NGH-031) + The Cybernetic players use special kick shots and built-in arm phasers to destroy other players. Make sure your power meter is FULL when exercising these brutal tactics. Both stadiums, which are magnetically enclosed, enable you to kick or pass... off the wall! There are no fouls in this league, so watch your back or you'll get pulverized by the opposing team! You'll find here the most advanced sport in the world of soccer... SOCCER BRAWL! + 0.80 + 19910101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-2 + socbrawl.zip + Neo-Geo + 320x224 + media/mixrbv2/socbrawl.png + + + + socbrawl.zip + Soccer Brawl (NGM-031) + The Cybernetic players use special kick shots and built-in arm phasers to destroy other players. Make sure your power meter is FULL when exercising these brutal tactics. Both stadiums, which are magnetically enclosed, enable you to kick or pass... off the wall! There are no fouls in this league, so watch your back or you'll get pulverized by the opposing team! You'll find here the most advanced sport in the world of soccer... SOCCER BRAWL! + 0.80 + 19910101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/socbrawl.png + + + + sokoban.zip + Sokoban LE + 20150101T000000 + Mame + + + sokonuke.zip + Sokonuke Taisen Game (Japan) + In this strange party game you must compete in simple yet strange events such as inflating balloons, morphing into dragons, etc., while at the same time protect your partner from 'harmless' pain inducers such as razor-sharp buzzsaws and bombs! Features nice graphics and hectic gameplay! + 0.70 + 19950101T000000 + Sammy Studios + Sammy Studios + Platform / Run Jump + 2915 + 1-2 + Sammy Classics + 320x240 + media/mixrbv2/sokonuke.png + + + + solarfox.zip + Solar Fox (upright) + Solar Fox is a space shooter and a Pac-Man type game all in one. The playing field is square and only has walls on the outside. Each wall has a moving cannon mounted that will fire odd shaped torpedoes at your ship. Scattered around the inside will be a bunch of pellets in various simple patterns. To complete each level you have to drive over, or shoot all of the pellets. If done quickly enough the game will skip a level (going from 1 to 3, etc), and award you point for the level skipped. + +If you select Novice difficulty at the beginning, the Solar Fox's normal speed will be slow, and pressing the Speed Button will speed it up. If you should select Expert difficulty, its normal speed will be faster, and pressing the Speed Button will slow it down. Every fourth rack is also a bonus rack, and if you die in one, it will not cost you a life. After clearing ten racks, a player becomes a member of the "10-Rack Club" and the game will continue on as normal. + 0.70 + 19810101T000000 + Bally Midway + Bally Midway + Action + 10 + 1-2 + Midway Classics + 270 + 512x480 + media/mixrbv2/solarfox.png + + + + solrwarr.zip + Solar-Warrior (US) + You are an armoured, rocket-booted soldier, whose mission is to defend five planets against the evil empire. You run from left to right, shooting your way to the base at the end of each level, then tackle a left to right space ship stage. Each of the five planets can be played in any order desired. + 0.70 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Platform / Shooter Scrolling + 2887 + 1-2 + xsleena.zip + Taito Classics + 256x240 + media/mixrbv2/xsleena.png + + + + soldam.zip + Soldam + Soldam - Action Puzzle Game (c) 1992 Jaleco. - TECHNICAL - Jaleco Mega System 1-A hardware Main CPU : 68000 (@ 12 Mhz) Sound CPU : 68000 (@ 7 Mhz) Sound Chips : YM2151 (@ 3.5 Mhz), (2x) OKI6295 (@ 30.303 Khz) Screen orientation : Horizontal Video reso + 19920101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + Jaleco + 256x224 + media/mixrbv2/soldam.png + + + + soldamj.zip + Soldam (Japan) + Soldam - Action Puzzle Game (c) 1992 Jaleco. - TECHNICAL - Jaleco Mega System 1-A hardware Main CPU : 68000 (@ 12 Mhz) Sound CPU : 68000 (@ 7 Mhz) Sound Chips : YM2151 (@ 3.5 Mhz), (2x) OKI6295 (@ 30.303 Khz) Screen orientation : Horizontal Video reso + 19920101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + soldam.zip + Jaleco + 256x224 + media/mixrbv2/soldam.png + + + + amazon.zip + Soldier Girl Amazon + Become the Mighty Fighting Amazon and you will search jungles and deserts on the most dangerous island on earth. Your mission is to recapture the men you desperately need to save the only race of giant womankind + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Run and Gun + 2903 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/amazon.png + + + + amazont.zip + Soldier Girl Amazon (Tecfri license) + Become the Mighty Fighting Amazon and you will search jungles and deserts on the most dangerous island on earth. Your mission is to recapture the men you desperately need to save the only race of giant womankind + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Run and Gun + 2903 + 1-2 + amazon.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/amazon.png + + + + slspirit.zip + Solite Spirits + 19990101T000000 + Promat + Shoot'em Up + 79 + 1-2 + Mame + media/mixrbv2/slspirit.png + + + + solomonj.zip + Solomon no Kagi (Japan) + Solomon's Key is a single player platform/puzzle game in which the wizard Dana is on a quest to retrieve Solomon's key and vanquish the demon hordes that have broken through into his world. To achieve this Dana must advance through the fifty rooms of 'Constellation Space', before finally reaching the magical key. + +Dana is armed with a magic wand that can be used to both destroy and create granite blocks, while blocks situated directly above Dana's head can be destroyed by repeatedly jumping up into them until they shatter. The blocks act as platforms, as well as barriers to defend Dana from the numerous patrolling enemies. Each room contains a golden key, retrieving this automatically opens the room's exit door and players must then try to find/create a safe route past the constantly spawning demons to reach the exit and progress to the next room. + +Bonus Items - some hidden inside pre-existing granite blocks - are scattered throughout each room. Collecting these earns the player extra points. Power-ups can also be found, these appear as potion bottles with a flame emblazoned on them and a maximum of three can be carried at any one time. When a potion is used, Dana shoots a fireball which will move along the walls and platforms until it hits and kills the first demon it comes into contact with. + +As well as bonus items and power-ups, each room also contains a hand-bell. When collected this triggers the release of a trapped fairy, the fairy will then slowly fly around the room and can be rescued for bonus points. An extra life is awarded for every ten fairies rescued. + +The game's levels are based on Zodiac star constellations. The main levels are divided into groups of four - making a total of fourty-eight standard rooms - with each group representing a separate constellation. In addition to the standard rooms, each constellation also has a secret bonus room that can only be accessed by finding the given constellation's 'Seal', which is located in the last room of each group. There are three further secret rooms - 'Page of Time', 'The Page of Space' and the 'Princess Room' - that are only accessible if the player has found the 'Hidden Seals of Solomon'. + +The four room groups are: +1-4 Aries 5-8 Taurus 9-12 Gemini +13-16 Cancer 17-20 Leo 21-24 Scorpio +25-28 Libra 29-32 Virgo 33-36 Sagittarius +37-40 Capricorn 41-44 Aquarius 45-48 Pisces + 0.80 + 19860101T000000 + Tecmo + Tecmo + Action + 10 + 1-2 + solomon.zip + Tecmo + 256x224 + media/mixrbv2/solomon.png + + + + solomon.zip + Solomon's Key (US) + Solomon's Key is a single player platform/puzzle game in which the wizard Dana is on a quest to retrieve Solomon's key and vanquish the demon hordes that have broken through into his world. To achieve this Dana must advance through the fifty rooms of 'Constellation Space', before finally reaching the magical key. + +Dana is armed with a magic wand that can be used to both destroy and create granite blocks, while blocks situated directly above Dana's head can be destroyed by repeatedly jumping up into them until they shatter. The blocks act as platforms, as well as barriers to defend Dana from the numerous patrolling enemies. Each room contains a golden key, retrieving this automatically opens the room's exit door and players must then try to find/create a safe route past the constantly spawning demons to reach the exit and progress to the next room. + +Bonus Items - some hidden inside pre-existing granite blocks - are scattered throughout each room. Collecting these earns the player extra points. Power-ups can also be found, these appear as potion bottles with a flame emblazoned on them and a maximum of three can be carried at any one time. When a potion is used, Dana shoots a fireball which will move along the walls and platforms until it hits and kills the first demon it comes into contact with. + +As well as bonus items and power-ups, each room also contains a hand-bell. When collected this triggers the release of a trapped fairy, the fairy will then slowly fly around the room and can be rescued for bonus points. An extra life is awarded for every ten fairies rescued. + +The game's levels are based on Zodiac star constellations. The main levels are divided into groups of four - making a total of fourty-eight standard rooms - with each group representing a separate constellation. In addition to the standard rooms, each constellation also has a secret bonus room that can only be accessed by finding the given constellation's 'Seal', which is located in the last room of each group. There are three further secret rooms - 'Page of Time', 'The Page of Space' and the 'Princess Room' - that are only accessible if the player has found the 'Hidden Seals of Solomon'. + +The four room groups are: +1-4 Aries 5-8 Taurus 9-12 Gemini +13-16 Cancer 17-20 Leo 21-24 Scorpio +25-28 Libra 29-32 Virgo 33-36 Sagittarius +37-40 Capricorn 41-44 Aquarius 45-48 Pisces + 0.80 + 19860101T000000 + Tecmo + Tecmo + Action + 10 + 1-2 + Tecmo + 256x224 + media/mixrbv2/solomon.png + + + + sonofphx.zip + Son of Phoenix (bootleg of Repulse) + Repulse is a 1985 arcade game by Sega. It was renamed 99: The Last War when licensed to Kyugo (who developed the hardware) and Proma. There's also a bootleg version of it named Son of Phoenix. + +With a spaceship, the player shoots several kind of robotic enemies and spaceships. At the end of every stage (except for the first one), the player meets a huge enemy spaceship as the stage's boss. Player's spaceship is equipped with a limited force shield which allows it to resist any kind of attack, though energy drains both while it is active and whenever the ship gets hit during use. Power-ups come in the form of ally helicopters and certain spaceships, that bring to the player a new shot(much faster than the normal one) and refills the ship's force field meter. + 0.60 + 19850101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + repulse.zip + Sega Classics + 270 + 288x224 + media/mixrbv2/repulse.png + + + + sonson.zip + Son Son + Son Son is a 2-D sidescrolling platformer. The screen scrolls automatically, only stopping to fight major enemies. The screen features six continuous platforms that occasionally feature small gaps. Sonson and Tonton walk automatically across these platforms. Pressing up or down will cause them to jump up or down to the next platform. Pressing left causes them to move more slowly than the screen scrolls, essentially continuing to move forward but at a reduced pace. Pressing right does the opposite - SonSon and TonTon will move across the platforms faster than the screen scrolls. The duo have only one attack - the ability to fire energy blasts from their staves. Touching an enemy or an unfriendly projectile causes the player to lose a life. If a player has any additional lives, they will return to the screen riding on a cloud that will give them temporary invincibility. If the player presses the control stick in any direction, the cloud will disappear and the character will resume its usual walking mode. The cloud will eventually disappear on its own if the control stick is not used. + 0.90 + 19840101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + Capcom Classics + 240x240 + media/mixrbv2/sonson.png + + + + sonsonj.zip + Son Son (Japan) + Son Son is a 2-D sidescrolling platformer. The screen scrolls automatically, only stopping to fight major enemies. The screen features six continuous platforms that occasionally feature small gaps. Sonson and Tonton walk automatically across these platforms. Pressing up or down will cause them to jump up or down to the next platform. Pressing left causes them to move more slowly than the screen scrolls, essentially continuing to move forward but at a reduced pace. Pressing right does the opposite - SonSon and TonTon will move across the platforms faster than the screen scrolls. The duo have only one attack - the ability to fire energy blasts from their staves. Touching an enemy or an unfriendly projectile causes the player to lose a life. If a player has any additional lives, they will return to the screen riding on a cloud that will give them temporary invincibility. If the player presses the control stick in any direction, the cloud will disappear and the character will resume its usual walking mode. The cloud will eventually disappear on its own if the control stick is not used. + 0.90 + 19840101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + sonson.zip + Capcom Classics + 240x240 + media/mixrbv2/sonson.png + + + + sbmj.zip + Sonic Blast Man (Japan) + A video game franchise started by Taito. Starting off as an Arcade game, it quickly became popular on the SNES as well. Hit the target till it hurts!!! + 19900101T000000 + Taito + Various + 39 + 1 + sbm.zip + Taito Classics + 320x224 + media/mixrbv2/sbm.png + + + + sbm.zip + Sonic Blast Man (US) + A video game franchise started by Taito. Starting off as an Arcade game, it quickly became popular on the SNES as well. Hit the target till it hurts!!! + 19900101T000000 + Taito + Various + 39 + 1 + Taito Classics + 320x224 + media/mixrbv2/sbm.png + + + + sonicbomd.zip + Sonic Boom (FD1094 317-0053 decrypted) + Sonic Boom is a vertically scrolling shooter from Sega. + 0.50 + 19870101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + sonicbom.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/sonicbom.png + + + + sonicbom.zip + Sonic Boom (FD1094 317-0053) + Sonic Boom is a vertically scrolling shooter from Sega. + 0.50 + 19870101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 320x224 + media/mixrbv2/sonicbom.png + + + + sonicwi.zip + Sonic Wings (Japan) + A superb vertically scrolling shoot-em-up in which the player chooses an ace fighter pilot from a selection of 4 countries (USA, Japan, Sweden and Britain) and takes to the skies to destroy enemy jets, boats, helicopt + 0.70 + 19920101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-2 + aerofgt.zip + Video System Co. + 270 + 320x224 + media/mixrbv2/aerofgt.png + + + + sstriker.zip + Sorcer Striker + Sorcer Striker, released in Japan as Mahou Daisakusen (Magic Armageddon) is a 1993 medieval-themed scrolling shooter developed by Raizing (now known as Eighting) for the arcades and later ported to Sharp X68000 and FM Towns computers and the EZweb mobile phones. It is the first game in the Mahou Daisakusen trilogy, which includes Kingdom Grandprix and Dimahoo. +The game is set in a fantasy world filled with magic and magic-fueled machinery. A peaceful kingdom is under assault by the encroaching Gobligan Empire, led by a mysterious human leader known only as the Gobligan King. As the kingdom finds itself unable to drive off the Gobligan Empire's advances, King Codwenna announces a huge bounty for the Gobligan King's head. Four heroes answer the call, and set out to defeat the Gobligan King and restore peace to the kingdom. + +Characters +Gain, the Warrior: A master of swords and physical combat, Gain wanders the land with his pet monkey Shain in search of the ultimate weapon. Attracted by the large bounty offered for the Gobligan King, Gain takes up arms in his ship, the Valhallyzer, against the Gobligan Empire. His signature weapon is the Buster Sword. +Chitta, the Magician: Despite her appearance as a youthful girl, Chitta is a formidable magic user and the granddaughter of a legendary hero. Bored of the quiet life of her village, she sneaks away in her grandfather's magical ship, the Gun Dalf, to seek adventure. Her signature attacks are the Thunder Beam and Ice Cube. +Miyamoto, the Samurai Dragon: Well-mannered and wise, Miyamoto the samurai dragon seeks revenge against Tsumujimaru, one of his former disciples. Tsumujimaru turned his back on Miyamoto's teachings and murdered Miyamoto's own Master, then fled into the Gobligan Empire. Miyamoto does not use a magical ship, but rather flies with his own two wings, and attacks via shuriken, ninjutsu stones, and other secret techniques. +Bornnam, the Necromancer: Detested and shunned by society, Bornnam lives in seclusion, practicing the black arts of necromancy and gleefully collecting bones. He decides to fight against the Gobligan Empire as a chance to test his power. Via the power of the divine dragon skull that rests on his head, he is able to transform into the Golgodian, a "ship" form that enables him to fly in the air and absorb the ambient mana from the sky in order to cast his spells. His favorite attacks are the Skull Napalm and Search Ghost. + + 0.70 + 19930101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/sstriker.png + + + + sstrikerk.zip + Sorcer Striker (Korea) + Sorcer Striker, released in Japan as Mahou Daisakusen (Magic Armageddon) is a 1993 medieval-themed scrolling shooter developed by Raizing (now known as Eighting) for the arcades and later ported to Sharp X68000 and FM Towns computers and the EZweb mobile phones. It is the first game in the Mahou Daisakusen trilogy, which includes Kingdom Grandprix and Dimahoo. +The game is set in a fantasy world filled with magic and magic-fueled machinery. A peaceful kingdom is under assault by the encroaching Gobligan Empire, led by a mysterious human leader known only as the Gobligan King. As the kingdom finds itself unable to drive off the Gobligan Empire's advances, King Codwenna announces a huge bounty for the Gobligan King's head. Four heroes answer the call, and set out to defeat the Gobligan King and restore peace to the kingdom. + +Characters +Gain, the Warrior: A master of swords and physical combat, Gain wanders the land with his pet monkey Shain in search of the ultimate weapon. Attracted by the large bounty offered for the Gobligan King, Gain takes up arms in his ship, the Valhallyzer, against the Gobligan Empire. His signature weapon is the Buster Sword. +Chitta, the Magician: Despite her appearance as a youthful girl, Chitta is a formidable magic user and the granddaughter of a legendary hero. Bored of the quiet life of her village, she sneaks away in her grandfather's magical ship, the Gun Dalf, to seek adventure. Her signature attacks are the Thunder Beam and Ice Cube. +Miyamoto, the Samurai Dragon: Well-mannered and wise, Miyamoto the samurai dragon seeks revenge against Tsumujimaru, one of his former disciples. Tsumujimaru turned his back on Miyamoto's teachings and murdered Miyamoto's own Master, then fled into the Gobligan Empire. Miyamoto does not use a magical ship, but rather flies with his own two wings, and attacks via shuriken, ninjutsu stones, and other secret techniques. +Bornnam, the Necromancer: Detested and shunned by society, Bornnam lives in seclusion, practicing the black arts of necromancy and gleefully collecting bones. He decides to fight against the Gobligan Empire as a chance to test his power. Via the power of the divine dragon skull that rests on his head, he is able to transform into the Golgodian, a "ship" form that enables him to fly in the air and absorb the ambient mana from the sky in order to cast his spells. His favorite attacks are the Skull Napalm and Search Ghost. + + 0.70 + 19930101T000000 + Raizing + Raizing + Shoot'em Up + 79 + 1-2 + sstriker.zip + Toaplan + 270 + 320x240 + media/mixrbv2/sstriker.png + + + + sos.zip + SOS + The player controls a fighter plane called a 'Shinryaku' which is situated at the bottom of the screen, while enemy planes fly down from above. The player may destroy them for 10 points each. Every few seconds, an "SOS" signal will sound and an arrow will point to either side of the screen, and the player must get there before it stops to receive 30 points and eliminate some of the enemy planes that have passed the Shinryaku. If 100 enemy planes make it past the Shinryaku, the game is instantly over. + 0.10 + 19800101T000000 + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/sos.png + + + + soukobdx.zip + Souko Ban Deluxe (Japan, SB1) + Boxy Boy. is a puzzle game where you control a boy who tries to push the boxes onto the blue circles. + 0.50 + 19900101T000000 + Namco + Namco + Various + 39 + 1 + boxyboy.zip + Namco Classics + 288x224 + media/mixrbv2/boxyboy.png + + + + spacbatt.zip + Space Battle (bootleg set 1) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + spacbat2.zip + Space Battle (bootleg set 2) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + sbsgomo.zip + Space Battle Ship Gomorrah + While the game is essentially a standard horizontally scrolling shoot'em up, it has an innovation that makes it unique in the genre. The player flies a spaceship (specifically, a bioship) which has the standard forward guns to be found in all horizontal scrollers, but it also possesses a weapon that can be manually targeted with a crosshair, in the same manner as in the game "Missile Command". This allows the player to fire in any direction with pinpoint accuracy, and adds an extra level of strategy to the game. The player's bioship can also collect power-ups to grow bigger (becoming more powerful), and can acquire spherical pods which attach to the ship and increase its firepower. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + bioship.zip + Sammy Classics + 256x224 + media/mixrbv2/bioship.png + + + + spacebrd.zip + Space Bird (bootleg) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacecr.zip + Space Cruiser + An Excellent and varied space shoot'm up game. Locate the coordinates of attack on the interstellar map, the UFO attack is coming! Forwards! The Earth's future is on your shoulders! blast off the Space Cruiser for a new survival adventure! + 0.30 + 19810101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/spacecr.png + + + + spacedem.zip + Space Demon + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spcdrag.zip + Space Dragon (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + spacduel0.zip + Space Duel (prototype) + Space Duel is a 1- or 2-player game with a color X-Y video display. This display, with its 3-color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling color and unique visual effects in a spectacular multi-dimensional video display. + +Space Duel offers players a choice of 4 different game versions. One player can control a fighter or a space station. Two players, playing at the same time, can control fighters or a space station. The game offers players 12 different targets (7 split when hit), and 18 different waves. At the beginning of each wave, objects enter from the screen edge. The player(s) then tries to shoot and destroy the objects. The wave ends when all the objects are destroyed. + + + 0.60 + 19800101T000000 + Atari + Atari + Shoot'em Up + 79 + 1-2 + spacduel.zip + Atari Classics + media/mixrbv2/spacduel.png + + + + spacduel1.zip + Space Duel (version 1) + Space Duel is a 1- or 2-player game with a color X-Y video display. This display, with its 3-color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling color and unique visual effects in a spectacular multi-dimensional video display. + +Space Duel offers players a choice of 4 different game versions. One player can control a fighter or a space station. Two players, playing at the same time, can control fighters or a space station. The game offers players 12 different targets (7 split when hit), and 18 different waves. At the beginning of each wave, objects enter from the screen edge. The player(s) then tries to shoot and destroy the objects. The wave ends when all the objects are destroyed. + + + 0.60 + 19800101T000000 + Atari + Atari + Shoot'em Up + 79 + 1-2 + spacduel.zip + Atari Classics + media/mixrbv2/spacduel.png + + + + spacduel.zip + Space Duel (version 2) + Space Duel is a 1- or 2-player game with a color X-Y video display. This display, with its 3-color guns and higher voltage, has the same technology that was used in previous Atari black-and-white X-Y displays. However, the screen now displays dazzling color and unique visual effects in a spectacular multi-dimensional video display. + +Space Duel offers players a choice of 4 different game versions. One player can control a fighter or a space station. Two players, playing at the same time, can control fighters or a space station. The game offers players 12 different targets (7 split when hit), and 18 different waves. At the beginning of each wave, objects enter from the screen edge. The player(s) then tries to shoot and destroy the objects. The wave ends when all the objects are destroyed. + + + 0.60 + 19800101T000000 + Atari + Atari + Shoot'em Up + 79 + 1-2 + Atari Classics + media/mixrbv2/spacduel.png + + + + sdungeon.zip + Space Dungeon + Each level of Space Dungeon consists of 36 rooms arranged in a six-by-six grid. Rooms are connected by open doorways of various sizes. One room in each level is the entrance, where the player begins, and another is the Collect Bonus room. Other rooms may or may not contain laser defenses, hostile aliens, or various bits of treasure. The goal in each level is to navigate using an automap to the room containing the "Collect Bonus" area, visiting as many rooms and collecting as much treasure as possible along the way. + 0.90 + 19810101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/sdungeon.png + + + + sdungeona.zip + Space Dungeon (larger roms) + Each level of Space Dungeon consists of 36 rooms arranged in a six-by-six grid. Rooms are connected by open doorways of various sizes. One room in each level is the entrance, where the player begins, and another is the Collect Bonus room. Other rooms may or may not contain laser defenses, hostile aliens, or various bits of treasure. The goal in each level is to navigate using an automap to the room containing the "Collect Bonus" area, visiting as many rooms and collecting as much treasure as possible along the way. + 0.90 + 19810101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + sdungeon.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/sdungeon.png + + + + spacecho.zip + Space Echo (set 1) + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + speakres.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + spacecho2.zip + Space Echo (set 2) + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + speakres.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + spacempr.zip + Space Empire (bootleg) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + spacefbb.zip + Space Firebird (bootleg) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacefbg.zip + Space Firebird (Gremlin) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacefba.zip + Space Firebird (rev. 02-a) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacefbe.zip + Space Firebird (rev. 03-e set 1) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacefbe2.zip + Space Firebird (rev. 03-e set 2) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacefb.zip + Space Firebird (rev. 04-u) + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + spacfurya.zip + Space Fury (revision A) + Space Fury is a rather simple alien blasting shoot-em-up. It uses almost industry standard vector controls, which are four buttons, Left Rotate, Right Rotate, Thrust, and Fire. You begin the game in the center of four strange looking shapes. These shapes are both level selects and upgrades. Run into one of them and it will add itself to your ship, and then you get to do the level associated with it. Each level is different mainly because you have wildly different shot patterns on each one. But all of them are the same when it comes to your objective. What you have to do is blast all the spaceship parts before they can form into dangerous enemy spaceships. Blast them all, and you get to select a new level and watch a little interlude where the alien taunts you with his evil computer voice. + + 0.50 + 19810101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + spacfury.zip + Sega Classics + 180 + media/mixrbv2/spacfury.png + + + + spacfuryb.zip + Space Fury (revision B) + Space Fury is a rather simple alien blasting shoot-em-up. It uses almost industry standard vector controls, which are four buttons, Left Rotate, Right Rotate, Thrust, and Fire. You begin the game in the center of four strange looking shapes. These shapes are both level selects and upgrades. Run into one of them and it will add itself to your ship, and then you get to do the level associated with it. Each level is different mainly because you have wildly different shot patterns on each one. But all of them are the same when it comes to your objective. What you have to do is blast all the spaceship parts before they can form into dangerous enemy spaceships. Blast them all, and you get to select a new level and watch a little interlude where the alien taunts you with his evil computer voice. + + 0.50 + 19810101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + spacfury.zip + Sega Classics + 180 + media/mixrbv2/spacfury.png + + + + spacfury.zip + Space Fury (revision C) + Space Fury is a rather simple alien blasting shoot-em-up. It uses almost industry standard vector controls, which are four buttons, Left Rotate, Right Rotate, Thrust, and Fire. You begin the game in the center of four strange looking shapes. These shapes are both level selects and upgrades. Run into one of them and it will add itself to your ship, and then you get to do the level associated with it. Each level is different mainly because you have wildly different shot patterns on each one. But all of them are the same when it comes to your objective. What you have to do is blast all the spaceship parts before they can form into dangerous enemy spaceships. Blast them all, and you get to select a new level and watch a little interlude where the alien taunts you with his evil computer voice. + + 0.50 + 19810101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 180 + media/mixrbv2/spacfury.png + + + + sharrier1.zip + Space Harrier (8751 315-5163) + Space Harrier is a sprite-scaling 3D shoot-em-up set in the 'Fantasy Zone'; a surreal world composed of abstract structures and a checkerboard landscape. The game's enemies are as abstract as its setting; with creatures including prehistoric Mammoths, alien pods, giant mushrooms and, at the end of most stages, a huge, fireball-spitting Chinese Dragon. + +The player's on-screen counterpart carries a portable jetpack under his arm which allows him to fly. The player can also run along the ground to avoid overhead structures and enemies. + +In addition to its flight capability, the jetpack is also equipped with a laser, used to destroy both the game's many enemies as well as some (but not all) obstructions, such as the trees and floating rocks on the first stage. + +Space Harrier has a total of 18 stages, each with a boss fight at the end. Three exceptions are the bonus stages (5th and 12th) and the 18th stage, which is a 'boss rush' featuring some of the bosses encountered up to that point. + 0.80 + 19850101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + sharrier.zip + Sega Classics + 320x224 + media/mixrbv2/sharrier.png + + + + sharrier.zip + Space Harrier (Rev A, 8751 315-5163A) + Space Harrier is a sprite-scaling 3D shoot-em-up set in the 'Fantasy Zone'; a surreal world composed of abstract structures and a checkerboard landscape. The game's enemies are as abstract as its setting; with creatures including prehistoric Mammoths, alien pods, giant mushrooms and, at the end of most stages, a huge, fireball-spitting Chinese Dragon. + +The player's on-screen counterpart carries a portable jetpack under his arm which allows him to fly. The player can also run along the ground to avoid overhead structures and enemies. + +In addition to its flight capability, the jetpack is also equipped with a laser, used to destroy both the game's many enemies as well as some (but not all) obstructions, such as the trees and floating rocks on the first stage. + +Space Harrier has a total of 18 stages, each with a boss fight at the end. Three exceptions are the bonus stages (5th and 12th) and the 18th stage, which is a 'boss rush' featuring some of the bosses encountered up to that point. + 0.80 + 19850101T000000 + SEGA + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + Sega Classics + 320x224 + media/mixrbv2/sharrier.png + + + + sisv1.zip + Space Invaders (SV Version rev 1) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + sisv2.zip + Space Invaders (SV Version rev 2) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + sisv3.zip + Space Invaders (SV Version rev 3) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + sisv.zip + Space Invaders (SV Version rev 4) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + sitv1.zip + Space Invaders (TV Version rev 1) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + sitv.zip + Space Invaders (TV Version rev 2) + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + invaders.zip + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + invaders.zip + Space Invaders / Space Invaders M + The most influential video game of all time. A single player moves an armed 'base' to the left or right along the bottom of the screen and fires at the endless waves of aliens that tirelessly parade across the screen towards earth. +There are 4 buildings (shields) at the bottom of the screen behind which the player can hide, but these will eventually be destroyed by enemy missiles or by direct contact with the invaders themselves. Player shots will also destroy shields. +The descent of the aliens accelerates as they are eliminated, making them more difficult to hit. A flying saucer will fly across the top of the screen at regular intervals and can be fired for extra points. + 0.90 + 19780101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + Taito Classics + 270 + 260x224 + media/mixrbv2/invaders.png + + + + spacedxo.zip + Space Invaders DX (Japan, v2.0) + A modern and fitting tribute to Taito's 1978 seminal shoot-em-up, "Space Invaders". + +There are now 3 different game modes to choose from. These include a faithful recreation of the legendary original - available in both upright and cocktail versions - and replete with a simulation of the infamous "coloured plastic overlay" that was used to add the impression of full colour graphics to the original game. + +The 2 remaining game modes are 'Versus', with simultaneous split-screen 2-player action, and "Parody", which features characters and graphics from other well-known Taito games, such as "The New Zealand Story", "Bubble Bobble" and "Liquid Kids". Despite the graphical changes, the Parody version plays identically to the original game, and all modes retain the original, legendary sound effects. + 0.90 + 19940101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + spacedx.zip + Taito Classics + 320x224 + media/mixrbv2/spacedx.png + + + + spacedxj.zip + Space Invaders DX (Japan, v2.1) + A modern and fitting tribute to Taito's 1978 seminal shoot-em-up, "Space Invaders". + +There are now 3 different game modes to choose from. These include a faithful recreation of the legendary original - available in both upright and cocktail versions - and replete with a simulation of the infamous "coloured plastic overlay" that was used to add the impression of full colour graphics to the original game. + +The 2 remaining game modes are 'Versus', with simultaneous split-screen 2-player action, and "Parody", which features characters and graphics from other well-known Taito games, such as "The New Zealand Story", "Bubble Bobble" and "Liquid Kids". Despite the graphical changes, the Parody version plays identically to the original game, and all modes retain the original, legendary sound effects. + 0.90 + 19940101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + spacedx.zip + Taito Classics + 320x224 + media/mixrbv2/spacedx.png + + + + spacedx.zip + Space Invaders DX (US, v2.1) + A modern and fitting tribute to Taito's 1978 seminal shoot-em-up, "Space Invaders". + +There are now 3 different game modes to choose from. These include a faithful recreation of the legendary original - available in both upright and cocktail versions - and replete with a simulation of the infamous "coloured plastic overlay" that was used to add the impression of full colour graphics to the original game. + +The 2 remaining game modes are 'Versus', with simultaneous split-screen 2-player action, and "Parody", which features characters and graphics from other well-known Taito games, such as "The New Zealand Story", "Bubble Bobble" and "Liquid Kids". Despite the graphical changes, the Parody version plays identically to the original game, and all modes retain the original, legendary sound effects. + 0.90 + 19940101T000000 + Taito + Taito + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/spacedx.png + + + + galap1.zip + Space Invaders Galactica (galaxiaj hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + sinvasnb.zip + Space Invasion (bootleg) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + sinvasn.zip + Space Invasion (Europe) + Commando is a vertically scrolling shoot'em up in which the player takes on the role of a highly trained commando soldier called "Super Joe", who starts the game by being dropped off in a jungle by a helicopter. + +Joe's mission is to rescue captives and destroy the enemy bases and strongholds that appear at the end of each level, killing as many enemy soldiers as possible in the process. + +The end-of-level strongholds see waves of enemy soldiers ordered to attack by a cowardly officer, who immediately runs away. Shooting the fleeing officer earns the player bonus points. Along the way, players can attempt to free prisoners-of-war by shooting their enemy guard escorts as they are transported across the screen. + +Super Joe carries only two weapons: a limited-range machine gun with unlimited shots, and a limited supply of hand grenades. Extra grenades can be picked up as the player progresses through the levels. + 0.70 + 19850101T000000 + Capcom + Data East + Shooter / Run and Gun + 2903 + 1-2 + commando.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/commando.png + + + + spcmission.zip + Space Mission (SegaSA / Sonic, Spanish bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + spaceplt.zip + Space Pilot (set 1) + Time Pilot is a multi-directionally scrolling shoot-em-up in which the player controls a futuristic jet fighter and takes on the role of pilot trying to rescue fellow pilots who are trapped in different time eras. The game consists of five different stages of play, each of which is set in a different time period. + + + 0.90 + 19820101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + timeplt.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/timeplt.png + + + + spaceplta.zip + Space Pilot (set 2) + Time Pilot is a multi-directionally scrolling shoot-em-up in which the player controls a futuristic jet fighter and takes on the role of pilot trying to rescue fellow pilots who are trapped in different time eras. The game consists of five different stages of play, each of which is set in a different time period. + + + 0.90 + 19820101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + timeplt.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/timeplt.png + + + + spcpostn.zip + Space Position (Japan) + Space Position (c) 1986 Sega. - TECHNICAL - First Board Number : X090-PC-A 171-5383 Second Board Number : X090-PC-B 171-5384 Main CPU : NEC D317-0005 (Z80) @ 8 Mhz) Sound CPU : NEC D780C-1 (Z80) (@ 4 Mhz) Sound Chips : (2x) YM2203 (@ 4 Mhz) Players : + 0.50 + 19860101T000000 + SEGA + SEGA + Race, Driving / Race + 2924 + 1-2 + Sega Classics + 270 + 256x240 + media/mixrbv2/spcpostn.png + + + + sraider.zip + Space Raider + An old and challenging space shoot'em up. + +Destroy the raiders from mysterious outer space!! + 0.70 + 19820101T000000 + Shooter / Space Invaders Like + 2900 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/sraider.png + + + + spcrocks.zip + Space Rocks (Spanish clone of Asteroids) + Asteroids &copy; 1979 Atari, Incorporated. + +Asteroids is a legendary, genre defining game - in an era replete with genre-defining classics - in which a single player takes control of a spaceship trapped in the middle of an asteroid belt. A number of large, slow-moving asteroids drift randomly around the play area and must be shot by the player. When shot, the asteroids will break into a number of smaller pieces which must also be shot until eventually, all of the asteroids and fragments will be destroyed and the next wave begins. + +Asteroids introduced real-world physics to video games for the first time, with speed and inertia all adding to the player&#039;s problems. As well as the inertia of the player&#039;s ship - forcing the player to allow for the ship slowing down and speeding up whenever the Thrust button was utilized - shot asteroids would often send fragments flying in seemingly random directions, and at varying and unpredictable speeds. + +As well as the ever-present asteroids, flying saucers also make a regular appearance. These move horizontally and diagonally around the screen, firing at the player&#039;s ship, and must be quickly destroyed. They are destroyed when hit by the player&#039;s shot, when hit by a saucer&#039;s shot or when they collide with an asteroid. + +CAST OF CHARACTERS - + +Spaceship - This is you, the player. You can rotate 360 degrees, fire bullets, thrust forward in any direction, and hyperspace to safety if you feel you are in danger. + +Large Asteroid - These are the large rocks that fill the screen at the beginning of each stage. Hitting one with a bullet will break it apart into two Medium Asteroids. + +Medium Asteroid - Slightly smaller than Large Asteroids, but faster moving. Shooting one of these will result in two Small Asteroids. + +Small Asteroid - These are the smallest and fastest rocks on the screen. If a bullet hits one of these, it will vaporize. + +Large Saucer - Large flying saucers appear on the screen from time to time, randomly firing shots around the screen. They pose a minor threat. + +Small Saucer - The smaller flying saucers are deadlier than the large variety. They are much more precise with their shots, and are more likely to kill you. Eliminate them quickly or get out of their range. + 0.70 + 19790101T000000 + Atari + Atari + Action + 10 + 1-2 + asteroid.zip + Atari Classics + media/mixrbv2/asteroid.png + + + + spaceskr.zip + Space Seeker + Space Seeker (c) 1981 Taito. - TECHNICAL - Taito SJ System hardware Prom Stickers : EB01-15 Main CPU : Z80 (Number : AA017805) (@ 4 Mhz) Sound CPU : Z80 (Number : LE070003) (@ 3 Mhz) Sound Chips : (4x) AY8910 (@ 1.5 Mhz), DAC (@ 1.5 Mhz) Players : 2 C + 0.50 + 19810101T000000 + Taito + Taito + Shooter / Plane, 1st person + 2892 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/spaceskr.png + + + + sstrangr.zip + Space Stranger + Changes include the UFO randomly turning around, and a score penalty for shooting the shields. + 0.50 + 19780101T000000 + Yachiyo Denki + Yachiyo Denki + Shooter / Space Invaders Like + 2900 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/sstrangr.png + + + + sstrangr2.zip + Space Stranger 2 + Changes include the UFO randomly turning around, and a score penalty for shooting the shields. + 0.50 + 19780101T000000 + Yachiyo Denki + Yachiyo Denki + Shooter / Space Invaders Like + 2900 + 1-2 + sstrangr.zip + Mame + 270 + 256x224 + media/mixrbv2/sstrangr.png + + + + spctbird.zip + Space Thunderbird + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + spctrek.zip + Space Trek (Video Game S.A., Spanish bootleg of Scramble) + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + sparkman.zip + Spark Man (v2.0, set 1) + Spark Man is a side-scrolling run-'n-gun, whose protagonist seems to be loosely based on Wooroemae, a superhero from a 1980s series of live action / anime hybrid films. The setting is a weird cold-war perspective cyberpunk world, where the hero is seen jumping on a horse on front of the Kremlin(?) in between missions. + +There are no horse riding stages, but occasionally Spark Man can find some weird flying elevators as transportation. Some bosses are also fought in a Cabal-like shooting range mode. There are a couple of limited extra weapons, like flame throwers and rocket launchers. Spark Man can fire in five directions; only downward shots are not possible. + +While the game itself is more original than the company's previous run-'n-gun, Rough Ranger, it's still full of borrowed content from other sources. The intro shows god's hand from Michelangelo's The Creation of Adam putting the spark of life in one of Hajime Sorayma's Gynoids. During the game, Jabba the Hut and AT-ST Walkers from Star Wars appear as enemies. + 0.60 + 19890101T000000 + SunA + SunA + Platform / Shooter Scrolling + 2887 + Mame + 256x224 + media/mixrbv2/sparkman.png + + + + sparkz.zip + Sparkz (prototype) + This game is a combination of Tetris and Pipe Dream, and is very similar to Cachat/Tube It, another prototype. The player has to make connections, or "sparkz" from the red side to the blue side (or vice versa) so that the monster that the scientist is making could be built. The monster is made piece by piece, and the first piece made is the head after connecting 2 sparkz. + 0.30 + 19920101T000000 + Atari + Atari + Puzzle-Game / Fall + 2912 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/sparkz.png + + + + spartanx.zip + Spartan X (Japan) + Kung-Fu Master, known in Japan as Spartan X (スパルタンX?), is a 1984 beat 'em up arcade game developed and published in Japan by Irem. It was later published in North America by Data East. The Japanese version was based on the Jackie Chan movie Wheels on Meals, known as Spartan X in Japan, and credited "Paragon Films Ltd., Towa Promotion", who produced the film upon which it was based. The game is considered by many to be the first beat 'em up video game, and contains elements of Bruce Lee's Game of Death. + 0.90 + 19840101T000000 + Irem + Irem + Fight / 2D + 2914 + 1-2 + kungfum.zip + Irem Classics + 256x256 + media/mixrbv2/kungfum.png + + + + spatter.zip + Spatter (315-5xxx) + Spatter is a fast-moving maze-chase game in which the player takes on the role of a tricycle-pedalling child out collecting flowers, while trying to avoid collisions with the numerous enemies giving chase. + 0.70 + 19840101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 479x224 + media/mixrbv2/spatter.png + + + + speakres.zip + Speak & Rescue + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + speakresb.zip + Speak & Rescue (bootleg) + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + speakres.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + speccies.zip + Speccies 2 + 20150101T000000 + Mame + + + spec2kh.zip + Spectrum 2000 (horizontal, buggy) (Europe) + A vertical scrolling jet shoot them up, featuring both single & co-operative gameplay as well as a myriad of power ups. The players get to choose from 5 different jets each with it's own unique attributes & weapons. By collecting varies power ups during the missions the player's jet with be transformed into a stronger, more powerful version. +The jet selection screen music was ripped from the first stage music of the early SNK Neo-Geo MVS shoot-em-up game "Andro Dunos". + 0.60 + 20010101T000000 + Yona Tech + Yona Tech + Shoot'em Up + 79 + 1-2 + spec2k.zip + NMK + 256x224 + media/mixrbv2/spec2k.png + + + + spec2k.zip + Spectrum 2000 (vertical, Korea) + A vertical scrolling jet shoot them up, featuring both single & co-operative gameplay as well as a myriad of power ups. The players get to choose from 5 different jets each with it's own unique attributes & weapons. By collecting varies power ups during the missions the player's jet with be transformed into a stronger, more powerful version. +The jet selection screen music was ripped from the first stage music of the early SNK Neo-Geo MVS shoot-em-up game "Andro Dunos". + 0.60 + 20010101T000000 + Yona Tech + Yona Tech + Shoot'em Up + 79 + 1-2 + NMK + 256x224 + media/mixrbv2/spec2k.png + + + + speedbal.zip + Speed Ball (set 1) + A pinball video game. + 0.50 + 19850101T000000 + Tecfri + Williams + Pinball + 31 + 1-2 + Mame + 270 + 292x240 + media/mixrbv2/speedbal.png + + + + speedbala.zip + Speed Ball (set 2) + A pinball video game. + 0.50 + 19850101T000000 + Tecfri + Williams + Pinball + 31 + 1-2 + speedbal.zip + Mame + 270 + 292x240 + media/mixrbv2/speedbal.png + + + + spdball.zip + Speed Ball - Contest at Neonworld (prototype) + Futurista juego de hockey en vista cenital + 0.30 + 19850101T000000 + Williams + Williams + Sports + 685 + Midway Classics + 292x240 + media/mixrbv2/spdball.png + + + + spdcoin.zip + Speed Coin (prototype) + The objective is to roll the coin to the bottom of the screen and through the hole at the bottom by tilting the coin's platform. This must be done without breaking the coin, and within the shortest time possible. If this is done above certain times, the player gets a bonus multiplier (either 4, 2, or 1) depending on which of the 3 times the player's finishing time is above or equal to. It seems simple, but is super addictive and really fun to play with a group of people. + 0.70 + 19840101T000000 + Stern Electronics, Inc. + Stern Electronics + Puzzle-Game + 26 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/spdcoin.png + + + + speedspn.zip + Speed Spin + Nice ping pong game. + 0.70 + 19940101T000000 + TCH + TCH + Sports / Table tennis + 2966 + 1-2 + Mame + 384x240 + media/mixrbv2/speedspn.png + + + + spelunkr.zip + Spelunker + In Spelunker - which means 'cave-diver' - a caver has to work his way down through a number of multi-directionally scrolling caves - each one deeper underground than the last - in his bid to find the mythical 'World of Wonders'. To do this, the spelunker must find the exit to each cave, so he can move on to the next and get closer to his goal. + +Spelunker is a platform game, and each tricky cave is filled with enemies - such as bats and ogres - and traps. Ladders, ropes, lifts and the obligatory minecarts must be used to reach other platforms and sections of the cave. + +To aid him in his difficult quest, the Spelunker carries a gun and can shoot short-range fireballs at his enemies to stun or kill them. Numerous bonus items can be collected, such as bombs to destroy any rocks block his route, keys to open locked doors and potions to boost the caver's ever-decreasing energy meter. Treasure chests also litter each cave, and can be opened for bonus treasure items. + 0.70 + 19850101T000000 + Irem + Irem + Platform / Run Jump Scrolling + 2897 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/spelunkr.png + + + + spelunkrj.zip + Spelunker (Japan) + In Spelunker - which means 'cave-diver' - a caver has to work his way down through a number of multi-directionally scrolling caves - each one deeper underground than the last - in his bid to find the mythical 'World of Wonders'. To do this, the spelunker must find the exit to each cave, so he can move on to the next and get closer to his goal. + +Spelunker is a platform game, and each tricky cave is filled with enemies - such as bats and ogres - and traps. Ladders, ropes, lifts and the obligatory minecarts must be used to reach other platforms and sections of the cave. + +To aid him in his difficult quest, the Spelunker carries a gun and can shoot short-range fireballs at his enemies to stun or kill them. Numerous bonus items can be collected, such as bombs to destroy any rocks block his route, keys to open locked doors and potions to boost the caver's ever-decreasing energy meter. Treasure chests also litter each cave, and can be opened for bonus treasure items. + 0.70 + 19850101T000000 + Irem + Irem + Platform / Run Jump Scrolling + 2897 + 1-2 + spelunkr.zip + Irem Classics + 384x256 + media/mixrbv2/spelunkr.png + + + + spelunk2.zip + Spelunker II - 23 no Kagi (Japan) + The player contols a miner who is looking for treasures in a huge mine. Find the key that opens the door to the next level and along the way, collect items that can help or reward points. Collect life potions to regenerate and shoot your enemies. + 0.70 + 19860101T000000 + Irem + Irem + Platform + 7 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/spelunk2.png + + + + spidermi.zip + Spiderman (FMV Demo) + Neo-Geo + media/mixrbv2/spidermi.png + + + spinmast.zip + Spin Master / Miracle Adventure + An evil doctor has kidnapped John and Tom's friend, Mary, and has stolen their treasure map. Rescuing Mary and getting back all pieces of the map takes them through 5 levels of arcade-style Jump'n Shoot-action. + +There are several weapons to acquire, ranging from a yo-yo (the standard weapon) to bombs, icicles, missiles and more. Weapons differ in range, shooting frequency, and power, and can be shot in all directions. Each weapon also has a unique chargeable attack as well as a super-attack (which uses up one bomb-symbol). + +It is also possible to jump on enemies or perform a sliding attack. + 0.65 + 19930101T000000 + Data East + Data East + Platform / Shooter Scrolling + 2887 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/spinmast.png + + + + spinlbrkj.zip + Spinal Breakers (Japan) + Rare "Cabal" type shoot'em up. + 0.50 + 19900101T000000 + V-System Co. + V-System Co. + Shooter / 3rd person + 2899 + 1-2 + spinlbrk.zip + Video System Co. + 352x240 + media/mixrbv2/spinlbrk.png + + + + spinlbrku.zip + Spinal Breakers (US) + Rare "Cabal" type shoot'em up. + 0.50 + 19900101T000000 + V-System Co. + V-System Co. + Shooter / 3rd person + 2899 + 1-2 + spinlbrk.zip + Video System Co. + 352x240 + media/mixrbv2/spinlbrk.png + + + + spinlbrkup.zip + Spinal Breakers (US, prototype) + Rare "Cabal" type shoot'em up. + 0.50 + 19900101T000000 + V-System Co. + V-System Co. + Shooter / 3rd person + 2899 + 1-2 + spinlbrk.zip + Video System Co. + 352x240 + media/mixrbv2/spinlbrk.png + + + + spinlbrk.zip + Spinal Breakers (World) + Rare "Cabal" type shoot'em up. + 0.50 + 19900101T000000 + V-System Co. + V-System Co. + Shooter / 3rd person + 2899 + 1-2 + Video System Co. + 352x240 + media/mixrbv2/spinlbrk.png + + + + splat.zip + Splat! + Splat was inspired by the food fight scene of Animal House. John came up with the idea of removable heads to extend the life of the characters, plus thought it was a unique twist to the game. + 0.70 + 19820101T000000 + Williams + Shooter + 2646 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/splat.png + + + + splatterj.zip + Splatter House (Japan, SH1) + In a dark and stormy night, Rick and his girlfriend Jeniffer take refuge in the creepy West mansion, only to find himself dead and Jeniffer missing! Now, a mysterious sacrificial mask with amazing powers brings him back from the dead and in order to free himself from its curse, he must destroy the evil lurking deep within the mansion and save Jennifer in the process! Features some of the goriest graphics ever seen at its release date, awesome music & sound effects, lots of the typical toys seen in horror flicks (knives, etc.) as well as lots of challenge! + 0.70 + 19880101T000000 + Namco + Namco + Beat'em Up + 1 + 1-2 + splatter.zip + Namco Classics + 288x224 + media/mixrbv2/splatter.png + + + + splatter.zip + Splatter House (World, new version (SH3)) + In a dark and stormy night, Rick and his girlfriend Jeniffer take refuge in the creepy West mansion, only to find himself dead and Jeniffer missing! Now, a mysterious sacrificial mask with amazing powers brings him back from the dead and in order to free himself from its curse, he must destroy the evil lurking deep within the mansion and save Jennifer in the process! Features some of the goriest graphics ever seen at its release date, awesome music & sound effects, lots of the typical toys seen in horror flicks (knives, etc.) as well as lots of challenge! + 0.70 + 19880101T000000 + Namco + Namco + Beat'em Up + 1 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/splatter.png + + + + splatter2.zip + Splatter House (World, old version (SH2)) + In a dark and stormy night, Rick and his girlfriend Jeniffer take refuge in the creepy West mansion, only to find himself dead and Jeniffer missing! Now, a mysterious sacrificial mask with amazing powers brings him back from the dead and in order to free himself from its curse, he must destroy the evil lurking deep within the mansion and save Jennifer in the process! Features some of the goriest graphics ever seen at its release date, awesome music & sound effects, lots of the typical toys seen in horror flicks (knives, etc.) as well as lots of challenge! + 0.70 + 19880101T000000 + Namco + Namco + Beat'em Up + 1 + 1-2 + splatter.zip + Namco Classics + 288x224 + media/mixrbv2/splatter.png + + + + springer.zip + Springer + You are Springer the rabbit. You must jump from cloud to cloud, collecting everything you can, to reach the sun. You must jump from cloud to cloud and touch any items or eggs to collect them. If an egg hatches into a dragon, you can kick the dragon to collect him. There is a bonus timer that counts down on the screen so don't delay. Once you reach the sun at the top, then it is off to a more challenging screen. + 0.30 + 19820101T000000 + Orca Corporation + Orca + Platform / Run Jump + 2915 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/springer.png + + + + spyhunt.zip + Spy Hunter + Spy Hunter is an action/driving game. It places the player as the driver of a G-6155 CIA Prototype Interceptor sports car. The object of the game is to travel the freeways and waterways, hunting down and destroying as many enemy vehicles as possible, all the while not harming civilian vehicles. The view is top-down and the screen scrolls vertically underneath the player's car. + +The game begins with the player driving the G-6155. Soon, the player starts to encounter enemy vehicles which try to force the player's car off the road and crash. Each enemy vehicle has its own special feature, such as tire slashers or bulletproof armor. + +Points are scored for driving on the road and for destroying enemy vehicles. There is a lead-in time when the player has an endless supply of cars. After this time expires, the player will lose a life each time the car crashes. Extra cars can be earned with high scores. The first extra car is earned at a default value of 30,000 points, but this value can vary depending on settings. + + + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + Midway Classics + 270 + 480x480 + media/mixrbv2/spyhunt.png + + + + spyhuntp.zip + Spy Hunter (Playtronic license) + Spy Hunter is an action/driving game. It places the player as the driver of a G-6155 CIA Prototype Interceptor sports car. The object of the game is to travel the freeways and waterways, hunting down and destroying as many enemy vehicles as possible, all the while not harming civilian vehicles. The view is top-down and the screen scrolls vertically underneath the player's car. + +The game begins with the player driving the G-6155. Soon, the player starts to encounter enemy vehicles which try to force the player's car off the road and crash. Each enemy vehicle has its own special feature, such as tire slashers or bulletproof armor. + +Points are scored for driving on the road and for destroying enemy vehicles. There is a lead-in time when the player has an endless supply of cars. After this time expires, the player will lose a life each time the car crashes. Extra cars can be earned with high scores. The first extra car is earned at a default value of 30,000 points, but this value can vary depending on settings. + + + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + spyhunt.zip + Midway Classics + 270 + 480x480 + media/mixrbv2/spyhunt.png + + + + sqij.zip + SQIJ! + 20180101T000000 + Mame + + + squaitsa.zip + Squash (Itisa) + Juego de Squash para uno o dos jugadores + 0.30 + 19840101T000000 + Itisa + Itisa + Sports + 685 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/squaitsa.png + + + + squash.zip + Squash (ver. 1.0, checksum 015aef61) + An entertaining squash sport game from Gaelco. + 0.70 + 19920101T000000 + Gaelco + Itisa + Sports / Tennis + 2867 + 1-2 + Gaelco + 256x224 + media/mixrbv2/squash.png + + + + stkclmnsj.zip + Stack Columns (Japan) + Stack Columns is a more competitive version of the classic puzzle game that was released in arcades in 1994. + 0.60 + 19940101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + stkclmns.zip + Sega Classics + 256x224 + media/mixrbv2/stkclmns.png + + + + stkclmns.zip + Stack Columns (World) + Stack Columns is a more competitive version of the classic puzzle game that was released in arcades in 1994. + 0.60 + 19940101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/stkclmns.png + + + + stadhero.zip + Stadium Hero (Japan) + 0.50 + 19880101T000000 + Data East + Data East + Sports / Baseball + 2853 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/stadhero.png + + + + stagger1.zip + Stagger I (Japan) + A prototype version of this game is known as "Red Hawk". + +The attract music is a cover of Level 1 music from "Raiden II". + 0.50 + 19970101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + NMK + 270 + 256x224 + media/mixrbv2/stagger1.png + + + + stakwin.zip + Stakes Winner / Stakes Winner - GI kinzen seiha e no michi + Stakes Winner is a 2D horse racing game. Taking the role of horse jockeys, players must win a series of races using one of the game's eight selectable horses. Each horse is rated in strength, speed, and stamina, making each horse different in handling. During the game, horse ratings can be boosted through completing bonus levels. Each horse has a stamina bar displayed at the bottom of the screen, next to a picture of the horse's head showing its current health. The stamina bar decreases as the horse runs, and when it is depleted, the race is over for that horse. + 0.70 + 19950101T000000 + Saurus + SNK + Sports with Animals + 2650 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/stakwin.png + + + + stakwin2.zip + Stakes Winner 2 + Race your champion racehorse to beat all the competition and win huge prizes! Come flying out of the paddocks and race along the track faster than everyone else to win, just remember to try and collect bonus snacks to keep the horse's stamina up! + 0.55 + 19960101T000000 + Saurus + SNK + Sports with Animals + 2650 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/stakwin2.png + + + + starfght.zip + Star Fighter + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + starfgmc.zip + Star Fighter (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + starfigh.zip + Star Fighter (v1) + You fight a variety of spacecrafts, tanks, static guns and bosses. While playing destroyed enemies drop power-ups. These include: a side weapon (floating rocket), short period shield (floating ring), speed power-up (S) and extra bomb (B). There is also a block that counts down from seven when shot on, with each number representing a different weapon pattern. The game can be played solo or with a friend. + 0.70 + 19900101T000000 + SunA + SunA + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/starfigh.png + + + + starforc.zip + Star Force + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + starforcb.zip + Star Force (encrypted, bootleg) + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + starforc.zip + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + starforce.zip + Star Force (encrypted, set 1) + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + starforc.zip + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + starforca.zip + Star Force (encrypted, set 2) + Star Force is a single-player, vertically-scrolling shoot-em-up in which the player pilots a spaceship called the 'Final Star' over series series of islands floating in outer-space space and must destroy waves of enemy spacecraft and ground-based targets. + +Special symbols appear at regular intervals that can be shot or collected for bonuses and power-ups. The Final Star is only equipped with forward-firing guns but these can be upgraded occasionally by collecting the relevant power-up. This resembles a small space ship and doubles the length of the Final Star, while also increasing its fire-power. + +The stages in Star Force are designated by letters of the Greek alphabet and each has an end-of-level guardian in the form of a Greek letter that must be defeated to progress to the next level. The guardian moves down the screen and if the player fails to destroy it before it disappears from view, they will have a play a little more of the level in order to reach the guardian again. + 0.70 + 19840101T000000 + Tehkan Ltd. + Tehkan Ltd. + Shoot'em Up + 79 + 1-2 + starforc.zip + Mame + 270 + 256x224 + media/mixrbv2/starforc.png + + + + stargrds.zip + Star Guards + Star Guards is a multi-directional shooter arcade game that was released by Bally Midway in 1987. The players must use two eight-way joysticks (one for moving, and one for firing) to take control of three Transformer-like robots (who are coloured as red, yellow and blue respectively). They can fly anywhere they want (and must collect energy, to keep their strength up) - but their objective is to destroy the most "leaders" on each star to conquer it, for once they have conquered four stars they will gain a new weapon (and name). They start out as Flux (who has a magnet as a special weapon), then turn to Tangent (who has a shield), followed by Rebound (who has a boomerang), Kelvin (who has a freeze ray) and Blitz (who has heat-seeking grenades). The player who conquers in the current star will also get to choose the next one on the overworld map. + 0.50 + 19870101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + 1-3 + Midway Classics + 512x480 + media/mixrbv2/stargrds.png + + + + starjack.zip + Star Jacker (Sega) + Star Jacker is an early vertical scrolling shooter with some interesting characteristics. The player starts out with three fighters with all of the fighters moving and shooting at the same time. Two fighters trail the lead fighter. Star Jacker features a similar scheme with the Namco game Xevious in that the fighters shoot at enemy fighters in the air while dropping bombs on enemies and targets on the ground level. + +When any of the fighters is killed, the game momentarily pauses and re-centers the player fighters before continuing at the same point. The game is over when all of the player's fighters are destroyed. Star Jacker allows no continues. + 0.50 + 19830101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 479x224 + media/mixrbv2/starjack.png + + + + starjacks.zip + Star Jacker (Stern) + Star Jacker is an early vertical scrolling shooter with some interesting characteristics. The player starts out with three fighters with all of the fighters moving and shooting at the same time. Two fighters trail the lead fighter. Star Jacker features a similar scheme with the Namco game Xevious in that the fighters shoot at enemy fighters in the air while dropping bombs on enemies and targets on the ground level. + +When any of the fighters is killed, the game momentarily pauses and re-centers the player fighters before continuing at the same point. The game is over when all of the player's fighters are destroyed. Star Jacker allows no continues. + 0.50 + 19830101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + starjack.zip + Sega Classics + 270 + 479x224 + media/mixrbv2/starjack.png + + + + startrek.zip + Star Trek + STAR TREK is a 1- or 2-player SEGA Color X-Y video game with computerized speech synthesis. The player finds himself the Captain of the Starship Enterprise, his mission being to rid the universe of a number of threats to the United Federation of Planets. + +STAR TREK has a unique method of displaying the information vital to the game play. This method involves the separation of the CRT into three completely separate screens. + +The Scanner is where the player sees a top down or plan view of local space, with the Enterprise always in the center of this screen. The Viewer is where the player sees actual apparent 3-D images, as if he were looking out the ships front window. The Status screen displays player score in addition to Shield strength, number of Photon Torpedoes, and amount of Warp energy remaining. + 0.20 + 19820101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/startrek.png + + + + startrkd.zip + Star Trek (Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + startrks.zip + Star Trek (Head On hardware) + 0.20 + Action + 10 + 1 + Mame + 256x224 + media/mixrbv2/startrks.png + + + + starwarr.zip + Star Warrior + Space Firebird is a one or two player game in which players are attacked from all sides by highly maneuverable Firebirds. Players can move space ship left or right and shoot a rapid-fire laser at attacking Firebirds. A special Warp Mode allows the space ship to escape danger and fire at the flock of aliens. + +FIREBIRDS +The space Firebirds are a unique set of adversaries. There are three different birds, the Emperor, Eagle and Gull, which fly together in complex looping formations, firing and attacking from all directions. The player must keep track of the laser hits because each bird has a different resistance level to hits. The fearless Emperor is destroyed by four hits, the Eagle with two hits and the soaring Gull with one hit. The Eagle also has a deadly bomb which is launched at the space ship. Extra points are scored by hitting the bomb before it explodes. The bomb when hit, scatters into deadly shrapnel. To avoid the flying shrapnel, the bomb must be hit from directly underneath. + +SPACE SHIP +The space ship can be moved right or left to evade attacking Firebirds. Depressing the fire button enables the space ship to shoot its laser at approaching Firebirds. Players receive 3 (adjustable) space ships per play. + +WARP MODE +Activate warp mode to escape impeding danger or to strike out at approaching birds. There is only warp mode per space ship. When activated, the space ship is launched into space with a force field around it that deflects enemy fire. In warp mode, Firebirds can be eliminated by ramming into them or by firing at close range. + +If all Firebirds are destroyed, the player moves into a new battle sequence that increases in difficulty. One new space ship is awarded for a score of 5,000 (adjustable) points. Game ends when all space ships are destroyed. + 0.80 + 19800101T000000 + Nintendo + Nintendo + Shooter / Space Invaders Like + 2900 + 1-2 + spacefb.zip + Nintendo Classics + 270 + 512x224 + media/mixrbv2/spacefb.png + + + + starwars.zip + Star Wars (rev 1) + Star Wars is a single-player 3-D shoot-em-up based on the legendary movie franchise of the same name. This game is specifically based on the very first Star Wars movie, 'Episode IV: A New Hope'. The player takes on the role of Luke Skywalker (Red Five) whose goal is to blow up the infamous "Death Star" by firing a Proton Torpedo into an exposed exhaust port situated on the Death Star's surface. + +Before reaching the exhaust port, players must survive three attack phases. + +PHASE 1: The game begins in outer space above the Death Star. Players must engage in a dog fight with Darth Vader and numerous enemy TIE Fighters. All but Vader's fighter can be shot and destroyed. Incoming enemy fire must be avoided or shot to prevent damage to the player's Deflector shields. + +PHASE 2: The X-Wing flies down to the surface of the Death Star and is confronted with a barrage of laser turrets and towers as the X-Wing flies across the Death Star's surface. Any collisions with either the towers or incoming enemy shots will cause damage to the player's Deflector Shields. + +The laser tower tops have a progressive scoring incentive that is displayed at the top center of the screen, along with the number of remaining laser tower tops that need to be destroyed before the X-Wing enters the exhaust port trench. If the player manages to destroy all of the towers, a sizeable point bonus is awarded. + +PHASE 3: The X-Wing begins its approach down the trench of the Death Star, heading for the exhaust port situated at the end of the trench. The trench walls are lined with red laser-gun turrets that fire at the player as he makes his approach. Incoming fire must either be avoided or shot. Trench catwalks of varying shapes and heights also appear in later trench runs. These must be avoided as any collision results in damage to Red 5's deflector shields. + +If the player survives the trench run, the voice of 'Han Solo' will advise that 'You're all clear, Kid' and the player must quickly shoot the exhaust port to destroy the Death Star. If a trench run is completed without the player having fired any shots other than the shot into the exhaust port, a sizeable point bonus is awarded for 'using the force'. If the exhaust port is missed, Red 5 will plough through the wall at the end of the trench and lose one deflector shield, after which the trench run will start over. + +If the player succeeds in blowing up the Death Star, Red 5 makes its escape before turning to view the colourful explosion. Bonus points for Remaining Shield Energy is now scored. + +The player is then returned to the fray and whole process begins again. Each successive Death Star run greatly increases in difficulty; TIE Fighters shoot more often, there are more Laser towers and batteries in successive rounds and there are many more obstacles and laser fire during the trench run. + 0.80 + 19830101T000000 + Midway + Atari + Fight + 14 + 1 + Atari Classics + media/mixrbv2/starwars.png + + + + starwars1.zip + Star Wars (set 2) + Star Wars is a single-player 3-D shoot-em-up based on the legendary movie franchise of the same name. This game is specifically based on the very first Star Wars movie, 'Episode IV: A New Hope'. The player takes on the role of Luke Skywalker (Red Five) whose goal is to blow up the infamous "Death Star" by firing a Proton Torpedo into an exposed exhaust port situated on the Death Star's surface. + +Before reaching the exhaust port, players must survive three attack phases. + +PHASE 1: The game begins in outer space above the Death Star. Players must engage in a dog fight with Darth Vader and numerous enemy TIE Fighters. All but Vader's fighter can be shot and destroyed. Incoming enemy fire must be avoided or shot to prevent damage to the player's Deflector shields. + +PHASE 2: The X-Wing flies down to the surface of the Death Star and is confronted with a barrage of laser turrets and towers as the X-Wing flies across the Death Star's surface. Any collisions with either the towers or incoming enemy shots will cause damage to the player's Deflector Shields. + +The laser tower tops have a progressive scoring incentive that is displayed at the top center of the screen, along with the number of remaining laser tower tops that need to be destroyed before the X-Wing enters the exhaust port trench. If the player manages to destroy all of the towers, a sizeable point bonus is awarded. + +PHASE 3: The X-Wing begins its approach down the trench of the Death Star, heading for the exhaust port situated at the end of the trench. The trench walls are lined with red laser-gun turrets that fire at the player as he makes his approach. Incoming fire must either be avoided or shot. Trench catwalks of varying shapes and heights also appear in later trench runs. These must be avoided as any collision results in damage to Red 5's deflector shields. + +If the player survives the trench run, the voice of 'Han Solo' will advise that 'You're all clear, Kid' and the player must quickly shoot the exhaust port to destroy the Death Star. If a trench run is completed without the player having fired any shots other than the shot into the exhaust port, a sizeable point bonus is awarded for 'using the force'. If the exhaust port is missed, Red 5 will plough through the wall at the end of the trench and lose one deflector shield, after which the trench run will start over. + +If the player succeeds in blowing up the Death Star, Red 5 makes its escape before turning to view the colourful explosion. Bonus points for Remaining Shield Energy is now scored. + +The player is then returned to the fray and whole process begins again. Each successive Death Star run greatly increases in difficulty; TIE Fighters shoot more often, there are more Laser towers and batteries in successive rounds and there are many more obstacles and laser fire during the trench run. + 0.80 + 19830101T000000 + Midway + Atari + Fight + 14 + 1 + starwars.zip + Atari Classics + media/mixrbv2/starwars.png + + + + starwarso.zip + Star Wars (set 3) + Star Wars is a single-player 3-D shoot-em-up based on the legendary movie franchise of the same name. This game is specifically based on the very first Star Wars movie, 'Episode IV: A New Hope'. The player takes on the role of Luke Skywalker (Red Five) whose goal is to blow up the infamous "Death Star" by firing a Proton Torpedo into an exposed exhaust port situated on the Death Star's surface. + +Before reaching the exhaust port, players must survive three attack phases. + +PHASE 1: The game begins in outer space above the Death Star. Players must engage in a dog fight with Darth Vader and numerous enemy TIE Fighters. All but Vader's fighter can be shot and destroyed. Incoming enemy fire must be avoided or shot to prevent damage to the player's Deflector shields. + +PHASE 2: The X-Wing flies down to the surface of the Death Star and is confronted with a barrage of laser turrets and towers as the X-Wing flies across the Death Star's surface. Any collisions with either the towers or incoming enemy shots will cause damage to the player's Deflector Shields. + +The laser tower tops have a progressive scoring incentive that is displayed at the top center of the screen, along with the number of remaining laser tower tops that need to be destroyed before the X-Wing enters the exhaust port trench. If the player manages to destroy all of the towers, a sizeable point bonus is awarded. + +PHASE 3: The X-Wing begins its approach down the trench of the Death Star, heading for the exhaust port situated at the end of the trench. The trench walls are lined with red laser-gun turrets that fire at the player as he makes his approach. Incoming fire must either be avoided or shot. Trench catwalks of varying shapes and heights also appear in later trench runs. These must be avoided as any collision results in damage to Red 5's deflector shields. + +If the player survives the trench run, the voice of 'Han Solo' will advise that 'You're all clear, Kid' and the player must quickly shoot the exhaust port to destroy the Death Star. If a trench run is completed without the player having fired any shots other than the shot into the exhaust port, a sizeable point bonus is awarded for 'using the force'. If the exhaust port is missed, Red 5 will plough through the wall at the end of the trench and lose one deflector shield, after which the trench run will start over. + +If the player succeeds in blowing up the Death Star, Red 5 makes its escape before turning to view the colourful explosion. Bonus points for Remaining Shield Energy is now scored. + +The player is then returned to the fray and whole process begins again. Each successive Death Star run greatly increases in difficulty; TIE Fighters shoot more often, there are more Laser towers and batteries in successive rounds and there are many more obstacles and laser fire during the trench run. + 0.80 + 19830101T000000 + Midway + Atari + Fight + 14 + 1 + starwars.zip + Atari Classics + media/mixrbv2/starwars.png + + + + stargate.zip + Stargate + Stargate, also known as 'Defender II', will transport you to a whole new dimension in video games! Not only will the skills you learned with "Defender" be challenged and refined, but new strategies must come into play if you are to be victorious in rescuing the humanoids from the clutches of the aliens and in entering the Stargate! Your ability to react quickly and with on-target precision will be tested against the evil Yllabian Space Guppies, Dynamos, Space Hums, Firebombers and their Fireballs, Phreds, Big Reds and Munchies! If you succeed in maneuvering your ship into the Stargate, you'll be instantly trans-located to that part of the planet where the humanoids are being abducted! To open up spectacular scoring possibilities, rescue four Humanoids, re-enter Stargate and you'll warp 3 waves ahead in space and time, setting off dazzling special effects and racking up high points! + +If you must destroy everything in your path or risk self-destruction, activate the Inviso anti-matter cloaking device and become invisible and invulnerable! Inviso time plus a new ship and a Smart Bomb are earned with every 10,000 points you score! + +If all ten Humanoids in a wave are abducted, the universe will explode into smithereens, leaving deadly Mutants on the attack! Survive until Wave 5 and the universe will be restored, the humanoids safe... but you'll be the target of an Yllabian Dog Fight! There'll be no Landers to abduct the Humanoids, but all the other aliens will have stronger and larger forces concentrated against you! It will be an out space battle reaching the outer limits of aggression and will call up your last ounce of determination and courage! + 0.90 + 19810101T000000 + Vid Kidz + Williams + Shoot'em Up + 79 + 1-2 + Midway Classics + 292x240 + media/mixrbv2/stargate.png + + + + stlforce.zip + Steel Force + A futuristic-themed, maze based shoot-em-up in which one or two players must battle through an alien-infested space station in a desperate hunt for the level's exit. Weapon power-ups, ammunition and health packs are dotted around the levels to assist players in their task. + 0.50 + 19940101T000000 + Electronic Devices Italy + Electronic Devices Italy / Ecogames S.L. Spain + Action + 10 + 1-2 + Mame + 368x240 + media/mixrbv2/stlforce.png + + + + sgunnerj.zip + Steel Gunner (Japan) + Some major trouble is brewing in the city of Neo Arc. A radical terrorist group known as S.T.U.R.M. is causing problems to the citizens of Neo Arc by kidnapping a well respected quantum physicist and his assistant in order to create an abominable war machine. However there's a ray of hope which come in the form of the police department's counter-terrorist force called Steel Gunner. Now the battle is set for it's up to both Steel Gunner Officers Cliff and Garcia to stop the seemingly merciless wrath of S.T.U.R.M. and it's leader: Gatse Bernard + 0.70 + 19900101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + sgunner.zip + Namco Classics + 288x224 + media/mixrbv2/sgunner.png + + + + sgunner.zip + Steel Gunner (Rev B) + Some major trouble is brewing in the city of Neo Arc. A radical terrorist group known as S.T.U.R.M. is causing problems to the citizens of Neo Arc by kidnapping a well respected quantum physicist and his assistant in order to create an abominable war machine. However there's a ray of hope which come in the form of the police department's counter-terrorist force called Steel Gunner. Now the battle is set for it's up to both Steel Gunner Officers Cliff and Garcia to stop the seemingly merciless wrath of S.T.U.R.M. and it's leader: Gatse Bernard + 0.70 + 19900101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/sgunner.png + + + + sgunner2j.zip + Steel Gunner 2 (Japan, Rev A) + Steel Gunner 2 (c) 1991 Namco. - TECHNICAL - The majority of cabinets for this game were released as conversion kits for Taito's "Operation Thunderbolt". Namco System 2 hardware Game ID : SNS Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), + 0.70 + 19910101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + sgunner2.zip + Namco Classics + 288x224 + media/mixrbv2/sgunner2.png + + + + sgunner2.zip + Steel Gunner 2 (US) + Steel Gunner 2 (c) 1991 Namco. - TECHNICAL - The majority of cabinets for this game were released as conversion kits for Taito's "Operation Thunderbolt". Namco System 2 hardware Game ID : SNS Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), + 0.70 + 19910101T000000 + Namco + Namco + Lightgun Shooter + 32 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/sgunner2.png + + + + stera.zip + Steraranger (Moon Cresta bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + stinger.zip + Stinger + The game consists of traveling around a space fortress meanwhile shooting aliens and spaceships. An object called 'Bongo' could be used as a defense method. This object will shoot itself to the enemies for a few seconds. + 0.70 + 19830101T000000 + Seibu Denshi + Seibu Denshi + Shoot'em Up + 79 + 1-2 + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/stinger.png + + + + stinger2.zip + Stinger (prototype?) + The game consists of traveling around a space fortress meanwhile shooting aliens and spaceships. An object called 'Bongo' could be used as a defense method. This object will shoot itself to the enemies for a few seconds. + 0.70 + 19830101T000000 + Seibu Denshi + Seibu Denshi + Shoot'em Up + 79 + 1-2 + stinger.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/stinger.png + + + + storming.zip + Storming Party / Riku Kai Kuu Saizensen (set 1) + Land Sea Air Squad also known in japan as "Riku Kai Kuu Saizensen". + 0.50 + 19860101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + lsasquad.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/lsasquad.png + + + + storminga.zip + Storming Party / Riku Kai Kuu Saizensen (set 2) + Land Sea Air Squad also known in japan as "Riku Kai Kuu Saizensen". + 0.50 + 19860101T000000 + Taito + Taito + Shooter + 2646 + 1-2 + lsasquad.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/lsasquad.png + + + + strfbomb.zip + Strafe Bomb + Scramble is a sideways scrolling shoot-em-up in which a single player takes control of a spaceship and must try to fight through six different enemy-packed levels - destroying as many fuel tanks and ground intallations as possible - before reaching the enemy base and destroying it. + +Contact with any scenery, ground installations, enemy ships or projectyles results in an instant loss of life. The Scramble ship is armed with both a blaster and bombs. The blaster is forward-firing only while the bombs drop downwards to target ground-based enemy installations and to collect fuel from fuel dumps. + +The fuel dumps are of particular importance, as the player ship's fuel gauge constantly depletes as the player progresses through the game and the only way to re-fuel is by bombing the fuel tanks that are located on the ground throughout the levels. Fuel usage increases as the game progresses, until fuel usage actually outstrips the amount of fuel dumps available and the game becomes impossible. + +Scramble is rightly considered to be a classic and was the world's first ever 'multi-level' shoot-em-up. + 0.90 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scramble.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scramble.png + + + + stratgyx.zip + Strategy X + Even Patton would spend all his quarters attempting to advance through the four attack levels of Strategy X, Konami's latest tank attack video game. + +1st Level: Defend against rotating cannons. +2nd Level: Watch out for attacking Jeeps +3rd Level: Careful! Here come attacking and shooting tanks +4th Level: Rotating cannons again, but this time against a moving background. + +An audible signal warns that it's refueling time. Enter a fuel dock and receive 100-300 points. The Tank commander's life isn't an easy one. + +Aside from an on-going battle, he has to watch out for obstacles and rough terrain. Brick walls destroy tanks, although they can be shot away. TNT, rather nasty stuff...explodes when shot, but destroys all objects in the area. Stay off pink backgrounds. That's where the land mines are buried. They explode only on contact. Don't worry about a blue background, though. It's a slip zone like an oil slick and can be driven across. If an alien base is found and destroyed, advance to the next level of difficulty. You bet there's a 'buy-in' feature on this one. + +Strategy X. There's never been a war game like it. It blows minds, and quarters. + 0.50 + 19810101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/stratgyx.png + + + + stratgys.zip + Strategy X (Stern) + Even Patton would spend all his quarters attempting to advance through the four attack levels of Strategy X, Konami's latest tank attack video game. + +1st Level: Defend against rotating cannons. +2nd Level: Watch out for attacking Jeeps +3rd Level: Careful! Here come attacking and shooting tanks +4th Level: Rotating cannons again, but this time against a moving background. + +An audible signal warns that it's refueling time. Enter a fuel dock and receive 100-300 points. The Tank commander's life isn't an easy one. + +Aside from an on-going battle, he has to watch out for obstacles and rough terrain. Brick walls destroy tanks, although they can be shot away. TNT, rather nasty stuff...explodes when shot, but destroys all objects in the area. Stay off pink backgrounds. That's where the land mines are buried. They explode only on contact. Don't worry about a blue background, though. It's a slip zone like an oil slick and can be driven across. If an alien base is found and destroyed, advance to the next level of difficulty. You bet there's a 'buy-in' feature on this one. + +Strategy X. There's never been a war game like it. It blows minds, and quarters. + 0.50 + 19810101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + stratgyx.zip + Konami Classics + 256x224 + media/mixrbv2/stratgyx.png + + + + stratvox.zip + Stratovox + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + speakres.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + stratvoxb.zip + Stratovox (bootleg) + A space shooter game. + +The alien spaceships comes to planet earth, invasion has been established, hurry up help and avoid the human abduction destroying with the defense moon spaceship, all the hordes of aliens. + 0.70 + 19800101T000000 + Sunsoft + Shooter / Space Invaders Like + 2900 + 1-2 + speakres.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/speakres.png + + + + streakng.zip + Streaking (set 1) + In this comical maze game, the player controls a nude streaker girl who runs around a city maze and she must eat all foods shaped circle while must pick up all the clothes and accessories and back to dress for avoid being caught by the police officers, she also may escape quickly using orbed portals located at each corner of the maze. + +This game's ROMs can be swapped with Ghost Muncher's, and it will work perfectly. The game also makes sounds Ghost Muncher will make. + 0.30 + 19800101T000000 + Shoeisha + Shoei + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/streakng.png + + + + streaknga.zip + Streaking (set 2) + In this comical maze game, the player controls a nude streaker girl who runs around a city maze and she must eat all foods shaped circle while must pick up all the clothes and accessories and back to dress for avoid being caught by the police officers, she also may escape quickly using orbed portals located at each corner of the maze. + +This game's ROMs can be swapped with Ghost Muncher's, and it will work perfectly. The game also makes sounds Ghost Muncher will make. + 0.30 + 19800101T000000 + Shoeisha + Shoei + Action + 10 + 1-2 + streakng.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/streakng.png + + + + stfighta.zip + Street Fight (bootleg?) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + stfightgb.zip + Street Fight (Germany - Benelux) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + stfight.zip + Street Fight (Germany) + The game is set in 1931 New York City where the player controls a young man who must avenge his family members, who were killed in a gang shootout. Over a period of several months, he targets mobsters, culminating with the mafia boss. + 0.50 + 19860101T000000 + Seibu Kaihatsu + Race, Driving + 28 + 1-2 + empcity.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/empcity.png + + + + sfj.zip + Street Fighter (Japan) (protected) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfjan.zip + Street Fighter (Japan, pneumatic buttons) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfp.zip + Street Fighter (Prototype) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfua.zip + Street Fighter (US set 2) (protected) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sf.zip + Street Fighter (US, set 1) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfw.zip + Street Fighter (World) (protected) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfan.zip + Street Fighter (World, pneumatic buttons) + Martial arts masters Ryu and Ken enter a worldwide martial arts tournament spanning 5 nations as they face 10 of the world's greatest fighters. The game can be played alone or with 2 players competing, with Player 1 taking the role of Ryu and Player 2 as Ken. The predecessor to the ultra-popular "Street Fighter II - The World Warrior". + 0.90 + 19870101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf.zip + Capcom Classics + 384x224 + media/mixrbv2/sf.png + + + + sfar3.zip + Street Fighter Alpha - warriors' dreams (950605 Euro) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfar2.zip + Street Fighter Alpha - warriors' dreams (950627 Euro) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfau.zip + Street Fighter Alpha - warriors' dreams (950627 USA) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfar1.zip + Street Fighter Alpha - warriors' dreams (950718 Euro) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfad.zip + Street Fighter Alpha - warriors' dreams (950727 Euro Phoenix Edition) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfa.zip + Street Fighter Alpha - warriors' dreams (950727 Euro) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfaud.zip + Street Fighter Alpha - warriors' dreams (950727 USA Phoenix Edition) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfa2.zip + Street Fighter Alpha 2 (960229 Euro) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfa2ur1.zip + Street Fighter Alpha 2 (960306 USA) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfa2u.zip + Street Fighter Alpha 2 (960430 USA) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfa2uhc.zip + Street Fighter Alpha 2 - Unlock Hidden Characters (Hack By Yumeji) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfa3us.zip + Street Fighter Alpha 3 (980616 USA, SAMPLE Version) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3b.zip + Street Fighter Alpha 3 (980629 Brazil) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3hr1.zip + Street Fighter Alpha 3 (980629 Hispanic) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3ur1.zip + Street Fighter Alpha 3 (980629 USA) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3.zip + Street Fighter Alpha 3 (980904 Euro) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3h.zip + Street Fighter Alpha 3 (980904 Hispanic) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3ud.zip + Street Fighter Alpha 3 (980904 USA Phoenix Edition) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3u.zip + Street Fighter Alpha 3 (980904 USA) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfa3xl.zip + Street Fighter Alpha 3 - Xiang Long Edition (Hack by pipi899, Ver.2009-05-10) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sf2amf.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 1, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf4.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 2, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf5.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 3, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf6.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 4, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf7.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 5, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf8.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 6, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf9.zip + Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 7, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf2.zip + Street Fighter II - Champion Edition (L735 Test Rom, bootleg, set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf3.zip + Street Fighter II - Champion Edition (L735 Test Rom, bootleg, set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2amf10.zip + Street Fighter II - Champion Edition (L735 Test Rom, bootleg, set 3) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2em.zip + Street Fighter II - The World Warrior (910129 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ea.zip + Street Fighter II - The World Warrior (910204 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2en.zip + Street Fighter II - The World Warrior (910204 World, conversion) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ua.zip + Street Fighter II - The World Warrior (910206 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ja.zip + Street Fighter II - The World Warrior (910214 Japan) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ub.zip + Street Fighter II - The World Warrior (910214 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2eb.zip + Street Fighter II - The World Warrior (910214 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ue.zip + Street Fighter II - The World Warrior (910228 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ee.zip + Street Fighter II - The World Warrior (910228 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2jc.zip + Street Fighter II - The World Warrior (910306 Japan) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2uc.zip + Street Fighter II - The World Warrior (910306 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ud.zip + Street Fighter II - The World Warrior (910318 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ed.zip + Street Fighter II - The World Warrior (910318 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2jf.zip + Street Fighter II - The World Warrior (910411 Japan) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2uf.zip + Street Fighter II - The World Warrior (910411 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ef.zip + Street Fighter II - The World Warrior (910411 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2jh.zip + Street Fighter II - The World Warrior (910522 Japan) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ug.zip + Street Fighter II - The World Warrior (910522 USA, rev G) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2uh.zip + Street Fighter II - The World Warrior (910522 USA, rev H) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ui.zip + Street Fighter II - The World Warrior (910522 USA, rev I) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2.zip + Street Fighter II - The World Warrior (910522 World) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2uk.zip + Street Fighter II - The World Warrior (911101 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2j.zip + Street Fighter II - The World Warrior (911210 Japan, CPS-B-13) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2j17.zip + Street Fighter II - The World Warrior (911210 Japan, CPS-B-17) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2jla.zip + Street Fighter II - The World Warrior (911210 Japan, rev L) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2jl.zip + Street Fighter II - The World Warrior (920312 Japan) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2um.zip + Street Fighter II - The World Warrior (920312 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2rules.zip + Street Fighter II - The World Warrior (bootleg with rules screen, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2b.zip + Street Fighter II - The World Warrior (bootleg, 910214 etc, set 1 (with YM2151 + 2xMSM5205)) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2b2.zip + Street Fighter II - The World Warrior (bootleg, 910214 etc, set 2) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2b3.zip + Street Fighter II - The World Warrior (bootleg, 910214 etc, set 3) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2b4.zip + Street Fighter II - The World Warrior (bootleg, 910214 etc, set 4) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2qp2.zip + Street Fighter II - The World Warrior (Quicken bootleg, 910522 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2qp1.zip + Street Fighter II - The World Warrior (Quicken Pt-I bootleg, 910214 USA) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2rk.zip + Street Fighter II - The World Warrior (RK bootleg set 1, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2rk2.zip + Street Fighter II - The World Warrior (RK bootleg set 2, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2stt.zip + Street Fighter II - The World Warrior (STT, TAB Austria bootleg, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ebbl2.zip + Street Fighter II - The World Warrior (TAB Austria bootleg set 2, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ebbl3.zip + Street Fighter II - The World Warrior (TAB Austria bootleg set 3, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ebbl.zip + Street Fighter II - The World Warrior (TAB Austria bootleg, 910214 etc) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2thndr.zip + Street Fighter II - The World Warrior (Thunder Edition bootleg, 910214 etc, set 1) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2thndr2.zip + Street Fighter II - The World Warrior (Thunder Edition bootleg, 910214 etc, set 2) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2ly.zip + Street Fighter II - The World Warrior (with bosses like Champion Edition, 910522 Japan, CPS-B-11) + GET READY TO RUMBLE! + +From across the globe comes eight of the wildest fighters the world has ever known. Choose your champion, gather your courage and prepare to battle your opponents in a bare knuckle brawl. Face Ken and his devastating "Dragon Punch"! Watch the temperature rise as Dhalsim incinerates you with his mystical Yoga Flame! Hear your spine crack as Zangief smashes you to the pavement with his spinning pile driver! Cover your ears as Guile breaks the sound barrier with the awesome power of the Sonic Boom! + +Annihilate your competition and claim the right to test your skills against the bone-crushing power of the Grand Masters! Can you survive? Can Anyone? + 0.85 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sf2.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2.png + + + + sf2mix.zip + Street Fighter II Mix (v1.2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cebltw.zip + Street Fighter II' - Champion Edition (920313 'Taiwan' bootleg with PAL) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceeabl.zip + Street Fighter II' - Champion Edition (920313 etc bootleg set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceeab2.zip + Street Fighter II' - Champion Edition (920313 etc bootleg set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuabl.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab10.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 10) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab11.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 11) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab2.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab3.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 3) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab4.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 4) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab5.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 5) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab6.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 6) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab7.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 7) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab8.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 8) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuab9.zip + Street Fighter II' - Champion Edition (920313 USA bootleg set 9) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cejabl.zip + Street Fighter II' - Champion Edition (920322 Japan bootleg set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cejab2.zip + Street Fighter II' - Champion Edition (920322 Japan bootleg set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceucbl.zip + Street Fighter II' - Champion Edition (920803 USA bootleg) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2accp2.zip + Street Fighter II' - Champion Edition (Accelerator Pt.II bootleg, 920313 Testron) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2acc.zip + Street Fighter II' - Champion Edition (Accelerator! bootleg set 1, 920313 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2acca.zip + Street Fighter II' - Champion Edition (Accelerator! bootleg set 2, 920310 Accelerator!) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceb2.zip + Street Fighter II' - Champion Edition (bootleg, set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceb3.zip + Street Fighter II' - Champion Edition (bootleg, set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2dkot2.zip + Street Fighter II' - Champion Edition (Double K.O. Turbo II bootleg, 902140 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2bhh.zip + Street Fighter II' - Champion Edition (Hungh-Hsi bootleg, 920313 Taiwan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2level.zip + Street Fighter II' - Champion Edition (Level Select bootleg, 920322 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2md.zip + Street Fighter II' - Champion Edition (Magic Delta, bootleg, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mega.zip + Street Fighter II' - Champion Edition (Mega Co bootleg set 1, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mega2.zip + Street Fighter II' - Champion Edition (Mega Co bootleg set 2, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceb4.zip + Street Fighter II' - Champion Edition (Playmark bootleg, set 2) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceb5.zip + Street Fighter II' - Champion Edition (Playmark bootleg, set 3) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 1, 920322 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb2.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 2, 920322 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb3.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 3, 920322 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb4.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 4, 920322 Japan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb5.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 5, 920322 Japan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2rb6.zip + Street Fighter II' - Champion Edition (Rainbow bootleg set 6, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2re.zip + Street Fighter II' - Champion Edition (RE, bootleg) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2red.zip + Street Fighter II' - Champion Edition (Red Wave bootleg set 1, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2red2.zip + Street Fighter II' - Champion Edition (Red Wave bootleg set 2, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2redp2.zip + Street Fighter II' - Champion Edition (Red Wave PtII bootleg, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2sl73a.zip + Street Fighter II' - Champion Edition (Sheng Long v 7.3a) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cet.zip + Street Fighter II' - Champion Edition (street fighter 2' 920313 Taiwan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceua.zip + Street Fighter II' - Champion Edition (street fighter 2' 920313 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceea.zip + Street Fighter II' - Champion Edition (street fighter 2' 920313 World) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceja.zip + Street Fighter II' - Champion Edition (street fighter 2' 920322 Japan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cejb.zip + Street Fighter II' - Champion Edition (street fighter 2' 920513 Japan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceub.zip + Street Fighter II' - Champion Edition (street fighter 2' 920513 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ce.zip + Street Fighter II' - Champion Edition (street fighter 2' 920513 World) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2cejc.zip + Street Fighter II' - Champion Edition (street fighter 2' 920803 Japan) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceuc.zip + Street Fighter II' - Champion Edition (street fighter 2' 920803 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2tlona.zip + Street Fighter II' - Champion Edition (Tu Long bootleg set 1, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2tlonb.zip + Street Fighter II' - Champion Edition (Tu Long bootleg set 2, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2tlonc.zip + Street Fighter II' - Champion Edition (Tu Long bootleg set 3, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceupl.zip + Street Fighter II' - Champion Edition (UPL bootleg) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2v004.zip + Street Fighter II' - Champion Edition (V004 bootleg set 1, 102092 USA) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2v0042.zip + Street Fighter II' - Champion Edition (V004 bootleg set 2, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2v0043.zip + Street Fighter II' - Champion Edition (V004 bootleg set 3, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2yyc.zip + Street Fighter II' - Champion Edition (YYC bootleg set 1, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2yyc2.zip + Street Fighter II' - Champion Edition (YYC bootleg set 2, 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2hfu.zip + Street Fighter II' - Hyper Fighting (street fighter 2' T 921209 USA) + Street Fighter II': Hyper Fighting (Street Fighter II' Turbo: Hyper Fighting in Japan) is the second upgrade to the Street Fighter II series after Street Fighter II': Champion Edition. It is a simple modification of the game made by Capcom USA (James Goddard), in an attempt to counter the proliferation of the many unofficial hacks available at the time, and to incorporate into the official game some of the most popular improvements made by them, including attack speed and new paddles on certain hacks.nnThe speed of the game has been greatly increased (hence the Turbo on the console port of the game); and new special moves are available to certain characters, making combat much more strategic. + 0.85 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2hf.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2hf.png + + + + sf2hf.zip + Street Fighter II' - Hyper Fighting (street fighter 2' T 921209 World) + Street Fighter II': Hyper Fighting (Street Fighter II' Turbo: Hyper Fighting in Japan) is the second upgrade to the Street Fighter II series after Street Fighter II': Champion Edition. It is a simple modification of the game made by Capcom USA (James Goddard), in an attempt to counter the proliferation of the many unofficial hacks available at the time, and to incorporate into the official game some of the most popular improvements made by them, including attack speed and new paddles on certain hacks.nnThe speed of the game has been greatly increased (hence the Turbo on the console port of the game); and new special moves are available to certain characters, making combat much more strategic. + 0.85 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/sf2hf.png + + + + sf2mdt.zip + Street Fighter II' - Magic Delta Turbo (bootleg set 1 (with YM2151 + 2xMSM5205), 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mdta.zip + Street Fighter II' - Magic Delta Turbo (bootleg set 2 (with YM2151 + 2xMSM5205), 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mdtb.zip + Street Fighter II' - Magic Delta Turbo (bootleg set 3 (with YM2151 + 2xMSM5205), 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mdtc.zip + Street Fighter II' - Magic Delta Turbo (bootleg set 4 (with YM2151 + 2xMSM5205), 920313 etc) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2mkot.zip + Street Fighter II' - Magic KO Turbo!! - Nightmare Crack + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2koryu.zip + Street Fighter II' - Xiang Long (bootleg set 1, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2koryu2.zip + Street Fighter II' - Xiang Long (bootleg set 2, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2koryu3.zip + Street Fighter II' - Xiang Long (bootleg set 3, 811102 001) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2hfjb.zip + Street Fighter II' Turbo - Hyper Fighting (bootleg set 1, 921209 Japan) + Street Fighter II': Hyper Fighting (Street Fighter II' Turbo: Hyper Fighting in Japan) is the second upgrade to the Street Fighter II series after Street Fighter II': Champion Edition. It is a simple modification of the game made by Capcom USA (James Goddard), in an attempt to counter the proliferation of the many unofficial hacks available at the time, and to incorporate into the official game some of the most popular improvements made by them, including attack speed and new paddles on certain hacks.nnThe speed of the game has been greatly increased (hence the Turbo on the console port of the game); and new special moves are available to certain characters, making combat much more strategic. + 0.85 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2hf.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2hf.png + + + + sf2hfjb2.zip + Street Fighter II' Turbo - Hyper Fighting (bootleg set 2, 921209 Japan) + Street Fighter II': Hyper Fighting (Street Fighter II' Turbo: Hyper Fighting in Japan) is the second upgrade to the Street Fighter II series after Street Fighter II': Champion Edition. It is a simple modification of the game made by Capcom USA (James Goddard), in an attempt to counter the proliferation of the many unofficial hacks available at the time, and to incorporate into the official game some of the most popular improvements made by them, including attack speed and new paddles on certain hacks.nnThe speed of the game has been greatly increased (hence the Turbo on the console port of the game); and new special moves are available to certain characters, making combat much more strategic. + 0.85 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2hf.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2hf.png + + + + sf2hfj.zip + Street Fighter II' Turbo - Hyper Fighting (street fighter 2' T 921209 Japan) + Street Fighter II': Hyper Fighting (Street Fighter II' Turbo: Hyper Fighting in Japan) is the second upgrade to the Street Fighter II series after Street Fighter II': Champion Edition. It is a simple modification of the game made by Capcom USA (James Goddard), in an attempt to counter the proliferation of the many unofficial hacks available at the time, and to incorporate into the official game some of the most popular improvements made by them, including attack speed and new paddles on certain hacks.nnThe speed of the game has been greatly increased (hence the Turbo on the console port of the game); and new special moves are available to certain characters, making combat much more strategic. + 0.85 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2hf.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2hf.png + + + + sf2dongb.zip + Street Fighter II': Champion Edition (Dongfang Bubai protection bootleg, etc 920313) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sf2ceb.zip + Street Fighter II': Champion Edition (Playmark bootleg, set 1) + From the corners of the globe come twelve of the toughest fighters to ever prowl the streets. Choose your champion and step into the arena as one of the eight original challengers or as one of the four Grand Masters! Pound your opponent as Balrog and knock them out for the count. Tower over your prey as Sagat and daze them with your awesome Tiger Shot. Slash your opponent with Vega's claw and send them running for cover. Or strike fear into your enemies as M. Bison, the greatest Grand Master of them all! + 0.90 + 19920101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sf2ce.zip + Capcom Play System + 384x224 + media/mixrbv2/sf2ce.png + + + + sfzar1.zip + Street Fighter Zero (950605 Asia) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzjr2.zip + Street Fighter Zero (950605 Japan) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfza.zip + Street Fighter Zero (950627 Asia) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzhr1.zip + Street Fighter Zero (950627 Hispanic) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzjr1.zip + Street Fighter Zero (950627 Japan) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzh.zip + Street Fighter Zero (950718 Hispanic) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzbr1.zip + Street Fighter Zero (950727 Brazil) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzj.zip + Street Fighter Zero (950727 Japan) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzb.zip + Street Fighter Zero (951109 Brazil) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfa.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa.png + + + + sfzcha.zip + Street Fighter Zero (CPS Changer, 040820 Japan) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + sfzch.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfzch.png + + + + sfzch.zip + Street Fighter Zero (CPS Changer, 951020 Japan) + It's Street Fighter as you always remember it, with some new moves, characters and combo systems, as well as a more polished look and feel. + +The new moves available for each fighter, called Super moves, allow them to fire off very powerful moves. A bar at the bottom of the screen represents the power that you have to use for the moves. You start the first round on 0, and each attack that you make adds power to the bar. Once you reach level 3, you can unleash the special attacks, that can sometimes KO the opponant. + +The other major change over the Street Fighter 2 series are the Alpha counters. These can be used to counter an on-coming attack after blocking. + 0.75 + 19950101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sfzch.png + + + + sfz2ad.zip + Street Fighter Zero 2 (960227 Asia Phoenix Edition) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2a.zip + Street Fighter Zero 2 (960227 Asia) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2jd.zip + Street Fighter Zero 2 (960227 Japan Phoenix Edition) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2jr1.zip + Street Fighter Zero 2 (960227 Japan) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2n.zip + Street Fighter Zero 2 (960229 Oceania) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2br1.zip + Street Fighter Zero 2 (960304 Brazil) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2h.zip + Street Fighter Zero 2 (960304 Hispanic) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2j.zip + Street Fighter Zero 2 (960430 Japan) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2b.zip + Street Fighter Zero 2 (960531 Brazil) + Street Fighter Alpha 2, known as Street Fighter Zero 2 in Japan, Asia and South America, is a 1996 fighting game originally released for the CPS II arcade hardware by Capcom. The game is both a sequel and a remake to the previous year's Street Fighter Alpha: Warriors' Dreams, which is itself a prequel to the Street Fighter II series in terms of plot and setting + 0.75 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa2.png + + + + sfz2alr1.zip + Street Fighter Zero 2 Alpha (960805 Asia) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2alj.zip + Street Fighter Zero 2 Alpha (960805 Japan) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2alb.zip + Street Fighter Zero 2 Alpha (960813 Brazil) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2alh.zip + Street Fighter Zero 2 Alpha (960813 Hispanic) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2ald.zip + Street Fighter Zero 2 Alpha (960826 Asia Phoenix Edition) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2al.zip + Street Fighter Zero 2 Alpha (960826 Asia) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz2adl.zip + Street Fighter Zero 2 Alpha - Dragon Level (Hack by pipi899, Ver.2009-04-24) + Street Fighter Zero 2 Alpha is an enhanced version of "Street Fighter Zero 2" released in arcades in Japan, southeast Asia, Brazil, and Hispanic regions. In North America and Europe, where its predecessor is known as "Street Fighter Alpha 2", this enhanced version appears on home consoles only. + 0.80 + 19960101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfz2al.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfz2al.png + + + + sfz3jr2d.zip + Street Fighter Zero 3 (980629 Japan Phoenix Edition) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3jr2.zip + Street Fighter Zero 3 (980629 Japan) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3ar1.zip + Street Fighter Zero 3 (980701 Asia) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3jr1.zip + Street Fighter Zero 3 (980727 Japan) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3a.zip + Street Fighter Zero 3 (980904 Asia) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3j.zip + Street Fighter Zero 3 (980904 Japan) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3mix.zip + Street Fighter Zero 3 Mix v0.11 + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + sfz3te.zip + Street Fighter Zero 3 Training Edition v1.1 (980629 Japan) + Street Fighter Alpha 3, the third game in the Alpha series, has a total of 31 fighters, the most in the series so far. New characters include old favorites E. Honda, Blanka, Vega, Cammy, T. Hawk, Dee Jay, Juni and Juli. Some of the newest fighters on the block include a former Final Fight character (Cody, who has been in jail since the last Final Fight game, or so his clothing suggests), Karin Kanzuki and Rainbow Mika. The major difference between this Alpha and the last two are the new play modes World Tour, Arcade, VS, Training and Entry. + 0.85 + 19980101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sfa3.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sfa3.png + + + + strhoop.zip + Street Hoop / Street Slam / Dunk Dream (DEM-004) (DEH-004) + Which team is the best at 3-on-3? Choose from ten countries to find out. Shots vary according to the shooting distance. Fake dunk, aloof - a variety of techniques to choose from! Speedy! Powerful! Move your body to hip hoppin' rap music. When the power gauge reaches its max, Super Dunk sparks! + 0.70 + 19940101T000000 + Data East + Data East + Sports / Basketball + 2852 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/strhoop.png + + + + streetsmj.zip + Street Smart (Japan version 1) + You begin by choosing one of 2 fighters (either a blond guy, or a dark haired guy in karate gear). Then you are whisked away to one of many cities on the map to have a battle. The opponents are tough, but simple. This game has no special moves (and has only punch, kick, and jump buttons), and all characters have insanely high energy. So you pretty much just wail away at each other with punches and kicks until someone falls down. An ambulance will show up to haul away your defeated opponent, and a girl in the audience will come out to congratulate you + 0.50 + 19890101T000000 + SNK + SNK + Fight / Co-op + 2957 + 1-2 + streetsm.zip + SNK Classics + 256x224 + media/mixrbv2/streetsm.png + + + + streetsm1.zip + Street Smart (US version 1) + You begin by choosing one of 2 fighters (either a blond guy, or a dark haired guy in karate gear). Then you are whisked away to one of many cities on the map to have a battle. The opponents are tough, but simple. This game has no special moves (and has only punch, kick, and jump buttons), and all characters have insanely high energy. So you pretty much just wail away at each other with punches and kicks until someone falls down. An ambulance will show up to haul away your defeated opponent, and a girl in the audience will come out to congratulate you + 0.50 + 19890101T000000 + SNK + SNK + Fight / Co-op + 2957 + 1-2 + streetsm.zip + SNK Classics + 256x224 + media/mixrbv2/streetsm.png + + + + streetsm.zip + Street Smart (US version 2) + You begin by choosing one of 2 fighters (either a blond guy, or a dark haired guy in karate gear). Then you are whisked away to one of many cities on the map to have a battle. The opponents are tough, but simple. This game has no special moves (and has only punch, kick, and jump buttons), and all characters have insanely high energy. So you pretty much just wail away at each other with punches and kicks until someone falls down. An ambulance will show up to haul away your defeated opponent, and a girl in the audience will come out to congratulate you + 0.50 + 19890101T000000 + SNK + SNK + Fight / Co-op + 2957 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/streetsm.png + + + + streetsmw.zip + Street Smart (World version 1) + You begin by choosing one of 2 fighters (either a blond guy, or a dark haired guy in karate gear). Then you are whisked away to one of many cities on the map to have a battle. The opponents are tough, but simple. This game has no special moves (and has only punch, kick, and jump buttons), and all characters have insanely high energy. So you pretty much just wail away at each other with punches and kicks until someone falls down. An ambulance will show up to haul away your defeated opponent, and a girl in the audience will come out to congratulate you + 0.50 + 19890101T000000 + SNK + SNK + Fight / Co-op + 2957 + 1-2 + streetsm.zip + SNK Classics + 256x224 + media/mixrbv2/streetsm.png + + + + ffightjh.zip + Street Smart / Final Fight (Japan, hack) + Final Fight can be played by up to two players simultaneously, with each player controlling a different character. Before the game begins, the player chooses between the three main characters, Guy, Cody, and Haggar, each with his own fighting style and attributes. Guy is the weakest but has faster attacks, Haggar is the strongest but also the slowest, and Cody has all-round attributes. + +Final Fight consists of six stages or "rounds", as well as two bonus rounds. Each round takes place in a different section of Metro City such as the Slums and the Subway, with most rounds featuring more than one level. At the end of each round the player will face a boss character unique to that round. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + ffight.zip + Capcom Play System + 384x224 + media/mixrbv2/ffight.png + + + + strnskil.zip + Strength & Skill + Strength & Skill (c) 1984 Sun Electronics Corp. - TECHNICAL - Game ID : TVG15 Main CPU : (2x) Z80 (@ 4 Mhz) Sound Chips : SN76496 (@ 2 Mhz), SN76496 (@ 4 Mhz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Strength & Skill was released + 0.50 + 19840101T000000 + Sunsoft + Various + 39 + 1-2 + Mame + 240x224 + media/mixrbv2/strnskil.png + + + + strider.zip + Strider (US set 1) + Strider is a multi-directional scrolling platform beat-em-up in which the player takes control of 'Strider Hiryu', a ninja-style warrior who must defeat a legendary being known as 'Grandmaster Meio'. + +Set in a dystopian future in the year 2048, Meio has been watching Earth from his own distant galaxy and has created a space station (known as 'The Third Moon') between Earth and its moon in order to rule over the Human race. + 0.85 + 19890101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1 + Capcom Play System + 384x224 + media/mixrbv2/strider.png + + + + striderua.zip + Strider (US set 2) + Strider is a multi-directional scrolling platform beat-em-up in which the player takes control of 'Strider Hiryu', a ninja-style warrior who must defeat a legendary being known as 'Grandmaster Meio'. + +Set in a dystopian future in the year 2048, Meio has been watching Earth from his own distant galaxy and has created a space station (known as 'The Third Moon') between Earth and its moon in order to rule over the Human race. + 0.85 + 19890101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1 + strider.zip + Capcom Play System + 384x224 + media/mixrbv2/strider.png + + + + strideruc.zip + Strider (US, Street Fighter II conversion) + Strider is a multi-directional scrolling platform beat-em-up in which the player takes control of 'Strider Hiryu', a ninja-style warrior who must defeat a legendary being known as 'Grandmaster Meio'. + +Set in a dystopian future in the year 2048, Meio has been watching Earth from his own distant galaxy and has created a space station (known as 'The Third Moon') between Earth and its moon in order to rule over the Human race. + 0.85 + 19890101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1 + strider.zip + Capcom Play System + 384x224 + media/mixrbv2/strider.png + + + + striderjr.zip + Strider Hiryu (Japan Resale Ver.) + Strider is a multi-directional scrolling platform beat-em-up in which the player takes control of 'Strider Hiryu', a ninja-style warrior who must defeat a legendary being known as 'Grandmaster Meio'. + +Set in a dystopian future in the year 2048, Meio has been watching Earth from his own distant galaxy and has created a space station (known as 'The Third Moon') between Earth and its moon in order to rule over the Human race. + 0.85 + 19890101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1 + strider.zip + Capcom Play System + 384x224 + media/mixrbv2/strider.png + + + + striderj.zip + Strider Hiryu (Japan) + Strider is a multi-directional scrolling platform beat-em-up in which the player takes control of 'Strider Hiryu', a ninja-style warrior who must defeat a legendary being known as 'Grandmaster Meio'. + +Set in a dystopian future in the year 2048, Meio has been watching Earth from his own distant galaxy and has created a space station (known as 'The Third Moon') between Earth and its moon in order to rule over the Human race. + 0.85 + 19890101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1 + strider.zip + Capcom Play System + 384x224 + media/mixrbv2/strider.png + + + + strkfgtrj.zip + Strike Fighter (Japan) + Strike Fighter is a single player sprite-scaled shoot-em-up in which the player takes the seat of an F-14 flight combat simulator with a view to shooting down swathes of enemy planes, avoiding incoming gunfire and missiles. + 0.70 + 19910101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + strkfgtr.zip + Sega Classics + 320x224 + media/mixrbv2/strkfgtr.png + + + + strkfgtr.zip + Strike Fighter (World) + Strike Fighter is a single player sprite-scaled shoot-em-up in which the player takes the seat of an F-14 flight combat simulator with a view to shooting down swathes of enemy planes, avoiding incoming gunfire and missiles. + 0.70 + 19910101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + Sega Classics + 320x224 + media/mixrbv2/strkfgtr.png + + + + stg.zip + Strike Gunner S.T.G + Strike Gunner S.T.G. is a vertical-scrolling jet fighter adventure set in the far-off year of A.D. 2008. The player controls their fighter as the scene unfolds around them, as enemies of air, land, and sea continuously enter the screen in wave after wave of assault. The player(s) begins with a set number of lives, a number which can be added to with good play. Run out, and your mission is over - there are no saves! + 0.50 + 19910101T000000 + Athena + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/stg.png + + + + s1945a.zip + Strikers 1945 (Japan / World) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + s1945.zip + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945j.zip + Strikers 1945 (Japan) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + s1945.zip + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945nj.zip + Strikers 1945 (Japan, unprotected) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + s1945.zip + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945k.zip + Strikers 1945 (Korea) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + s1945.zip + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945.zip + Strikers 1945 (World) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945n.zip + Strikers 1945 (World, unprotected) + In 1945, the second world war ended. Soon, there was peace, but an organization of high-ranking military officers from all over the world form a global army known as CANY. Their mission was to conquer the world. CANY activity was found in areas like the Soviet Union, America, Japan, and even Germany. It is revealed that CANY had weapons never seen before from rockets to mechanical walkers. The world quickly formed a group of pilots and planes called the Strikers whose mission is to rid of CANY from the world. + 0.90 + 19950101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + s1945.zip + Psikyo + 270 + 320x224 + media/mixrbv2/s1945.png + + + + s1945p.zip + Strikers 1945 Plus + The player chooses one of six planes or can opt for a random choice. The first four stages are in random order, while the last four are sequential. Players collect weapon powerups, bombs, and gold bars for points. Each plane has a unique "supershot" which is charged by damaging enemies and fired by holding then releasing the fire button. Supershots can be stored, although the number varies from plane to plane. Using a bomb results in a large friendly fighter swooping onto the screen and blocking shots while returning fire for a few seconds. + +After the player beats the final boss, the game starts again from the beginning, albeit at a much higher difficulty level. All level are similar to the ones in Strikers 1945 II. Only one of the four bosses that are randomly chosen and the sixth boss is changed. + 0.75 + 19990101T000000 + Psikyo + Psikyo + Shoot'em up / Vertical + 2851 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/s1945p.png + + + + strongx.zip + Strong X + Even Patton would spend all his quarters attempting to advance through the four attack levels of Strategy X, Konami's latest tank attack video game. + +1st Level: Defend against rotating cannons. +2nd Level: Watch out for attacking Jeeps +3rd Level: Careful! Here come attacking and shooting tanks +4th Level: Rotating cannons again, but this time against a moving background. + +An audible signal warns that it's refueling time. Enter a fuel dock and receive 100-300 points. The Tank commander's life isn't an easy one. + +Aside from an on-going battle, he has to watch out for obstacles and rough terrain. Brick walls destroy tanks, although they can be shot away. TNT, rather nasty stuff...explodes when shot, but destroys all objects in the area. Stay off pink backgrounds. That's where the land mines are buried. They explode only on contact. Don't worry about a blue background, though. It's a slip zone like an oil slick and can be driven across. If an alien base is found and destroyed, advance to the next level of difficulty. You bet there's a 'buy-in' feature on this one. + +Strategy X. There's never been a war game like it. It blows minds, and quarters. + 0.50 + 19810101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + stratgyx.zip + Konami Classics + 256x224 + media/mixrbv2/stratgyx.png + + + + stuntair.zip + Stunt Air + A Sega's "Star Jacker" bootleg. + 0.50 + 19830101T000000 + Nuova Videotron + Nuova Videotron + Shoot'em Up + 79 + Mame + 270 + 256x224 + media/mixrbv2/stuntair.png + + + + sub.zip + Submarine (Sigma) + A great sideways-scrolling shoot-em-up. + +The player takes control of a futuristic submarine and must shoot their way through the game's levels in a underwater city and in the depths of the seabed and it is attacked from both sides beneath the water in which the submarine moves and from the bottom the water, by a variety of enemies you must destroy all the machines and avoid collide with obstacles while you pick captive divers and fuel to reach the end of level. + 0.50 + 19850101T000000 + Sigma Enterprises + Sigma Enterprises + Shoot'em up / Horizontal + 2870 + 1-2 + Midway Classics + 270 + 256x224 + media/mixrbv2/sub.png + + + + subroc3d.zip + Subroc-3D + SUBROC-3D is an overwhelming 3-dimensional game, with a dual scene system for battles in the ocean or in space. The graphics and sound effects are very exciting! + +You command a sophisticated craft and by using the elevation controls you can move it up or down so it can be operated under water or in space. + 0.70 + 19820101T000000 + SEGA + SEGA + Shooter / Plane, 1st person + 2892 + 1 + Sega Classics + 512x224 + media/mixrbv2/subroc3d.png + + + + scessjoe.zip + Success Joe (World) + Extremely rare, this game is based on the classic manga/anime series Ashita no Joe (Tomorrow's Joe). The manga ran from 1968 to 1973 in Shonen Magazine. There were also 2 TV series that ran from 1970 to 1971 and 1980 to 1981 and a movie was released in 1980. + +When one of Joe's old rivals, Rikishi, died in the ring in 1970, Kodansha publishing actually held a funeral service for him. Over 700 people attended from all over Japan. An actual Buddhist priest presided over the funeral, held in a full-sized boxing ring. + 0.30 + 19900101T000000 + Wave Corp. + Wave + Sports / Boxing + 2929 + 1-2 + Taito Classics + 288x208 + media/mixrbv2/scessjoe.png + + + + sjryuko1.zip + Sukeban Jansi Ryuko (set 1, System 16A, FD1089B 317-5021) + Sukeban Jansi Ryuko (c) 1987 Whiteboard. - TECHNICAL - Sega System 16A hardware Game ID : 317-5018 / 5020 / 5021 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 4 Mhz), N7751 (@ 400 Khz) Sound Chips : YM2151 (@ 4 Mhz), DAC Players : 1 - TRIVIA - Rele + 19880101T000000 + White Board + Mahjong + 2869 + 1 + sjryuko.zip + Sega Classics + 320x224 + media/mixrbv2/sjryuko.png + + + + sjryuko.zip + Sukeban Jansi Ryuko (set 2, System 16B, FD1089B 317-5021) + Sukeban Jansi Ryuko (c) 1987 Whiteboard. - TECHNICAL - Sega System 16A hardware Game ID : 317-5018 / 5020 / 5021 Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 4 Mhz), N7751 (@ 400 Khz) Sound Chips : YM2151 (@ 4 Mhz), DAC Players : 1 - TRIVIA - Rele + 19880101T000000 + White Board + Mahjong + 2869 + 1 + Sega Classics + 320x224 + media/mixrbv2/sjryuko.png + + + + sunaq.zip + SunA Quiz 6000 Academy (940620-6) + SunA Quiz 6000 Academy (c) 1994 SunA Electronics Ind. Co., Ltd. - TECHNICAL - Main CPU : 68000 (@ 6 Mhz), Z80 (@ 3.5795 Mhz), Z80 (@ 6 Mhz) Sound Chips : YM2151 (@ 3.5795 Mhz), (2x) DAC Palette colors : 512 Players : 2 Buttons : 4 - TRIVIA - SunA Qu + 0.70 + 19940101T000000 + SunA + SunA + Quiz / English + 2931 + 1-2 + Mame + 256x224 + media/mixrbv2/sunaq.png + + + + ssridersabd.zip + Sunset Riders (2 Players ver. ABD) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersebc.zip + Sunset Riders (2 Players ver. EBC) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersebd.zip + Sunset Riders (2 Players ver. EBD) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersjbd.zip + Sunset Riders (2 Players ver. JBD) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersubc.zip + Sunset Riders (2 Players ver. UBC) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersadd.zip + Sunset Riders (4 Players ver. ADD) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssriderseaa.zip + Sunset Riders (4 Players ver. EAA) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssriders.zip + Sunset Riders (4 Players ver. EAC) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersjac.zip + Sunset Riders (4 Players ver. JAC) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersjad.zip + Sunset Riders (4 Players ver. JAD) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersuab.zip + Sunset Riders (4 Players ver. UAB) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersuac.zip + Sunset Riders (4 Players ver. UAC) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + ssridersuda.zip + Sunset Riders (4 Players ver. UDA) + Sunset Riders is a horizontally-scrolling platform shoot-em-up for up to four players set in America's Wild West. Four sharpshooter bounty hunters (Steve, Billy, Bob and Cormano) set out to claim the bounties for killing the most wanted outlaws in the West, before a final showdown against the infamous Sir Richard de la Rose. + +The action takes place both on foot and on horseback, with play sometimes broken up with a wild west pursuit; such as having to run along the backs of a herd of fleeing Buffalo. Each level ends with players entering a one-on-one battle against one of the wanted men they have been pursuing. + +Power-ups and bonus items can be obtained by entering saloons or defeating certain sack-carrying bandits. The power-ups comes in the form of either a golden sheriff badge (that gives the player's weapon auto-fire) or a silver badge that gives the player a second gun (making it possible to shoot in two directions simultaneously). Both power-ups can be equipped at the same time. + +Other weapons that can be used by players include sticks of dynamite carried by female bandits that can be thrown back at the enemy before they explode and a mounted Gatling gun available only in the last stage. + +A bonus mini-game appears at the end of Stages 2 and 5 in which players must shoot at enemies from a first-person perspective before the timer runs out. + +Sunset Riders features eight stages of play. + 0.90 + 19910101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + ssriders.zip + Konami Classics + 256x224 + media/mixrbv2/ssriders.png + + + + csuperas.zip + Super Astro Fighter (DECO Cassette) (US) + Super Astro Fighter is a great 2-D, space shooter game featuring new graphics and sounds. Once again the player has the mission to protect the various sectors from the hoards of invading aliens UFOs. Armed with your super astro fighter spaceship, you must ensure to destroy all the invaders. You will have to defeat waves of alien spaceships in order to later confront the boss alien ship the 'space master' to destroy and dock with it to refuel and keep the mission. + 0.50 + 19810101T000000 + Data East + Data East + Shooter / Space Invaders Like + 2900 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/csuperas.png + + + + sathena.zip + Super Athena (bootleg) + This is a pretty hard platform game where you take the role of Athena fighting your way through different worlds inhabited by all kinds of different enemies, ranging from moving pears to huge golems and flying devils. + +You start out with nothing more than your feet to fight with and no more protection than Athena's underwear (she actually loses her dress in the intro to the first world) but can collect a huge number of different weapons and armour, as well as a great number of power-ups ranging from the usual more-power-for weapon or armour, through boots that allow her to jump higher and wings for flying, to one where Athena becomes a semi-god and actually growths to twice her usual size and gets a huge burning sword and full armour. + +The worlds are filled with stone blocks that can be smashed when searching for secrets and items, as well as several levels connected by ladders or other means of transportation. + +Athena is a great game, and will give even the most hardened platform-player a real challenge, for it is NOT an easy game, even with the dip switches in 'Easy' mode. + 0.30 + 19860101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + athena.zip + SNK Classics + 288x216 + media/mixrbv2/athena.png + + + + sbagmani.zip + Super Bagman (Itisa, Spain) + Prepare yourself to explore the underground tunnels and caverns to uncover and steal the massive bags of cash just laying around in the amazingly fun Super Bagman! Jump down into the tunnels and gather the bags of cash and bring them to the surface to fill your wheelbarrow, before moving on to grab more loot from the tunnels! Avoid the evil baddies who will defeat you on touch, but climb the ladders up and down to grab the booty! + 0.70 + 19840101T000000 + Valadon Automation + Valadon Automation + Platform / Run Jump + 2915 + 1-2 + sbagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/sbagman.png + + + + sbagmans.zip + Super Bagman (Stern Electronics) + Prepare yourself to explore the underground tunnels and caverns to uncover and steal the massive bags of cash just laying around in the amazingly fun Super Bagman! Jump down into the tunnels and gather the bags of cash and bring them to the surface to fill your wheelbarrow, before moving on to grab more loot from the tunnels! Avoid the evil baddies who will defeat you on touch, but climb the ladders up and down to grab the booty! + 0.70 + 19840101T000000 + Valadon Automation + Valadon Automation + Platform / Run Jump + 2915 + 1-2 + sbagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/sbagman.png + + + + sbagman2.zip + Super Bagman (version 3?) + Prepare yourself to explore the underground tunnels and caverns to uncover and steal the massive bags of cash just laying around in the amazingly fun Super Bagman! Jump down into the tunnels and gather the bags of cash and bring them to the surface to fill your wheelbarrow, before moving on to grab more loot from the tunnels! Avoid the evil baddies who will defeat you on touch, but climb the ladders up and down to grab the booty! + 0.70 + 19840101T000000 + Valadon Automation + Valadon Automation + Platform / Run Jump + 2915 + 1-2 + sbagman.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/sbagman.png + + + + sbagman.zip + Super Bagman (version 5) + Prepare yourself to explore the underground tunnels and caverns to uncover and steal the massive bags of cash just laying around in the amazingly fun Super Bagman! Jump down into the tunnels and gather the bags of cash and bring them to the surface to fill your wheelbarrow, before moving on to grab more loot from the tunnels! Avoid the evil baddies who will defeat you on touch, but climb the ladders up and down to grab the booty! + 0.70 + 19840101T000000 + Valadon Automation + Valadon Automation + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/sbagman.png + + + + superbar.zip + Super Bar + A rip-off of Seta's "Thunder & Lightning" featuring naked women. + 0.50 + 19940101T000000 + Promat + Action / Breakout games + 2917 + 1-2 + wiggie.zip + Seta + 270 + 384x240 + media/mixrbv2/wiggie.png + + + + sbaskete.zip + Super Basketball (version E, encrypted) + 0.70 + 19840101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + sbasketb.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/sbasketb.png + + + + sbasketg.zip + Super Basketball (version G, encrypted) + 0.70 + 19840101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + sbasketb.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/sbasketb.png + + + + sbasketh.zip + Super Basketball (version H, unprotected) + 0.70 + 19840101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + sbasketb.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/sbasketb.png + + + + sbasketb.zip + Super Basketball (version I, encrypted) + 0.70 + 19840101T000000 + Konami + Konami + Sports / Basketball + 2852 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/sbasketb.png + + + + sbishi.zip + Super Bishi Bashi Championship (ver JAA, 2 Players) + Each game in the compilation contains mini games, some are loosely based around arcade classics such as Breakout ("Car Destroyer) and Pac-Man ("Super Gulper"). Other games, such as "Perm-Mania," in which the player plays as a dancer and has to keep in time with the rhythm to make his dancer's afro hairstyle grow, and "Jump for the Meat", in which the player plays a bodybuilder on a pogo-stick who has to jump high in order to grab a piece of meat, appear to be more original creations. + 0.70 + 19980101T000000 + Konami + Konami + Compilation + 34 + 1-3 + Konami Classics + 288x224 + media/mixrbv2/sbishi.png + + + + sbishika.zip + Super Bishi Bashi Championship (ver KAA, 3 Players) + Each game in the compilation contains mini games, some are loosely based around arcade classics such as Breakout ("Car Destroyer) and Pac-Man ("Super Gulper"). Other games, such as "Perm-Mania," in which the player plays as a dancer and has to keep in time with the rhythm to make his dancer's afro hairstyle grow, and "Jump for the Meat", in which the player plays a bodybuilder on a pogo-stick who has to jump high in order to grab a piece of meat, appear to be more original creations. + 0.70 + 19980101T000000 + Konami + Konami + Compilation + 34 + 1-3 + sbishi.zip + Konami Classics + 288x224 + media/mixrbv2/sbishi.png + + + + sbishik.zip + Super Bishi Bashi Championship (ver KAB, 3 Players) + Each game in the compilation contains mini games, some are loosely based around arcade classics such as Breakout ("Car Destroyer) and Pac-Man ("Super Gulper"). Other games, such as "Perm-Mania," in which the player plays as a dancer and has to keep in time with the rhythm to make his dancer's afro hairstyle grow, and "Jump for the Meat", in which the player plays a bodybuilder on a pogo-stick who has to jump high in order to grab a piece of meat, appear to be more original creations. + 0.70 + 19980101T000000 + Konami + Konami + Compilation + 34 + 1-3 + sbishi.zip + Konami Classics + 288x224 + media/mixrbv2/sbishi.png + + + + sboblboblc.zip + Super Bobble Bobble (bootleg) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblbobl.zip + Super Bobble Bobble (bootleg, set 1) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblbobla.zip + Super Bobble Bobble (bootleg, set 2) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblboblb.zip + Super Bobble Bobble (bootleg, set 3) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblbobld.zip + Super Bobble Bobble (bootleg, set 4) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblboble.zip + Super Bobble Bobble (bootleg, set 5) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sboblboblf.zip + Super Bobble Bobble (bootleg, set 6) + One or two players take on the role of Bub and Bob, two cute dinosaurs who must battle through 100 platform-packed single screen levels to rescue their girlfriends. Bub and Bob are armed only with the ability to blow bubbles, in which the game's many enemies can be trapped and killed. The bubbles can also be used as temporary platforms, to help the dinosaurs reach previously inaccessible areas of a level. + +Any trapped enemies who are not killed quickly enough will turn red and escape their bubble prison. These angry enemies are much faster than before, making them harder to kill. Enemies also become angry if players are taking too long to complete a level. Defeated enemies are turned into bonus fruit items that can be collected for points. + 0.90 + 19860101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + bublbobl.zip + Taito Classics + 256x224 + media/mixrbv2/bublbobl.png + + + + sbubsm.zip + Super Bubble Bobble (Sun Mixing, Megadrive clone hardware) + 19960101T000000 + Mame + 256x224 + media/mixrbv2/sbubsm.png + + + + sbbros.zip + Super Buster Bros. (USA 901001) + Super Bang is a sequel to the 1989 original in which one or two players control characters armed with harpoon guns who must destroy the numerous different-sized balloons that bounce around each single-screen stage. When hit by a harpoon, the balloons break down into smaller fragments, in a similar fashion to Atari's 1979 classic, "Asteroids". + +Players can only fire the harpoon guns virtually upwards but can move left and right and climb the ladders that appear on many of the stages. The game has two different modes of play: + +PANIC MODE +In this mode, players face an endless rain of bubbles and must simply last as long as possible. The default weapon is the bubble shot and cannot be changed at any time. Each time a bubble is popped, a rainbow bar at the bottom is slowly filled. Filling the bar all the way raises the level number and the bar depletes back to zero. As more bubbles are popped, both remaining and incoming bubbles move faster. A 'Panic' music plays when there's a very large amount of bubbles on the screen, but the normal music returns once enough bubbles are popped. + +There is also one special type of bubble that appears rarely. The bubble has a clock image engraved. Whenever the bubble bounces, the engraving changes to a star, and when the bubble bounces again, the engraving changes back to a clock. Popping the bubble when the clock engraving is present causes all bubbles to stop movement completely for 9 seconds, while popping the bubble when the star engraving is present causes all bubbles to be popped and the game screen gets cleared. + +TOUR MODE +In this mode players move from stage to stage, travelling around the world. The introductory stage is set in Japan and is the only stage set in this location. After Japan, players travel to parts of Asia, Europe and the Americas. Each location has three stages, with each set at a different time of day: daytime, evening and night. The few exceptions to the three-stage rule are Venice (evening and night stages only), The Mayan Ruins and the Caribbean Sea (both having only day and evening stages). + +Each stage has a set layout, consisting of walls, destructible glass walls, invisible walls, ladders and ice. There are forty different stages in the Tour mode. + 0.90 + 19900101T000000 + Capcom + Mitchell Corp. + Shooter / 3rd person + 2899 + 1-2 + spang.zip + Mitchell + 384x240 + media/mixrbv2/spang.png + + + + sucasino.zip + Super Casino + 19840101T000000 + Data Amusement + Data Amusement + Casino / Cards + 2872 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/sucasino.png + + + + sbasebalj.zip + Super Champion Baseball (Japan) + Un increíble juego de béisbol de SNK. + 0.50 + 19890101T000000 + SNK + SNK + Sports + 685 + 1-2 + sbasebal.zip + SNK Classics + 256x224 + media/mixrbv2/sbasebal.png + + + + sbasebal.zip + Super Champion Baseball (US) + Un increíble juego de béisbol de SNK. + 0.50 + 19890101T000000 + SNK + SNK + Sports + 685 + 1-2 + SNK Classics + 256x224 + media/mixrbv2/sbasebal.png + + + + scobra.zip + Super Cobra + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobrab.zip + Super Cobra (bootleg, set 1) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobrag.zip + Super Cobra (bootleg, set 2) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobraggi.zip + Super Cobra (bootleg, set 3) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobrae2.zip + Super Cobra (encrypted) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobrase.zip + Super Cobra (Sega) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobras.zip + Super Cobra (Stern Electronics) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scobrae.zip + Super Cobra (Stern Electronics) (encrypted, KONATEC XC-103SS CPU) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + scontra.zip + Super Contra + A year after the battle with the Red Falcon organization, Bill and Lance are sent on another mission. This time, the alien forces have taken over an allied military base somewhere in Africa, possessing most of its troops. Bill and Lance must not only fight against their former comrades-in-arms, but also a new mutated form of the same alien creatures they fought during their previous mission. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/scontra.png + + + + scontraj.zip + Super Contra (Japan) + A year after the battle with the Red Falcon organization, Bill and Lance are sent on another mission. This time, the alien forces have taken over an allied military base somewhere in Africa, possessing most of its troops. Bill and Lance must not only fight against their former comrades-in-arms, but also a new mutated form of the same alien creatures they fought during their previous mission. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scontra.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/scontra.png + + + + supcrash.zip + Super Crash (bootleg of Head On) + Head On is a 2-Dimensional maze racing game. You control your car through the maze to pick up the dots while at the same time avoiding the car, or cars, that are constantly trying to ram you. Successfully get through one maze and many more await you. This is good practice for freeway driving in the big city. + 0.30 + 19790101T000000 + Gremlin Interactive + Gremlin Interactive + Race, Driving + 28 + 1 + headon.zip + Sega Classics + 256x224 + media/mixrbv2/headon.png + + + + sprcros2.zip + Super Cross II (Japan, set 1) + 0.50 + 19860101T000000 + GM Shoji + GM Shoji + Race, Driving / Motorcycle + 2943 + 1-2 + Mame + 240x224 + media/mixrbv2/sprcros2.png + + + + sprcros2a.zip + Super Cross II (Japan, set 2) + 0.50 + 19860101T000000 + GM Shoji + GM Shoji + Race, Driving / Motorcycle + 2943 + 1-2 + sprcros2.zip + Mame + 240x224 + media/mixrbv2/sprcros2.png + + + + spdodgeb.zip + Super Dodge Ball (US) + The player takes control of the American team, who must compete against five other nations in a worldwide dodgeball tournament. In the first match, the player represent the state Dallas and must defeat their rivals from Chicago to represent America in the World Cup. Afterwards, the player will take on England, Iceland, China and Africa before fighting against the champions from Japan. + 0.50 + 19870101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports + 685 + 1-2 + Technos + 256x240 + media/mixrbv2/spdodgeb.png + + + + sdodgeb.zip + Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu + Super Dodgeball uses the same basic gameplay used in the other games in the series with some minor differences. The game puts you in control of a team of 3 characters (with you controlling the lead character or the one with the ball at the time) that must defeat a selection of other teams in order to become the champion. This time around the teams are all formed by characters from the Nekketsu Kunio Kun universe, each representing different suburbs of Tokyo that compete in an amusement park for the ultimate title. Each character has their unique stats and special moves, which now depend on a power bar that can be charged-up by holding both attack buttons. + 0.65 + 19960101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/sdodgeb.png + + + + sdodgebh.zip + Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu (Secret Character Hack) + Super Dodgeball uses the same basic gameplay used in the other games in the series with some minor differences. The game puts you in control of a team of 3 characters (with you controlling the lead character or the one with the ball at the time) that must defeat a selection of other teams in order to become the champion. This time around the teams are all formed by characters from the Nekketsu Kunio Kun universe, each representing different suburbs of Tokyo that compete in an amusement park for the ultimate title. Each character has their unique stats and special moves, which now depend on a power bar that can be charged-up by holding both attack buttons. + 0.65 + 19960101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + sdodgeb.zip + Neo-Geo + 320x224 + media/mixrbv2/sdodgeb.png + + + + csdtenis.zip + Super Doubles Tennis (DECO Cassette) (Japan) + Super Doubles Tennis (c) 1983 Data East. - TECHNICAL - DECO Cassette System hardware. [Cassette No.34] - SOURCES - Game's ROM. + 0.60 + 19830101T000000 + Data East + Data East + Sports / Tennis + 2867 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/csdtenis.png + + + + supduck.zip + Super Duck + Tendremos que ir saltando de plataforma en plataforma sin caer al vacío y recolectar todas las frutas que hay en la pantalla para pasar de nivel. Aparte de las frutas, iremos recogiendo puntos y elementos que nos darán habilidades extra como por ejemplo disparos. + 0.70 + 19920101T000000 + Comad + Comad + Action + 10 + 1-2 + Comad + 256x224 + media/mixrbv2/supduck.png + + + + usg32.zip + Super Duper Casino (California V3.2) + 0.70 + 19870101T000000 + U.S. Games + Compilation + 34 + 1-4 + Mame + 400x248 + media/mixrbv2/usg32.png + + + + sformula.zip + Super Formula (Japan, set 1) + Tail to Nose - Great Championship, connu sous le nom de Super Formula: Chijo Saisoku no Battle au Japon, est un des premiers jeux consacré à la Formule 1. Bien que ne possédant pas de licence, les écuries, les pilotes, les sponsors et les 4 circuits disponibles sont fortement inspirés de la réalité. + 0.50 + 19890101T000000 + V-System Co. + Race, Driving / Race + 2924 + 1 + tail2nos.zip + Mame + 270 + 320x240 + media/mixrbv2/tail2nos.png + + + + sformulaa.zip + Super Formula (Japan, set 2) + Tail to Nose - Great Championship, connu sous le nom de Super Formula: Chijo Saisoku no Battle au Japon, est un des premiers jeux consacré à la Formule 1. Bien que ne possédant pas de licence, les écuries, les pilotes, les sponsors et les 4 circuits disponibles sont fortement inspirés de la réalité. + 0.50 + 19890101T000000 + V-System Co. + Race, Driving / Race + 2924 + 1 + tail2nos.zip + Mame + 270 + 320x240 + media/mixrbv2/tail2nos.png + + + + superg.zip + Super Galaxians (galaxiaj hack) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + sgemfa.zip + Super Gem Fighter Mini Mix (970904 Asia) + Super Gem Fighter: Mini Mix / Pocket Fighter is a superb, abstract and humorous fighting game featuring miniaturized renditions from several Capcom fighting games; including the legendary "Street Fighter" series, as well as "Darkstalkers" and the little-known "Red Earth". + +During a bout, players will be able to release coloured gems from successful attacks against their opponent, as well as from wooden chests that regularly appear. Collecting these gems will 'power-up' the player's character, giving them more powerful attacks. There are two bars and three sub-bars in the interface. The two main bars are the life bar and the super bar; the first indicates the player's health and the second their ability to throw super combos. The Super Bar itself can be filled up to nine levels, allowing players to execute more super combos. Each super combo has a level assigned to it, and it uses Super Bars depending on it. + 0.85 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sgemf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sgemf.png + + + + sgemfh.zip + Super Gem Fighter Mini Mix (970904 Hispanic) + Super Gem Fighter: Mini Mix / Pocket Fighter is a superb, abstract and humorous fighting game featuring miniaturized renditions from several Capcom fighting games; including the legendary "Street Fighter" series, as well as "Darkstalkers" and the little-known "Red Earth". + +During a bout, players will be able to release coloured gems from successful attacks against their opponent, as well as from wooden chests that regularly appear. Collecting these gems will 'power-up' the player's character, giving them more powerful attacks. There are two bars and three sub-bars in the interface. The two main bars are the life bar and the super bar; the first indicates the player's health and the second their ability to throw super combos. The Super Bar itself can be filled up to nine levels, allowing players to execute more super combos. Each super combo has a level assigned to it, and it uses Super Bars depending on it. + 0.85 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sgemf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sgemf.png + + + + sgemfd.zip + Super Gem Fighter Mini Mix (970904 USA Phoenix Edition) + Super Gem Fighter: Mini Mix / Pocket Fighter is a superb, abstract and humorous fighting game featuring miniaturized renditions from several Capcom fighting games; including the legendary "Street Fighter" series, as well as "Darkstalkers" and the little-known "Red Earth". + +During a bout, players will be able to release coloured gems from successful attacks against their opponent, as well as from wooden chests that regularly appear. Collecting these gems will 'power-up' the player's character, giving them more powerful attacks. There are two bars and three sub-bars in the interface. The two main bars are the life bar and the super bar; the first indicates the player's health and the second their ability to throw super combos. The Super Bar itself can be filled up to nine levels, allowing players to execute more super combos. Each super combo has a level assigned to it, and it uses Super Bars depending on it. + 0.85 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + sgemf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/sgemf.png + + + + sgemf.zip + Super Gem Fighter Mini Mix (970904 USA) + Super Gem Fighter: Mini Mix / Pocket Fighter is a superb, abstract and humorous fighting game featuring miniaturized renditions from several Capcom fighting games; including the legendary "Street Fighter" series, as well as "Darkstalkers" and the little-known "Red Earth". + +During a bout, players will be able to release coloured gems from successful attacks against their opponent, as well as from wooden chests that regularly appear. Collecting these gems will 'power-up' the player's character, giving them more powerful attacks. There are two bars and three sub-bars in the interface. The two main bars are the life bar and the super bar; the first indicates the player's health and the second their ability to throw super combos. The Super Bar itself can be filled up to nine levels, allowing players to execute more super combos. Each super combo has a level assigned to it, and it uses Super Bars depending on it. + 0.85 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/sgemf.png + + + + suprglob.zip + Super Glob + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + sprglobp.zip + Super Glob (Pac-Man hardware) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + sprglbpg.zip + Super Glob (Pac-Man hardware) German + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + shangon1.zip + Super Hang-On (mini ride-on, FD1089B 317-0034) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangon2.zip + Super Hang-On (mini ride-on, Rev A, FD1089B 317-0034) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangon3d.zip + Super Hang-On (sitdown/upright, FD1089B 317-0034 decrypted) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangon3.zip + Super Hang-On (sitdown/upright, FD1089B 317-0034) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangon.zip + Super Hang-On (sitdown/upright, unprotected) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + shangoneh.zip + Super Hang-On (sitdown/upright, unprotected) (Enhanced Edition v2.0.2) + Super Hang-On is a checkpoint-based racing game and is the sequel to the acclaimed "Hang-On", released two years earlier. As with the prequel, players take control of a superbike and must race over twisting road-based circuits, avoiding rival bikers and trying to reach the end-of-stage checkpoint before the time limit expires. + +For the sequel, Sega introduced the hilly, undulating roads that had been executed so superbly in 1986's "Out Run". The gameplay was further enhanced with the introduction of the 'turbo' button. Upon reaching the bike's maximum speed of 280kph, players could press and hold the turbo and push the bike up to 324kph - something that was necessary to beat the game's extremely tight time limits. This had to be used carefully, however, as the increase in speed made the bike harder to control and accelerating at the wrong time would invariably see a head-on collision with either rival bikers or the road-side objects that litter the stages. + +Players could chose to race on any one of four courses: Africa, Asia, America and Europe. Africa is the easiest and shortest of the four, with each subsequent course becoming both more demanding - with tighter bends and more aggressive rival racers - and having a greater number of stages to have to beat. Africa, for example, is made up of only six stages, while the hardest course, Europe, has eighteen stages. + 0.90 + 19870101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + shangon.zip + Sega Classics + 320x224 + media/mixrbv2/shangon.png + + + + suprheli.zip + Super Heli (Super Cobra bootleg) + Super Cobra &copy; 1981 Konami. + +The object of the game is to invade ten SUPER COBRA defense systems of increasing difficulty and safely pick up the BOOTY. + +Use the joystick to move up, down, accelerate and decelerate. Use the Laser and Bombs to destroy defenders. Hitting tanks scores Mystery Value worth 100, 200, or 300 points. Rockets, Tanks, Missiles, and UFO&#039;s may all fire at invader. Hit fuel tanks for extra fuel for CHOPPER. The Chopper uses up fuel as it flies, except in between defense levels. + +At 10000 points, the player is awarded a BONUS CHOPPER. + +At the end of the game, the player can continue at the defense level he left off on by depositing extra coins and pressing the discharge button on the left-hand side of the panel. + +If the Booty is destroyed on the BASE level, the player may try again. When the Booty is safely recovered, a Bonus Chopper is awarded and play resumes at defense level Number 1 where the fuel is used up faster and the defenders fire more often. + +SUPER COBRA Defense Level Descriptions: + Fuel Tanks appear on every defense level. + Tanks appear and fire on all levels except level 8 where they do not fire. +Level 1 - Player must maneuver the chopper over mountainous terrain against fast and slow firing rockets. +Level 2 - Chopper faces Arcing missiles over a mountain terrain. +Level 3 - Smart Bombs flying in groups of four over mountainous terrain. Rockets appear, but do not fire. +Level 4 - Single Smart Bombs over mountainous terrain. Again, Rockets appear but do not fire. +Level 5 - Chopper flies through a cavern-like terrain against Falling Mines. +Level 6 - Rapidly firing, Roving Tanks over mountainous terrain. Rockets appear, but do not fire. +Level 7 - Maneuver through a field of meteors which explode when hit with bombs or three times with Laser, plus a single, green, shadow meteor directly in front of Chopper which explodes when hit five times with Laser. Rockets appear but do not fire. +Level 8 - Chopper flies over mountainous terrain against rapidly firing UFO&#039;s. Tanks and Rockets appear, but do not fire. +Level 9 - Chopper faces arcing missiles over tall buildings. +Level 10 - Firing rockets in a Building Maze. +Base - Player must maneuver the Chopper over tall buildings against arcing missiles and rapidly firing tanks to reach the Booty and safely carry it away. + 0.80 + 19810101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + scobra.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/scobra.png + + + + suprleag.zip + Super League (FD1094 317-0045) + 0.50 + 19870101T000000 + SEGA + SEGA + Sports + 685 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/suprleag.png + + + + suprlocoo.zip + Super Locomotive + A vehicle-action arcade game released by Sega in 1982. It was an early video game based on trains and featured background music based on Yellow Magic Orchetra's 1979 hit "Rydeen". + 0.70 + 19820101T000000 + SEGA + SEGA + Action + 10 + 1-2 + suprloco.zip + Sega Classics + 240x224 + media/mixrbv2/suprloco.png + + + + suprloco.zip + Super Locomotive (Rev.A) + A vehicle-action arcade game released by Sega in 1982. It was an early video game based on trains and featured background music based on Yellow Magic Orchetra's 1979 hit "Rydeen". + 0.70 + 19820101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 240x224 + media/mixrbv2/suprloco.png + + + + marukin.zip + Super Marukin-Ban (Japan 901017) + A mahjong game featuring lots of girls. Maybe the girl at the 'Press Start' screen should date the Mahjong Academy guy. They're both able to balance tiles in their fingers! + 19900101T000000 + Yuga + Yuga + Mahjong + 2869 + 1 + Mitchell + 384x240 + media/mixrbv2/marukin.png + + + + suprmatk.zip + Super Missile Attack (for rev 1) + Missile Command is a one or two-player game depicting the outbreak of a nuclear war. Players must defend six cities from waves of incoming nuclear missiles by launching their own anti-ballistic missiles (ABMs) from one of three missile batteries. + +The game is played by moving a cross-hair across the sky and pressing one of three buttons to launch an ABM from the corresponding battery (either Alpha Base, Delta Base or Omega Base). Upon reaching the cross-hair the player's ABM explodes, creating a fireball that lasts for several seconds and destroys any enemy missiles that enter it. Each battery is initially armed with ten anti-ballistic missiles and becomes useless when either all of its missiles have been fired or it's been destroyed by enemy missiles. + + + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Missile Command Like + 2945 + 1-2 + missile.zip + Atari Classics + 256x231 + media/mixrbv2/missile.png + + + + suprmatkd.zip + Super Missile Attack (not encrypted) + Missile Command is a one or two-player game depicting the outbreak of a nuclear war. Players must defend six cities from waves of incoming nuclear missiles by launching their own anti-ballistic missiles (ABMs) from one of three missile batteries. + +The game is played by moving a cross-hair across the sky and pressing one of three buttons to launch an ABM from the corresponding battery (either Alpha Base, Delta Base or Omega Base). Upon reaching the cross-hair the player's ABM explodes, creating a fireball that lasts for several seconds and destroys any enemy missiles that enter it. Each battery is initially armed with ten anti-ballistic missiles and becomes useless when either all of its missiles have been fired or it's been destroyed by enemy missiles. + + + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Missile Command Like + 2945 + 1-2 + missile.zip + Atari Classics + 256x231 + media/mixrbv2/missile.png + + + + supmodel.zip + Super Model + Super Model is a non-nude clone of "New Fantasia" featuring photographic images of both Japanese and western models. The objective is to reveal 80% of the silhouetted girl's image within the time limit while avoiding the enemies. + +To complicate things, there is a bar with a pointer at the top of the screen. If the pointer dips below a certain level (indicated by the change in color) the image will change to that of a monster. The pointer slowly creeps towards the monster side of the bar over time and moves dramatically towards the monster side whenever the player reveals a significant piece of the silhouette. Revealing the un-silhouetted part of the image moves the pointer back towards the girl side of the bar. If a round is completed while the monster's image is shown then the round must be repeated. + 0.50 + 19940101T000000 + Comad + Puzzle-Game + 26 + 1-2 + Comad + 270 + 256x224 + media/mixrbv2/supmodel.png + + + + smgpja.zip + Super Monaco GP (Japan, Rev A, FD1094 317-0124a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpjd.zip + Super Monaco GP (Japan, Rev B, FD1094 317-0124a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpj.zip + Super Monaco GP (Japan, Rev B, FD1094 317-0124a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpu2d.zip + Super Monaco GP (US, Rev A, FD1094 317-0125a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpu2.zip + Super Monaco GP (US, Rev A, FD1094 317-0125a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpu1d.zip + Super Monaco GP (US, Rev B, FD1094 317-0125a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpu1.zip + Super Monaco GP (US, Rev B, FD1094 317-0125a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpud.zip + Super Monaco GP (US, Rev C, FD1094 317-0125a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpu.zip + Super Monaco GP (US, Rev C, FD1094 317-0125a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgp5d.zip + Super Monaco GP (World, FD1094 317-0126 decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgp5.zip + Super Monaco GP (World, FD1094 317-0126) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgp6d.zip + Super Monaco GP (World, Rev A, FD1094 317-0126a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgp6.zip + Super Monaco GP (World, Rev A, FD1094 317-0126a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgpd.zip + Super Monaco GP (World, Rev B, FD1094 317-0126a decrypted) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + smgp.zip + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smgp.zip + Super Monaco GP (World, Rev B, FD1094 317-0126a) + Super Monaco GP is a superb Formula One racing game from Sega that took sprite-scaled graphics to a whole new level. The game's single track offered a very reasonable representation of the famous Monaco Grand Prix circuit. + +Before entering the Grand Prix, a qualification lap had to be completed. In the event of qualifying, the qualifying time determined the player's position on the starting grid. During the race itself, checkpoints had to be reached within a set time, or the race was over. + 0.80 + 19890101T000000 + SEGA + SEGA + Race 1st Pers. view + 2884 + 1 + Sega Classics + 320x224 + media/mixrbv2/smgp.png + + + + smooncrs.zip + Super Moon Cresta (Gremlin, bootleg) + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + suprmous.zip + Super Mouse + In Super Mouse, you are a mouse collecting a stash of food that happens to be scattered around the house. Opposing you are cats and cobras, which pop up out of nowhere. You're not exactly helpless, though. You have balloon bombs which you can lay and detonate, rocks on top of the house to drop, floors that move across when you step on them and pools of water under bridges which you open by walking over them. All these can kill cats and cobras, if you use them right. + 0.70 + 19820101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/suprmous.png + + + + smbombr1.zip + Super Muscle Bomber - the international blowout (940808 Japan) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + smbomb.zip + Super Muscle Bomber - the international blowout (940831 Japan) + Ring of Destruction: Slam Masters II, is the 1994 sequel to Saturday Night Slam Masters and the second game in the series. It was not ported to home consoles. + +Unlike the first game, which played like a traditional wrestling game, Ring of Destruction's format was changed to play like a traditional one-on-one 2D fighting game (similar to Super Street Fighter II), with the action restricted to one plane. The game's configuration was changed to a five-button setup (two punch buttons, two kick buttons and a grappling button). The objective of each match is to deplete the opponent's life bar in two out of three rounds. It is no longer necessary for the player to pin their opponent to win a match, although all the other moves have been retained. + + + 0.70 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + ringdest.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ringdest.png + + + + superpac.zip + Super Pac-Man + Super Pac-Man is a 1- or 2-player game where you are in control of the legendary Pac-Man. As in the original "Pac-Man" game, the goal is to clear each maze, but this time, instead of dots, the maze consists of prizes which are locked away behind gates. There are two ways to access the prizes. You can eat the keys which open a particular gate, and not always the gate which is closest to that key. Or you can crash through the gate after you eat a Super Pill and become Super Pac-Man. You are not required to eat all of the keys in order to complete the stage. + +Four Power Pills are in maze and allow Pac-Man to turn the tables on the ghosts and eat them for a short time. When the ghosts begin to flash, time is running out and they will switch back, so beware. + +New in this game is the Super Pill. There are two Super Pills in the maze which allow Pac-Man to become Super Pac-Man for a limited period of time. While in Super form, Pac-Man can crash through the maze gates, fly over the ghosts and avoid being killed (or eat them when they're blue), and travel at super speed whenever the player presses and holds the Super Speed button. When the super power is about to run out, Pac-Man flashes white and then returns to his normal form. You can extend the duration of Super time by eating a regular Power Pill. The Super time will then be extended by the duration of the ghosts' blue time. + +Pac-Man loses one life whenever a ghost catches him when the ghost is not blue and Pac-Man is not in Super form. You start with a set number of lives ('Lives' dip switch), and bonus lives can be awarded to you as you reach or pass certain preselected point values ('Extra Lives' dip switch). + +The tunnel is a great way to put some space between you and any ghosts that are on your tail since they can only move half as fast as you when they are in it. In Super Pac-Man, the ghosts are also slowed down by travelling through the passage directly beneath the ghost pen. + +Occasionally, a star will appear in the middle of the screen with a picture on the left, and a rotating picture on the right. You may eat the star at any time for bonus points, but if you manage to eat the star when the right picture matches the left one, you will receive a larger bonus. + +As the stages increases, the ghosts speed up their pursuit of Pac-Man and they stay blue for shorter and shorter periods of time after he eats a Power Pill until, in the high stages, they do not turn blue at all. + +Super Pac-Man also features bonus stages in Stage 3, Stage 7, and every fourth stage thereafter, where there are no ghosts, a time limit, and Pac-Man is in Super form throughout the stage. Your goal is to eat all of the prizes in the given time limit. As with gameplay on the regular levels, you don't need to eat all (or any) of the keys. You are awarded the remaining time in the counter as points for successfully eating everything. With each Bonus stage, the walls and gates change color. + + + 0.90 + 19820101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/superpac.png + + + + superpacm.zip + Super Pac-Man (Midway) + Super Pac-Man is a 1- or 2-player game where you are in control of the legendary Pac-Man. As in the original "Pac-Man" game, the goal is to clear each maze, but this time, instead of dots, the maze consists of prizes which are locked away behind gates. There are two ways to access the prizes. You can eat the keys which open a particular gate, and not always the gate which is closest to that key. Or you can crash through the gate after you eat a Super Pill and become Super Pac-Man. You are not required to eat all of the keys in order to complete the stage. + +Four Power Pills are in maze and allow Pac-Man to turn the tables on the ghosts and eat them for a short time. When the ghosts begin to flash, time is running out and they will switch back, so beware. + +New in this game is the Super Pill. There are two Super Pills in the maze which allow Pac-Man to become Super Pac-Man for a limited period of time. While in Super form, Pac-Man can crash through the maze gates, fly over the ghosts and avoid being killed (or eat them when they're blue), and travel at super speed whenever the player presses and holds the Super Speed button. When the super power is about to run out, Pac-Man flashes white and then returns to his normal form. You can extend the duration of Super time by eating a regular Power Pill. The Super time will then be extended by the duration of the ghosts' blue time. + +Pac-Man loses one life whenever a ghost catches him when the ghost is not blue and Pac-Man is not in Super form. You start with a set number of lives ('Lives' dip switch), and bonus lives can be awarded to you as you reach or pass certain preselected point values ('Extra Lives' dip switch). + +The tunnel is a great way to put some space between you and any ghosts that are on your tail since they can only move half as fast as you when they are in it. In Super Pac-Man, the ghosts are also slowed down by travelling through the passage directly beneath the ghost pen. + +Occasionally, a star will appear in the middle of the screen with a picture on the left, and a rotating picture on the right. You may eat the star at any time for bonus points, but if you manage to eat the star when the right picture matches the left one, you will receive a larger bonus. + +As the stages increases, the ghosts speed up their pursuit of Pac-Man and they stay blue for shorter and shorter periods of time after he eats a Power Pill until, in the high stages, they do not turn blue at all. + +Super Pac-Man also features bonus stages in Stage 3, Stage 7, and every fourth stage thereafter, where there are no ghosts, a time limit, and Pac-Man is in Super form throughout the stage. Your goal is to eat all of the prizes in the given time limit. As with gameplay on the regular levels, you don't need to eat all (or any) of the keys. You are awarded the remaining time in the counter as points for successfully eating everything. With each Bonus stage, the walls and gates change color. + + + 0.90 + 19820101T000000 + Namco + Namco + Action + 10 + 1-2 + superpac.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/superpac.png + + + + spangj.zip + Super Pang (Japan 901023) + Super Bang is a sequel to the 1989 original in which one or two players control characters armed with harpoon guns who must destroy the numerous different-sized balloons that bounce around each single-screen stage. When hit by a harpoon, the balloons break down into smaller fragments, in a similar fashion to Atari's 1979 classic, "Asteroids". + +Players can only fire the harpoon guns virtually upwards but can move left and right and climb the ladders that appear on many of the stages. The game has two different modes of play: + +PANIC MODE +In this mode, players face an endless rain of bubbles and must simply last as long as possible. The default weapon is the bubble shot and cannot be changed at any time. Each time a bubble is popped, a rainbow bar at the bottom is slowly filled. Filling the bar all the way raises the level number and the bar depletes back to zero. As more bubbles are popped, both remaining and incoming bubbles move faster. A 'Panic' music plays when there's a very large amount of bubbles on the screen, but the normal music returns once enough bubbles are popped. + +There is also one special type of bubble that appears rarely. The bubble has a clock image engraved. Whenever the bubble bounces, the engraving changes to a star, and when the bubble bounces again, the engraving changes back to a clock. Popping the bubble when the clock engraving is present causes all bubbles to stop movement completely for 9 seconds, while popping the bubble when the star engraving is present causes all bubbles to be popped and the game screen gets cleared. + +TOUR MODE +In this mode players move from stage to stage, travelling around the world. The introductory stage is set in Japan and is the only stage set in this location. After Japan, players travel to parts of Asia, Europe and the Americas. Each location has three stages, with each set at a different time of day: daytime, evening and night. The few exceptions to the three-stage rule are Venice (evening and night stages only), The Mayan Ruins and the Caribbean Sea (both having only day and evening stages). + +Each stage has a set layout, consisting of walls, destructible glass walls, invisible walls, ladders and ice. There are forty different stages in the Tour mode. + 0.90 + 19900101T000000 + Capcom + Mitchell Corp. + Shooter / 3rd person + 2899 + 1-2 + spang.zip + Mitchell + 384x240 + media/mixrbv2/spang.png + + + + spang.zip + Super Pang (World 900914) + Super Bang is a sequel to the 1989 original in which one or two players control characters armed with harpoon guns who must destroy the numerous different-sized balloons that bounce around each single-screen stage. When hit by a harpoon, the balloons break down into smaller fragments, in a similar fashion to Atari's 1979 classic, "Asteroids". + +Players can only fire the harpoon guns virtually upwards but can move left and right and climb the ladders that appear on many of the stages. The game has two different modes of play: + +PANIC MODE +In this mode, players face an endless rain of bubbles and must simply last as long as possible. The default weapon is the bubble shot and cannot be changed at any time. Each time a bubble is popped, a rainbow bar at the bottom is slowly filled. Filling the bar all the way raises the level number and the bar depletes back to zero. As more bubbles are popped, both remaining and incoming bubbles move faster. A 'Panic' music plays when there's a very large amount of bubbles on the screen, but the normal music returns once enough bubbles are popped. + +There is also one special type of bubble that appears rarely. The bubble has a clock image engraved. Whenever the bubble bounces, the engraving changes to a star, and when the bubble bounces again, the engraving changes back to a clock. Popping the bubble when the clock engraving is present causes all bubbles to stop movement completely for 9 seconds, while popping the bubble when the star engraving is present causes all bubbles to be popped and the game screen gets cleared. + +TOUR MODE +In this mode players move from stage to stage, travelling around the world. The introductory stage is set in Japan and is the only stage set in this location. After Japan, players travel to parts of Asia, Europe and the Americas. Each location has three stages, with each set at a different time of day: daytime, evening and night. The few exceptions to the three-stage rule are Venice (evening and night stages only), The Mayan Ruins and the Caribbean Sea (both having only day and evening stages). + +Each stage has a set layout, consisting of walls, destructible glass walls, invisible walls, ladders and ice. There are forty different stages in the Tour mode. + 0.90 + 19900101T000000 + Capcom + Mitchell Corp. + Shooter / 3rd person + 2899 + 1-2 + Mitchell + 384x240 + media/mixrbv2/spang.png + + + + spiero.zip + Super Pierrot (Japan) + A superb final entry into the "Mr Do!" series (not counting the Neo Geo-based "Neo Mr. Do", which was merely a remake of the first game in the series), "Do! Run Run" takes its inspiration from Namco's "Pac-Man". + +As in his previous games, Mr Do! must once again collect coloured dots and/or fruit while avoiding or killing a number of enemies. For the fourth Mr Do! outing, Universal ditched the sideways viewpoint of the series' previous games and switched to an overhead perspective. This allowed the game to give an impression of 'depth', with slopes and steps affecting Mr Do!'s mobility and speed. + +Mr. Do. has two items at his disposal with which he can kill the his enemies. The first is the 'Powerball', which featured in the original 'Mr. Do!' but was dropped from the first two sequels. The Powerball can be shot directly at an enemy to kill it instantly. + +The second offensive option is provided in the form of the large wooden logs that litter the levels. These work in the same way as the apples did in the original game, and can be pushed free of their supporting struts, causing them to roll down the screen and kill everything in their path, including Mr. Do. himself if he strays too near. + +As Mr Do! moves around a screen, he trails a line behind him. Players can join the two ends of the line up to form a rectangle (in a similar fashion to Taito's 1981 classic, "Qix") which will change any dots within the rectangle into cherries. A second rectangle can be drawn around the cherries which in turn will change them into apples. This can be repeated twice more, changing apples into lemons, and lemons into pineapples. The better the fruit, the more bonus points Mr Do! will earn when he collects them. + 0.70 + 19840101T000000 + Universal + Universal + Action + 10 + 1-2 + dorunrun.zip + Universal + 240x192 + media/mixrbv2/dorunrun.png + + + + spool3.zip + Super Pool III (English) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + pcktgal.zip + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + spool3i.zip + Super Pool III (I-Vics) + A pool game with four levels, each denoted by a different woman. Score enough points to cause the woman to strip and to advance you to the next level. Trick shots can be attempted between frames and when two people play, the winner is the best two of three frames. + 0.50 + 19870101T000000 + Data East + Data East + Sports / Swimming + 2878 + 1-2 + pcktgal.zip + Data East Classics + 256x224 + media/mixrbv2/pcktgal.png + + + + spnchoutj.zip + Super Punch-Out!! (Japan) + Super Punch-Out!! is an update of the superb boxing game, "Punch-Out!!", featuring five new larger-than-life opponents. The player once again assumes the role of a green-haired boxer who must fight his way up through five boxers to earn the title of 'Champ'. + +As with the original game, the player's boxer is viewed from behind with his torso rendered with wire-frame graphics (allowing the player's opponent to be easily seen). Punches, dodges and blocks must all be well-timed in order to defeat the opponent. + +Both the player and the opponent have stamina meters displayed at the top of the screen. These decrease when either boxer takes a punch and boxers will get knocked down if their stamina meter runs out completely. Faster knockdowns will cause the fallen boxer to recover less stamina upon getting up; the same happens if a boxer is knocked down by a knockout punch. + +Thanks to the refined roster of new and hugely distinctive enemy fighters, Super Punch-Out!! is considered to be an improvement over the first game. + 0.90 + 19840101T000000 + Nintendo + Sports / Boxing + 2929 + 1 + spnchout.zip + Nintendo Classics + 256x224 + media/mixrbv2/spnchout.png + + + + spnchouta.zip + Super Punch-Out!! (Rev A) + Super Punch-Out!! is an update of the superb boxing game, "Punch-Out!!", featuring five new larger-than-life opponents. The player once again assumes the role of a green-haired boxer who must fight his way up through five boxers to earn the title of 'Champ'. + +As with the original game, the player's boxer is viewed from behind with his torso rendered with wire-frame graphics (allowing the player's opponent to be easily seen). Punches, dodges and blocks must all be well-timed in order to defeat the opponent. + +Both the player and the opponent have stamina meters displayed at the top of the screen. These decrease when either boxer takes a punch and boxers will get knocked down if their stamina meter runs out completely. Faster knockdowns will cause the fallen boxer to recover less stamina upon getting up; the same happens if a boxer is knocked down by a knockout punch. + +Thanks to the refined roster of new and hugely distinctive enemy fighters, Super Punch-Out!! is considered to be an improvement over the first game. + 0.90 + 19840101T000000 + Nintendo + Sports / Boxing + 2929 + 1 + spnchout.zip + Nintendo Classics + 256x224 + media/mixrbv2/spnchout.png + + + + spnchout.zip + Super Punch-Out!! (Rev B) + Super Punch-Out!! is an update of the superb boxing game, "Punch-Out!!", featuring five new larger-than-life opponents. The player once again assumes the role of a green-haired boxer who must fight his way up through five boxers to earn the title of 'Champ'. + +As with the original game, the player's boxer is viewed from behind with his torso rendered with wire-frame graphics (allowing the player's opponent to be easily seen). Punches, dodges and blocks must all be well-timed in order to defeat the opponent. + +Both the player and the opponent have stamina meters displayed at the top of the screen. These decrease when either boxer takes a punch and boxers will get knocked down if their stamina meter runs out completely. Faster knockdowns will cause the fallen boxer to recover less stamina upon getting up; the same happens if a boxer is knocked down by a knockout punch. + +Thanks to the refined roster of new and hugely distinctive enemy fighters, Super Punch-Out!! is considered to be an improvement over the first game. + 0.90 + 19840101T000000 + Nintendo + Sports / Boxing + 2929 + 1 + Nintendo Classics + 256x224 + media/mixrbv2/spnchout.png + + + + spf2xpri.zip + Super Puzzle Fighter 2 X' Balance Patch (Hack) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2tb.zip + Super Puzzle Fighter II Turbo (Boss Hack)(USA 960620) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2tcb.zip + Super Puzzle Fighter II Turbo (Color Blind Hack) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2ta.zip + Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960529 Asia) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2t.zip + Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960529 Euro) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2th.zip + Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960531 Hispanic) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2td.zip + Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960620 USA Phoenix Edition) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2tu.zip + Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960620 USA) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2xjd.zip + Super Puzzle Fighter II X (Super Puzzle Fighter 2 X 960531 Japan Phoenix Edition) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + spf2xj.zip + Super Puzzle Fighter II X (Super Puzzle Fighter 2 X 960531 Japan) + Burst right into the feverish puzzle action that combines irresistible, addictive fun with famous Capcom characters. Beat your opponent to the punch by stacking block after block in strategic patterns and color combinations. Be the first to fill the opponent's screen with blocks and K.O. you win! But get ready for more, because you can't play just once. + 0.75 + 19960101T000000 + Capcom + Capcom + Puzzle-Game / Fall + 2912 + 1-2 + spf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/spf2t.png + + + + sranger.zip + Super Ranger (v2.0) + A bootleg version was sold by NIWA. + 0.70 + 19880101T000000 + SunA + SunA + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 256x224 + media/mixrbv2/sranger.png + + + + srdarwinj.zip + Super Real Darwin (Japan) + SRD: Super Real Darwin is a vertical scrolling shooter arcade game developed and published by Data East. It is the sequel to Data East's 1986 arcade game, Darwin 4078. The player takes control of a small fighter ship capable of mutating into different shapes. The ship's appearance will change with upgraded weapons as the player obtains more powerups. + +The story starts on the planet Lakya where the technologically advanced inhabitants of the planet unwittingly unleash the planet's life force known as Evol. As the released Evol drifts from planet Lakya, it is received by the inhabitants of the nearby planet Cokyo; the people of Cokyo initiate the Shlohe project, a plan to use their captured Evol to develop advanced biologic ships and weapons to invade planet Lakya. The inhabitants of Lakya retaliate the Cokyo invasion by using their own evolving fighter ships. + 0.60 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + srdarwin.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/srdarwin.png + + + + srdarwin.zip + Super Real Darwin (World) + SRD: Super Real Darwin is a vertical scrolling shooter arcade game developed and published by Data East. It is the sequel to Data East's 1986 arcade game, Darwin 4078. The player takes control of a small fighter ship capable of mutating into different shapes. The ship's appearance will change with upgraded weapons as the player obtains more powerups. + +The story starts on the planet Lakya where the technologically advanced inhabitants of the planet unwittingly unleash the planet's life force known as Evol. As the released Evol drifts from planet Lakya, it is received by the inhabitants of the nearby planet Cokyo; the people of Cokyo initiate the Shlohe project, a plan to use their captured Evol to develop advanced biologic ships and weapons to invade planet Lakya. The inhabitants of Lakya retaliate the Cokyo invasion by using their own evolving fighter ships. + 0.60 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/srdarwin.png + + + + suprridr.zip + Super Rider + Become the stunt bike racer you've always dreamed of as you speed along the colourful courses at break neck speeds to perform the most amazing tricks the world has ever seen! In the brilliant Super Rider you race around the place, overtaking other speedy dudes, pulling crazy tricks and even riding upside down as you ride the loop the loops! Jump gaps, reach max speeds, follow the track where ever it takes you to beat the game and score big! + 0.50 + 19830101T000000 + Venture Line + Venture Line + Platform / Run Jump Scrolling + 2897 + Taito Classics + 270 + 256x224 + media/mixrbv2/suprridr.png + + + + ssideki.zip + Super Sidekicks / Tokuten Ou + Experience the roar of the crowd and the thrills of the stadium. SNK's live-action soccer game is here! Along with your Ace Striker and his array of sliding, overhead, and diving shots, lead your team to victory and seize the prized SNK Cup. Watch players perform miraculous overhead and diving shots, dazzle your opponent with gravity-defying dribbling. Avoid sliding defense players and bone-crushing blocks. Be overwhelmed with in-your-face action so real, you'll be washing the grass stains off your clothing when you're finished! + 0.85 + 19920101T000000 + SNK + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ssideki.png + + + + ssideki2.zip + Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - real fight football (NGM-061)(NGH-061) + This is a soccer game on Neo-Geo. When you start the game, you go into a "Regional Qualifying Round Final" against another team from your region. After beating it, your team goes into the World (Cup) Tournament, in which you are grouped with three other countries in a round-robin. After winning against all of them, you go into an elimination tournament: the quarterfinals, semifinals, and the final for the World Cup. This type of tournament thus is more reminiscent of the real-life World Cup. If a match ends in a draw, you also have the option of replaying a full game, go to the penalty kick tiebreaker, or play a sudden death game. + 0.75 + 19940101T000000 + SNK + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ssideki2.png + + + + ssideki3.zip + Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - eikou e no michi + Loaded with world class excitement! Features 6 competition modes like World Cup for 64 worldwide teams. Utilizes Digitized Trace Animation and 3D camera angled shots for a realistic on-the-fly action graphic explosion. With 8 different playing modes including options such as Speed and Stamina, you can mix and match 512 different team configurations. Accidents hinder or enhance a team's ability within head-to-head gameplay for the ultimate super-real soccer experience! + 0.70 + 19950101T000000 + SNK + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ssideki3.png + + + + macross.zip + Super Spacefortress Macross / Chou-Jikuu Yousai Macross + Super Spacefortress Macross is a vertically-scrolling shoot'em up based on the 1984 theatrical film in the Macross franchise, commonly known in English as Macross: Do You Remember Love?. Players control the VF-1 Valkyrie fighters of ace pilots Max Jenius and (in two-player games only) Hikaru Ichijyo in combat against the Zentradi. + +The game consists of seven levels, mostly based on action scenes from the film, including confrontations over Macross City, in the rings of Saturn, the surface of the devastated Earth, and the final battle against Boddole Zer. + +Gameplay is similar to Raiden: the Valkyrie can transform into one of three different modes by collecting the appropriate power-up: in Fighter mode, the ship fires a spread shot, Gerwalk mode has a narrow but powerful laser that passes through enemies, and Battroid mode features homing missiles. The intensity of the attacks can be upgraded in three stages through another power-up. There are also smart bombs to pick up that clear most enemies off the screen with one shot. Each level ends with a boss battle. Besides shooting down the hordes of enemies, picking up medals and rare Minmay dolls also increases the score. In two-player mode, both players take on the enemy simultaneously. Between levels, cutscenes recreate scenes from the film to illustrate the storyline. + 0.50 + 19920101T000000 + Banpresto + Banpresto + Shoot'em Up + 79 + 1-2 + Banpresto + 270 + 256x224 + media/mixrbv2/macross.png + + + + macross2.zip + Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II + In 1999, an alien ship crashes on South Atalia Island and makes the human race aware of other life in space. Ten years later, the ship is reconstructed and christened as the SDF-1 Macross. However, on the day of its maiden voyage, an alien race called the Zentraedi make their appearance on Earth, beginning the UN Spacy/Zentraedi war that would change the history of both races forever. + 0.50 + 19930101T000000 + NMK + Banpresto + Shoot'em Up + 79 + 1-2 + Banpresto + 384x224 + media/mixrbv2/macross2.png + + + + macross2g.zip + Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II (GAMEST review build) + In 1999, an alien ship crashes on South Atalia Island and makes the human race aware of other life in space. Ten years later, the ship is reconstructed and christened as the SDF-1 Macross. However, on the day of its maiden voyage, an alien race called the Zentraedi make their appearance on Earth, beginning the UN Spacy/Zentraedi war that would change the history of both races forever. + 0.50 + 19930101T000000 + NMK + Banpresto + Shoot'em Up + 79 + 1-2 + macross2.zip + Banpresto + 384x224 + media/mixrbv2/macross2.png + + + + ssrj.zip + Super Speed Race Junior (Japan) + The player must use the steering wheel to take control of a car, with a single pedal to accelerate it. The car in question is red in colour and must be guided through the streets of a city, avoiding other CPU-controlled cars (including a yellow Volkswagen Buggy) and trying to stay on the road; also watch out for level and zebra crossings, as pedestrians and diesel trains pass through. + 0.50 + 19850101T000000 + Taito + Taito + Race, Driving / Race + 2924 + 1 + Taito Classics + 270 + 272x240 + media/mixrbv2/ssrj.png + + + + sstarcrs.zip + Super Star Crest + Moon Cresta is a single screen shoot-em-up with the player controlling an armed ship that moves horizontally along the bottom of the screen and must use their ship to destroy waves of attacking aliens. + +The player begins the game with a small ship armed with a single laser cannon. Upon successful completion of the first four waves of alien attacks, the player's ship will be able to dock with the next 'stage' of fighter ship, although the docking procedure must be completed within a set time. This larger, two-stage ship has increased fire power (three lasers). + +After successfully clearing a further two alien waves and surviving a meteor shower, the two-stage ship will be able to dock with the third and final piece, giving the player the largest and most powerful ship, which is now armed with five lasers. Bonus points are awarded depending on how quickly the docking procedures are completed. + +If the multi-stage ship is hit, the player continues with whatever stages remain. If players achieve a score of 30,000, they are awarded a free game and their score continues to accumulate. + +Upon completion of the first eight screens, the player's ship will revert back to its small, single-stage incarnation and the game begins again with an increased level of difficulty. + 0.70 + 19800101T000000 + Nichibutsu + Nichibutsu + Shooter / Space Invaders Like + 2900 + 1-2 + mooncrst.zip + Nichibutsu + 270 + 768x224 + media/mixrbv2/mooncrst.png + + + + sstingry.zip + Super Stingray (Japan) + Super Stingray is a semi-strategic top-down tank action shooter game. + +Control your tank across the battlefield and destroy all the enemies in the way and defeated the enemy fortress. + 0.70 + 19860101T000000 + ADK + ADK + Shooter / Vehicle, Vertical + 2921 + 1-2 + Alpha Denshi Co. + 270 + 256x224 + media/mixrbv2/sstingry.png + + + + ssf2jr2.zip + Super Street Fighter II - the new challengers (super street fighter 2 930910 Japan) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2d.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 etc Phoenix Edition) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2r1.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 etc) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2h.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 Hispanic) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2jr1.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 Japan) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2ud.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 USA Phoenix Edition) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2u.zip + Super Street Fighter II - the new challengers (super street fighter 2 930911 USA) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2ar1.zip + Super Street Fighter II - the new challengers (super street fighter 2 930914 Asia) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2a.zip + Super Street Fighter II - the new challengers (super street fighter 2 931005 Asia) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2.zip + Super Street Fighter II - the new challengers (super street fighter 2 931005 etc) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2j.zip + Super Street Fighter II - the new challengers (super street fighter 2 931005 Japan) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2us2.zip + Super Street Fighter II - the new challengers Super 2 (super street fighter 2 930911 USA) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbr1.zip + Super Street Fighter II - the tournament battle (930911 etc) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbj1.zip + Super Street Fighter II - the tournament battle (930911 Japan) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbu.zip + Super Street Fighter II - the tournament battle (930911 USA) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tba.zip + Super Street Fighter II - the tournament battle (931005 Asia) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbh.zip + Super Street Fighter II - the tournament battle (931005 Hispanic) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbj.zip + Super Street Fighter II - the tournament battle (931005 Japan) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tbd.zip + Super Street Fighter II - the tournament battle (931119 etc Phoenix Edition) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tb.zip + Super Street Fighter II - the tournament battle (931119 etc) + Super Street Fighter II: The New Challengers is the fourth game in the Street Fighter II sub-series of Street Fighter games, following Street Fighter II: Hyper Fighting. In addition to refining and balancing the existing character roster from the previous installments, Super Street Fighter II also introduced four new characters. + +This game is also known under the name of Super Street Fighter II: The Tournament Battle when 4 Cabinets are connected to play in tournament mode. + 0.85 + 19930101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2.png + + + + ssf2tad.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 Asia Phoenix Edition) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2ta.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 Asia) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2td.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 etc Phoenix Edition) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2t.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 etc) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2th.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 Hispanic) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2tur1.zip + Super Street Fighter II Turbo (super street fighter 2 X 940223 USA) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2tu.zip + Super Street Fighter II Turbo (super street fighter 2 X 940323 USA) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2tnl.zip + Super Street Fighter II Turbo New Legacy v0.6 (Beta) (Hack by Born2SPD) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2xjr1trn.zip + Super Street Fighter II X - GMC Trainer (super street fighter 2 X 940223 Japan) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2xjr1d.zip + Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan Phoenix Edition) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2xjr1r.zip + Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan rent version) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2xjr1.zip + Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + ssf2xj.zip + Super Street Fighter II X - grand master challenge (super street fighter 2 X 940311 Japan) + Super Street Fighter II Turbo, released in Japan as Super Street Fighter II X: Grand Master Challenge, is a competitive fighting game released for the arcades by Capcom in 1994. It is the fifth arcade installment in the Street Fighter II sub-series of Street Fighter games, following Super Street Fighter II. Like its predecessor, it ran on the CP System II hardware. + +Super Turbo introduced several new play mechanics to the game system from the previous Street Fighter II installments, including the addition of powered-up Special Moves called Super Combos. It also introduced the hidden character of Akuma, who would go on to become a recurring character in later Street Fighter installments and other Capcom fighting games. + 0.80 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + ssf2t.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ssf2t.png + + + + usg82.zip + Super Ten V8.2 + 0.50 + 19880101T000000 + U.S. Games + Various + 39 + 1-4 + superten.zip + Mame + 400x248 + media/mixrbv2/superten.png + + + + superten.zip + Super Ten V8.3 + 0.50 + 19880101T000000 + U.S. Games + Various + 39 + 1-4 + Mame + 400x248 + media/mixrbv2/superten.png + + + + usg83x.zip + Super Ten V8.3X + 0.50 + 19880101T000000 + U.S. Games + Various + 39 + 1-4 + superten.zip + Mame + 400x248 + media/mixrbv2/superten.png + + + + suprtrio.zip + Super Trio + You controls one of the three animals characters, a mouse named Jake a cat named Tomi and a dog named Brudo each of one equipped with different weapons, through varied and colorful levels, you must jump, climbing and pick up Items while you defend or dodge all the enemies in the way, to reach the exit to face off the enemy boss and go to bonus stage or next level. + 0.50 + 19940101T000000 + Gameace + Gameace + Platform / Run Jump Scrolling + 2897 + 1-2 + SemiCom + 320x240 + media/mixrbv2/suprtrio.png + + + + strvmstr.zip + Super Trivia Master + Super Trivia Master (c) 1986 ETI. - TECHNICAL - Main CPU : Z80 (@ 2.952 Mhz) Sound Chips : (3x) AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 224 x 256 pixels Screen refresh : 60.00 Hz Palette Colors : 256 Players : 2 Buttons : 4 + 0.70 + 19860101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + Mame + 270 + 256x224 + media/mixrbv2/strvmstr.png + + + + svolly91.zip + Super Volley '91 (Japan) + It's the successor to Power Spikes. Released in 1994, this game features a new league of robotic players. + 0.70 + 19910101T000000 + Video System + Video System + Sports / Volleyball + 2883 + 1-2 + pspikes.zip + Video System Co. + 352x240 + media/mixrbv2/pspikes.png + + + + svolley.zip + Super Volleyball (Japan) + Super Volleyball is a sports game on arcade terminals. +Depending on the version, you play as the Japanese or American team and have to face Cuba, China, USSR, ... +The game shows the side court and allows you to choose the type of serve, block, pass or smatch to be made. +When a point is scored, the player responsible is shown in close-up, to the cheers of the crowd. + 0.50 + 19890101T000000 + V-System Co. + V-System Co. + Sports / Volleyball + 2883 + 1-2 + Midway Classics + 288x216 + media/mixrbv2/svolley.png + + + + svolleyk.zip + Super Volleyball (Korea) + Super Volleyball is a sports game on arcade terminals. +Depending on the version, you play as the Japanese or American team and have to face Cuba, China, USSR, ... +The game shows the side court and allows you to choose the type of serve, block, pass or smatch to be made. +When a point is scored, the player responsible is shown in close-up, to the cheers of the crowd. + 0.50 + 19890101T000000 + V-System Co. + V-System Co. + Sports / Volleyball + 2883 + 1-2 + svolley.zip + Midway Classics + 288x216 + media/mixrbv2/svolley.png + + + + svolleyu.zip + Super Volleyball (US) + Super Volleyball is a sports game on arcade terminals. +Depending on the version, you play as the Japanese or American team and have to face Cuba, China, USSR, ... +The game shows the side court and allows you to choose the type of serve, block, pass or smatch to be made. +When a point is scored, the player responsible is shown in close-up, to the cheers of the crowd. + 0.50 + 19890101T000000 + V-System Co. + V-System Co. + Sports / Volleyball + 2883 + 1-2 + svolley.zip + Midway Classics + 288x216 + media/mixrbv2/svolley.png + + + + sws92.zip + Super World Stadium '92 (Japan) + Super World Stadium '92 (c) 1992 Namco. - TECHNICAL - Namco System 2 hardware Game ID : SSS Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : + 0.70 + 19920101T000000 + Namco + Sports / Baseball + 2853 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/sws92.png + + + + sws92g.zip + Super World Stadium '92 Gekitouban (Japan) + Super World Stadium '92 (c) 1992 Namco. - TECHNICAL - Namco System 2 hardware Game ID : SSS Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : + 0.70 + 19920101T000000 + Namco + Sports / Baseball + 2853 + 1-2 + sws92.zip + Namco Classics + 288x224 + media/mixrbv2/sws92.png + + + + sws93.zip + Super World Stadium '93 (Japan) + Super World Stadium '93 (c) 1993 Namco. - TECHNICAL - Namco System 2 hardware Game ID : SST Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : + 0.70 + 19930101T000000 + Namco + Sports / Baseball + 2853 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/sws93.png + + + + sws.zip + Super World Stadium (Japan) + Super World Stadium (c) 1992 Namco. - TECHNICAL - Namco System 2 hardware Game ID : SS Main CPU : (2x) 68000 (@ 12.288 Mhz), M6809 (@ 3.072 Mhz), HD63705 (@ 2.048 Mhz) Sound Chips : C140 (@ 21.39 Khz), YM2151 (@ 3.57958 Mhz) Players : 2 Control : 8-wa + 0.70 + 19920101T000000 + Namco + Namco + Sports / Baseball + 2853 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/sws.png + + + + sxevious.zip + Super Xevious (Namco) + It's a nightmare, but it's true! Research shows that we are the actual aliens on Earth, and the ruthless Xevions are the original inhabitants. + +Now the Xevions want Earth back -- minus humans! Their invasion forces are fierce -- the land is crawling with deadly Domogram Rovers; the sky is black with Toroid Patrol Fleets and Zoshi Death Squads. + +Our puny weapons offer no defense. Earth's only hope is our powerful new Solvalou Fighter Plane. Its pilot will have a single mission: Penetrate the enemy ranks and destroy the Xevious Mother Ship. + +The mission is dangerous. We can't guarantee success. But at this point, it's do or die! + +One small problem. We still need a pilot. Any volunteers? + 0.90 + 19820101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + xevious.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/xevious.png + + + + szaxxon.zip + Super Zaxxon + Super Zaxxon is a 1- or 2-player video game that presents the player with tremendous challenge and excitement never before experienced. The 3-dimensional-like, isometric graphics are produced by projecting the picture at a slant on the screen, putting the player in remote controlled realism with his player ship. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/szaxxon.png + + + + zolapac.zip + Super Zola Pac Gal + In this, the first proper sequel to Namco's legendary pill eating maze game, players must once again run around a number of mazes, eating all of the pills that are scattered throughout. The ever-present ghosts (Blinky, Pinky, Inky and Sue) return to hamper the player's progress. The infamous 'Power Pills' are also present and correct, with four appearing in each maze. + +Namco introduced a number of changes and enhancements over the original game. The first difference is in the main character. For the first time in video-game history, the game's lead character was female. Ms. Pac-Man is almost identical to the original character with two main differences; she wears a bow in her 'hair', and is also wearing lipstick. + +Another change from the original is that the bonus fruit items are no longer static but now move randomly around the mazes. + +Ms Pac-Man features four different maze layouts, which alternate every two to four rounds: + + 0.90 + 19810101T000000 + Coleco Industries, Inc. + Coleco Industries, Inc. + Action / Labyrinth + 2937 + 1-2 + mspacman.zip + Midway Classics + 270 + 288x224 + media/mixrbv2/mspacman.png + + + + superxm.zip + Super-X (Mitchell) + Super-X is a shoot-em-up featuring 7 stages. + 0.50 + 19940101T000000 + NTC + NTC + Shoot'em Up + 79 + 1-2 + superx.zip + Mame + 270 + 384x240 + media/mixrbv2/superx.png + + + + superx.zip + Super-X (NTC) + Super-X is a shoot-em-up featuring 7 stages. + 0.50 + 19940101T000000 + NTC + NTC + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/superx.png + + + + 1942h.zip + Supercharger 1942 + "1942" is a vertically-scrolling shoot-em-up set in the Pacific theatre during World War II, in which the goal is to reach Tokyo and destroy the entire Japanese air fleet. + +The player pilots a plane dubbed the "Super Ace" (its appearance is that of a Lockheed P-38 Lightning) and has to shoot down waves of enemy planes while avoiding incoming enemy fire. The 'Super Ace' can perform a limited number of rolls or 'loop-the-loops' to evade enemy planes and shots. + +During the game, waves of red enemy planes periodically appear. If the player manages to destroy a red wave, a power-up, in the form of a 'POW' symbol, will be dropped and can be picked up. The power-up will award either increased fire-power (doubling the player's guns from two to four), a smart bomb that destroys all on-screen enemy planes the instant it's collected, two wingmen planes that flank the Super Ace and increase fire power, or simply extra points. + +At the end of each stage the 'Super Ace' lands on an aircraft carrier and bonus points are awarded based on player performance. "1942" differs from other games in that its levels are numbered in reverse order, so the game begins at stage 32 and ends at stage 1. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + 1942.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/1942.png + + + + supermanj.zip + Superman (Japan) + Superman is a horizontal video game and may be played by one or two players interactively. The second player controlling a red Superman character, teams up with the first player in this battle against the evil Alien Powers. + 0.50 + 19880101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + superman.zip + Taito Classics + 384x240 + media/mixrbv2/superman.png + + + + supermanu.zip + Superman (US) + Superman is a horizontal video game and may be played by one or two players interactively. The second player controlling a red Superman character, teams up with the first player in this battle against the evil Alien Powers. + 0.50 + 19880101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + superman.zip + Taito Classics + 384x240 + media/mixrbv2/superman.png + + + + superman.zip + Superman (World) + Superman is a horizontal video game and may be played by one or two players interactively. The second player controlling a red Superman character, teams up with the first player in this battle against the evil Alien Powers. + 0.50 + 19880101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + Taito Classics + 384x240 + media/mixrbv2/superman.png + + + + suratka.zip + Surprise Attack (Asia ver. L) + The protagonist is Sergeant John Ryan of the Special Task Force who has to face a terrorist organization that has placed bombs on the Moon, sending an ultimatum of 25 hours to Earth. + 0.60 + 19900101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + suratk.zip + Konami Classics + 288x224 + media/mixrbv2/suratk.png + + + + suratkj.zip + Surprise Attack (Japan ver. M) + The protagonist is Sergeant John Ryan of the Special Task Force who has to face a terrorist organization that has placed bombs on the Moon, sending an ultimatum of 25 hours to Earth. + 0.60 + 19900101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + suratk.zip + Konami Classics + 288x224 + media/mixrbv2/suratk.png + + + + suratk.zip + Surprise Attack (World ver. K) + The protagonist is Sergeant John Ryan of the Special Task Force who has to face a terrorist organization that has placed bombs on the Moon, sending an ultimatum of 25 hours to Earth. + 0.60 + 19900101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/suratk.png + + + + gogomile.zip + Susume! Mile Smile / Go Go! Mile Smile (newer) + 'Here. You'll need this'. A modern remake of Stern Electronics' classic "Anteater", this cutesy game features boss fights, multiple entry points, an upbeat musical score and colorful graphics. + 0.70 + 19950101T000000 + Fuuki + Fuuki + Action + 10 + 1-2 + Mame + 320x240 + media/mixrbv2/gogomile.png + + + + gogomileo.zip + Susume! Mile Smile / Go Go! Mile Smile (older) + 'Here. You'll need this'. A modern remake of Stern Electronics' classic "Anteater", this cutesy game features boss fights, multiple entry points, an upbeat musical score and colorful graphics. + 0.70 + 19950101T000000 + Fuuki + Fuuki + Action + 10 + 1-2 + gogomile.zip + Mame + 320x240 + media/mixrbv2/gogomile.png + + + + suzuka8hj.zip + Suzuka 8 Hours (Japan, Rev B) + An excellent motorcycle game from Namco. + 0.70 + 19920101T000000 + Namco + Namco + Motorcycle Race, 3rd Pers. + 2871 + 1 + suzuka8h.zip + Namco Classics + 288x224 + media/mixrbv2/suzuka8h.png + + + + suzuka8h.zip + Suzuka 8 Hours (World, Rev C) + An excellent motorcycle game from Namco. + 0.70 + 19920101T000000 + Namco + Namco + Motorcycle Race, 3rd Pers. + 2871 + 1 + Namco Classics + 288x224 + media/mixrbv2/suzuka8h.png + + + + suzuk8h2j.zip + Suzuka 8 Hours 2 (Japan, Rev B) + A motorcycle game from Namco. This sequel features all the excitement from the original. + 0.70 + 19930101T000000 + Namco + Namco + Motorcycle Race, 3rd Pers. + 2871 + 1 + suzuk8h2.zip + Namco Classics + 288x224 + media/mixrbv2/suzuk8h2.png + + + + suzuk8h2.zip + Suzuka 8 Hours 2 (World, Rev B) + A motorcycle game from Namco. This sequel features all the excitement from the original. + 0.70 + 19930101T000000 + Namco + Namco + Motorcycle Race, 3rd Pers. + 2871 + 1 + Namco Classics + 288x224 + media/mixrbv2/suzuk8h2.png + + + + swarm.zip + Swarm (bootleg?) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + swat.zip + SWAT (315-5048) + SWAT is an abstract one or two player shoot-em-up in which the aim is to stop swarms of aliens from building a sectional tunnel from the bottom of the screen to the top. + +At the top of each level are blue tunnel sections, while at the bottom are purple ones. Aliens start at the bottom of the screen in the purple sections. As they move through a tunnel, they can build new sections in any direction. + 0.70 + 19840101T000000 + Coreland + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/swat.png + + + + swatpolc.zip + SWAT Police + A gun shooting, horizontal scroll action game that uses joysticks and buttons rather than guns. One player can play on their own, or 2 players can team up and play simultaneously as the two SWAT police ch + 0.50 + 20010101T000000 + ESD + ESD + Shooter / 3rd person + 2899 + 1-2 + Mame + 320x240 + media/mixrbv2/swatpolc.png + + + + csweetht.zip + Sweet Heart (DECO Cassette) (US) + You play a 90 pound weakling kid in a roller rink who has to skate around the bad guys in order to win the love admiration of cute chicks. Earn points by completely encircling one or more tough guys and picking up various bonus items that float across the rink. Interesting gameplay mechanics, nice music and decent graphics for 1982. + 19820101T000000 + Data East + Data East + Puzzle-Game + 26 + 1-2 + cdiscon1.zip + Data East Classics + media/mixrbv2/cdiscon1.png + + + + swimmer.zip + Swimmer (set 1) + Venture up stream gathering fruits while avoiding various water-bound pests and obstacles. Eat power pills to attack critters. + 0.70 + 19820101T000000 + Tehkan Ltd. + Tehkan Ltd. + Sports / Swimming + 2878 + 1-2 + Mame + 256x224 + media/mixrbv2/swimmer.png + + + + moshougi.zip + Syougi No Tatsujin - Master of Shougi + Shougi no Tatsujin was released in September 1995 in Japan. +The title of this game translates from Japanese as 'Master of Shougi'. +The 'Shougi' is a Japanese chess-style game. + 19950101T000000 + ADK + SNK + Asiatic board game + 2647 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/moshougi.png + + + + ssozumo.zip + Syusse Oozumou (Japan) + A sumo wrestling game. + 0.50 + 19840101T000000 + Technos Japan Corp. + Tecmo + Sports / Sumo + 2947 + 1-2 + Technos + 270 + 256x240 + media/mixrbv2/ssozumo.png + + + + syvalion.zip + Syvalion (Japan) + Control the mechanical dragon Syvalion and find your way through ever-changing magical dungeon. + 0.70 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 512x400 + media/mixrbv2/syvalion.png + + + + syvalionu.zip + Syvalion (US, PS2 Taito Legends 2) + Control the mechanical dragon Syvalion and find your way through ever-changing magical dungeon. + 0.70 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + syvalion.zip + Taito Classics + 512x400 + media/mixrbv2/syvalion.png + + + + syvalionp.zip + Syvalion (World, prototype) + Control the mechanical dragon Syvalion and find your way through ever-changing magical dungeon. + 0.70 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + syvalion.zip + Taito Classics + 512x400 + media/mixrbv2/syvalion.png + + + + syvalionw.zip + Syvalion (World, PS2 Taito Legends 2) + Control the mechanical dragon Syvalion and find your way through ever-changing magical dungeon. + 0.70 + 19880101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + syvalion.zip + Taito Classics + 512x400 + media/mixrbv2/syvalion.png + + + + tnk3b.zip + T.A.N.K (Bootleg, 8-way Joystick) + During the final days of World War II, the allied forces sends special forces member Colonel Ralf to penetrate an enemy base and destroy a secret weapon by driving a new prototype tank. + 0.70 + 19850101T000000 + SNK + SNK + Shooter / Vehicle, Vertical + 2921 + 1-2 + tnk3.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/tnk3.png + + + + tnk3j.zip + T.A.N.K (Japan) + During the final days of World War II, the allied forces sends special forces member Colonel Ralf to penetrate an enemy base and destroy a secret weapon by driving a new prototype tank. + 0.70 + 19850101T000000 + SNK + SNK + Shooter / Vehicle, Vertical + 2921 + 1-2 + tnk3.zip + SNK Classics + 270 + 288x216 + media/mixrbv2/tnk3.png + + + + tnk3.zip + T.N.K III (US) + During the final days of World War II, the allied forces sends special forces member Colonel Ralf to penetrate an enemy base and destroy a secret weapon by driving a new prototype tank. + 0.70 + 19850101T000000 + SNK + SNK + Shooter / Vehicle, Vertical + 2921 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/tnk3.png + + + + defenderj.zip + T.T Defender + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + ttfitter.zip + T.T Fitter (Japan) + The object of Round-Up is for the player to maneuver his white robot in 1 of 4 directions within a maze, capture a red character robot as they move about the maze, and race to the center to change the 9 white balls located there to red. The player may only change one white ball to red at a time after he has captured a red robot, and must evade 4 chaser monsters in the process. Bonus point may be earned when capturing the elusive 'red king' that appears on the screen. Capture him and momentarily immobilize the chasers, but do not come in contact with the yellow robots--or your much-needed red robots will be changed to white and force you to change strategy. Play is over when the chasers have captured all of the player's robots. But, should the player be successful in changing all of the balls in the center to red, the pattern clears and a different challenge is presented. A 3x3 or 4x4 tri-colored pattern will appear at the bottom of the screen and a slightly different tri-colored cube of corresponding size will appear at the center of the screen. The player may earn bonus points by moving the directional arrow and rearranging the colors of the cube at the center of the screen to match the sample pattern presented at the bottom of the screen. The player is given 90 seconds to rearrange the cube as many times as he can. Action returns to the maze whether you win or lose the cube challenge. All in all, an exciting and challenging game where patience and skill are required. + 0.50 + 19810101T000000 + Taito + Action + 10 + 1-2 + roundup.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/roundup.png + + + + ttmahjng.zip + T.T Mahjong + 19810101T000000 + Asiatic board game + 2647 + jongpute.zip + Mame + media/mixrbv2/jongpute.png + + + tacscan.zip + Tac/Scan + TAC/SCAN is a one or two-player vector-based shoot-em-up in which players control a formation squadron of seven fighter ships. All seven ships fire at once when the FIRE button is pressed, producing a spectacular missile salvo. + +The player begins the game with a seven ship formation and a supply of reserve ships (shown above the player score). The object of the game is to accumulate points by destroying enemy ships while avoiding incoming fire. As well as the main squadron, there are a number of reserve ships and an ADD SHIP button. This transfers one of the reserve ships into the squadron formation. The 'add ship' position continuously cycles between the empty squadron positions, allowing players to time the ADD SHIP function to place fighters at their desired location. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em up / Vertical + 2851 + 1 + Sega Classics + 270 + media/mixrbv2/tacscan.png + + + + tactcian.zip + Tactician (set 1) + At its core, Tactician might seem like another Space Invaders / Galaxian clone - you control a small ship at the bottom of the screen, which can actually move up or down a bit, instead of just left and right - but it has a pretty cool gimmick going for it. + +At the beginning of each stage, you can "draw" a barrier by placing little dots around the playing field. After several seconds, enemies are released from their bases and begin to swarm the screen. They'll usually make quick work of the barrier, but if you shoot the red ball it'll explode and destroy anything near it. Quite a cool concept for something from 1981 - it's a shame that Tactician is so unknown, and that the idea was never expanded on in any other games. Some versions list the game as copyrighted by Sega, but they apparently only distributed the game in certain territories. + 0.70 + 19820101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 288x224 + media/mixrbv2/tactcian.png + + + + tactcian2.zip + Tactician (set 2) + At its core, Tactician might seem like another Space Invaders / Galaxian clone - you control a small ship at the bottom of the screen, which can actually move up or down a bit, instead of just left and right - but it has a pretty cool gimmick going for it. + +At the beginning of each stage, you can "draw" a barrier by placing little dots around the playing field. After several seconds, enemies are released from their bases and begin to swarm the screen. They'll usually make quick work of the barrier, but if you shoot the red ball it'll explode and destroy anything near it. Quite a cool concept for something from 1981 - it's a shame that Tactician is so unknown, and that the idea was never expanded on in any other games. Some versions list the game as copyrighted by Sega, but they apparently only distributed the game in certain territories. + 0.70 + 19820101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + tactcian.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/tactcian.png + + + + tagteam.zip + Tag Team Wrestling + In this early arcade wrestling game, you control the team of Terry and Sunny who continuously challenge The Heel Team in a series of tag team matches. + +During each match of this game, whenever you come into contact with one of The Heel Team, you will be given a choice of which attack you want to use against your opponent. These moves include The Straight Jab, The Karate Chop, The Body Slam, The Drop Kick, The Piledriver, The Brain Buster, The Lariat and The Cobra Twist. Press the Action button to select one of those attacks whenever they appear on the screen. + +For each of The Heel Team, one of them is fat and wears black pants and the other wears a red mask and white tights. Moves such as The Brain Buster, The Piledriver, The Lariat and The Cobra Twist will not work when fighting the fat character. + 0.30 + 19830101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + bigprowr.zip + Technos + 270 + 256x240 + media/mixrbv2/bigprowr.png + + + + tail2nosa.zip + Tail to Nose - Great Championship + Tail to Nose - Great Championship, connu sous le nom de Super Formula: Chijo Saisoku no Battle au Japon, est un des premiers jeux consacré à la Formule 1. Bien que ne possédant pas de licence, les écuries, les pilotes, les sponsors et les 4 circuits disponibles sont fortement inspirés de la réalité. + 0.50 + 19890101T000000 + V-System Co. + Race, Driving / Race + 2924 + 1 + tail2nos.zip + Mame + 270 + 320x240 + media/mixrbv2/tail2nos.png + + + + tail2nos.zip + Tail to Nose - Great Championship / Super Formula + Tail to Nose - Great Championship, connu sous le nom de Super Formula: Chijo Saisoku no Battle au Japon, est un des premiers jeux consacré à la Formule 1. Bien que ne possédant pas de licence, les écuries, les pilotes, les sponsors et les 4 circuits disponibles sont fortement inspirés de la réalité. + 0.50 + 19890101T000000 + V-System Co. + Race, Driving / Race + 2924 + 1 + Mame + 270 + 320x240 + media/mixrbv2/tail2nos.png + + + + karatevs.zip + Taisen Karate Dou (Japan VS version) + Karate Champ &copy; 1984 Data East USA. + +A seminal 1-on-1 fighting game set over the course of a karate tournament, Karate Champ was the first game of its type and would influence every game of the fighting genre that followed. Karate Champ&#039;s control system utilised a somewhat awkward dual joystick control system, with simultaneous joystick manipulation required to execute even the simplest of kicks. + 0.90 + 19840101T000000 + Data East + Data East + Fight / Versus + 2885 + 1-2 + kchamp.zip + Data East Classics + 270 + 256x224 + media/mixrbv2/kchamp.png + + + + tshingena.zip + Takeda Shingen (Japan, Japanese) + The honorable samurai fights to remove the evil samurai and their hordes of soldiers from Japan. + 0.50 + 19880101T000000 + Jaleco + Jaleco + Beat'em Up + 1 + 1-2 + tshingen.zip + Jaleco + 256x224 + media/mixrbv2/tshingen.png + + + + tangtang.zip + Tang Tang (ver. 0526, 26/05/2000) + Tang Tang is a platform/puzzle hybrid for one or two players; based heavily on Tecmo's superb 1986 release, "Solomon's Key - Solomon no Kagi". The players' characters are armed with a magic wand, which can be used to both destroy and create blocks to use as platforms and barriers. Players can remove platform blocks directly above their characters' heads by repeatedly jumping up into them until they break. + +To complete a level, players must collect all of the circle/diamond items that litter each screen. Once all of these have been collected, a door will appear through which the player must exit to complete the level. + 0.70 + 20000101T000000 + ESD + ESD + Platform / Run Jump + 2915 + 1-2 + Mame + 320x240 + media/mixrbv2/tangtang.png + + + + tankbust.zip + Tank Busters + You sit at the controls of an advanced battletank, looking out on the battlefield of the future. + +Your mission is to seek out and destroy all enemy forces operating on the asteroid you have been assigned to defend. Your own tank is equipped with a defensive shield and two kinds of weapon. Firstly you have a conventional cannon, firing high velocity armour piercing shells. In addition to these, you may fire wire guided anti-tank missiles. When fired, these are controlled by use of the left and right keys. + + + 0.50 + 19850101T000000 + Valadon Automation + Valadon Automation + Action + 10 + 1-2 + Mame + 270 + 320x240 + media/mixrbv2/tankbust.png + + + + tankfrcej.zip + Tank Force (Japan) + Tank Force is a multi-directional shooter arcade game that was released by Namco in 1991; it was the last game to run on their System 1 hardware (which had been in use for four years), is the sequel to Battle City, which was released six years earlier and is a sequel to Tank Battalion, which had been released five years before it (and eleven years before this title). The US version of the game was also the first of seven games from the company to display the Federal Bureau of Investigation's "Winners Don't Use Drugs" screen during its attract mode - the others are Steel Gunner 2, F/A, Cosmo Gang the Puzzle, Knuckle Heads, Lucky & Wild, and Numan Athletics. Exvania and Super World Court, which were Japan-exclusive, may also feature the screen in their attract mode if the "Display FBI Screen" setting in the games' options menus has been set to "Yes". + 0.70 + 19910101T000000 + Namco + Namco + Action + 10 + 1-2 + tankfrce.zip + Namco Classics + 288x224 + media/mixrbv2/tankfrce.png + + + + tankfrce.zip + Tank Force (US, 2 Players) + Tank Force is a multi-directional shooter arcade game that was released by Namco in 1991; it was the last game to run on their System 1 hardware (which had been in use for four years), is the sequel to Battle City, which was released six years earlier and is a sequel to Tank Battalion, which had been released five years before it (and eleven years before this title). The US version of the game was also the first of seven games from the company to display the Federal Bureau of Investigation's "Winners Don't Use Drugs" screen during its attract mode - the others are Steel Gunner 2, F/A, Cosmo Gang the Puzzle, Knuckle Heads, Lucky & Wild, and Numan Athletics. Exvania and Super World Court, which were Japan-exclusive, may also feature the screen in their attract mode if the "Display FBI Screen" setting in the games' options menus has been set to "Yes". + 0.70 + 19910101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/tankfrce.png + + + + tankfrce4.zip + Tank Force (US, 4 Players) + Tank Force is a multi-directional shooter arcade game that was released by Namco in 1991; it was the last game to run on their System 1 hardware (which had been in use for four years), is the sequel to Battle City, which was released six years earlier and is a sequel to Tank Battalion, which had been released five years before it (and eleven years before this title). The US version of the game was also the first of seven games from the company to display the Federal Bureau of Investigation's "Winners Don't Use Drugs" screen during its attract mode - the others are Steel Gunner 2, F/A, Cosmo Gang the Puzzle, Knuckle Heads, Lucky & Wild, and Numan Athletics. Exvania and Super World Court, which were Japan-exclusive, may also feature the screen in their attract mode if the "Display FBI Screen" setting in the games' options menus has been set to "Yes". + 0.70 + 19910101T000000 + Namco + Namco + Action + 10 + 1-2 + tankfrce.zip + Namco Classics + 288x224 + media/mixrbv2/tankfrce.png + + + + taotaido.zip + Tao Taido (set 1) + Extremely simplistic fighter with eight selectable characters and a cooperative 2-player feature. + 0.50 + 19930101T000000 + Video System + Video System + Fight / Versus + 2885 + 1-2 + Video System Co. + 320x224 + media/mixrbv2/taotaido.png + + + + taotaidoa.zip + Tao Taido (set 2) + Extremely simplistic fighter with eight selectable characters and a cooperative 2-player feature. + 0.50 + 19930101T000000 + Video System + Video System + Fight / Versus + 2885 + 1-2 + taotaido.zip + Video System Co. + 320x224 + media/mixrbv2/taotaido.png + + + + tapperg.zip + Tapper (Budweiser, 1/27/84 - Alternate graphics) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + tapper.zip + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + tapper.zip + Tapper (Budweiser, 1/27/84) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + tappera.zip + Tapper (Budweiser, 12/9/83) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + tapper.zip + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + tapperb.zip + Tapper (Budweiser, Date Unknown) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + tapper.zip + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + rbtapper.zip + Tapper (Root Beer) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + tapper.zip + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + sutapper.zip + Tapper (Suntory) + Taking on the role of an overworked bartender, the player must serve beer to the ever-thirsty patrons that populate his bar. All customers must be served before they work their way up to the beer kegs. Empty glasses must also be collected before they slide off the end of the bar and smash to the floor. Extra points are awarded for collecting tips, while bonus rounds involve locating the one beer that has not been shaken, and serving it. The game features four different levels: +Cowboys +Athletes +Punk Rockers +Aliens + 0.90 + 19830101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + tapper.zip + Midway Classics + 512x480 + media/mixrbv2/tapper.png + + + + targeth10.zip + Target Hits (ver 1.0, Checksum FBCB) + Target Hits is a shooting practice game for one or two players using a light gun. It contains three fixed-screen games with several scenes for each one: + +- Shooting Range + +- Desert Chariots + +- Track Wagons + +Next to points the player's overall performance is shown through silver and golden stars displayed in a row near the top of the screen. They represent a completed stage and scene respectively. The game keeps track of high scores. + 0.50 + 19940101T000000 + Gaelco + Gaelco + Lightgun Shooter + 32 + 1-2 + targeth.zip + Gaelco + 384x240 + media/mixrbv2/targeth.png + + + + targeth.zip + Target Hits (ver 1.1, Checksum 5152) + Target Hits is a shooting practice game for one or two players using a light gun. It contains three fixed-screen games with several scenes for each one: + +- Shooting Range + +- Desert Chariots + +- Track Wagons + +Next to points the player's overall performance is shown through silver and golden stars displayed in a row near the top of the screen. They represent a completed stage and scene respectively. The game keeps track of high scores. + 0.50 + 19940101T000000 + Gaelco + Gaelco + Lightgun Shooter + 32 + 1-2 + Gaelco + 384x240 + media/mixrbv2/targeth.png + + + + targetha.zip + Target Hits (ver 1.1, Checksum 86E1) + Target Hits is a shooting practice game for one or two players using a light gun. It contains three fixed-screen games with several scenes for each one: + +- Shooting Range + +- Desert Chariots + +- Track Wagons + +Next to points the player's overall performance is shown through silver and golden stars displayed in a row near the top of the screen. They represent a completed stage and scene respectively. The game keeps track of high scores. + 0.50 + 19940101T000000 + Gaelco + Gaelco + Lightgun Shooter + 32 + 1-2 + targeth.zip + Gaelco + 384x240 + media/mixrbv2/targeth.png + + + + tharrier.zip + Task Force Harrier + Task Force Harrier EX is a vertical shoot 'em up that was first seen in arcades and later ported to the Sega Megadrive/Genesis. + 0.60 + 19890101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Sammy Classics + 270 + 256x224 + media/mixrbv2/tharrier.png + + + + tharrieru.zip + Task Force Harrier (US) + Task Force Harrier EX is a vertical shoot 'em up that was first seen in arcades and later ported to the Sega Megadrive/Genesis. + 0.60 + 19890101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + tharrier.zip + Sammy Classics + 270 + 256x224 + media/mixrbv2/tharrier.png + + + + bigfghtr.zip + Tatakae! Big Fighter (Japan) + 0.60 + 19890101T000000 + Nichibutsu + Nichibutsu + Shooter / Run and Gun + 2903 + 1-2 + skyrobo.zip + Nichibutsu + 320x240 + media/mixrbv2/skyrobo.png + + + + trojanj.zip + Tatakai no Banka (Japan) + The game consist of six stages, where the player will face the usual series of small fry enemies, as well as a sub-boss at the middle of each stage and a boss at the end. The player is allowed to start the game at any of the six stages. However, the player must play through the entire game again after defeating the final boss, Achilles, in order to see the true ending (similarly to Ghosts'n Goblins). The player can continue after a game over depending on the dip switch settings. + 0.70 + 19860101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + trojan.zip + Capcom Classics + 256x240 + media/mixrbv2/trojan.png + + + + tazzmang2.zip + Tazz-Mania (bootleg on Galaxian hardware with Starfield) + A cross between "Robotron" and "Berzerk". + 0.70 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Run and Gun + 2903 + 1-2 + tazmania.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/tazmania.png + + + + tazzmang.zip + Tazz-Mania (bootleg on Galaxian hardware) + A cross between "Robotron" and "Berzerk". + 0.70 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Run and Gun + 2903 + 1-2 + tazmania.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/tazmania.png + + + + tazmania.zip + Tazz-Mania (set 1) + A cross between "Robotron" and "Berzerk". + 0.70 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Run and Gun + 2903 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/tazmania.png + + + + tazmani2.zip + Tazz-Mania (set 2) + A cross between "Robotron" and "Berzerk". + 0.70 + 19820101T000000 + Stern Electronics, Inc. + Stern Electronics + Shooter / Run and Gun + 2903 + 1-2 + tazmania.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/tazmania.png + + + + tbowlj.zip + Tecmo Bowl (Japan) + TECMO BOWL - The game of guts and glory! Now, strap on your helmet and go for it! Choose your team and select plays for your own game plan. From the snap, total control of every pass, block, run, and tackle is in your hands. Tecmo Bowl! + 0.90 + 19870101T000000 + Tecmo + Tecmo + Sports / Football + 2846 + 1-2 + tbowl.zip + Tecmo + 256x224 + media/mixrbv2/tbowl.png + + + + tbowlp.zip + Tecmo Bowl (World, prototype?) + TECMO BOWL - The game of guts and glory! Now, strap on your helmet and go for it! Choose your team and select plays for your own game plan. From the snap, total control of every pass, block, run, and tackle is in your hands. Tecmo Bowl! + 0.90 + 19870101T000000 + Tecmo + Tecmo + Sports / Football + 2846 + 1-2 + tbowl.zip + Tecmo + 256x224 + media/mixrbv2/tbowl.png + + + + tbowl.zip + Tecmo Bowl (World, set 1) + TECMO BOWL - The game of guts and glory! Now, strap on your helmet and go for it! Choose your team and select plays for your own game plan. From the snap, total control of every pass, block, run, and tackle is in your hands. Tecmo Bowl! + 0.90 + 19870101T000000 + Tecmo + Tecmo + Sports / Football + 2846 + 1-2 + Tecmo + 256x224 + media/mixrbv2/tbowl.png + + + + tbowla.zip + Tecmo Bowl (World, set 2) + TECMO BOWL - The game of guts and glory! Now, strap on your helmet and go for it! Choose your team and select plays for your own game plan. From the snap, total control of every pass, block, run, and tackle is in your hands. Tecmo Bowl! + 0.90 + 19870101T000000 + Tecmo + Tecmo + Sports / Football + 2846 + 1-2 + tbowl.zip + Tecmo + 256x224 + media/mixrbv2/tbowl.png + + + + tknight.zip + Tecmo Knight + Wild Fang is a sideways scrolling beat-em-up for 1 or 2 players with a medieval setting. Players take on a variety of orcs, ogres, demons and other mythical creatures in their bid to destroy Satan, decapitating each enemy they encounter in order to collect their skulls for points and power-ups. + +The player's character is an armor wearing beastmaster who sits atop of a fist-fighting giant. Upon the player's command, the player may switch his mount into a tiger and attack with his mace. Within each stage, there are also power-ups that allow the player to morph into a laser breathing dragon for a limited period of time. + +The player's life bar is represented by a fire breathing dragon in the upper corner. With each hit the player takes, the fire breath grows smaller. Once the life bar is depleted the player's mount is killed and the player travels on foot and fights with throwing daggers. If hit in this form then the player loses a life. The game is over when all of a players lives are lost. + 0.50 + 19890101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1-2 + wildfang.zip + Tecmo + 256x224 + media/mixrbv2/wildfang.png + + + + twsoc96.zip + Tecmo World Soccer '96 + Tecmo World Soccer '96 is a 2D soccer game. The game has a total of 32 playable teams, each with its own starting formation as well as ratings in three attributes: speed, power, and press. The teams are divided by groups of four into eight world regions: Europe I-IV, North America, South America, Africa, and Asia and Oceania. + +On offense you can perform short or long passes with the A and C buttons, respectively, while the B button performs a scoring kick. While on defense you can manually switch player control with the B button or slide tackle the opposing ball carrier with the A button. Most of the time the game plays like a traditional 2D soccer title, but when the ball carrier and a defending player face off against each other, the game changes into a feinting interface. + 0.70 + 19960101T000000 + Tecmo + Tecmo + Sports / Soccer + 2847 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/twsoc96.png + + + + teddybb.zip + TeddyBoy Blues (315-5115, New Ver.) + Teddy Boy Blues - Yohko Ishino is a strange and unique platform game by Sega. Guide Teddy Boy through an ever scrolling maze to defeat ninjas, snails, big mouthed hippos and other bizarre creatures. + +You shoot your enemies with a gun that shrinks them - then you must collect your shrunken foes for bonus points. If you don't collect them quick enough, they will fly down to the bottom of the screen and eat a portion of your time meter. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/teddybb.png + + + + teddybbo.zip + TeddyBoy Blues (315-5115, Old Ver.) + Teddy Boy Blues - Yohko Ishino is a strange and unique platform game by Sega. Guide Teddy Boy through an ever scrolling maze to defeat ninjas, snails, big mouthed hippos and other bizarre creatures. + +You shoot your enemies with a gun that shrinks them - then you must collect your shrunken foes for bonus points. If you don't collect them quick enough, they will fly down to the bottom of the screen and eat a portion of your time meter. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + teddybb.zip + Sega Classics + 512x224 + media/mixrbv2/teddybb.png + + + + teddybbobl.zip + TeddyBoy Blues (bootleg) + Teddy Boy Blues - Yohko Ishino is a strange and unique platform game by Sega. Guide Teddy Boy through an ever scrolling maze to defeat ninjas, snails, big mouthed hippos and other bizarre creatures. + +You shoot your enemies with a gun that shrinks them - then you must collect your shrunken foes for bonus points. If you don't collect them quick enough, they will fly down to the bottom of the screen and eat a portion of your time meter. + 0.70 + 19850101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + teddybb.zip + Sega Classics + 512x224 + media/mixrbv2/teddybb.png + + + + tmht2pa.zip + Teenage Mutant Hero Turtles (UK 2 Players, version ?) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmht2p.zip + Teenage Mutant Hero Turtles (UK 2 Players, version U) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmhtb.zip + Teenage Mutant Hero Turtles (UK 4 Players, version ?) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmht.zip + Teenage Mutant Hero Turtles (UK 4 Players, version F) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmhta.zip + Teenage Mutant Hero Turtles (UK 4 Players, version S) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmht22pe.zip + Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver. EBA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt2.zip + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tmht24pe.zip + Teenage Mutant Hero Turtles - Turtles in Time (4 Players ver. EAA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt2.zip + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tmnta.zip + Teenage Mutant Ninja Turtles (Asia 4 Players, version ?) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmnti.zip + Teenage Mutant Ninja Turtles (FMV Demo) + Neo-Geo + media/mixrbv2/tmnti.png + + + tmntia.zip + Teenage Mutant Ninja Turtles (FMV Demo, alt) + tmnti.zip + Neo-Geo + media/mixrbv2/tmnti.png + + + tmnt2pj.zip + Teenage Mutant Ninja Turtles (Japan 2 Players, version 1) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmntj.zip + Teenage Mutant Ninja Turtles (Japan 4 Players, version 2) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmnt2po.zip + Teenage Mutant Ninja Turtles (Oceania 2 Players, version ?) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmntuc.zip + Teenage Mutant Ninja Turtles (US 4 Players, version H) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmntub.zip + Teenage Mutant Ninja Turtles (US 4 Players, version J) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmntua.zip + Teenage Mutant Ninja Turtles (US 4 Players, version N) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmntu.zip + Teenage Mutant Ninja Turtles (US 4 Players, version R) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt.zip + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmnt.zip + Teenage Mutant Ninja Turtles (World 4 Players, version X) + Teenage Mutant Ninja Turtles is a side-scrolling beat 'em up released by Konami in 1989. It is based on the first Teenage Mutant Ninja Turtles animated series which began airing in the winter of 1987. The player chooses from one of the four Ninja Turtles: Leonardo, Michelangelo, Donatello, and Raphael. After Shredder kidnaps the Turtles' friend April O'Neil and their mentor Splinter, they must give chase, save their comrades, and defeat the evil Shredder. Up to four players (two in some versions) can take control of any of the Turtles. Donatello has slower attacks but a longer range, Michelangelo and Raphael have faster attacks but a shorter range, and Leonardo is a well-rounded Turtle with average range and speed. Most of the enemies the Turtles face are the Foot Soldiers, all color-coded to indicate their attack patterns and weapon of choices. Some enemies, such as the standard purple-clad Foot Soldiers and Roadkill Rodney robots, have the ability to restrain the Turtles' mobility and drain their health, leaving the player open to attack for other enemies. The bosses in the game include Rocksteady and Bebop (individually at first in that order, and later the two of them together), Baxter Stockman, Granitor, General Traag, Krang, and Shredder himself. + 0.80 + 19890101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 320x224 + media/mixrbv2/tmnt.png + + + + tmnt22pu.zip + Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver. UDA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt2.zip + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tmnt2a.zip + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver. ADA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt2.zip + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tmnt2.zip + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver. UAA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tmnt24pu.zip + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver. UEA) + The sequel to 1989's hugely successful original, 'Turtles in Time' once more sees the four heroes taking on Shredder and his army. Gameplay remains similar to the original game, but the experience is enhanced further with the obligatory improved graphics and sound effects. 'Turtles in Time' also features a larger variety of levels, as now the battle between good and evil rages across time as the Turtles travel to prehistoric, pirate and Wild West times in their pursuit of the elusive Splinter. + +Yet again, Konami's mastery of the genre was in evidence as the manic energy and humour of the cartoon and comic-book series upon which the game is based was captured perfectly. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + tmnt2.zip + Konami Classics + 304x224 + media/mixrbv2/tmnt2.png + + + + tekipaki.zip + Teki Paki + Teki-Paki (c) 1991 Toaplan. - TECHNICAL - Game ID : TP-020 Main CPU : 68000 (@ 10 Mhz) Sound Chips : YM3812 (@ 3.375 Mhz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Released in June 1991. This game in known in Japan and Asia as "Te + 0.50 + 19910101T000000 + Toaplan + Toaplan + Puzzle-Game / Fall + 2912 + 1-2 + Toaplan + 320x240 + media/mixrbv2/tekipaki.png + + + + tekipakit.zip + Teki Paki (location test) + Teki-Paki (c) 1991 Toaplan. - TECHNICAL - Game ID : TP-020 Main CPU : 68000 (@ 10 Mhz) Sound Chips : YM3812 (@ 3.375 Mhz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Released in June 1991. This game in known in Japan and Asia as "Te + 0.50 + 19910101T000000 + Toaplan + Toaplan + Puzzle-Game / Fall + 2912 + 1-2 + tekipaki.zip + Toaplan + 320x240 + media/mixrbv2/tekipaki.png + + + + temped.zip + TempEd + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempest1.zip + Tempest (rev 1) + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempest1r.zip + Tempest (rev 1, Revised Hardware) + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempest2.zip + Tempest (rev 2) + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempest3.zip + Tempest (rev 3) + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempest.zip + Tempest (rev 3, Revised Hardware) + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + tempall.zip + Tempest All Levels + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + temptube.zip + Tempest Tubes + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + temptwst.zip + Tempest Twisted + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + dynwarjr.zip + Tenchi wo Kurau (Japan Resale Ver.) + This game is a side-scrolling beat-em-up based on Japanese manga books of the same name and is a re-enactment of the historical battles between the Kingdom of Shu and the Yellow Turban rebels. Up to two players assume the roles of one of the four Chinese generals riding on horseback whose goal is to wipe out the 'Huang Ching', the organization responsible for the unrest of the Han Dynasty, and to eventually defeat the tyrant, Dong Zhuo. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + dynwar.zip + Capcom Play System + 384x224 + media/mixrbv2/dynwar.png + + + + dynwarj.zip + Tenchi wo Kurau (Japan) + This game is a side-scrolling beat-em-up based on Japanese manga books of the same name and is a re-enactment of the historical battles between the Kingdom of Shu and the Yellow Turban rebels. Up to two players assume the roles of one of the four Chinese generals riding on horseback whose goal is to wipe out the 'Huang Ching', the organization responsible for the unrest of the Han Dynasty, and to eventually defeat the tyrant, Dong Zhuo. + 0.80 + 19890101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + dynwar.zip + Capcom Play System + 384x224 + media/mixrbv2/dynwar.png + + + + wofj.zip + Tenchi wo Kurau II - Sekiheki no Tatakai (921031 Japan) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofch.zip + Tenchi wo Kurau II - Sekiheki no Tatakai (CPS Changer, 921031 Japan) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System + 384x224 + media/mixrbv2/wofch.png + + + + wofjh.zip + Tenchi wo Kurau II - Sekiheki no Tatakai (hack, 921031 Japan) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofjdr.zip + Tenchi wo Kurau II - Sekiheki no Tatakai (Master Edition) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofchp.zip + Tenchi wo Kurau II - Sekiheki no Tatakai (PS/SS Version) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wofch.zip + Capcom Play System + 384x224 + media/mixrbv2/wofch.png + + + + tengai.zip + Tengai (World) + Nice horizontal shoot'em up with 5 selectable characters who have their own storyline and ending. + 0.60 + 19960101T000000 + Psikyo + Psikyo + Shoot'em Up + 79 + 1-2 + Psikyo + 320x224 + media/mixrbv2/tengai.png + + + + terracren.zip + Terra Cresta (YM2203) + Terra Cresta is a vertically-scrolling shoot-em-up set over a constantly scrolling landscape of islands and enemy installations. The player is under constant attack from enemy spaceship waves, ground-based guns and turrets, dinosaurs and three different mothercraft ships. + +The levels are littered with ground-based silos bearing numbers between 2 and 5. These can be shot to release a player ship component, which then attaches to the player's current ship, increasing both its size and firepower. Power-ups available are 2-Wide shot, 3-Rear Shot, 4-Front cannon and 5-Rear shield. + +Using the 'Formation' button splits the ship parts into a formation for limited time, giving increased fire power. The number of parts acquired determines the formation. For example, if the player has picked up two ship parts then a triangle is formed, with the player's main ship at the rear of the formation, with additional two ship components positioned at the front edge of the triangle. + +When all four numbered parts have been collected, the player's ship transforms into a flaming Phoenix, and is indestructible for a limited time. + 0.70 + 19850101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + terracre.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/terracre.png + + + + terracre.zip + Terra Cresta (YM3526 set 1) + Terra Cresta is a vertically-scrolling shoot-em-up set over a constantly scrolling landscape of islands and enemy installations. The player is under constant attack from enemy spaceship waves, ground-based guns and turrets, dinosaurs and three different mothercraft ships. + +The levels are littered with ground-based silos bearing numbers between 2 and 5. These can be shot to release a player ship component, which then attaches to the player's current ship, increasing both its size and firepower. Power-ups available are 2-Wide shot, 3-Rear Shot, 4-Front cannon and 5-Rear shield. + +Using the 'Formation' button splits the ship parts into a formation for limited time, giving increased fire power. The number of parts acquired determines the formation. For example, if the player has picked up two ship parts then a triangle is formed, with the player's main ship at the rear of the formation, with additional two ship components positioned at the front edge of the triangle. + +When all four numbered parts have been collected, the player's ship transforms into a flaming Phoenix, and is indestructible for a limited time. + 0.70 + 19850101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/terracre.png + + + + terracreo.zip + Terra Cresta (YM3526 set 2) + Terra Cresta is a vertically-scrolling shoot-em-up set over a constantly scrolling landscape of islands and enemy installations. The player is under constant attack from enemy spaceship waves, ground-based guns and turrets, dinosaurs and three different mothercraft ships. + +The levels are littered with ground-based silos bearing numbers between 2 and 5. These can be shot to release a player ship component, which then attaches to the player's current ship, increasing both its size and firepower. Power-ups available are 2-Wide shot, 3-Rear Shot, 4-Front cannon and 5-Rear shield. + +Using the 'Formation' button splits the ship parts into a formation for limited time, giving increased fire power. The number of parts acquired determines the formation. For example, if the player has picked up two ship parts then a triangle is formed, with the player's main ship at the rear of the formation, with additional two ship components positioned at the front edge of the triangle. + +When all four numbered parts have been collected, the player's ship transforms into a flaming Phoenix, and is indestructible for a limited time. + 0.70 + 19850101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + terracre.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/terracre.png + + + + terracrea.zip + Terra Cresta (YM3526 set 3) + Terra Cresta is a vertically-scrolling shoot-em-up set over a constantly scrolling landscape of islands and enemy installations. The player is under constant attack from enemy spaceship waves, ground-based guns and turrets, dinosaurs and three different mothercraft ships. + +The levels are littered with ground-based silos bearing numbers between 2 and 5. These can be shot to release a player ship component, which then attaches to the player's current ship, increasing both its size and firepower. Power-ups available are 2-Wide shot, 3-Rear Shot, 4-Front cannon and 5-Rear shield. + +Using the 'Formation' button splits the ship parts into a formation for limited time, giving increased fire power. The number of parts acquired determines the formation. For example, if the player has picked up two ship parts then a triangle is formed, with the player's main ship at the rear of the formation, with additional two ship components positioned at the front edge of the triangle. + +When all four numbered parts have been collected, the player's ship transforms into a flaming Phoenix, and is indestructible for a limited time. + 0.70 + 19850101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + terracre.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/terracre.png + + + + terraf.zip + Terra Force + A standard shooter. All levels are divided in 2 parts : overworld with vertical direction and underground with horizontal. + 0.70 + 19870101T000000 + Nihon Bussan + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 320x240 + media/mixrbv2/terraf.png + + + + terrafj.zip + Terra Force (Japan) + A standard shooter. All levels are divided in 2 parts : overworld with vertical direction and underground with horizontal. + 0.70 + 19870101T000000 + Nihon Bussan + Nichibutsu + Shoot'em Up + 79 + 1-2 + terraf.zip + Nichibutsu + 320x240 + media/mixrbv2/terraf.png + + + + terrafb.zip + Terra Force (Japan, bootleg set 2) + A standard shooter. All levels are divided in 2 parts : overworld with vertical direction and underground with horizontal. + 0.70 + 19870101T000000 + Nihon Bussan + Nichibutsu + Shoot'em Up + 79 + 1-2 + terraf.zip + Nichibutsu + 320x240 + media/mixrbv2/terraf.png + + + + terrafjb.zip + Terra Force (Japan, bootleg with additional Z80) + A standard shooter. All levels are divided in 2 parts : overworld with vertical direction and underground with horizontal. + 0.70 + 19870101T000000 + Nihon Bussan + Nichibutsu + Shoot'em Up + 79 + 1-2 + terraf.zip + Nichibutsu + 320x240 + media/mixrbv2/terraf.png + + + + terrafu.zip + Terra Force (US) + A standard shooter. All levels are divided in 2 parts : overworld with vertical direction and underground with horizontal. + 0.70 + 19870101T000000 + Nihon Bussan + Nichibutsu + Shoot'em Up + 79 + 1-2 + terraf.zip + Nichibutsu + 320x240 + media/mixrbv2/terraf.png + + + + cterrani.zip + Terranean (DECO Cassette) (US) + 0.50 + 19810101T000000 + Data East + Data East + Shooter / Space Invaders Like + 2900 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cterrani.png + + + + ctsttape.zip + Test Tape (DECO Cassette) (US) + Test Tape (c) 1981 Data East. - TRIVIA - This Test Tape runs on the DECO Cassette System hardware. - SOURCES - Game's rom. + 0.50 + 19810101T000000 + Data East + Data East + Various + 39 + 1 + non Jeu + 270 + 256x240 + media/mixrbv2/ctsttape.png + + + + atetrisb.zip + Tetris (bootleg set 1) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + atetris.zip + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + atetrisb2.zip + Tetris (bootleg set 2) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + atetris.zip + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + tetrisbl.zip + Tetris (bootleg) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + atetrisc.zip + Tetris (cocktail set 1) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + atetris.zip + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + atetrisc2.zip + Tetris (cocktail set 2) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + atetris.zip + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + tetrsark.zip + Tetris (D.R. Korea) + 0.50 + Puzzle-Game + 26 + Taito Classics + 256x224 + media/mixrbv2/tetrsark.png + + + + tetrista.zip + Tetris (Japan, B-System, YM2203) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetrist.zip + Tetris (Japan, B-System, YM2610) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetrisse.zip + Tetris (Japan, System E) + The Sega versions of Tetris are played against backgrounds seemingly sourced from around the world depicting scenes of world evolution. As the player's level increases, the background changes, developing from the earliest known history of the Earth to a futuristic city. A preview of the next Tetrimino can be seen above the Tetris playing field. + 19880101T000000 + SEGA + Puzzle-Game + 26 + Sega Classics + media/mixrbv2/tetrisse.png + + + + tetristh.zip + Tetris (Japan, Taito H-System) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + atetris.zip + Tetris (set 1) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + tetris1d.zip + Tetris (set 1, Japan, System 16B, FD1094 317-0091 decrypted) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetris1.zip + Tetris (set 1, Japan, System 16B, FD1094 317-0091) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + atetrisa.zip + Tetris (set 2) + This shape-based Russian mind-bender set the stage for innumerable puzzle games to follow + 0.90 + 19880101T000000 + bootleg + Atari + Puzzle-Game / Fall + 2912 + 1 + atetris.zip + Atari Classics + 336x240 + media/mixrbv2/atetris.png + + + + tetris2d.zip + Tetris (set 2, Japan, System 16B, FD1094 317-0092 decrypted) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetris2.zip + Tetris (set 2, Japan, System 16B, FD1094 317-0092) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetris3d.zip + Tetris (set 3, Japan, System 16A, FD1094 317-0093a decrypted) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetris3.zip + Tetris (set 3, Japan, System 16A, FD1094 317-0093a) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetrisd.zip + Tetris (set 4, Japan, System 16A, FD1094 317-0093 decrypted) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + tetris.zip + Sega Classics + media/mixrbv2/tetris.png + + + + tetris.zip + Tetris (set 4, Japan, System 16A, FD1094 317-0093) + Tetris was a very popular game in Japan. Taito partner up with Sega to convert unpopular games like "Master of weapon" or "Rastan saga 2" to Tetris (on the Taito B system). Later, Taito produced Sega's tetris on the Taito H system. + 19880101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + Sega Classics + media/mixrbv2/tetris.png + + + + tetrbx.zip + Tetris / Bloxeed (Korean System 16 bootleg) (ISG Selection Master Type 2006) + Bloxeed is a Tetris variant. The player is presented with an empty field and from the top there is one block at a time falling down. There are blocks of various forms available which can be rotated and moved left and right. The goal is create full lines which then disappear and reward points for the high score list. The more lines are cleared at once (the maximum are four), the more points are earned. When lines are cleared, the player's level rises and so does the falling speed of the blocks. At the top of the screen is a preview of the next block. + 0.40 + 19900101T000000 + SEGA + SEGA + Puzzle-Game + 26 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/tetrbx.png + + + + tetrisp2ja.zip + Tetris Plus 2 (Japan, V2.1) + A puzzle game where you arrange the bricks to make horizontal rows of bricks so an explorer can get to the exit. + 19970101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + tetrisp2.zip + Jaleco + 320x224 + media/mixrbv2/tetrisp2.png + + + + tetrisp2j.zip + Tetris Plus 2 (Japan, V2.2) + A puzzle game where you arrange the bricks to make horizontal rows of bricks so an explorer can get to the exit. + 19970101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + tetrisp2.zip + Jaleco + 320x224 + media/mixrbv2/tetrisp2.png + + + + tetrisp2a.zip + Tetris Plus 2 (World, V2.7) + A puzzle game where you arrange the bricks to make horizontal rows of bricks so an explorer can get to the exit. + 19970101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + tetrisp2.zip + Jaleco + 320x224 + media/mixrbv2/tetrisp2.png + + + + tetrisp2.zip + Tetris Plus 2 (World, V2.8) + A puzzle game where you arrange the bricks to make horizontal rows of bricks so an explorer can get to the exit. + 19970101T000000 + Jaleco + Jaleco + Puzzle-Game / Fall + 2912 + 1-2 + Jaleco + 320x224 + media/mixrbv2/tetrisp2.png + + + + thoop2.zip + TH Strikes Back (Non North America, Version 1.0, Checksum 020E0867) + In this sequel to "Thunder Hoop", you control a powerful ESP Rambo-like character, throwing sonic rays from his hands and destroying mutated enemies. + 0.70 + 19940101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1-2 + Gaelco + 320x240 + media/mixrbv2/thoop2.png + + + + thoop2a.zip + TH Strikes Back (Non North America, Version 1.0, Checksum 020EB356) + In this sequel to "Thunder Hoop", you control a powerful ESP Rambo-like character, throwing sonic rays from his hands and destroying mutated enemies. + 0.70 + 19940101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1-2 + thoop2.zip + Gaelco + 320x240 + media/mixrbv2/thoop2.png + + + + alphaxz.zip + The Alphax Z (Japan) + Your space colony is under attack! you have to defend the enemies advent, your mission is under codename of "Mission 660". You must destroy wave after wave of different types of enemy ships advancing through the deep space and grab the power star item to increase and upgrade your spaceship. Eventually you make it to a big enemy space ship, you must shoot several shots for destroy, then the cycle level starts over again. + 0.50 + 19860101T000000 + Kaneko + Taito + Shoot'em Up + 79 + 1-2 + m660.zip + Taito Classics + 270 + 256x240 + media/mixrbv2/m660.png + + + + mrflea.zip + The Amazing Adventures of Mr. F. Lea + A four part game where you get Mr. F. Lea where he wants to go (on the back of some lush, tasty dog, of course). You run through lawns and across highways, on the tails of other dogs, and up a hill to get to your destination. Occasionally you even make a run for a dog's head. + 0.70 + 19820101T000000 + Pacific Novelty + Pacific Novelty + Platform / Run Jump + 2915 + 1-2 + Mame + 270 + 256x248 + media/mixrbv2/mrflea.png + + + + anteateruk.zip + The Anteater (UK) + Anteater is an abstract maze game in which the player controls an anteater that elongates its tongue through maze-like anthills eating ants and ant larvae. The object of the game is to eat all of the larvae - represented as round dots - before the timer runs out. Once all larvae have been eaten, play moves onto the next stage. + +Players can only eat ants with the tip of the anteater's tongue, if an ant touches any other part of the tongue, the anteater is bitten and a player life is lost. As well as the ants, worms also roam the stages, worms will not harm the anteater upon contact with the extended tongue but if the head of the worm touches the tongue's tip, the player loses a life. Worms can be safely eaten from behind. + +Large queen ants are situated at the bottom of the nest and eating these will temporarily clear all insects from the screen. + +Anteater has a short day-night cycle represented by a moving Sun at the top of the screen. Once the sun has traveled across the screen and night falls, a spider will appear. The spider climbs down the anteater's tongue, taking a life if it reaches the tongue's tip. The spider can only be killed by eating a queen ant. + 0.70 + 19820101T000000 + Tago Electronics + Tago Electronics + Action + 10 + 1-2 + anteater.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/anteater.png + + + + astyanax.zip + The Astyanax (EPROM version) + The Astyanax is a side-scrolling platform action game set in a fantasy world. The hero sets out to slay the evil wizard terrorizing the land. He is armed with an ax and also has a magic lightning spell that can be powered-up two times. Magic upgrades and health potions can be found in small stone pillars. The player needs to beat monsters in a number of locales, jumping across pits and fighting bosses at the end of stages. Two-palyer co-op is supported, with the second player being palette-swap of Player 1. + +The game was designed by Tokuhiro Takemori who previously worked on Legendary Axe, and the basic game mechanic is similar -- in order to deal heavy blow with the axe the player needs to stop swinging it for a while. The NES version released after the Arcade game, while generally having same gameplay, features completely different level layouts, enemy designs and story. + 0.70 + 19890101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + Jaleco + 256x224 + media/mixrbv2/astyanax.png + + + + astyanaxa.zip + The Astyanax (mask ROM version) + The Astyanax is a side-scrolling platform action game set in a fantasy world. The hero sets out to slay the evil wizard terrorizing the land. He is armed with an ax and also has a magic lightning spell that can be powered-up two times. Magic upgrades and health potions can be found in small stone pillars. The player needs to beat monsters in a number of locales, jumping across pits and fighting bosses at the end of stages. Two-palyer co-op is supported, with the second player being palette-swap of Player 1. + +The game was designed by Tokuhiro Takemori who previously worked on Legendary Axe, and the basic game mechanic is similar -- in order to deal heavy blow with the axe the player needs to stop swinging it for a while. The NES version released after the Arcade game, while generally having same gameplay, features completely different level layouts, enemy designs and story. + 0.70 + 19890101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + astyanax.zip + Jaleco + 256x224 + media/mixrbv2/astyanax.png + + + + battroad.zip + The Battle-Road + A driving shooter where you play as a red jeep shooting at enemy cars and motorcycles. + + You start out on a adventure from general headquarters by driving your armored jeep with a high-powered bazooka. You have to run in the midst of deadly enemies. Shoot your bazooka and destroy all enemy armored cars, motorcycles and batteries, while avoding mines and soldiers. There are five bases on the way to your last destination, front base. Refuel your jeep and get additional tires there. + +You will find an operational map beside the screen commanding a panoramic view of the battlefield. The battlefield consists of six different scenes: a forest, the sea, a farm, a valley, a city, and waste. There are 32 possible routes that you can take but whichever route you take, your path will have deadly enemies awaiting you. + 19840101T000000 + Irem + Irem + Shooter / Vehicle, Vertical + 2921 + 1-2 + Irem Classics + 270 + 256x256 + media/mixrbv2/battroad.png + + + + berlwall.zip + The Berlin Wall + The player takes control of a boy who must use his hammer to break the blocks that form part of the colourful, platform-strewn levels that form each stage. These holes act as traps for the many patrolling monsters and once an enemy has fallen into a hole, the player must then use the hammer on the enemy to make it fall through the hole and down to the platform below - causing it to change into fruit, which can then be collected. This game is a reworking of the 1980 classic, "Space Panic". + 0.40 + 19910101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + Kaneko + 256x224 + media/mixrbv2/berlwall.png + + + + berlwallt.zip + The Berlin Wall (bootleg ?) + The player takes control of a boy who must use his hammer to break the blocks that form part of the colourful, platform-strewn levels that form each stage. These holes act as traps for the many patrolling monsters and once an enemy has fallen into a hole, the player must then use the hammer on the enemy to make it fall through the hole and down to the platform below - causing it to change into fruit, which can then be collected. This game is a reworking of the 1980 classic, "Space Panic". + 0.40 + 19910101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + berlwall.zip + Kaneko + 256x224 + media/mixrbv2/berlwall.png + + + + berlwallk.zip + The Berlin Wall (Korea) + The player takes control of a boy who must use his hammer to break the blocks that form part of the colourful, platform-strewn levels that form each stage. These holes act as traps for the many patrolling monsters and once an enemy has fallen into a hole, the player must then use the hammer on the enemy to make it fall through the hole and down to the platform below - causing it to change into fruit, which can then be collected. This game is a reworking of the 1980 classic, "Space Panic". + 0.40 + 19910101T000000 + Kaneko + Kaneko + Platform / Run Jump + 2915 + 1-2 + berlwall.zip + Kaneko + 256x224 + media/mixrbv2/berlwall.png + + + + bigprowr.zip + The Big Pro Wrestling! + In this early arcade wrestling game, you control the team of Terry and Sunny who continuously challenge The Heel Team in a series of tag team matches. + +During each match of this game, whenever you come into contact with one of The Heel Team, you will be given a choice of which attack you want to use against your opponent. These moves include The Straight Jab, The Karate Chop, The Body Slam, The Drop Kick, The Piledriver, The Brain Buster, The Lariat and The Cobra Twist. Press the Action button to select one of those attacks whenever they appear on the screen. + +For each of The Heel Team, one of them is fat and wears black pants and the other wears a red mask and white tights. Moves such as The Brain Buster, The Piledriver, The Lariat and The Cobra Twist will not work when fighting the fat character. + 0.30 + 19830101T000000 + Technos Japan Corp. + Technos Japan Corp. + Sports / Wrestling + 2861 + 1-2 + Technos + 270 + 256x240 + media/mixrbv2/bigprowr.png + + + + billiard.zip + The Billiards + Pool game released by Konami in 1981 for the arcade + 0.30 + 19810101T000000 + Konami + Konami + Sports / Pool + 3028 + 1-2 + hustler.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/hustler.png + + + + bounty.zip + The Bounty + Bring in foes dead or alive in this Western themed FMV light gun game from American Laser Games. + 0.30 + 19820101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + Mame + 256x224 + media/mixrbv2/bounty.png + + + + bounty2.zip + The Bounty (set 2) + Bring in foes dead or alive in this Western themed FMV light gun game from American Laser Games. + 0.30 + 19820101T000000 + Orca Corporation + Orca + Race, Driving / Boat + 2911 + 1-2 + bounty.zip + Mame + 256x224 + media/mixrbv2/bounty.png + + + + ctribeb.zip + The Combatribes (bootleg set 1) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + ctribe.zip + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + ctribeb2.zip + The Combatribes (bootleg set 2) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + ctribe.zip + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + ctribej.zip + The Combatribes (Japan) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + ctribe.zip + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + ctribeu1.zip + The Combatribes (US , rev 1) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + ctribe.zip + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + ctribe.zip + The Combatribes (US, rev 2, set 1) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + ctribeua.zip + The Combatribes (US, rev 2, set 2) + Three player simultaneous melee battle in which larger-than-life fighters battle against rival gang members. As well as being able to pick up objects such as motorcycles etc. and throw them at the enemies, players also have a number of interesting fighting moves that can be unleashed upon their opponents. These include picking up unconscious enemies and hitting OTHER enemies with them, as well as banging two enemies' heads together and smashing recumbent enemies' heads into the ground to finish them off. + 0.50 + 19900101T000000 + Technos Japan Corp. + Tecmo + Beat'em Up + 1 + 1-3 + ctribe.zip + Technos + 320x240 + media/mixrbv2/ctribe.png + + + + dealer.zip + The Dealer + 19840101T000000 + Epos Corporation + Epos Corporation + Casino / Cards + 2872 + 1 + Visco + 270 + 272x236 + media/mixrbv2/dealer.png + + + + thedeep.zip + The Deep (Japan) + You control one or two boats floating along the high seas. The boats are armed with depth charges for dropping on the aquatic wildlife and submarines in the depth far below. Homing torpedoes, Polaris missiles, mines, Stingray style vessels and other boat-wrecking hazards make up the threats to avoid or destroy. Bonus capsules which float up to the surface boost the boat's speed, increase depth charge power, give the player temporary invincibility and other normal features but of a marine vein. The depth charges take their time to float to their target so plan ahead using the map, submarines at different heights in the water pose further problems. This game also has good backgrounds. + 0.50 + 19870101T000000 + Wood Place + Wood Place Inc. + Shooter / Space Invaders Like + 2900 + 1-2 + Mame + 270 + 256x248 + media/mixrbv2/thedeep.png + + + + dbldynj.zip + The Double Dynamites (Japan, 13NOV89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop the attack before its too late. Features nice graphics & an interesting blend of shooter & beat-em up gameplay elements! + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + Seibu Kaihatsu + 256x224 + media/mixrbv2/dbldynj.png + + + + dbldynu.zip + The Double Dynamites (US, 13NOV89) + A mad scientist is creating an army of powerful mutant soldiers in order to conquer the world. Only Dynamite Duke, a battle-hardened elite soldier with an incredibly devastating bionic arm stands a chance to stop the attack before its too late. Features nice graphics & an interesting blend of shooter & beat-em up gameplay elements! + 0.70 + 19890101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Shooter / 3rd person + 2899 + dbldynj.zip + Seibu Kaihatsu + 256x224 + media/mixrbv2/dbldynj.png + + + + elecyoyo.zip + The Electric Yo-Yo (set 1) + In The Electric Yo-Yo you guide your yo-yo to clear each level by collecting dots and avoiding enemies. + 0.70 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 270 + 256x256 + media/mixrbv2/elecyoyo.png + + + + elecyoyo2.zip + The Electric Yo-Yo (set 2) + In The Electric Yo-Yo you guide your yo-yo to clear each level by collecting dots and avoiding enemies. + 0.70 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + elecyoyo.zip + Taito Classics + 270 + 256x256 + media/mixrbv2/elecyoyo.png + + + + esb.zip + The Empire Strikes Back + The third arcade outing based on the legendary trilogy of films; "Empire Strikes Back" eschews Jedi's Zaxxon-inspired gameplay and returns once more to the 3D vector graphics of the first game. Empire features four stages of play, with the first two putting the player in control "Luke Skywalker's" SnowSpeeder, and the second two in control of "Han Solo's" Millennium Falcon. + +The first level, Probots, takes place on the ice planet of Hoth, with the player flying the Snowspeeder over the planet's surface to find and destroy the Empire's search droids that are sending signals to the Empire warning them of the rebels' presence. +The second Snowspeeder stage sees the player taking on the Empire's "AT-AT" Imperial walkers, as well as a number of smaller, bi-pedal "AT-ST" walkers. On this level, as well as the standard guns, the Snowspeeder is armed with a limited number of harpoons; these can be fired at the AT-AT's legs to send them crashing to the ground. AT-ATs can also be destroyed by shooting a small, highlighted area on the AT-ATs' head. +The third level has the player piloting the Millennium Falcon and is a repeat of the original game's in-space Tie Fighter battle. +For the fourth and final level the player must pilot the Millennium Falcon safely through a densely packed and fast-moving asteroid field. + +Bonus points can be earned by destroying a certain number of targets. A JEDI letter will also be awarded in addition to the bonus points. Once all the letters that spell the word 'JEDI' have been awarded, players will have attained true JEDI FORCE, making them invincible to the Empire's forces for a limited amount of time. + +In all levels of play, collisions with objects and enemy shots will cause damage to the player's deflector shields. + 0.70 + 19850101T000000 + Atari + Atari + Shooter / Plane, 1st person + 2892 + 1 + Atari Classics + media/mixrbv2/esb.png + + + + theend.zip + The End + The End &copy; 1980 Konami Industry Company, Limited. + +In &#039;The End&#039; you control a ship whose mission is to zap as many bug-ships as possible, before you run out of lives, or the bugs manage to spell out the word END with little chunks of brick. You can move left and right, and the bugs attack from the top of the screen, coming out of a large mothership. But the bugs have another mission besides just blindly attacking you. That other mission is to systematically steal the bricks from your three bases, and use them to spell out the word END up near the top of the screen. + 0.70 + 19800101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/theend.png + + + + theendss.zip + The End (SegaSA / Sonic) + The End &copy; 1980 Konami Industry Company, Limited. + +In &#039;The End&#039; you control a ship whose mission is to zap as many bug-ships as possible, before you run out of lives, or the bugs manage to spell out the word END with little chunks of brick. You can move left and right, and the bugs attack from the top of the screen, coming out of a large mothership. But the bugs have another mission besides just blindly attacking you. That other mission is to systematically steal the bricks from your three bases, and use them to spell out the word END up near the top of the screen. + 0.70 + 19800101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + theend.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/theend.png + + + + theends.zip + The End (Stern) + The End &copy; 1980 Konami Industry Company, Limited. + +In &#039;The End&#039; you control a ship whose mission is to zap as many bug-ships as possible, before you run out of lives, or the bugs manage to spell out the word END with little chunks of brick. You can move left and right, and the bugs attack from the top of the screen, coming out of a large mothership. But the bugs have another mission besides just blindly attacking you. That other mission is to systematically steal the bricks from your three bases, and use them to spell out the word END up near the top of the screen. + 0.70 + 19800101T000000 + Konami + Konami + Shooter / Space Invaders Like + 2900 + 1-2 + theend.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/theend.png + + + + teot.zip + The Eye of Typhoon (Beta 3 Version) + Mame + media/mixrbv2/teot.png + + + flstory.zip + The FairyLand Story + The Fairyland Story is a precursor to 1986's "Bubble Bobble", the player controls a spell-casting elf who turns evil wizards, witches and other enemies into cakes and either pushes them from the platform ledges, or shoots then repeatedly to destroy them. If an enemy touches the player character, the elf becomes entrapped in a magic bubble and floats away. Each level takes place inside a variety of castles. + 0.50 + 19850101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/flstory.png + + + + flstoryj.zip + The FairyLand Story (Japan) + The Fairyland Story is a precursor to 1986's "Bubble Bobble", the player controls a spell-casting elf who turns evil wizards, witches and other enemies into cakes and either pushes them from the platform ledges, or shoots then repeatedly to destroy them. If an enemy touches the player character, the elf becomes entrapped in a magic bubble and floats away. Each level takes place inside a variety of castles. + 0.50 + 19850101T000000 + Taito + Taito + Platform / Run Jump + 2915 + 1-2 + flstory.zip + Taito Classics + 256x224 + media/mixrbv2/flstory.png + + + + froundl.zip + The Final Round (ver. L) + Boxing Game. You play the role of Jabbin Jim who fights his way through different opponnents each tougher than the last. Some of the opponents are recognisable from the Rocky movies. Your boxer has three attributes: strength, speed, and staminia, and these all contribute to his overall power rating. The attributes can be improved by taking part in mini games between the rounds. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Boxing + 2929 + 1-2 + fround.zip + Konami Classics + 320x224 + media/mixrbv2/fround.png + + + + fround.zip + The Final Round (ver. M) + Boxing Game. You play the role of Jabbin Jim who fights his way through different opponnents each tougher than the last. Some of the opponents are recognisable from the Rocky movies. Your boxer has three attributes: strength, speed, and staminia, and these all contribute to his overall power rating. The attributes can be improved by taking part in mini games between the rounds. + 0.60 + 19880101T000000 + Konami + Konami + Sports / Boxing + 2929 + 1-2 + Konami Classics + 320x224 + media/mixrbv2/fround.png + + + + theglob.zip + The Glob + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + theglob2.zip + The Glob (earlier) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + theglobp.zip + The Glob (Pac-Man hardware) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + theglobpb.zip + The Glob (Pac-Man hardware, bootleg) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + theglob3.zip + The Glob (set 3) + Guide the insatiable Super Glob through corridors, up and down the elevators and through the side tunnels in his never-ending search for snacks. An assortment of crafty animals relentlessly pursue Toby and fight him for control of the elevators. Stop them or avoid them and munch a dozen different snacks to clear the 24 unique levels. + 0.50 + 19830101T000000 + Epos Corporation + Epos Corporation + Platform / Run Jump + 2915 + 1-2 + suprglob.zip + Namco Classics + 270 + 272x236 + media/mixrbv2/suprglob.png + + + + guiness.zip + The Guiness (Japan) + Strength & Skill (c) 1984 Sun Electronics Corp. - TECHNICAL - Game ID : TVG15 Main CPU : (2x) Z80 (@ 4 Mhz) Sound Chips : SN76496 (@ 2 Mhz), SN76496 (@ 4 Mhz) Players : 2 Control : 8-way joystick Buttons : 2 - TRIVIA - Strength & Skill was released + 0.50 + 19840101T000000 + Sunsoft + Various + 39 + 1-2 + strnskil.zip + Mame + 240x224 + media/mixrbv2/strnskil.png + + + + thehustlj.zip + The Hustler (Japan, program code J) + Rack &#039;Em Up &copy; 1987 Konami. + +A vertical pool game where you can play either 9-ball or rotation. + 0.50 + 19870101T000000 + Konami + Sports / Pool + 3028 + 1-2 + rackemup.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/rackemup.png + + + + thehustl.zip + The Hustler (Japan, program code M) + Rack &#039;Em Up &copy; 1987 Konami. + +A vertical pool game where you can play either 9-ball or rotation. + 0.50 + 19870101T000000 + Konami + Sports / Pool + 3028 + 1-2 + rackemup.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/rackemup.png + + + + irrmaze.zip + The Irritating Maze / Ultra Denryu Iraira Bou + The Irritating Maze on Neo Geo is a game where you control a metal ball through a maze. The goal is to reach the finish without making contact with the electrified ledges. To further complicate the task of the player, the 3 course of the game are enhanced with various traps and time is limited. + 0.70 + 19970101T000000 + Saurus + SNK + Action + 10 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/irrmaze.png + + + + karatour.zip + The Karate Tournament + Karate Tournament is a one-on-one fighting game for one or two players, based on the ancient and most well known of martial arts, Karate. + +Players enter a karate tournament - having first selected their preferred skill level, from either White, Brown or Black belt - and fight against a number of progressively tougher opponents. Each victory awards the player with a higher belt grade within their current belt colour - white grade six to white grade five, for example - and if the player wins the tournament, he or she is awarded a higher belt colour and the game ends. If players chooses to play the game on the 'Black Belt' skill level, defeating opponents is awarded with a higher grade, or 'dan' of Black Belt. + +Karate Tournament uses a distinctive graphical technique in that it 'morphs' some of the combatants' movement graphics to simulate speed and motion blur. The game was also unique upon its release in that, in a world of "Street Fighters" and "Mortal Kombats" - replete with fantastical special moves - Karate Tournament was a genuine simulation of a recognized martial art; something not really seen since the first appearance of Data East's legendary genre-defining fighter, "Karate Champ", released eight years' earlier in 1984. + 0.70 + 19920101T000000 + Mitchell Corporation + Mitchell + Fight / Versus + 2885 + 1-2 + Mitchell + 320x240 + media/mixrbv2/karatour.png + + + + kodr2.zip + The King of Dragons (910731 etc) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodb.zip + The King of Dragons (bootleg, 910731 etc) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodh.zip + The King of Dragons (hack) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodja.zip + The King of Dragons (Japan 910805, B-Board 89625B-1) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodj.zip + The King of Dragons (Japan 910805, B-Board 90629B-3) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodda.zip + The King of Dragons (Phoenix bootleg, 910731 etc) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodu.zip + The King of Dragons (US 910910) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kodr1.zip + The King of Dragons (World 910711) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + kod.zip + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kod.zip + The King of Dragons (World 910805) + The King of Dragons is a 1991 side-scrolling hack and slash video game by Capcom that allows players to choose from five characters (Elf, Wizard, Fighter, Cleric, and Dwarf) in order to travel through the kingdom of Malus and defeat the monsters that have taken over, as well as their leader, the red dragon Gildiss. Like Capcom's Knights of the Round, it features a level advancement system, allowing character attributes to be upgraded as players progress through the game. The setting is very similar to that of Dungeons & Dragons and other medieval fantasy worlds, with familiar monsters such as Orcs, Gnolls, Harpies, Wyverns, Cyclopes, and Minotaurs. + +The game was ported to the Super NES and released in 1994. An emulated version of the game was released as part of Capcom Classics Collection Vol. 2 and Capcom Classics Collection: Reloaded. + 0.60 + 19910101T000000 + Capcom + Capcom + Fight + 14 + 1-3 + Capcom Play System + 384x224 + media/mixrbv2/kod.png + + + + kof94rz.zip + The King of Fighters '94 (Hack Boss Remixed) + The King of Fighters '94 is notable in that it is one of the first known fighting games that pits a team of fighters against each other in single combat. Each team consists of three fighters for each player, the winner being the player who is able to eliminate the other team first. Each active character can charge up "Art of Fighting" style in order to gain access to "Desperation Moves", or "DMs" (moves which operate very much like Street Fighter's Super Combos). Playing against the computer, the player must defeat all 8 teams in the game in order to reach the final boss, Rugal Bernstein. + 0.75 + 19940101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof94.zip + Neo-Geo + 320x224 + media/mixrbv2/kof94.png + + + + kof94.zip + The King of Fighters '94 (NGM-055)(NGH-055) + The King of Fighters '94 is notable in that it is one of the first known fighting games that pits a team of fighters against each other in single combat. Each team consists of three fighters for each player, the winner being the player who is able to eliminate the other team first. Each active character can charge up "Art of Fighting" style in order to gain access to "Desperation Moves", or "DMs" (moves which operate very much like Street Fighter's Super Combos). Playing against the computer, the player must defeat all 8 teams in the game in order to reach the final boss, Rugal Bernstein. + 0.75 + 19940101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof94.png + + + + kof95b.zip + The King of Fighters '95 (Enable Hidden Characters V.[?]) + Summer, 1995. The world's toughest combatants once again team up for the supreme competition. A stellar cast of fighting stars gather in the most colossal conflagration in history! Along with terrifying new challenges... out of the storm of battle comes The King of Fighters '95! Experience a new age in fighting games with the original Team Edit Mode! + +Choose from 24 characters! Take your pick from a bountiful selection to create history's most awesome team of pure pugilism. Create your own original bruise-giving team of 3 by selecting your favorite fighters! + 0.75 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof95.zip + Neo-Geo + 320x224 + media/mixrbv2/kof95.png + + + + kof95h.zip + The King of Fighters '95 (NGH-084) + Summer, 1995. The world's toughest combatants once again team up for the supreme competition. A stellar cast of fighting stars gather in the most colossal conflagration in history! Along with terrifying new challenges... out of the storm of battle comes The King of Fighters '95! Experience a new age in fighting games with the original Team Edit Mode! + +Choose from 24 characters! Take your pick from a bountiful selection to create history's most awesome team of pure pugilism. Create your own original bruise-giving team of 3 by selecting your favorite fighters! + 0.75 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof95.zip + Neo-Geo + 320x224 + media/mixrbv2/kof95.png + + + + kof95a.zip + The King of Fighters '95 (NGH-084, alternate board) + Summer, 1995. The world's toughest combatants once again team up for the supreme competition. A stellar cast of fighting stars gather in the most colossal conflagration in history! Along with terrifying new challenges... out of the storm of battle comes The King of Fighters '95! Experience a new age in fighting games with the original Team Edit Mode! + +Choose from 24 characters! Take your pick from a bountiful selection to create history's most awesome team of pure pugilism. Create your own original bruise-giving team of 3 by selecting your favorite fighters! + 0.75 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof95.zip + Neo-Geo + 320x224 + media/mixrbv2/kof95.png + + + + kof95.zip + The King of Fighters '95 (NGM-084) + Summer, 1995. The world's toughest combatants once again team up for the supreme competition. A stellar cast of fighting stars gather in the most colossal conflagration in history! Along with terrifying new challenges... out of the storm of battle comes The King of Fighters '95! Experience a new age in fighting games with the original Team Edit Mode! + +Choose from 24 characters! Take your pick from a bountiful selection to create history's most awesome team of pure pugilism. Create your own original bruise-giving team of 3 by selecting your favorite fighters! + 0.75 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof95.png + + + + kof95sp.zip + The King of Fighters '95 (Special 2017, hack) + Summer, 1995. The world's toughest combatants once again team up for the supreme competition. A stellar cast of fighting stars gather in the most colossal conflagration in history! Along with terrifying new challenges... out of the storm of battle comes The King of Fighters '95! Experience a new age in fighting games with the original Team Edit Mode! + +Choose from 24 characters! Take your pick from a bountiful selection to create history's most awesome team of pure pugilism. Create your own original bruise-giving team of 3 by selecting your favorite fighters! + 0.75 + 19950101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof95.zip + Neo-Geo + 320x224 + media/mixrbv2/kof95.png + + + + kof96ae.zip + The King of Fighters '96 (Anniversary Edition, EGHT hack) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96ep.zip + The King of Fighters '96 (bootleg / hack) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96cn.zip + The King of Fighters '96 (Chinese Edition ver 1.0, hack) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96h.zip + The King of Fighters '96 (NGH-214) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96.zip + The King of Fighters '96 (NGM-214) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96a.zip + The King of Fighters '96 (NGM-214, alternate board) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof96ae20.zip + The King of Fighters '96 (The Anniversary Edition 2.0, Build 2.3.0320) + SNK's flagship series returns for another year. Many of the changes in this year's KOF release come in the form of improved graphics, sound effects, music and totally redone character sprites. The gameplay of the system has been altered with the addition of "Rush" multi-hit combos and new moves for practically every character. The storyline of the series receives heavy focus in this release with the Orochi Saga swinging into high-gear. Other features carried over from the previous year include the ability to choose between the default "Team Fighting" mode or the traditional "Single Fighter" style of gameplay, plus the "Versus" and "Survival" gameplay modes. + 0.80 + 19960101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof96.zip + Neo-Geo + 320x224 + media/mixrbv2/kof96.png + + + + kof97cn.zip + The King of Fighters '97 (10th Anniversary Chinese Edition, EGHT hack) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97ps.zip + The King of Fighters '97 (Imitation Playstation final improved version 2016-10-29) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97ip.zip + The King of Fighters '97 (Invincible Plus! B2.1.2107) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97k.zip + The King of Fighters '97 (Korean release) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97h.zip + The King of Fighters '97 (NGH-2320) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97.zip + The King of Fighters '97 (NGM-2320) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97tp.zip + The King of Fighters '97 (Optimised Edition 2020) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97t.zip + The King of Fighters '97 (Optimized Edition) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97pm.zip + The King of Fighters '97 (Practice Mode) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97ae.zip + The King of Fighters '97 - Anniversary Edition (Build 2.1.0212) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97aef.zip + The King of Fighters '97 - Anniversary Edition (Build 2.1.1811) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97cbt.zip + The King of Fighters '97 - Combo Training (Hack, Ver. 2018) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97xt.zip + The King of Fighters '97 - Final Battle (hack) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97rc.zip + The King of Fighters '97 - Random Combo (Hack, Ver. 2010) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97oro.zip + The King of Fighters '97 oroshi plus 2003 + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97pls.zip + The King of Fighters '97 Plus (bootleg) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof97pla.zip + The King of Fighters '97 Plus 2003 (bootleg / hack) + Another year, another KOF. Additions this year come in the form of slightly improved graphics and sounds, new moves and a new game mode. Gameplay is much more plot-driven, as you have middle-bosses that can change depending on what team you select. In addition, there are several special endings which are only shown when certain "Edit Team" combinations are selected. New characters include the New Face Team, the Fatal Fury Outlaw Team (featuring the KOF debut of "Blue" Mary Ryan and Ryuji Yamazaki, and the return of Billy Kane), and Kyo's pupil Shingo Yabuki. In total, The King of Fighters '97 sports 29 separate characters. + 0.85 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof97.zip + Neo-Geo + 320x224 + media/mixrbv2/kof97.png + + + + kof98ae2016.zip + The King of Fighters '98 (Anniversary Edition build 1.2.0827) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98ae.zip + The King of Fighters '98 (Anniversary Edition, EGHT hack) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98cps.zip + The King of Fighters '98 (Combo Plus) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98cb.zip + The King of Fighters '98 (Combo, hack) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98pfe.zip + The King of Fighters '98 (Plus Final Edition 2017-07-23) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98ratio.zip + The King of Fighters '98 (Ratio hack) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98ult.zip + The King of Fighters '98 (Ultimate Match) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98k.zip + The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board, set 1) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98ka.zip + The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board, set 2) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98h.zip + The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGH-2420) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98.zip + The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98a.zip + The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420, alternate board) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98bc2nd.zip + The King of Fighters '98 BC 2nd Impact Edition (Hack, Ver.2020-07-29) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98eck20.zip + The King of Fighters '98 Easy Combo King (YZKOF Version, Hack) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98eckvs.zip + The King of Fighters '98 Easy Combo King 2014 (Versus Version, Hack) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof98mix.zip + The King of Fighters '98 Mix (2015-12-29) + For all you King of Fighters fans, SNK offers the ultimate KOF installment! A total of 38 of your favorite fighters from all the characters appearing in the '94 to '97 versions. The nostalgic American Sports team, Lugal, as well as Heidern, Takuma, Saishu Kusanagi and other long-awaited characters are back! The ultimate reunion is about to begin in The King of Fighters '98! + +THE ADVANTAGE SYSTEM HEATS UP THE COMPETITION +During battles, if one of your team members lose, you gain the systematic advantage with KOF '98's revolutionary game system. In the Advanced Mode, each player gets up to three power stock items. The second player can get up to four, and the third player up to five. In the Extra Mode, the length of the power gauge decreases progressively with the second and third players to make building up power easier. + +THE EXCITING, ADRENALIN-FUELED ROULETTE TEAM EDIT MODE +Use the roulette wheel to select team members at random. You can select one to three members with the roulette wheel! As a team wins, the roulette wheel spins again. Who will join your team is up to fate! + 0.90 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof98.zip + Neo-Geo + 320x224 + media/mixrbv2/kof98.png + + + + kof99e.zip + The King of Fighters '99 - Millennium Battle (earlier) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99k.zip + The King of Fighters '99 - Millennium Battle (Korean release) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99ka.zip + The King of Fighters '99 - Millennium Battle (Korean release, non-encrypted program) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99h.zip + The King of Fighters '99 - Millennium Battle (NGH-2510) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99.zip + The King of Fighters '99 - Millennium Battle (NGM-2510) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99p.zip + The King of Fighters '99 - Millennium Battle (prototype) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99ae.zip + The King of Fighters '99 Anniversary Edition (hack) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99eur.zip + The King of Fighters '99 Evolution Ultra Remix (Hack By Yashional) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99eur2.zip + The King of Fighters '99 Evolution Ultra Remix 2015 (Hack) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99rp2f.zip + The King of Fighters '99 Remix Pro V2.0 Final (Hack By FCHT) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof99sr.zip + The King of Fighters '99 Summer Revolution (Hack By FCHT) + A new hero and surprising plot twists offer white-hot excitement! It is the season of KOF! A new chapter in the saga begins! With a story centering around the new hero K' (K Prime), along with an overhauled game system that pits 4-member teams against each other, KOF '99 is sure to raise excitement levels through the roof. The new battle begins here! + +Along with K', six new characters and two Kyo Kusanagi clones appear as Edit Mode characters. This means players can choose their favorite from a whopping total of 30 characters! + +FOUR MAKES ONE FOR FEARSOME BATTLES +3-on-3 is old hat. From now on, it's 4-on-4, buster. Each team consists of three contestants, along with the Striker (who specializes in Tag Team attacks and brings new possibilities to battle strategies). Push the B and C buttons simultaneously to summon the Striker at any time during a fight (up to five times in a single match), but don't go nuts! Using the Striker at the right time is the key to victory! + +INCREASE YOUR POWER GAUGE ENERGY +Increasing Power Gauge energy above a certain point lets players stockpile up to three separate Power Gauges. When gauges are sufficiently stockpiled, use them to activate Super Special Moves and awesome feats like the Guard Cancel Emergency Evasion and Guard Cancel Blow-Away Attack. + +SELECT YOUR POWER UP MODE +Use up to three power gauges at once to enter the timed Power Up Mode! There are two types of Power Up Modes to select from by entering special button commands: Counter Mode (press A + B + C to use Super Special Moves whenever you want; can also link normal special moves for Super Cancellation Attacks) or Armor Mode (press B + C + D to increase your defensive power significantly; Super Special Moves cannot be used during this mode). + 0.90 + 19990101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof99.zip + Neo-Geo + 320x224 + media/mixrbv2/kof99.png + + + + kof10th.zip + The King of Fighters 10th Anniversary (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof10thd.zip + The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg / Fully Decrypted) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k5uni.zip + The King of Fighters 10th Anniversary 2005 Unique (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof10thuo.zip + The King of Fighters 10th Anniversary 2020 (Optimized version 2020) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf10thep.zip + The King of Fighters 10th Anniversary Extra Plus (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2000.zip + The King of Fighters 2000 (NGM-2570) (NGH-2570) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2000n.zip + The King of Fighters 2000 (not encrypted) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2000.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2000otc.zip + The King of Fighters 2000 (OTC, hack) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2000.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2000ps2.zip + The King of Fighters 2000 (Playstation 2 ver. , EGHT hack) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2000.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2000sp.zip + The King of Fighters 2000 - Special Edition (Final Version, Hack) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2000.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2kxxx.zip + The King of Fighters 2000 SP XXX (Hack, Ver. 2016-01-04) + The final King of Fighters game released by SNK in its original state, The King of Fighters 2000 expands on the story and gameplay presented in The King of Fighters '99. This year's tournament is sponsored by the Ikari Warriors in an attempt to discover more about the NESTS organization, and to derail the plans of potential NESTS agents K' and Maxima. Not everything is as straight-forward as it usually is, however, and even the Ikari Warriors themselves are at risk of being betrayed from within by the end of the tournament. + 0.80 + 20000101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2000.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2000.png + + + + kof2001h.zip + The King of Fighters 2001 (NGH-2621) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kof2001.zip + The King of Fighters 2001 (NGM-262?) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kf2k1pkz.zip + The King of Fighters 2001 (PS2 Krizalid Edition) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kf2k1pls.zip + The King of Fighters 2001 Plus (set 1, bootleg / hack) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kf2k1pa.zip + The King of Fighters 2001 Plus (set 2, bootleg / hack) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kof2k1rp.zip + The King of Fighters 2001 Remix Pro v1.02 Final (Hack By Jason, Kim & Raymonose) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kof2001ru.zip + The King of Fighters 2001 Remix Ultra 2.3 (Hack By Jason FGCH) + In this eighth installment of the King of Fighters series, ten different teams once again battle it out in several countries to decide which team will be this year's King of Fighters. However, the NESTS organization is once again standing in the participant's way; they have deployed their own team of four fighters, lead by two individuals of high-rank within NESTS: a man claiming to be the original Zero and Igniz, the CEO of NESTS. The character roster has been updated yet again for this release in the series. + 0.65 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2001.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2001.png + + + + kof2002b.zip + The King of Fighters 2002 (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2002.zip + The King of Fighters 2002 (NGM-2650)(NGH-2650) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2k2omg.zip + The King of Fighters 2002 (Omega v.0?) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2k2omg8.zip + The King of Fighters 2002 (Omega v0.8) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2k2omg9b.zip + The King of Fighters 2002 (Omega v0.9 beta) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2k2omg9.zip + The King of Fighters 2002 (Omega v0.9) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2ps2re1.zip + The King of Fighters 2002 (PlayStation 2 v1.0 Public Beta) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2ps2.zip + The King of Fighters 2002 (PlayStation 2 ver 0.4, EGHT hack) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2002ps2.zip + The King of Fighters 2002 (PlayStation 2, Hack) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kof2k2plus.zip + The King of Fighters 2002 (Plus 2017) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k23rd.zip + The King of Fighters 2002 - 3rd Strike of Orochi (Hack by EGCG/EGHT) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2mp.zip + The King of Fighters 2002 Magic Plus (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2mp2.zip + The King of Fighters 2002 Magic Plus II (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2pls.zip + The King of Fighters 2002 Plus (bootleg set 1) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2pla.zip + The King of Fighters 2002 Plus (bootleg set 2) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2plb.zip + The King of Fighters 2002 Plus (bootleg set 3) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2ru35.zip + The King of Fighters 2002 Remix Ultra 3.5 (Hack By FCHT) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k2plc.zip + The King of Fighters 2002 Super (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k3bl.zip + The King of Fighters 2003 (bootleg set 1) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3bla.zip + The King of Fighters 2003 (bootleg set 2) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3pcb.zip + The King of Fighters 2003 (Japan, JAMMA PCB) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kf2k3pcb.png + + + + kof2003h.zip + The King of Fighters 2003 (NGH-2710) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kof2003.zip + The King of Fighters 2003 (NGM-2710) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3ps2sp.zip + The King of Fighters 2003 - PS2 Style Portraits (Hack By 0 Day-S, Eddids, Hiker) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3ps2.zip + The King of Fighters 2003 PlayStation 2 (Hack By EGCG) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3pl.zip + The King of Fighters 2004 Plus / Hero (bootleg) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kf2k3upl.zip + The King of Fighters 2004 Ultra Plus (bootleg) + Like The King of Fighters 2002, this game reverts back to the old 3-on-3 format used from KOF '94 to KOF '98. A new feature to this game that old-school KOF fans might have trouble getting used to is the new interchangeable team system. You still pick three characters and decide your character order before a match, but now you have the option to change to another character during a match. You can change at any time during a match, but you cannot when two of your teammates have been taken out, and only one character is left in reserve. + 0.70 + 20040101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2003.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2003.png + + + + kof2k4se.zip + The King of Fighters Special Edition 2004 (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + kf2k4pls.zip + The King of Fighters Special Edition 2004 Plus (bootleg) + The second plotless "dream match" in The King of Fighters series, this game sports 39 normal characters and 5 hidden characters, some of whom haven't appeared since KOF98. The King of Fighters 2002 also has five characters exclusive to the X-Box, the PS2 and/or Dreamcast systems: Shingo Yabuki, King, Geese Howard, "Riot of the Blood" Iori and Leopold Goenitz. Shingo and King are available on all the non-Neo Geo systems, while Geese and the rest are only available on the PS2 and X-Box platforms. + +The gameplay system has also changed. The striker system and four-character teams found in the last three KOF releases have been totally removed. In their place are the old-school three man teams and the "Advanced system" from The King of Fighters '97 and The King of Fighters '98. + + 0.80 + 20020101T000000 + SNK + SNK + Fight + 14 + 1-2 + kof2002.zip + Neo-Geo + 320x224 + media/mixrbv2/kof2002.png + + + + lastbladh.zip + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340) + Choose one of several characters to play with, each with their own unique moves and special attacks. Each stage in the game has two battles, where the object of each is to drain your opponent's energy in order to complete the battle, and you will complete the stage if you do this twice. If there is a draw, then a third battle is then played. There is a time limit, and when this expires, the player with the most energy wins the battle. + 0.70 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastblad.zip + Neo-Geo + 320x224 + media/mixrbv2/lastblad.png + + + + lastblad.zip + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340) + Choose one of several characters to play with, each with their own unique moves and special attacks. Each stage in the game has two battles, where the object of each is to drain your opponent's energy in order to complete the battle, and you will complete the stage if you do this twice. If there is a draw, then a third battle is then played. There is a time limit, and when this expires, the player with the most energy wins the battle. + 0.70 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/lastblad.png + + + + lastblada.zip + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340, alternate board) + Choose one of several characters to play with, each with their own unique moves and special attacks. Each stage in the game has two battles, where the object of each is to drain your opponent's energy in order to complete the battle, and you will complete the stage if you do this twice. If there is a draw, then a third battle is then played. There is a time limit, and when this expires, the player with the most energy wins the battle. + 0.70 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastblad.zip + Neo-Geo + 320x224 + media/mixrbv2/lastblad.png + + + + lastbladsp.zip + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (Special 2017, hack) + Choose one of several characters to play with, each with their own unique moves and special attacks. Each stage in the game has two battles, where the object of each is to drain your opponent's energy in order to complete the battle, and you will complete the stage if you do this twice. If there is a draw, then a third battle is then played. There is a time limit, and when this expires, the player with the most energy wins the battle. + 0.70 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastblad.zip + Neo-Geo + 320x224 + media/mixrbv2/lastblad.png + + + + lb2b.zip + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Enable Hidden Characters V4) + The Last Blade 2: Heart of the Samurai is a 2D fighting game which features anime-style characters that fight each other with swords, clubs, and even fishing poles. These characters pull off their special moves with that 'quarter-circle-to-half-circle' and 'double-half-circle' controller motions, reminiscent of Street Fighter. + + 0.85 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastbld2.zip + Neo-Geo + 320x224 + media/mixrbv2/lastbld2.png + + + + lastbld2eh.zip + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Enhanced Hack) + The Last Blade 2: Heart of the Samurai is a 2D fighting game which features anime-style characters that fight each other with swords, clubs, and even fishing poles. These characters pull off their special moves with that 'quarter-circle-to-half-circle' and 'double-half-circle' controller motions, reminiscent of Street Fighter. + + 0.85 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastbld2.zip + Neo-Geo + 320x224 + media/mixrbv2/lastbld2.png + + + + lastbld2.zip + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430)(NGH-2430) + The Last Blade 2: Heart of the Samurai is a 2D fighting game which features anime-style characters that fight each other with swords, clubs, and even fishing poles. These characters pull off their special moves with that 'quarter-circle-to-half-circle' and 'double-half-circle' controller motions, reminiscent of Street Fighter. + + 0.85 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/lastbld2.png + + + + lastbld2te.zip + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Team Edition Hack) + The Last Blade 2: Heart of the Samurai is a 2D fighting game which features anime-style characters that fight each other with swords, clubs, and even fishing poles. These characters pull off their special moves with that 'quarter-circle-to-half-circle' and 'double-half-circle' controller motions, reminiscent of Street Fighter. + + 0.85 + 19980101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastbld2.zip + Neo-Geo + 320x224 + media/mixrbv2/lastbld2.png + + + + lastday.zip + The Last Day (set 1) + The Last Day is a vertically scrolling shoot-em-up. + +In korea, this game as known as "D-day Chulguuk" (translates from Korean as 'D-day sortie'). + +Dooyong Industrial was established by Jung Jin Yook in the 80's. In its early days Dooyong made bootleg versions, and later made original games. Dooyong stopped to develop arcade games in 1996. + +Very few last Day boards were exported to Japan. + 0.50 + 19900101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x240 + media/mixrbv2/lastday.png + + + + lastdaya.zip + The Last Day (set 2) + The Last Day is a vertically scrolling shoot-em-up. + +In korea, this game as known as "D-day Chulguuk" (translates from Korean as 'D-day sortie'). + +Dooyong Industrial was established by Jung Jin Yook in the 80's. In its early days Dooyong made bootleg versions, and later made original games. Dooyong stopped to develop arcade games in 1996. + +Very few last Day boards were exported to Japan. + 0.50 + 19900101T000000 + Dooyong + Dooyong + Shoot'em Up + 79 + 1-2 + lastday.zip + Mame + 270 + 384x240 + media/mixrbv2/lastday.png + + + + lastsold.zip + The Last Soldier (Korean release of The Last Blade) + Choose one of several characters to play with, each with their own unique moves and special attacks. Each stage in the game has two battles, where the object of each is to drain your opponent's energy in order to complete the battle, and you will complete the stage if you do this twice. If there is a draw, then a third battle is then played. There is a time limit, and when this expires, the player with the most energy wins the battle. + 0.70 + 19970101T000000 + SNK + SNK + Fight + 14 + 1-2 + lastblad.zip + Neo-Geo + 320x224 + media/mixrbv2/lastblad.png + + + + lkage.zip + The Legend of Kage + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageb.zip + The Legend of Kage (bootleg set 1) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageb2.zip + The Legend of Kage (bootleg set 2) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageb3.zip + The Legend of Kage (bootleg set 3) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageb4.zip + The Legend of Kage (bootleg set 4) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageo.zip + The Legend of Kage (older) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + lkageoo.zip + The Legend of Kage (oldest) + As a Ninja, defeat the evils from Devil's World and save the Princess. + +At the end of the Edo Period (late 19th century) in Japan, a Corps formed by the evils, which had come back to life from the Devil's World, was terrifying people all over the country. One day the princess 'Kiri', a daughter of the lord, was kidnapped by the Corps. In order to save her from them, a number of militia were sent to the Corps' Headquarters, but none of them ever returned. Then one young man headed for the Corps' Headquarters to save the princess. His name 'Kage', a ninja from Iga Village. + 0.60 + 19840101T000000 + Taito + Taito + Fight / 2D + 2914 + 1-2 + lkage.zip + Taito Classics + 240x224 + media/mixrbv2/lkage.png + + + + silkroad.zip + The Legend of Silkroad + Chinese heroes attempt to rid the Orient of the evil mystical warlord and his enemies. + 0.90 + 19990101T000000 + Unicorn Group + Unico + Beat'em Up + 1 + 1-2 + Mame + 380x224 + media/mixrbv2/silkroad.png + + + + silkroada.zip + The Legend of Silkroad (larger roms) + Chinese heroes attempt to rid the Orient of the evil mystical warlord and his enemies. + 0.90 + 19990101T000000 + Unicorn Group + Unico + Beat'em Up + 1 + 1-2 + silkroad.zip + Mame + 380x224 + media/mixrbv2/silkroad.png + + + + lordofk.zip + The Lord of King (Japan) + The Astyanax is a side-scrolling platform action game set in a fantasy world. The hero sets out to slay the evil wizard terrorizing the land. He is armed with an ax and also has a magic lightning spell that can be powered-up two times. Magic upgrades and health potions can be found in small stone pillars. The player needs to beat monsters in a number of locales, jumping across pits and fighting bosses at the end of stages. Two-palyer co-op is supported, with the second player being palette-swap of Player 1. + +The game was designed by Tokuhiro Takemori who previously worked on Legendary Axe, and the basic game mechanic is similar -- in order to deal heavy blow with the axe the player needs to stop swinging it for a while. The NES version released after the Arcade game, while generally having same gameplay, features completely different level layouts, enemy designs and story. + 0.70 + 19890101T000000 + Jaleco + Jaleco + Platform / Fighter Scrolling + 2896 + 1-2 + astyanax.zip + Jaleco + 256x224 + media/mixrbv2/astyanax.png + + + + darkmist.zip + The Lost Castle In Darkmist + The Lost Castle In Darkmist is a vertically scrolling fighting game where the player controls a knight who battles against a variety of magical characters. Collect potions, power-ups and bonus items from the treasure chests left by slain enemies. Defeat the boss enemies to proceed to the next level. + 0.70 + 19860101T000000 + Taito + Taito + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/darkmist.png + + + + mainevt2p.zip + The Main Event (2 Players ver. X) + A wrestling game in which you select 2 wrestlers from a choice of 8 and compete in tag-team battles. + 0.50 + 19880101T000000 + Konami + Konami + Sports / Wrestling + 2861 + 1-4 + mainevt.zip + Konami Classics + 288x224 + media/mixrbv2/mainevt.png + + + + mainevto.zip + The Main Event (4 Players ver. F) + A wrestling game in which you select 2 wrestlers from a choice of 8 and compete in tag-team battles. + 0.50 + 19880101T000000 + Konami + Konami + Sports / Wrestling + 2861 + 1-4 + mainevt.zip + Konami Classics + 288x224 + media/mixrbv2/mainevt.png + + + + mainevt.zip + The Main Event (4 Players ver. Y) + A wrestling game in which you select 2 wrestlers from a choice of 8 and compete in tag-team battles. + 0.50 + 19880101T000000 + Konami + Konami + Sports / Wrestling + 2861 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/mainevt.png + + + + mastkin.zip + The Masters of Kin + In the time of the gods, evil roamed free in the lands. Zorg 'The Master of Kin', took his wife to temple and before kissing her, suddenly the evil sorcerer Zangar came and invaded the place and took his wife kidnapped towards his castle. The knight Zorg begins his quest in the outlands of the Kin domain to rescue his wife from the enemy hands. + 0.10 + 19880101T000000 + Du Tech + Du Tech + Beat'em Up + 1 + Konami Classics + 256x224 + media/mixrbv2/mastkin.png + + + + tnzsj.zip + The NewZealand Story (Japan, new version, newer PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzsjo.zip + The NewZealand Story (Japan, old version) (older PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzsuo.zip + The NewZealand Story (US, old version) (older PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzs.zip + The NewZealand Story (World, newer) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzso.zip + The NewZealand Story (World, old version) (older PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzsop.zip + The NewZealand Story (World, prototype) (older PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnzsoa.zip + The NewZealand Story (World, unknown version) (older PCB) + Set in Antipodean country of the game's title, The New Zealand Story is an eight-way scrolling platform game featuring Tiki the Kiwi bird. Tiki and his friends have been kidnapped by the evil 'Wally', a large blue leopard seal who wants the birds for his next meal. Tiki quickly escapes and sets about rescuing his trapped friends. + +The game's stages are made up of platforms with a caged kiwi bird awaiting rescue at the end of each. Touching the cage releases the trapped Kiwi and an open window appears, indicating the completion of the stage. + 0.90 + 19880101T000000 + Taito + Taito + Platform / Run Jump Scrolling + 2897 + 1-2 + tnzs.zip + Taito Classics + 256x224 + media/mixrbv2/tnzs.png + + + + tnextspcj.zip + The Next Space (Japan) + A vertical scrolling shooter. + +Pilot your spaceship through the deep space, collect various speed and weapon items to take down a multitude of enemies, and restore peace to the galaxy! + +The game concept is all about the power-ups. The game offers ten items to pick up, including speed boosts, laser weapons, a spread gun, a flamethrower, a tiny spaceship helpers and missiles. + 0.60 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + tnextspc.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/tnextspc.png + + + + tnextspc.zip + The Next Space (set 1) + A vertical scrolling shooter. + +Pilot your spaceship through the deep space, collect various speed and weapon items to take down a multitude of enemies, and restore peace to the galaxy! + +The game concept is all about the power-ups. The game offers ten items to pick up, including speed boosts, laser weapons, a spread gun, a flamethrower, a tiny spaceship helpers and missiles. + 0.60 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/tnextspc.png + + + + tnextspc2.zip + The Next Space (set 2) + A vertical scrolling shooter. + +Pilot your spaceship through the deep space, collect various speed and weapon items to take down a multitude of enemies, and restore peace to the galaxy! + +The game concept is all about the power-ups. The game offers ten items to pick up, including speed boosts, laser weapons, a spread gun, a flamethrower, a tiny spaceship helpers and missiles. + 0.60 + 19890101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + tnextspc.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/tnextspc.png + + + + ninjawj.zip + The Ninja Warriors (Japan) + Two ninjas fight an entire army to destroy an evil dictator in this horizontal action game, which features physical damage on our heroes + 0.70 + 19870101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + ninjaw.zip + Taito Classics + 288x224 + media/mixrbv2/ninjaw.png + + + + ninjawu.zip + The Ninja Warriors (US, Romstar license) + Two ninjas fight an entire army to destroy an evil dictator in this horizontal action game, which features physical damage on our heroes + 0.70 + 19870101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + ninjaw.zip + Taito Classics + 288x224 + media/mixrbv2/ninjaw.png + + + + ninjaw1.zip + The Ninja Warriors (World, earlier version) + Two ninjas fight an entire army to destroy an evil dictator in this horizontal action game, which features physical damage on our heroes + 0.70 + 19870101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + ninjaw.zip + Taito Classics + 288x224 + media/mixrbv2/ninjaw.png + + + + ninjaw.zip + The Ninja Warriors (World, later version) + Two ninjas fight an entire army to destroy an evil dictator in this horizontal action game, which features physical damage on our heroes + 0.70 + 19870101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + Taito Classics + 288x224 + media/mixrbv2/ninjaw.png + + + + percuss.zip + The Percussor + You control a spaceship that attempts to destroy the enemy base. + 0.30 + 19810101T000000 + Orca + Orca + Shooter + 2646 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/percuss.png + + + + thepit.zip + The Pit + The player's avatar (described as "The Astronaut-Explorer" by the game manual) lands in a spaceship and must dig their way into a series of underground tunnels. While there, they must avoid being crushed by rocks, eaten by monsters, impaled by arrows, or melted in a vat of acid. Instead of a traditional timer, is a tank shooting away a mountain near the player's spaceship. After collecting the treasure, the only route back to the spaceship is by crossing "The Pit", which is a room with a sliding retractable floor underneath containing a monster that will devour the player and acid which will also kill. + +The player receives 100 points for shooting each enemy, 1000 points for each crystal collected, 2,000 points for collecting large gems, and 1,000 points for crossing "The Pit" safely and reboarding the ship. There is a 10,000 point bonus for collecting all 3 large gems or all 4 small gems, and a 15,000 point bonus for collecting all 7 gems. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/thepit.png + + + + thepitm.zip + The Pit (bootleg on Moon Quasar hardware) + The player's avatar (described as "The Astronaut-Explorer" by the game manual) lands in a spaceship and must dig their way into a series of underground tunnels. While there, they must avoid being crushed by rocks, eaten by monsters, impaled by arrows, or melted in a vat of acid. Instead of a traditional timer, is a tank shooting away a mountain near the player's spaceship. After collecting the treasure, the only route back to the spaceship is by crossing "The Pit", which is a room with a sliding retractable floor underneath containing a monster that will devour the player and acid which will also kill. + +The player receives 100 points for shooting each enemy, 1000 points for each crystal collected, 2,000 points for collecting large gems, and 1,000 points for crossing "The Pit" safely and reboarding the ship. There is a 10,000 point bonus for collecting all 3 large gems or all 4 small gems, and a 15,000 point bonus for collecting all 7 gems. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1-2 + thepit.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/thepit.png + + + + thepitj.zip + The Pit (Japan) + The player's avatar (described as "The Astronaut-Explorer" by the game manual) lands in a spaceship and must dig their way into a series of underground tunnels. While there, they must avoid being crushed by rocks, eaten by monsters, impaled by arrows, or melted in a vat of acid. Instead of a traditional timer, is a tank shooting away a mountain near the player's spaceship. After collecting the treasure, the only route back to the spaceship is by crossing "The Pit", which is a room with a sliding retractable floor underneath containing a monster that will devour the player and acid which will also kill. + +The player receives 100 points for shooting each enemy, 1000 points for each crystal collected, 2,000 points for collecting large gems, and 1,000 points for crossing "The Pit" safely and reboarding the ship. There is a 10,000 point bonus for collecting all 3 large gems or all 4 small gems, and a 15,000 point bonus for collecting all 7 gems. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1-2 + thepit.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/thepit.png + + + + thepitu1.zip + The Pit (US set 1) + The player's avatar (described as "The Astronaut-Explorer" by the game manual) lands in a spaceship and must dig their way into a series of underground tunnels. While there, they must avoid being crushed by rocks, eaten by monsters, impaled by arrows, or melted in a vat of acid. Instead of a traditional timer, is a tank shooting away a mountain near the player's spaceship. After collecting the treasure, the only route back to the spaceship is by crossing "The Pit", which is a room with a sliding retractable floor underneath containing a monster that will devour the player and acid which will also kill. + +The player receives 100 points for shooting each enemy, 1000 points for each crystal collected, 2,000 points for collecting large gems, and 1,000 points for crossing "The Pit" safely and reboarding the ship. There is a 10,000 point bonus for collecting all 3 large gems or all 4 small gems, and a 15,000 point bonus for collecting all 7 gems. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1-2 + thepit.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/thepit.png + + + + thepitu2.zip + The Pit (US set 2) + The player's avatar (described as "The Astronaut-Explorer" by the game manual) lands in a spaceship and must dig their way into a series of underground tunnels. While there, they must avoid being crushed by rocks, eaten by monsters, impaled by arrows, or melted in a vat of acid. Instead of a traditional timer, is a tank shooting away a mountain near the player's spaceship. After collecting the treasure, the only route back to the spaceship is by crossing "The Pit", which is a room with a sliding retractable floor underneath containing a monster that will devour the player and acid which will also kill. + +The player receives 100 points for shooting each enemy, 1000 points for each crystal collected, 2,000 points for collecting large gems, and 1,000 points for crossing "The Pit" safely and reboarding the ship. There is a 10,000 point bonus for collecting all 3 large gems or all 4 small gems, and a 15,000 point bonus for collecting all 7 gems. + 0.50 + 19820101T000000 + Zilec Electronics + Zilec Electronics + Action + 10 + 1-2 + thepit.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/thepit.png + + + + punisherh.zip + The Punisher (930422 Hispanic) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisherj.zip + The Punisher (930422 Japan) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisheru.zip + The Punisher (930422 USA) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisher.zip + The Punisher (930422 World) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punipic.zip + The Punisher (bootleg set 1 (with PIC16c57), 930422 etc) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punipic2.zip + The Punisher (bootleg set 2 (with PIC16c57), 930422 etc) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punipic3.zip + The Punisher (bootleg set 3 (with PIC16c57), 930422 etc) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisherb.zip + The Punisher (bootleg, 930422 etc) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisherly.zip + The Punisher (Flame Edition, Hack) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + punisherhr.zip + The Punisher (Red Man Edition, Hack) + A Capcom arcade beat-em-up game similar to games like Double Dragon featuring the Marvel character The Punisher. Nick Fury is also a playable character in this game. + 0.85 + 19930101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + punisher.zip + Capcom Play System + 384x224 + media/mixrbv2/punisher.png + + + + ghostb2a.zip + The Real Ghostbusters (US 2 Players) + Adapted from the animated cartoon of the same name. Up to three players, each controlling a Ghostbuster, must run around a top-down universal scrolling terrain, shoot creatures and then try to suck up ghosts with their plasma guns. Players can shoot and then collect various power-ups, including a protective Aura, shot and beam boosters, and a "Green Ghost" Slimer shield satellite. Has interesting screen transition effects and a well-orchestrated version of the movie's popular theme song. + 0.60 + 19870101T000000 + Data East + Activision + Shooter / Run and Gun + 2903 + 1-2 + ghostb.zip + Data East Classics + 256x240 + media/mixrbv2/ghostb.png + + + + ghostb.zip + The Real Ghostbusters (US 2 Players, revision 2) + Adapted from the animated cartoon of the same name. Up to three players, each controlling a Ghostbuster, must run around a top-down universal scrolling terrain, shoot creatures and then try to suck up ghosts with their plasma guns. Players can shoot and then collect various power-ups, including a protective Aura, shot and beam boosters, and a "Green Ghost" Slimer shield satellite. Has interesting screen transition effects and a well-orchestrated version of the movie's popular theme song. + 0.60 + 19870101T000000 + Data East + Activision + Shooter / Run and Gun + 2903 + 1-2 + Data East Classics + 256x240 + media/mixrbv2/ghostb.png + + + + ghostb3.zip + The Real Ghostbusters (US 3 Players, revision 3B?) + Adapted from the animated cartoon of the same name. Up to three players, each controlling a Ghostbuster, must run around a top-down universal scrolling terrain, shoot creatures and then try to suck up ghosts with their plasma guns. Players can shoot and then collect various power-ups, including a protective Aura, shot and beam boosters, and a "Green Ghost" Slimer shield satellite. Has interesting screen transition effects and a well-orchestrated version of the movie's popular theme song. + 0.60 + 19870101T000000 + Data East + Activision + Shooter / Run and Gun + 2903 + 1-2 + ghostb.zip + Data East Classics + 256x240 + media/mixrbv2/ghostb.png + + + + roishtar.zip + The Return of Ishtar + The Return of Ishtar is a sequel to The Tower of Druaga. It is an action game with light puzzle-solving elements that requires two players. One person is in control of the maiden Ki who fights with magic and the other controls Gilgamesh, the sword-wielding knight. Search for keys and special items. The tower has a few different ways to exit, and the aggregate total of levels is 128. + +Players are presented a password to allow them to continue from where they left off. + 0.50 + 19860101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/roishtar.png + + + + simpsons2pa.zip + The Simpsons (2 Players Asia) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons2pj.zip + The Simpsons (2 Players Japan) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons2p.zip + The Simpsons (2 Players World, set 1) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons2p2.zip + The Simpsons (2 Players World, set 2) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons2p3.zip + The Simpsons (2 Players World, set 3) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons4pa.zip + The Simpsons (4 Players Asia) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons.zip + The Simpsons (4 Players World, set 1) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + simpsons4pe.zip + The Simpsons (4 Players World, set 2) + A jewel heist gone wrong sees Mr Burns's sidekick, Smithers, kidnapping Maggie and making his escape. Between one and four players take on the role of either Homer, Marge, Lisa, or Bart in this colorful, horizontally-scrolling beat-em-up from Konami. Each Simpsons character possesses an attacking move specific to them; Marge is armed with a vacuum cleaner, Lisa has a skipping rope, Bart has his skateboard, and Homer fights with his fists. The players must battle their way through a variety of Simpsons-themed levels - such as Springfield and Krustyland - fighting goons, thugs, zombies, drunks, firemen, and several Simpsons regulars. Many Simpsons characters that don't appear as enemies have 'cameo' scenes in the game (Otto working at a burgerstand in Krustyland, for example). The archetypal 'boss' character awaits the players at the end of every stage. The game ends with a final showdown with the evil Mr. Burns in his luxurious mansion. + +The Simpsons was designed to Konami's typically-high production standards and was, like the 'Ninja Turtles' games that appeared a couple of years' earlier, very faithful to its source material. The colorful, smoothly-animated sprites captured the spirit of the legendary cartoon superbly, and the game's many humorous touches were timed to perfection. + 0.90 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + simpsons.zip + Konami Classics + 288x224 + media/mixrbv2/simpsons.png + + + + srumbler.zip + The Speed Rumbler (set 1) + It's the 21st century in America. Technology has improved by leaps and bounds, and now (most) people live in peace. But in a small town somewhere, a vicious terrorist group known as Zapper is terrorizing small towns and kidnapping innocent people so that they can build a secret weapon. And, as it turns out, the family and friends of someone code-named "Super Joe" just so happened to be one of the innocents caught! Now Super Joe's hungry for revenge. Can Super Joe and his armored car destroy the Zapper organization and save his town from utter destruction in time? The Speed Rumbler is a action game where the player races against the clock in an armored car piloted by Super Joe, destroying other cars and saving captives along the way. Super Joe's car is armed with a gun that he can use to shoot down enemy cars, but the enemy cars have a few tricks up their sleeve, so Super Joe should always be on guard. As the player progresses through the game's six stages, Super Joe can be given a boost by saving captives, who then award him with bonus points, increased fire power, or speed-ups. If Super Joe's car is destroyed, he can continue the fight on foot with his rifle. But unfortunately, Super Joe is not as powerful as his car - one hit and he's history. Super Joe has 24 "hours" to destroy Zapper. The game is over when Super Joe runs out of lives or time - or if he successfully completes his mission. + 0.90 + 19860101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + Capcom Classics + 270 + 352x240 + media/mixrbv2/srumbler.png + + + + srumbler2.zip + The Speed Rumbler (set 2) + It's the 21st century in America. Technology has improved by leaps and bounds, and now (most) people live in peace. But in a small town somewhere, a vicious terrorist group known as Zapper is terrorizing small towns and kidnapping innocent people so that they can build a secret weapon. And, as it turns out, the family and friends of someone code-named "Super Joe" just so happened to be one of the innocents caught! Now Super Joe's hungry for revenge. Can Super Joe and his armored car destroy the Zapper organization and save his town from utter destruction in time? The Speed Rumbler is a action game where the player races against the clock in an armored car piloted by Super Joe, destroying other cars and saving captives along the way. Super Joe's car is armed with a gun that he can use to shoot down enemy cars, but the enemy cars have a few tricks up their sleeve, so Super Joe should always be on guard. As the player progresses through the game's six stages, Super Joe can be given a boost by saving captives, who then award him with bonus points, increased fire power, or speed-ups. If Super Joe's car is destroyed, he can continue the fight on foot with his rifle. But unfortunately, Super Joe is not as powerful as his car - one hit and he's history. Super Joe has 24 "hours" to destroy Zapper. The game is over when Super Joe runs out of lives or time - or if he successfully completes his mission. + 0.90 + 19860101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + srumbler.zip + Capcom Classics + 270 + 352x240 + media/mixrbv2/srumbler.png + + + + srumbler3.zip + The Speed Rumbler (set 3) + It's the 21st century in America. Technology has improved by leaps and bounds, and now (most) people live in peace. But in a small town somewhere, a vicious terrorist group known as Zapper is terrorizing small towns and kidnapping innocent people so that they can build a secret weapon. And, as it turns out, the family and friends of someone code-named "Super Joe" just so happened to be one of the innocents caught! Now Super Joe's hungry for revenge. Can Super Joe and his armored car destroy the Zapper organization and save his town from utter destruction in time? The Speed Rumbler is a action game where the player races against the clock in an armored car piloted by Super Joe, destroying other cars and saving captives along the way. Super Joe's car is armed with a gun that he can use to shoot down enemy cars, but the enemy cars have a few tricks up their sleeve, so Super Joe should always be on guard. As the player progresses through the game's six stages, Super Joe can be given a boost by saving captives, who then award him with bonus points, increased fire power, or speed-ups. If Super Joe's car is destroyed, he can continue the fight on foot with his rifle. But unfortunately, Super Joe is not as powerful as his car - one hit and he's history. Super Joe has 24 "hours" to destroy Zapper. The game is over when Super Joe runs out of lives or time - or if he successfully completes his mission. + 0.90 + 19860101T000000 + Capcom + Capcom + Shooter / Vehicle, Vertical + 2921 + 1-2 + srumbler.zip + Capcom Classics + 270 + 352x240 + media/mixrbv2/srumbler.png + + + + superspy.zip + The Super Spy (NGM-011)(NGH-011) + Roy Heart has been asked by the CIA to wipe out terrorists who have taken over a large skyscraper of a major auto-maker in Japan. +Using your fists, knife, or gun, you must use the elevators to travel between floors and wipe out terrorists that try to bring you down. Each weapon has its disadvantages. The gun, for example, will only have so many bullets per life, and the knife will decrease in strength with every use. During your mission, you will also earn experience points, and meet and free hostages along the way. These hostages will heal you, fix your knife, and give you a machine gun. Some floors end with you defeating a boss, while others end at elevators. Your must reach the top of the building where you will confront the leader. + 0.45 + 19910101T000000 + SNK + SNK + Various + 39 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/superspy.png + + + + 3stooges.zip + The Three Stooges In Brides Is Brides (set 1) + The 3 Stooges are searching for their fiancees, kidnapped by the Mad Scientist. Looking at the art gallery, they quickly turn it into a disaster area! +In all rooms, the Stooges need to destroy the furniture and find the 3 hidden keys that unlock the exit. Using their hammers, Moe, Larry & Curly bang away! +Interfering socialites and cops are dealt with in typical Stooges style: a face slap, a hammer to the noggin, or the ever-dependable cream pie. +Bonus round: Avoid the sour notes of the opera singer as you collect the three keys to the exit. And watch out for the cops, too! +In the Mad Scientist's laboratory, the Stooges rescue Cora, the first fiancee. That leaves Nora and Dora still in danger! Let the game continue! + +DON'T MISS OUT ON THIS SUMMER'S HIT VIDEO! + +Let Larry, Moe and Curly bring their hilarity and popularity to your game locations! Every player will want to be his favourite Stooge! Three Players at one time can mean greater profitability too! +Call your Mylstar distributor for the details on getting your Three Stooges video game! + 0.50 + 19840101T000000 + Mylstar Electronics + Mylstar + Shooter + 2646 + 1-3 + Gottlieb + 256x240 + media/mixrbv2/3stooges.png + + + + 3stoogesa.zip + The Three Stooges In Brides Is Brides (set 2) + The 3 Stooges are searching for their fiancees, kidnapped by the Mad Scientist. Looking at the art gallery, they quickly turn it into a disaster area! +In all rooms, the Stooges need to destroy the furniture and find the 3 hidden keys that unlock the exit. Using their hammers, Moe, Larry & Curly bang away! +Interfering socialites and cops are dealt with in typical Stooges style: a face slap, a hammer to the noggin, or the ever-dependable cream pie. +Bonus round: Avoid the sour notes of the opera singer as you collect the three keys to the exit. And watch out for the cops, too! +In the Mad Scientist's laboratory, the Stooges rescue Cora, the first fiancee. That leaves Nora and Dora still in danger! Let the game continue! + +DON'T MISS OUT ON THIS SUMMER'S HIT VIDEO! + +Let Larry, Moe and Curly bring their hilarity and popularity to your game locations! Every player will want to be his favourite Stooge! Three Players at one time can mean greater profitability too! +Call your Mylstar distributor for the details on getting your Three Stooges video game! + 0.50 + 19840101T000000 + Mylstar Electronics + Mylstar + Shooter + 2646 + 1-3 + 3stooges.zip + Gottlieb + 256x240 + media/mixrbv2/3stooges.png + + + + tinstar.zip + The Tin Star (A10, 4 PCB version) + In The Tin Star, a single-screen shooting game, hero Zeke rides into town to protect the law-abiding citizens from bandits & varmits. + +From a shoot-out in the street, to an ambush in the saloon, to a corral brawl, to the bonus round in the open desert where lonesome lawman Zeke can double his score by shooting an hombre from his horse. + +The Tin Star is a tricky shooter where you have to dodge and shoot sideways and upward to clear multiple screens of bad guys. + + 0.70 + 19830101T000000 + Taito + Taito + Shooter / 3rd person + 2899 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/tinstar.png + + + + tinstara.zip + The Tin Star (TS, 5 PCB version) + In The Tin Star, a single-screen shooting game, hero Zeke rides into town to protect the law-abiding citizens from bandits & varmits. + +From a shoot-out in the street, to an ambush in the saloon, to a corral brawl, to the bonus round in the open desert where lonesome lawman Zeke can double his score by shooting an hombre from his horse. + +The Tin Star is a tricky shooter where you have to dodge and shoot sideways and upward to clear multiple screens of bad guys. + + 0.70 + 19830101T000000 + Taito + Taito + Shooter / 3rd person + 2899 + 1-2 + tinstar.zip + Taito Classics + 256x224 + media/mixrbv2/tinstar.png + + + + thetogyu.zip + The Togyu (315-5065, Japan) + You play as a torero in the bullring, and the controls comprise a joystick and two buttons. Obviously, the joystick moves you around, while the buttons are for cape moving and stabbing, respectively. You score points for leading the bull with your cape, stabbing the bull, leading it into a wall, opening a wound on its back and killing it. Upon killing the bull, you go onto the next stage, with progressively fiercer bulls, and eventually, a second bull gets added to the mix. + 0.50 + 19840101T000000 + Coreland + SEGA + Sports + 685 + 1-2 + bullfgt.zip + Sega Classics + 512x224 + media/mixrbv2/bullfgt.png + + + + ctower.zip + The Tower (DECO Cassette) (Europe?) + 19810101T000000 + Mame + + + todruaga.zip + The Tower of Druaga (New Ver.) + You control the heroic prince Gilgamesh who must attempt to rescue the maiden Ki from the demon Druaga. You are armed with a sword and shield to attack and defend. Find hidden chests (and special items) when special conditions are met, some of which are required to beat the game. + +Original story: +IN ANOTHER TIME +IN ANOTHER WORLD... +THE BLUE CRYSTAL ROD +KEPT THE KINGDOM IN PEACE + +BUT THE EVIL DRUAGA +HID THE ROD +AND THE MAIDEN KI +IN A TOWER + +THE PRINCE GILGAMESH +WORE GOLD ARMOR +AND ATTACKED MONSTERS +TO HELP KI IN +THE TOWER OF DRUAGA + 0.70 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/todruaga.png + + + + todruagao.zip + The Tower of Druaga (Old Ver.) + You control the heroic prince Gilgamesh who must attempt to rescue the maiden Ki from the demon Druaga. You are armed with a sword and shield to attack and defend. Find hidden chests (and special items) when special conditions are met, some of which are required to beat the game. + +Original story: +IN ANOTHER TIME +IN ANOTHER WORLD... +THE BLUE CRYSTAL ROD +KEPT THE KINGDOM IN PEACE + +BUT THE EVIL DRUAGA +HID THE ROD +AND THE MAIDEN KI +IN A TOWER + +THE PRINCE GILGAMESH +WORE GOLD ARMOR +AND ATTACKED MONSTERS +TO HELP KI IN +THE TOWER OF DRUAGA + 0.70 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + todruaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/todruaga.png + + + + todruagas.zip + The Tower of Druaga (Sidam) + You control the heroic prince Gilgamesh who must attempt to rescue the maiden Ki from the demon Druaga. You are armed with a sword and shield to attack and defend. Find hidden chests (and special items) when special conditions are met, some of which are required to beat the game. + +Original story: +IN ANOTHER TIME +IN ANOTHER WORLD... +THE BLUE CRYSTAL ROD +KEPT THE KINGDOM IN PEACE + +BUT THE EVIL DRUAGA +HID THE ROD +AND THE MAIDEN KI +IN A TOWER + +THE PRINCE GILGAMESH +WORE GOLD ARMOR +AND ATTACKED MONSTERS +TO HELP KI IN +THE TOWER OF DRUAGA + 0.70 + 19840101T000000 + Namco + Namco + Action + 10 + 1-2 + todruaga.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/todruaga.png + + + + ssideki4.zip + The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero + Super Sidekicks 4, also known as The Ultimate 11: SNK Football Championship, is a sports retro arcade football (soccer) game created for the Neo Geo arcade system, and is the fourth of the popular Super Sidekicks series. The game features 80 national teams divided into 8 regions of the globe. Build power the more you hold the ball. Maintain your dribble and guard off against enemy steals. Amass enough foot power and kick the ball to the goal! + 0.70 + 19960101T000000 + SNK + SNK + Sports / Soccer + 2847 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/ssideki4.png + + + + wintbob.zip + The Winter Bobble (bootleg) + One or two players take on the roles of snowmen Nick and Tom as they battle a variety of monsters over fifty platform-based, single screen levels. + +The snowmen can throw snowballs at the enemies with the aim of encasing them completely in snow. The encased enemies can then be kicked in order to destroy them and this is achieved by standing next to the snowball and pressing the "kick out" button. This sends the giant snowball flying around the screen, killing any enemies that lay in its path. + +If players take too much time to complete a stage, an evil pumpkin head will appear and try to kill them. The pumpkin is invincible but can be stunned with snowballs. After a short time the evil pumpkin will spawn ghosts that can travel freely around the stage as they seek out Nick and Tom. These ghosts can't be killed or stunned, so the player's only hope is to avoid them while eliminating the remaining standard enemies, to move on to the next screen as soon as possible. + +When players defeat an enemy, it may drop a coloured potion bottle. These can be picked up and act as power-ups: +Yellow = Long shot +Red = Speed up +Blue = Bigger snowballs (encases monsters quicker) +Green = Inflates the players like a balloon and lets them fly around the screen, killing any monsters they touch. + +Every 10th level features a battle with a large end-of-level boss. + 0.90 + 19900101T000000 + Toaplan + Toaplan + Platform / Run Jump + 2915 + 1-2 + snowbros.zip + Toaplan + 256x224 + media/mixrbv2/snowbros.png + + + + thief.zip + Thief + This title plays a lot like "Pac-Man", except the maze is more detailed. You drive you car around the maze, picking up the money that is laying around everywhere (just like the dots in "Pac-Man"). Now to avoid being any more like" Pac-Man", the designer decided to give you four enemies, who each move around the maze with a distinct personality (but they are cars, not ghosts). In a final attempt to make this game different from "Pac-man", the designer then added dollar signs in each corner of the screen, running over these allows you to chase after your foes, and run over them (not at all like "Pac-Man"). In later levels these dollar signs may be in places other than the corners (finally, something that actually is different than "Pac-Man"). Each level is finished by clearing all the dollars bills from the board (the game will also rate you with a new 'Crime Level' every time you complete a screen). + 0.50 + 19810101T000000 + Pacific Novelty + Pacific Novelty + Action + 10 + 1-2 + Mame + 256x256 + media/mixrbv2/thief.png + + + + trally.zip + Thrash Rally (ALM-003)(ALH-003) + Thrash Rally is a fast-paced racing game, similar to Neo Drift Out and Overtop, but using a top-down view. You can either participate in a World Championship or do a complete Paris Dakar rally. +Using basic controls: accelerate with automatic transmission, brake and a combination of both to power drift, you have to follow a set path of courses. In the World Championship, each location consists of different stages that need to be finished in a single run. There is a strict time limit and you receive a time bonus upon finishing a section. The Dakar mode is one long track without stops. The championship uses regular cars, but in the Dakar race you can also choose a sand buggy, off-road bike or a truck. + +A global ranking is kept while racing, but it is based on your time, not on the number of cars you pass during the race. Aside from your opponents, you'll also find water, animals, hills, bridges, bushes and different obstacles in your path. + 0.55 + 19910101T000000 + ADK + SNK + Race, Driving / Race + 2924 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/trally.png + + + + 3wondersh.zip + Three Wonders (bootleg set 1, wonder 3 910520 etc) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + 3wondersb.zip + Three Wonders (bootleg set 2, wonder 3 910520 etc) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + 3wondersha.zip + Three Wonders (bootleg set 3, wonder 3 910520 etc) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + 3wondersr1.zip + Three Wonders (wonder 3 910513 etc) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + 3wonders.zip + Three Wonders (wonder 3 910520 etc) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + 3wondersu.zip + Three Wonders (wonder 3 910520 USA) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + thunderl.zip + Thunder & Lightning + A ball and paddle game. + 0.50 + 19900101T000000 + Visco + SETA Corporation + Action / Breakout games + 2917 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/thunderl.png + + + + thndrbld1.zip + Thunder Blade (deluxe/standing, unprotected) + Taking control of a heavily-armed battle chopper, the player must battle through a variety of both overhead and 'into-the-screen' 3-D stages. + +Thunder Blade consists of four stages, which are as follows: +Stage 1: The game begins in a skyscraper-packed city. Enemies consist of rival choppers, jets, and ground-based tanks and gun emplacements. The level ends over the sea, with the player facing a huge and heavily-armed battleship. +Stage 2: This stage begins with the player navigating a desert canyon, before switching to the into-the-screen view and taking the player through a number of stalactite-packed and densely populated caves. A huge ground-based tank awaits the player at the end of the stage. +Stage 3: This begins in a river canyon, before moving on to a rain-forest river network. As well the the usual line-up of enemies, heavily-armed boats are introduced. the end-of-level battle takes place in the skies as the player attempts to destroy a massive jet fighter. +Stage 4: The 4th and final stage begins with a repeat of the first stage's city level, only this time the action takes place at night. The second half of this stage takes the player deep into an industrial complex, eventually leading to an end-of-game showdown with a massive and heavily-armed gun emplacement. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane + 2928 + 1 + thndrbld.zip + Sega Classics + 320x224 + media/mixrbv2/thndrbld.png + + + + thndrbldd.zip + Thunder Blade (upright, FD1094 317-0056 decrypted) + Taking control of a heavily-armed battle chopper, the player must battle through a variety of both overhead and 'into-the-screen' 3-D stages. + +Thunder Blade consists of four stages, which are as follows: +Stage 1: The game begins in a skyscraper-packed city. Enemies consist of rival choppers, jets, and ground-based tanks and gun emplacements. The level ends over the sea, with the player facing a huge and heavily-armed battleship. +Stage 2: This stage begins with the player navigating a desert canyon, before switching to the into-the-screen view and taking the player through a number of stalactite-packed and densely populated caves. A huge ground-based tank awaits the player at the end of the stage. +Stage 3: This begins in a river canyon, before moving on to a rain-forest river network. As well the the usual line-up of enemies, heavily-armed boats are introduced. the end-of-level battle takes place in the skies as the player attempts to destroy a massive jet fighter. +Stage 4: The 4th and final stage begins with a repeat of the first stage's city level, only this time the action takes place at night. The second half of this stage takes the player deep into an industrial complex, eventually leading to an end-of-game showdown with a massive and heavily-armed gun emplacement. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane + 2928 + 1 + thndrbld.zip + Sega Classics + 320x224 + media/mixrbv2/thndrbld.png + + + + thndrbld.zip + Thunder Blade (upright, FD1094 317-0056) + Taking control of a heavily-armed battle chopper, the player must battle through a variety of both overhead and 'into-the-screen' 3-D stages. + +Thunder Blade consists of four stages, which are as follows: +Stage 1: The game begins in a skyscraper-packed city. Enemies consist of rival choppers, jets, and ground-based tanks and gun emplacements. The level ends over the sea, with the player facing a huge and heavily-armed battleship. +Stage 2: This stage begins with the player navigating a desert canyon, before switching to the into-the-screen view and taking the player through a number of stalactite-packed and densely populated caves. A huge ground-based tank awaits the player at the end of the stage. +Stage 3: This begins in a river canyon, before moving on to a rain-forest river network. As well the the usual line-up of enemies, heavily-armed boats are introduced. the end-of-level battle takes place in the skies as the player attempts to destroy a massive jet fighter. +Stage 4: The 4th and final stage begins with a repeat of the first stage's city level, only this time the action takes place at night. The second half of this stage takes the player deep into an industrial complex, eventually leading to an end-of-game showdown with a massive and heavily-armed gun emplacement. + 0.70 + 19870101T000000 + SEGA + SEGA + Shooter / Plane + 2928 + 1 + Sega Classics + 320x224 + media/mixrbv2/thndrbld.png + + + + tceptor.zip + Thunder Ceptor + Thunder Ceptor (c) 1986 Namco. - TECHNICAL - Game ID : TC Main CPU : M6809 (@ 1.536 Mhz), 68000 (@ 12.288 Mhz), HD63701 (@ 1.536 Mhz) Sound CPU : (2x) M65C02 (@ 2.048 Mhz) Sound Chips : YM2151 (@ 3.579545 Mhz), Namco 8-channel WSG, DAC Players : 1 Con + 0.50 + 19860101T000000 + Namco + Namco + Shooter / Plane, 3rd person + 2881 + 1 + Namco Classics + 272x224 + media/mixrbv2/tceptor.png + + + + tceptor2.zip + Thunder Ceptor II + Thunder Ceptor (c) 1986 Namco. - TECHNICAL - Game ID : TC Main CPU : M6809 (@ 1.536 Mhz), 68000 (@ 12.288 Mhz), HD63701 (@ 1.536 Mhz) Sound CPU : (2x) M65C02 (@ 2.048 Mhz) Sound Chips : YM2151 (@ 3.579545 Mhz), Namco 8-channel WSG, DAC Players : 1 Con + 0.50 + 19860101T000000 + Namco + Namco + Shooter / Plane, 3rd person + 2881 + 1 + tceptor.zip + Namco Classics + 272x224 + media/mixrbv2/tceptor.png + + + + thunderxj.zip + Thunder Cross (Japan) + Wipe Out The Mechanikon Hordes! Take off into outer space and prepare for battle. + +The legendary music Horizon by Olof 'Blaizer' Gustafsson found in many Amiga Cracktros of early 90s was actually a cover of the first level music of Thunder Cross. Olof Gustaffson is the inhouse musician of Digital Illusion of Pinball Dreams fame and before going commercial he was an active scener in the Amiga demo group 'The Silents'. + 0.60 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + thunderx.zip + Konami Classics + 288x224 + media/mixrbv2/thunderx.png + + + + thunderx.zip + Thunder Cross (set 1) + Wipe Out The Mechanikon Hordes! Take off into outer space and prepare for battle. + +The legendary music Horizon by Olof 'Blaizer' Gustafsson found in many Amiga Cracktros of early 90s was actually a cover of the first level music of Thunder Cross. Olof Gustaffson is the inhouse musician of Digital Illusion of Pinball Dreams fame and before going commercial he was an active scener in the Amiga demo group 'The Silents'. + 0.60 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/thunderx.png + + + + thunderxa.zip + Thunder Cross (set 2) + Wipe Out The Mechanikon Hordes! Take off into outer space and prepare for battle. + +The legendary music Horizon by Olof 'Blaizer' Gustafsson found in many Amiga Cracktros of early 90s was actually a cover of the first level music of Thunder Cross. Olof Gustaffson is the inhouse musician of Digital Illusion of Pinball Dreams fame and before going commercial he was an active scener in the Amiga demo group 'The Silents'. + 0.60 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + thunderx.zip + Konami Classics + 288x224 + media/mixrbv2/thunderx.png + + + + thunderxb.zip + Thunder Cross (set 3) + Wipe Out The Mechanikon Hordes! Take off into outer space and prepare for battle. + +The legendary music Horizon by Olof 'Blaizer' Gustafsson found in many Amiga Cracktros of early 90s was actually a cover of the first level music of Thunder Cross. Olof Gustaffson is the inhouse musician of Digital Illusion of Pinball Dreams fame and before going commercial he was an active scener in the Amiga demo group 'The Silents'. + 0.60 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + thunderx.zip + Konami Classics + 288x224 + media/mixrbv2/thunderx.png + + + + thndrx2a.zip + Thunder Cross II (Asia) + Taking place in the future of space colonization, the planet Haniamu IV is under attack from a relentless, unknown military force known only as Black Impulse. The strongest Earth ships capable of stopping the total conquering of the planet are the Blue Thunder M-45 (player 1) and the Red Thunder M-24 (player 2). + +Thunder Cross is a classic horizontal shooter with 7 stages. Players control the Thunder fighter with up to four "options", which arrange up and down vertically and add to the player's attack power. Three weapons are selectable ranging from the Vulcan shot to the Laser and the Boomerang shot (which doubles as a ricochet weapon). Typical of a Konami shooter, Thunder Cross forces the player to beat the game twice in a harder loop of the first seven levels. + 0.40 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + thndrx2.zip + Konami Classics + 288x224 + media/mixrbv2/thndrx2.png + + + + thndrx2j.zip + Thunder Cross II (Japan) + Taking place in the future of space colonization, the planet Haniamu IV is under attack from a relentless, unknown military force known only as Black Impulse. The strongest Earth ships capable of stopping the total conquering of the planet are the Blue Thunder M-45 (player 1) and the Red Thunder M-24 (player 2). + +Thunder Cross is a classic horizontal shooter with 7 stages. Players control the Thunder fighter with up to four "options", which arrange up and down vertically and add to the player's attack power. Three weapons are selectable ranging from the Vulcan shot to the Laser and the Boomerang shot (which doubles as a ricochet weapon). Typical of a Konami shooter, Thunder Cross forces the player to beat the game twice in a harder loop of the first seven levels. + 0.40 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + thndrx2.zip + Konami Classics + 288x224 + media/mixrbv2/thndrx2.png + + + + thndrx2.zip + Thunder Cross II (World) + Taking place in the future of space colonization, the planet Haniamu IV is under attack from a relentless, unknown military force known only as Black Impulse. The strongest Earth ships capable of stopping the total conquering of the planet are the Blue Thunder M-45 (player 1) and the Red Thunder M-24 (player 2). + +Thunder Cross is a classic horizontal shooter with 7 stages. Players control the Thunder fighter with up to four "options", which arrange up and down vertically and add to the player's attack power. Three weapons are selectable ranging from the Vulcan shot to the Laser and the Boomerang shot (which doubles as a ricochet weapon). Typical of a Konami shooter, Thunder Cross forces the player to beat the game twice in a harder loop of the first seven levels. + 0.40 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 288x224 + media/mixrbv2/thndrx2.png + + + + tdragon1.zip + Thunder Dragon (4th Jun. 1991, protected) + The players controls a futuristic helicopter through 8 stages with an end boss at the end of each stage. Enemies include futuristic vehicles, space craft, mechs. The players have a standard weapon and special screen clearing bombs. The standard weapon can be powered up with missiles, wide shot, lasers or heavy fire by picking up icons labeled 1 through 4. + 0.60 + 19910101T000000 + NMK + NMK + Shoot'em Up + 79 + 1-2 + tdragon.zip + NMK + 270 + 256x224 + media/mixrbv2/tdragon.png + + + + tdragon.zip + Thunder Dragon (8th Jan. 1992, unprotected) + The players controls a futuristic helicopter through 8 stages with an end boss at the end of each stage. Enemies include futuristic vehicles, space craft, mechs. The players have a standard weapon and special screen clearing bombs. The standard weapon can be powered up with missiles, wide shot, lasers or heavy fire by picking up icons labeled 1 through 4. + 0.60 + 19910101T000000 + NMK + NMK + Shoot'em Up + 79 + 1-2 + NMK + 270 + 256x224 + media/mixrbv2/tdragon.png + + + + tdragonb.zip + Thunder Dragon (bootleg with Raiden sounds, encrypted) + The players controls a futuristic helicopter through 8 stages with an end boss at the end of each stage. Enemies include futuristic vehicles, space craft, mechs. The players have a standard weapon and special screen clearing bombs. The standard weapon can be powered up with missiles, wide shot, lasers or heavy fire by picking up icons labeled 1 through 4. + 0.60 + 19910101T000000 + NMK + NMK + Shoot'em Up + 79 + 1-2 + tdragon.zip + NMK + 270 + 256x224 + media/mixrbv2/tdragon.png + + + + tdragonb3.zip + Thunder Dragon (bootleg with Raiden sounds, unencrypted) + The players controls a futuristic helicopter through 8 stages with an end boss at the end of each stage. Enemies include futuristic vehicles, space craft, mechs. The players have a standard weapon and special screen clearing bombs. The standard weapon can be powered up with missiles, wide shot, lasers or heavy fire by picking up icons labeled 1 through 4. + 0.60 + 19910101T000000 + NMK + NMK + Shoot'em Up + 79 + 1-2 + tdragon.zip + NMK + 270 + 256x224 + media/mixrbv2/tdragon.png + + + + tdragon2a.zip + Thunder Dragon 2 (1st Oct. 1993) + The game uses variable rate scrolling (the screen scrolls at different speeds or not at all), and is played from a top-down view. Unlike space shooters, Thunder Dragon 2 is played in-atmosphere on a single world with contemporary airplanes. +The game contains eight stages, with popcorn enemies and ships with varying degrees of durability throughout. Each stage culminates in a boss fight, preceded by a warning. The player chooses between two different ships, a slow but powerful ship on the player 1 side, and a fast but weak ship on the player 2 side. Scoring is accomplished through enemy destruction, accumulation of medals dropped by enemies, and special bonus awards for completing specific tasks. + 0.70 + 19930101T000000 + Banpresto + NMK + Shoot'em Up + 79 + 1-2 + tdragon2.zip + NMK + 270 + 384x224 + media/mixrbv2/tdragon2.png + + + + tdragon2.zip + Thunder Dragon 2 (9th Nov. 1993) + The game uses variable rate scrolling (the screen scrolls at different speeds or not at all), and is played from a top-down view. Unlike space shooters, Thunder Dragon 2 is played in-atmosphere on a single world with contemporary airplanes. +The game contains eight stages, with popcorn enemies and ships with varying degrees of durability throughout. Each stage culminates in a boss fight, preceded by a warning. The player chooses between two different ships, a slow but powerful ship on the player 1 side, and a fast but weak ship on the player 2 side. Scoring is accomplished through enemy destruction, accumulation of medals dropped by enemies, and special bonus awards for completing specific tasks. + 0.70 + 19930101T000000 + Banpresto + NMK + Shoot'em Up + 79 + 1-2 + NMK + 270 + 384x224 + media/mixrbv2/tdragon2.png + + + + tdragon3h.zip + Thunder Dragon 3 (bootleg of Thunder Dragon 2) + The game uses variable rate scrolling (the screen scrolls at different speeds or not at all), and is played from a top-down view. Unlike space shooters, Thunder Dragon 2 is played in-atmosphere on a single world with contemporary airplanes. +The game contains eight stages, with popcorn enemies and ships with varying degrees of durability throughout. Each stage culminates in a boss fight, preceded by a warning. The player chooses between two different ships, a slow but powerful ship on the player 1 side, and a fast but weak ship on the player 2 side. Scoring is accomplished through enemy destruction, accumulation of medals dropped by enemies, and special bonus awards for completing specific tasks. + 0.70 + 19930101T000000 + Banpresto + NMK + Shoot'em Up + 79 + 1-2 + tdragon2.zip + NMK + 270 + 384x224 + media/mixrbv2/tdragon2.png + + + + tfrceac.zip + Thunder Force AC + This game is a port of the Sega Mega Drive game "Thunder Force III". The main changes from the home console version are: +-No stage select screen +-Stages are shorter. +-Slightly different enemy layout. +-Some graphics are changed, including title screen. +-Many voice tracks added. + 0.30 + 19900101T000000 + Technosoft + SEGA + Shoot'em Up + 79 + 1 + Sega Classics + 256x224 + media/mixrbv2/tfrceac.png + + + + tfrceacb.zip + Thunder Force AC (bootleg) + This game is a port of the Sega Mega Drive game "Thunder Force III". The main changes from the home console version are: +-No stage select screen +-Stages are shorter. +-Slightly different enemy layout. +-Some graphics are changed, including title screen. +-Many voice tracks added. + 0.30 + 19900101T000000 + Technosoft + SEGA + Shoot'em Up + 79 + 1 + tfrceac.zip + Sega Classics + 256x224 + media/mixrbv2/tfrceac.png + + + + tfrceacj.zip + Thunder Force AC (Japan) + This game is a port of the Sega Mega Drive game "Thunder Force III". The main changes from the home console version are: +-No stage select screen +-Stages are shorter. +-Slightly different enemy layout. +-Some graphics are changed, including title screen. +-Many voice tracks added. + 0.30 + 19900101T000000 + Technosoft + SEGA + Shoot'em Up + 79 + 1 + tfrceac.zip + Sega Classics + 256x224 + media/mixrbv2/tfrceac.png + + + + tfrceacjpb.zip + Thunder Force AC (Japan, prototype, bootleg) + This game is a port of the Sega Mega Drive game "Thunder Force III". The main changes from the home console version are: +-No stage select screen +-Stages are shorter. +-Slightly different enemy layout. +-Some graphics are changed, including title screen. +-Many voice tracks added. + 0.30 + 19900101T000000 + Technosoft + SEGA + Shoot'em Up + 79 + 1 + tfrceac.zip + Sega Classics + 256x224 + media/mixrbv2/tfrceac.png + + + + theroes.zip + Thunder Heroes + Thunder Heroes (c) 2001 Primetec Investments. - TECHNICAL - CAVE 1st Generation hardware Main CPU : 68000 (@ 16 Mhz) Sound Chips : YMZ280B (@ 16.9344 Mhz) Players : 2 Control : 8-way joystick Buttons : 4 => [A] Punch, [B] Kick, [C] Jump, [D] Special + 0.75 + 20010101T000000 + Primetek Investments + Primetek Investments + Fight / 2.5D + 2874 + 1-2 + Cave + 320x224 + media/mixrbv2/theroes.png + + + + thoop.zip + Thunder Hoop (ver. 1, checksum 02a09f7d) + A platform game where you aim to defeat Dr. GenBrain. Climb ladders and jump on platforms while killing enemies on the way to the end-of-level boss. + 0.30 + 19920101T000000 + Gaelco + Gaelco + Platform / Shooter Scrolling + 2887 + 1-2 + Gaelco + 320x240 + media/mixrbv2/thoop.png + + + + tndrcade.zip + Thundercade / Twin Formation + Terrorism has reached new heights. AATOM (Atomic Age Terrorist Organization of Miracali) has constructed their own nuclear power plant, and threaten the world with atomic terror. The world powers have decided to initiate operation THUNDERCADE to stop AATOM. Equipped with a high-performance combat motorcycle, sidecar cannons, and backed by a precision B-7 bomber, you set out on the dangerous mission. + 0.50 + 19870101T000000 + SETA + Romstar + Shoot'em Up + 79 + 1-2 + Mame + 270 + 384x224 + media/mixrbv2/tndrcade.png + + + + thunderja.zip + ThunderJaws (rev 2) + You play as a secret agent, member of the underwater special forces unit, have been selected to infiltrate Madam Q's secret headquarters and stop her evil plans before she destroy the world. + +In the levels you must face shooting a variety of enemies like mechanical sharks, mutants, enemy divers and underwater firing turrets. Other scenes include a side-scrolling platformer locations,you must save the hostages while you find weapons, power-ups and health along the way to later confront evil Bosses at the end of each level. + 0.60 + 19900101T000000 + Atari + Atari + Shooter / Horizontal + 2876 + 1-2 + thunderj.zip + Atari Classics + 336x240 + media/mixrbv2/thunderj.png + + + + thunderj.zip + ThunderJaws (rev 3) + You play as a secret agent, member of the underwater special forces unit, have been selected to infiltrate Madam Q's secret headquarters and stop her evil plans before she destroy the world. + +In the levels you must face shooting a variety of enemies like mechanical sharks, mutants, enemy divers and underwater firing turrets. Other scenes include a side-scrolling platformer locations,you must save the hostages while you find weapons, power-ups and health along the way to later confront evil Bosses at the end of each level. + 0.60 + 19900101T000000 + Atari + Atari + Shooter / Horizontal + 2876 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/thunderj.png + + + + tigerhb1.zip + Tiger Heli (bootleg set 1) + Tiger-Heli is a vertical scrolling shooter where the player controls a helicopter taking on hordes of enemies which include tanks, battleships, and artillery. It is interesting to note that, besides some airplanes taking off, there are no flying enemies in the entire game. The player's main weapon is an unlimited supply of missiles which travel a max distance of half the screen's height. The player also has two bombs which destroy all objects within a large circular radius. These bombs can be blown off by enemy bullets. + 0.50 + 19850101T000000 + Toaplan + Taito + Shoot'em Up + 79 + 1-2 + tigerh.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/tigerh.png + + + + tigerhb2.zip + Tiger Heli (bootleg set 2) + Tiger-Heli is a vertical scrolling shooter where the player controls a helicopter taking on hordes of enemies which include tanks, battleships, and artillery. It is interesting to note that, besides some airplanes taking off, there are no flying enemies in the entire game. The player's main weapon is an unlimited supply of missiles which travel a max distance of half the screen's height. The player also has two bombs which destroy all objects within a large circular radius. These bombs can be blown off by enemy bullets. + 0.50 + 19850101T000000 + Toaplan + Taito + Shoot'em Up + 79 + 1-2 + tigerh.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/tigerh.png + + + + tigerhb3.zip + Tiger Heli (bootleg set 3) + Tiger-Heli is a vertical scrolling shooter where the player controls a helicopter taking on hordes of enemies which include tanks, battleships, and artillery. It is interesting to note that, besides some airplanes taking off, there are no flying enemies in the entire game. The player's main weapon is an unlimited supply of missiles which travel a max distance of half the screen's height. The player also has two bombs which destroy all objects within a large circular radius. These bombs can be blown off by enemy bullets. + 0.50 + 19850101T000000 + Toaplan + Taito + Shoot'em Up + 79 + 1-2 + tigerh.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/tigerh.png + + + + tigerhj.zip + Tiger Heli (Japan) + Tiger-Heli is a vertical scrolling shooter where the player controls a helicopter taking on hordes of enemies which include tanks, battleships, and artillery. It is interesting to note that, besides some airplanes taking off, there are no flying enemies in the entire game. The player's main weapon is an unlimited supply of missiles which travel a max distance of half the screen's height. The player also has two bombs which destroy all objects within a large circular radius. These bombs can be blown off by enemy bullets. + 0.50 + 19850101T000000 + Toaplan + Taito + Shoot'em Up + 79 + 1-2 + tigerh.zip + Taito Classics + 270 + 280x240 + media/mixrbv2/tigerh.png + + + + tigerh.zip + Tiger Heli (US) + Tiger-Heli is a vertical scrolling shooter where the player controls a helicopter taking on hordes of enemies which include tanks, battleships, and artillery. It is interesting to note that, besides some airplanes taking off, there are no flying enemies in the entire game. The player's main weapon is an unlimited supply of missiles which travel a max distance of half the screen's height. The player also has two bombs which destroy all objects within a large circular radius. These bombs can be blown off by enemy bullets. + 0.50 + 19850101T000000 + Toaplan + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 280x240 + media/mixrbv2/tigerh.png + + + + tigeroadb.zip + Tiger Road (US bootleg, set 1) + Tiger Road is a beat 'em up in which you (as Lee Wong) must rescue the village children from the evil Ryo Ken Oh. Many levels are horizontally scrolling, although with high ledges to jump onto and follow for a slightly different path. Magic urns containing improved weapons appear frequently. Most enemies are easy to attack and only need one hit to kill, although they come at you in large hordes. Once you get to the indoor sections you will find big enemies with the ability to kill you with one hit, in sections set on multiple levels complete with stairways. + 0.60 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + tigeroad.zip + Capcom Classics + 256x224 + media/mixrbv2/tigeroad.png + + + + tigeroadb2.zip + Tiger Road (US bootleg, set 2) + Tiger Road is a beat 'em up in which you (as Lee Wong) must rescue the village children from the evil Ryo Ken Oh. Many levels are horizontally scrolling, although with high ledges to jump onto and follow for a slightly different path. Magic urns containing improved weapons appear frequently. Most enemies are easy to attack and only need one hit to kill, although they come at you in large hordes. Once you get to the indoor sections you will find big enemies with the ability to kill you with one hit, in sections set on multiple levels complete with stairways. + 0.60 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + tigeroad.zip + Capcom Classics + 256x224 + media/mixrbv2/tigeroad.png + + + + tigeroad.zip + Tiger Road (US) + Tiger Road is a beat 'em up in which you (as Lee Wong) must rescue the village children from the evil Ryo Ken Oh. Many levels are horizontally scrolling, although with high ledges to jump onto and follow for a slightly different path. Magic urns containing improved weapons appear frequently. Most enemies are easy to attack and only need one hit to kill, although they come at you in large hordes. Once you get to the indoor sections you will find big enemies with the ability to kill you with one hit, in sections set on multiple levels complete with stairways. + 0.60 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + Capcom Classics + 256x224 + media/mixrbv2/tigeroad.png + + + + tigeroadu.zip + Tiger Road (US, Romstar license) + Tiger Road is a beat 'em up in which you (as Lee Wong) must rescue the village children from the evil Ryo Ken Oh. Many levels are horizontally scrolling, although with high ledges to jump onto and follow for a slightly different path. Magic urns containing improved weapons appear frequently. Most enemies are easy to attack and only need one hit to kill, although they come at you in large hordes. Once you get to the indoor sections you will find big enemies with the ability to kill you with one hit, in sections set on multiple levels complete with stairways. + 0.60 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + tigeroad.zip + Capcom Classics + 256x224 + media/mixrbv2/tigeroad.png + + + + timber.zip + Timber + Timber is an abstract action game in which one or two players assume the role of a lumberjack and have a limited amount of time to chop down a given number of trees that pop up from the ground. The game is controlled with two joysticks, with one stick controlling the player's movement and the other corresponding to left or right chops with the player's axe. Difficulty increases with each level, with the number of trees needed to be chopped down gradually increasing (maxing out at 19) and the allotted time decreasing. + +During a round players must avoid beehives that are thrown at them by grizzly bears. The beehives, however, can be destroyed with the player's axe for a 500-point reward. Some trees contain birds that will run around the level after they have been chopped down, awarding 1,000 points if touched by the player. + +Every couple of levels players are given the opportunity to amass bonus points. The bonus round begins with the lumberjack standing on a floating log. As the log begins to rotate, players must use their reflexes to stay on top of the log. The first two times this is played, the log is relatively large; on future attempts, the size of the log shrinks considerably. The bonus round ends if the player falls off the log or balances atop it for the duration of the round, in which case 1,000 bonus points are earned. + +The two-player simultaneous mode can be played either competitively or cooperatively. In this mode, chopping or pushing down a tree such that it falls on the opponent awards you with 1,000 points. + 0.60 + 19840101T000000 + Bally Midway + Bally Midway + Platform / Run Jump + 2915 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/timber.png + + + + timefgtr.zip + Time Fighter (Time Pilot conversion on Galaxian hardware) + 19820101T000000 + Taito + Taito + Shooter / Plane + 2928 + Taito Classics + 270 + 768x224 + media/mixrbv2/timefgtr.png + + + + timelimt.zip + Time Limit + Prepare yourself for action as you enter the wonderfully pixelated world of Time Limit! Become a cop and enter a gang-infested building to move between the floors blasting the hell out of the baddies before the shoot you! Climb ladder, take lifts and keep shooting to stay alive and bring the gang members to justice! Fighting well will also earn you a shot at the bonus levels to maximise points and become a master! + 0.10 + 19830101T000000 + Chuo Co. Ltd. + Chuo Co. Ltd + Shooter + 2646 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/timelimt.png + + + + timeplt.zip + Time Pilot + Time Pilot is a multi-directionally scrolling shoot-em-up in which the player controls a futuristic jet fighter and takes on the role of pilot trying to rescue fellow pilots who are trapped in different time eras. The game consists of five different stages of play, each of which is set in a different time period. + + + 0.90 + 19820101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/timeplt.png + + + + tp84.zip + Time Pilot '84 (set 1) + Time Pilot '84 is an eight-way scrolling shoot 'em up and is the sequel to 1982's 'Time Pilot'. As with the prequel, the game's stages are set over different periods in time. Players must destroy a set number of enemy ships, after which an end-of-level guardian appears. Once this is destroyed the player's ship warps to the next stage. + +The player's ship is armed with both a forward-firing gun and an infinite number of homing missiles. Each stage consists of both green and metallic enemies, the green enemies can be destroyed with the standard gun, but both metallic enemies and the end-of-stage guardian can only be killed with homing missiles. As the player's ship gets close to a metallic enemy, a "lock-on" square will appear over it, fired homing missiles will then follow and hit the enemy. + +Unlike the prequel, which displayed the year in which each level was set, the time periods of 'Time Pilot '84' are indicated by new enemies and different backgrounds. + 0.90 + 19840101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/tp84.png + + + + tp84a.zip + Time Pilot '84 (set 2) + Time Pilot '84 is an eight-way scrolling shoot 'em up and is the sequel to 1982's 'Time Pilot'. As with the prequel, the game's stages are set over different periods in time. Players must destroy a set number of enemy ships, after which an end-of-level guardian appears. Once this is destroyed the player's ship warps to the next stage. + +The player's ship is armed with both a forward-firing gun and an infinite number of homing missiles. Each stage consists of both green and metallic enemies, the green enemies can be destroyed with the standard gun, but both metallic enemies and the end-of-stage guardian can only be killed with homing missiles. As the player's ship gets close to a metallic enemy, a "lock-on" square will appear over it, fired homing missiles will then follow and hit the enemy. + +Unlike the prequel, which displayed the year in which each level was set, the time periods of 'Time Pilot '84' are indicated by new enemies and different backgrounds. + 0.90 + 19840101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + tp84.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/tp84.png + + + + tp84b.zip + Time Pilot '84 (set 3) + Time Pilot '84 is an eight-way scrolling shoot 'em up and is the sequel to 1982's 'Time Pilot'. As with the prequel, the game's stages are set over different periods in time. Players must destroy a set number of enemy ships, after which an end-of-level guardian appears. Once this is destroyed the player's ship warps to the next stage. + +The player's ship is armed with both a forward-firing gun and an infinite number of homing missiles. Each stage consists of both green and metallic enemies, the green enemies can be destroyed with the standard gun, but both metallic enemies and the end-of-stage guardian can only be killed with homing missiles. As the player's ship gets close to a metallic enemy, a "lock-on" square will appear over it, fired homing missiles will then follow and hit the enemy. + +Unlike the prequel, which displayed the year in which each level was set, the time periods of 'Time Pilot '84' are indicated by new enemies and different backgrounds. + 0.90 + 19840101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + tp84.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/tp84.png + + + + timeplta.zip + Time Pilot (Atari) + Time Pilot is a multi-directionally scrolling shoot-em-up in which the player controls a futuristic jet fighter and takes on the role of pilot trying to rescue fellow pilots who are trapped in different time eras. The game consists of five different stages of play, each of which is set in a different time period. + + + 0.90 + 19820101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + timeplt.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/timeplt.png + + + + timepltc.zip + Time Pilot (Centuri) + Time Pilot is a multi-directionally scrolling shoot-em-up in which the player controls a futuristic jet fighter and takes on the role of pilot trying to rescue fellow pilots who are trapped in different time eras. The game consists of five different stages of play, each of which is set in a different time period. + + + 0.90 + 19820101T000000 + Konami + Konami + Shooter + 2646 + 1-2 + timeplt.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/timeplt.png + + + + timescan1.zip + Time Scanner (set 1, System 16A, FD1089B 317-0024) + Time Scanner is an arcade interpretation of pinball featuring the flippers, ramps, targets, bonus multipliers etc. of the classic genre it serves to replicate. Each level has a specific graphical style - in keeping with the 'time travelling' theme of the game's title - with each of the game's four tables split into two sections. When the player enters either the top or bottom section of a table, the screen will scroll vertically up or down respectively to follow the action. + 0.50 + 19870101T000000 + SEGA + SEGA + Pinball + 31 + 1-2 + timescan.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/timescan.png + + + + timescan.zip + Time Scanner (set 2, System 16B) + Time Scanner is an arcade interpretation of pinball featuring the flippers, ramps, targets, bonus multipliers etc. of the classic genre it serves to replicate. Each level has a specific graphical style - in keeping with the 'time travelling' theme of the game's title - with each of the game's four tables split into two sections. When the player enters either the top or bottom section of a table, the screen will scroll vertically up or down respectively to follow the action. + 0.50 + 19870101T000000 + SEGA + SEGA + Pinball + 31 + 1-2 + Sega Classics + 270 + 320x224 + media/mixrbv2/timescan.png + + + + timesold1.zip + Time Soldiers (US Rev 1) + Travel throughout various time periods to save your fellow comrades in this vertically scrolling shoot'em up. Collect power-ups to help you defeat a variety of enemies and end-bosses. + 0.50 + 19870101T000000 + ADK + ADK + Shooter / Run and Gun + 2903 + 1-2 + timesold.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/timesold.png + + + + timesold.zip + Time Soldiers (US Rev 3) + Travel throughout various time periods to save your fellow comrades in this vertically scrolling shoot'em up. Collect power-ups to help you defeat a variety of enemies and end-bosses. + 0.50 + 19870101T000000 + ADK + ADK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/timesold.png + + + + timetunl.zip + Time Tunnel + TIME TUNNEL is an action game released by TAITO in 1982. + +Pass the objectives on each stage and then pass through the TIME TUNNEL! + +Connect train carriages, pick-up passengers, and transport them to the...space station?! + +Skillfully change the railway points to maneuver the train, avoiding any obstacles. + 0.50 + 19820101T000000 + Taito + Taito + Action + 10 + 1-2 + Taito Classics + 256x224 + media/mixrbv2/timetunl.png + + + + timesup.zip + Time's UP! + Mame + media/mixrbv2/timesup.png + + + timesupd.zip + Time's UP! (Demo) + Mame + media/mixrbv2/timesupd.png + + + tiptop.zip + Tip Top + Congo Bongo is an isometric platform game and is Sega's take on Nintendo's legendary "Donkey Kong". The game begins with an animated cut-scene showing Bongo the gorilla as approaches the campsite of a sleeping safari hunter and + 0.70 + 19830101T000000 + SEGA + SEGA + Platform / Run Jump + 2915 + 1-2 + congo.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/congo.png + + + + titanpac.zip + Titan (Pac-Man hack) + Puckman is the seminal and hugely influential arcade game in which the player guides the legendary Puckman around a single-screen maze eating dots. Puckman is constantly pursued in his task by four colored ghosts. Each ghost has its own unique personality and behavioural patterns and a single touch from any of the ghosts results in Puckman losing a life. When all of Puckman's lives are lost, the game is over. + 0.90 + 19800101T000000 + Namco + Action + 10 + 1-2 + puckman.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/puckman.png + + + + tokib.zip + Toki (bootleg) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + tokip.zip + Toki (US, prototype?) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + tokiu.zip + Toki (US, set 1) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + tokiua.zip + Toki (US, set 2) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + toki.zip + Toki (World, set 1) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + Mame + 256x224 + media/mixrbv2/toki.png + + + + tokia.zip + Toki (World, set 2) + Toki, known in Japan as JuJu Densetsu (JuJu伝説?) is a 1989 shoot 'em up platformer arcade game, or a "run and gun" developed and published in Japan by TAD Corporation and published in North America by Fabtek. It features elements of tongue-in-cheek humor combined with the action. The player takes control of an enchanted ape who must battle hordes of jungle monsters with energy balls from his mouth (described humorously as "monkey-spit" or "monkey-vomit" by some gamers). The ultimate goal is to destroy the evil wizard who cast a spell on you; therefore transforming yourself from an ape back into a human, and rescuing the kidnapped princess. The game was ported to several video game consoles and home computers. + 0.80 + 19890101T000000 + Tad Corporation + Tad Corporation + Platform / Shooter Scrolling + 2887 + 1-2 + toki.zip + Mame + 256x224 + media/mixrbv2/toki.png + + + + tokisens.zip + Toki no Senshi - Chrono Soldier (MC-8123, 317-0040) + The title of this game translates from Japanese as 'Soldier of Time'. + 0.50 + 19870101T000000 + EXA Planning + SEGA + Shooter / Run and Gun + 2903 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/tokisens.png + + + + tokisensa.zip + Toki no Senshi - Chrono Soldier (prototype) + The title of this game translates from Japanese as 'Soldier of Time'. + 0.50 + 19870101T000000 + EXA Planning + SEGA + Shooter / Run and Gun + 2903 + 1-2 + tokisens.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/tokisens.png + + + + tokiob.zip + Tokio / Scramble Formation (bootleg) + Flying over the city of Tokyo in your bi-plane you must shoot down hordes of enemy planes whilst avoiding their attacks. + +Collect and control multiple biplanes to increase your firepower and help you to victory. + 0.60 + 19860101T000000 + Romstar Incorporated + Taito + Shoot'em Up + 79 + 1-2 + tokio.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/tokio.png + + + + tokio.zip + Tokio / Scramble Formation (newer) + Flying over the city of Tokyo in your bi-plane you must shoot down hordes of enemy planes whilst avoiding their attacks. + +Collect and control multiple biplanes to increase your firepower and help you to victory. + 0.60 + 19860101T000000 + Romstar Incorporated + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/tokio.png + + + + tokioo.zip + Tokio / Scramble Formation (older) + Flying over the city of Tokyo in your bi-plane you must shoot down hordes of enemy planes whilst avoiding their attacks. + +Collect and control multiple biplanes to increase your firepower and help you to victory. + 0.60 + 19860101T000000 + Romstar Incorporated + Taito + Shoot'em Up + 79 + 1-2 + tokio.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/tokio.png + + + + tokiou.zip + Tokio / Scramble Formation (US) + Flying over the city of Tokyo in your bi-plane you must shoot down hordes of enemy planes whilst avoiding their attacks. + +Collect and control multiple biplanes to increase your firepower and help you to victory. + 0.60 + 19860101T000000 + Romstar Incorporated + Taito + Shoot'em Up + 79 + 1-2 + tokio.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/tokio.png + + + + jackalj.zip + Tokushu Butai Jackal (Japan, 8-way Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + jackal.zip + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + tndrcadej.zip + Tokusyu Butai U.A.G. (Japan) + Terrorism has reached new heights. AATOM (Atomic Age Terrorist Organization of Miracali) has constructed their own nuclear power plant, and threaten the world with atomic terror. The world powers have decided to initiate operation THUNDERCADE to stop AATOM. Equipped with a high-performance combat motorcycle, sidecar cannons, and backed by a precision B-7 bomber, you set out on the dangerous mission. + 0.50 + 19870101T000000 + SETA + Romstar + Shoot'em Up + 79 + 1-2 + tndrcade.zip + Mame + 270 + 384x224 + media/mixrbv2/tndrcade.png + + + + tomagic.zip + Tom Tom Magic + 19970101T000000 + Pinball + 31 + 1-2 + Mame + media/mixrbv2/tomagic.png + + + + toobin2e.zip + Toobin' (Europe, rev 2) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + toobin.zip + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + toobine.zip + Toobin' (Europe, rev 3) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + toobin.zip + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + toobing.zip + Toobin' (German, rev 3) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + toobin.zip + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + toobin1.zip + Toobin' (rev 1) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + toobin.zip + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + toobin2.zip + Toobin' (rev 2) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + toobin.zip + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + toobin.zip + Toobin' (rev 3) + Toobin' involves Biff and Jet racing their way down the rapids of a river, riding on tires. You rotate your tyre left or right, and drift as the current sends you, making sure to avoid the banks of the river, and the dividing lines in the middle. Hazards include crocodiles, stray logs and branches, and fishermen - you are armed with a limited supply of tin cans to take care of these. There are gates to slide through on the way down - these give you a points bonus. Each level has a strict time limit to adhere to, although there's a kickin' party at the end if you succeed. + 0.90 + 19880101T000000 + Atari + Domark + Sports / Swimming + 2878 + 1-2 + Atari Classics + 270 + 512x384 + media/mixrbv2/toobin.png + + + + topgunbl.zip + Top Gunner (bootleg, Rotary Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + jackal.zip + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + topgunr.zip + Top Gunner (US, 8-way Joystick) + Jackal is an overhead view jeep game for up to 2 players. The controller moves in four directions, button A fires your grenades (upgradeable to bazooka) and button B your machine gun which ALWAYS fires to the top of the screen. Your mission is to locate facilities where soldiers are being held prisoner, rescue as many as possible, and escort them to a safe landing zone where they will be air transported away. After that, you'll need to fight a boss battle against the enemy to progress. + + 0.70 + 19860101T000000 + Konami + Konami + Shooter / Vehicle, Vertical + 2921 + 1-2 + jackal.zip + Konami Classics + 270 + 240x224 + media/mixrbv2/jackal.png + + + + tophuntrh.zip + Top Hunter - Roddy & Cathy (NGH-046) + Clean up the Space Pirates! Time: The age of space colonialism. The dreaded Klaptons are on the loose, turning peaceful settlements into ghost towns. Searching for the price on the Klapton's heads come the cosmic bounty hunters RODDY and CATHY. Do these two have what it takes to save the universe? Can they work together without competing for the rewards themselves? Their fate, and the fate of the free universe is IN YOUR HANDS - the legendary team known as TOP HUNTER! + 0.70 + 19940101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + tophuntr.zip + Neo-Geo + 320x224 + media/mixrbv2/tophuntr.png + + + + tophuntr.zip + Top Hunter - Roddy & Cathy (NGM-046) + Clean up the Space Pirates! Time: The age of space colonialism. The dreaded Klaptons are on the loose, turning peaceful settlements into ghost towns. Searching for the price on the Klapton's heads come the cosmic bounty hunters RODDY and CATHY. Do these two have what it takes to save the universe? Can they work together without competing for the rewards themselves? Their fate, and the fate of the free universe is IN YOUR HANDS - the legendary team known as TOP HUNTER! + 0.70 + 19940101T000000 + SNK + SNK + Platform / Fighter Scrolling + 2896 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/tophuntr.png + + + + tpgolf.zip + Top Player's Golf (NGM-003)(NGH-003) + First Class Competition! On a beautiful course, silent competition will begin. Select from four individual players. Play a Nassau game for a different twist. Enjoy real-life golf excitement! + 0.95 + 19910101T000000 + SNK + SNK + Sports / Golf + 2913 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/tpgolf.png + + + + drivfrct.zip + Top Racer (bootleg of Driving Force) + An early chase-view racing game. + 0.50 + 19840101T000000 + Race, Driving + 28 + 1 + drivfrcp.zip + Namco Classics + 270 + 256x224 + media/mixrbv2/drivfrcp.png + + + + topsecrt.zip + Top Secret (Japan, old revision) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + topsecrt2.zip + Top Secret (Japan, revision B) + Bionic Commando is a scrolling platform shoot-em-up set ten years after the end of World War III, with the player taking on the role of 'Super Joe'; an elite Commando tasked with infiltrating the enemy's heavily defended military base to discover their secrets plans and destroy their missile silos. + +To aid him in his mission, Joe is equipped with a bionic arm; a telescopic grappling hook that is used to traverse the many platforms and ledges that make up the game's levels. The arm can also be used to temporarily stun enemies or knock them from platforms, as well as to retrieve the bonus items, wooden crates and weapons that are occasionally dropped into the war zone by parachute. + +As well as the bionic arm, Joe is armed with a shotgun used to kill enemies and destroy obstructions. The shotgun can only be fired left and right, however, and cannot be used at the same time as the bionic arm. More powerful guns can be picked up throughout the game. + 0.40 + 19870101T000000 + Capcom + Capcom + Platform / Shooter Scrolling + 2887 + 1-2 + bionicc.zip + Capcom Classics + 256x224 + media/mixrbv2/bionicc.png + + + + topshoot.zip + Top Shooter + Top Shooter (c) 1995 Sun Mixing. - TECHNICAL - Main CPU : 68000 (@ 7.670442 Mhz), Z80 (@ 3.57954 Mhz) Sound Chips : YM3438 (@ 7.670442 Mhz), SN76496 (@ 3.57954 Mhz) Screen orientation : Horizontal Video resolution : 320 x 224 pixels Screen refresh : 60 + 0.60 + 19950101T000000 + Sun Mixing + Sun Mixing + Sports / Basketball + 2852 + 1 + Sega Classics + 256x224 + media/mixrbv2/topshoot.png + + + + topspeedu.zip + Top Speed (US) + A driving game very similar to "Out Run", except for the addition of the nitro boost button. + 0.50 + 19870101T000000 + Taito + Taito + Race 3rd Pers. view + 2888 + 1 + topspeed.zip + Taito Classics + 320x240 + media/mixrbv2/topspeed.png + + + + topspeed.zip + Top Speed (World) + A driving game very similar to "Out Run", except for the addition of the nitro boost button. + 0.50 + 19870101T000000 + Taito + Taito + Race 3rd Pers. view + 2888 + 1 + Taito Classics + 320x240 + media/mixrbv2/topspeed.png + + + + toppyrap.zip + Toppy & Rappy + Toppy & Rappy can be seen as a sucessor in spirit to Metal Saver, although it seems inferior to the two years older game in many ways. Not only does it run in a lower resolution, but the art style is very inconsistent between sprites and backgrounds as well. Once again one male and one female character are used as protagonists, but this time they have equal abilities and only differ in their looks. Instead of grabbing powerups directly, the two gather money by defeating enemies, which is used to buy weapons and ammunition in a shop between stages. + 0.50 + 19960101T000000 + SemiCom + SemiCom + Platform / Run Jump + 2915 + 1-2 + SemiCom + 256x224 + media/mixrbv2/toppyrap.png + + + + toramich.zip + Tora e no Michi (Japan) + Tiger Road is a beat 'em up in which you (as Lee Wong) must rescue the village children from the evil Ryo Ken Oh. Many levels are horizontally scrolling, although with high ledges to jump onto and follow for a slightly different path. Magic urns containing improved weapons appear frequently. Most enemies are easy to attack and only need one hit to kill, although they come at you in large hordes. Once you get to the indoor sections you will find big enemies with the ability to kill you with one hit, in sections set on multiple levels complete with stairways. + 0.60 + 19870101T000000 + Capcom + Capcom + Platform / Fighter Scrolling + 2896 + 1-2 + tigeroad.zip + Capcom Classics + 256x224 + media/mixrbv2/tigeroad.png + + + + toride2j.zip + Toride II (Japan) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + toride2g.zip + Mitchell + 320x224 + media/mixrbv2/toride2g.png + + + + toride2g.zip + Toride II Adauchi Gaiden + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + Mitchell + 320x224 + media/mixrbv2/toride2g.png + + + + toride2gg.zip + Toride II Adauchi Gaiden (German) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + toride2g.zip + Mitchell + 320x224 + media/mixrbv2/toride2g.png + + + + toride2gk.zip + Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea) + Solitaire mahjong game. + 0.50 + 19940101T000000 + Metro 3D + Metro 3D + Asiatic board game + 2647 + 1-2 + toride2g.zip + Mitchell + 320x224 + media/mixrbv2/toride2g.png + + + + ctornado.zip + Tornado (DECO Cassette) (US) + A gallery shooting 'em up game very similar to Tempest. + 0.10 + 19820101T000000 + Data East + Shooter + 2646 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/ctornado.png + + + + tornado1.zip + Tornado (set 1, Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + toryumon.zip + Toryumon + The title of this game translates from Japanese as 'Gateway To Success'. + 0.50 + 19940101T000000 + SEGA + SEGA + Puzzle-Game / Fall + 2912 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/toryumon.png + + + + touchgoe.zip + Touch & Go (earlier revision) + A volleyball game. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Sports / Volleyball + 2883 + 1-4 + touchgo.zip + Gaelco + 480x240 + media/mixrbv2/touchgo.png + + + + touchgok.zip + Touch & Go (Korea, unprotected) + A volleyball game. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Sports / Volleyball + 2883 + 1-4 + touchgo.zip + Gaelco + 480x240 + media/mixrbv2/touchgo.png + + + + touchgon.zip + Touch & Go (Non North America) + A volleyball game. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Sports / Volleyball + 2883 + 1-4 + touchgo.zip + Gaelco + 480x240 + media/mixrbv2/touchgo.png + + + + touchgo.zip + Touch & Go (World) + A volleyball game. + 0.70 + 19950101T000000 + Gaelco + Gaelco + Sports / Volleyball + 2883 + 1-4 + Gaelco + 480x240 + media/mixrbv2/touchgo.png + + + + tdfeverj.zip + TouchDown Fever (Japan) + Touchdown Fever is an arcade football game from SNK. Go head-to-head against the computer or a human opponent, or team up with another human player vs. the computer. Choose five, ten, or fifteen minute quarters for either league match (single game) or tournament play. + 0.70 + 19870101T000000 + SNK + SNK + Sports / Football + 2846 + 1-4 + tdfever.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/tdfever.png + + + + tdfever.zip + TouchDown Fever (US) + Touchdown Fever is an arcade football game from SNK. Go head-to-head against the computer or a human opponent, or team up with another human player vs. the computer. Choose five, ten, or fifteen minute quarters for either league match (single game) or tournament play. + 0.70 + 19870101T000000 + SNK + SNK + Sports / Football + 2846 + 1-4 + SNK Classics + 270 + 400x224 + media/mixrbv2/tdfever.png + + + + tdfever2.zip + TouchDown Fever 2 + Touchdown Fever is an arcade football game from SNK. Go head-to-head against the computer or a human opponent, or team up with another human player vs. the computer. Choose five, ten, or fifteen minute quarters for either league match (single game) or tournament play. + 0.70 + 19870101T000000 + SNK + SNK + Sports / Football + 2846 + 1-4 + tdfever.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/tdfever.png + + + + tdfever2b.zip + TouchDown Fever 2 (bootleg) + Touchdown Fever is an arcade football game from SNK. Go head-to-head against the computer or a human opponent, or team up with another human player vs. the computer. Choose five, ten, or fifteen minute quarters for either league match (single game) or tournament play. + 0.70 + 19870101T000000 + SNK + SNK + Sports / Football + 2846 + 1-4 + tdfever.zip + SNK Classics + 270 + 400x224 + media/mixrbv2/tdfever.png + + + + tturfu.zip + Tough Turf (set 1, US, 8751 317-0099) + A fellow that looks like he just got off of work figures that he'd rid the city streets of those pesky gang members and their allies. + 0.50 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + tturf.zip + Sega Classics + 320x224 + media/mixrbv2/tturf.png + + + + tturf.zip + Tough Turf (set 2, Japan, 8751 317-0104) + A fellow that looks like he just got off of work figures that he'd rid the city streets of those pesky gang members and their allies. + 0.50 + 19890101T000000 + SEGA + SEGA + Beat'em Up + 1 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/tturf.png + + + + tkdenshoa.zip + Toukidenshou - Angel Eyes (VER. 960427) + An all-female fighting game featuring 8 selectable angels engaging in one-on-one battle. This game is made by Tecmo, which is not surprising given that they are now more popular because of the "Dead or Alive" series (specifically because of its female characters) than their older series like "Ninja Gaiden". + 0.70 + 19960101T000000 + Tecmo + Tecmo + Fight / Versus + 2885 + 1-2 + tkdensho.zip + Tecmo + 320x240 + media/mixrbv2/tkdensho.png + + + + tkdensho.zip + Toukidenshou - Angel Eyes (VER. 960614) + An all-female fighting game featuring 8 selectable angels engaging in one-on-one battle. This game is made by Tecmo, which is not surprising given that they are now more popular because of the "Dead or Alive" series (specifically because of its female characters) than their older series like "Ninja Gaiden". + 0.70 + 19960101T000000 + Tecmo + Tecmo + Fight / Versus + 2885 + 1-2 + Tecmo + 320x240 + media/mixrbv2/tkdensho.png + + + + arkatour.zip + Tournament Arkanoid (US) + Tournament Arkanoid was released in January 1987 in the USA. It was licensed to Romstar. Tournament Arkanoid is more of an upgrade than an actual sequel. The game play is 100% identical to the original. The only thing different is that all 32 stages have completely different arrangements of blocks. The layout of level 2 is a drawing of the US flag, with the stars represented by silver blocks. The layout of level 4 is a drawing of Chack'n from "Chack'n Pop". Chack'n's eyes are made out of indestructible gold blocks. +The game does not appear to have been distributed anywhere else in the world but the U.S. Tournament Arkanoid was also never ported to any home system. + 0.80 + 19870101T000000 + Taito + Taito + Action / Breakout games + 2917 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/arkatour.png + + + + cprogolfj.zip + Tournament Pro Golf (DECO Cassette) (Japan) + A golf game featuring 18 levels. After the 18h hole, the game restarts from level 1. + 0.30 + 19810101T000000 + Data East + Data East + Sports / Golf + 2913 + 1-2 + cprogolf.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/cprogolf.png + + + + cprogolf.zip + Tournament Pro Golf (DECO Cassette) (US) + A golf game featuring 18 levels. After the 18h hole, the game restarts from level 1. + 0.30 + 19810101T000000 + Data East + Data East + Sports / Golf + 2913 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/cprogolf.png + + + + karatblzj.zip + Toushin Blazers (Japan, Tecmo license) + A horizontally scrolling fighting game for 1 to 4 players. Each playable character (chosen from Mark, Glen, Akira and Gil) kicks and punches their way through a number of enemy-packed levels. In addition to kicking and punching, each character also has their own unique 'special attack'; a move that injures multiple on-screen enemies at the cost of some of the player's health. + +While in no way original (drawing most of its inspiration from Capcom's "Final Fight"), Karate Blazers is both hugely playable and very fast and frenetic, with the amount of on-screen enemies at times overwhelming. The graphics are also well drawn and nicely animated. + 0.70 + 19910101T000000 + Video System + Video System + Beat'em Up + 1 + 1-4 + karatblz.zip + Video System Co. + 352x240 + media/mixrbv2/karatblz.png + + + + toypop.zip + Toypop + Two dolls, Pino and Acha, have gone into a castle to save their friends who have been kidnapped by the witch Majyo. Toy Pop is a top-down multi-directional shooter that can be played both single-player or with two players simultaneously. The players venture through 44 floors, collecting four gold hearts contained in jars on each floor in order to open a doorway to the next floor. Once you open the exit, you need to hurry as the room will begin to close in around you if you wait. Along the way, the players must open gift-wrapped boxes, concealing weapons, and score-increasing bonus items; these various weapons are used to defeat several different varieties of enemies, including toy soldiers, wind-up cars, balloons, and so on, with many typically vulnerable to only one type of weapon. Some of the boxes also contain punch traps that can stun you or time bombs that will blow you up if you do not get away. If hit by an enemy, you lose your outer clothes and are reduced to underclothes. If you get hit again, you lose a life, but you can look around for a new set of clothes. + 0.90 + 19860101T000000 + Namco + Namco + Action + 10 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/toypop.png + + + + trackfld.zip + Track & Field + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + trackfldc.zip + Track & Field (Centuri) + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + trackfldnz.zip + Track & Field (NZ bootleg?) + Track &amp; Field &copy; 1983 Konami. + +Track &amp; Field is an athletics-themed action game for up to four players, who compete against each other in six track and field-based disciplines. + +The game controls consist of two run buttons (one for each &#039;leg&#039; of the athlete) and one &#039;Action&#039; button. Players must hit the two run buttons alternately to build up speed and use action button to jump or throw. + +In each event, there is a qualifying time or minimum score threshold that the player must achieve to advance to the next event. failing to qualify (in one heat for track events or in three attempts in the other events) will reduce the players&#039; number of lives by one, the game is over once all lives are lost. + +Track &amp; Field can accommodate up to four players, who compete in pairs in the running events and individually in the others. If there are fewer than four players, the remaining slots are played by the computer (or player &quot;CPU&quot;). In all multiplayer heats, however, the relative performance of the players has no effect on the game and advancing is based solely on reaching qualifying times and targets. + +The six events are: + +100M DASH - Run as fast as possible. +LONG JUMP - Run to the take-off board then choose angle of jump (42 is the optimum angle). +JAVELIN - Run to the line then choose angle of throw (43 is the optimum angle). +110M HURDLES - Run and time jumps over the hurdles. +HAMMER THROW - As the athlete spins faster and faster, time release of hammer and angle of throw (45 is the optimum angle). +HIGH JUMP - The athlete will run to the bar; just as he reaches it, use Action button to start the jump and hold down the action button to reduce the angle of climb, i.e. you start going straight up at 90 degrees if you tap the button just once. Use run buttons while in the air to gain extra height. + 0.90 + 19830101T000000 + Konami + Konami + Sports / Running trails + 2877 + 1-4 + trackfld.zip + Konami Classics + 256x224 + media/mixrbv2/trackfld.png + + + + transfrm.zip + Transformer + After the devastating underground Dalaus invasion only one TransBot pilot is left standing. You. Armed with your TransBots tranforming weaponry and your own wits, be prepared for the fight of your life as you try to thwart the Dalaus oppression. + 0.50 + 19860101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 256x192 + media/mixrbv2/transfrm.png + + + + travrusab.zip + Traverse USA (bootleg) + A excellent moto racing game. + +Enjoy the wind of American landscape, accelerating hard your motorbike across highways and mountain roads, evading the rivals cars and obstacles on challenging narrow and curves roads, and take a good amount of fuel, to finish the race before running out of fuel! + +The Levels of Cities are: +Los Angeles +Las Vegas +Houston +St. Louis +Chicago +New York + 0.50 + 19830101T000000 + Irem + Race, Driving / Motorcycle + 2943 + 1-2 + travrusa.zip + Irem Classics + 270 + 240x256 + media/mixrbv2/travrusa.png + + + + travrusa.zip + Traverse USA / Zippy Race + A excellent moto racing game. + +Enjoy the wind of American landscape, accelerating hard your motorbike across highways and mountain roads, evading the rivals cars and obstacles on challenging narrow and curves roads, and take a good amount of fuel, to finish the race before running out of fuel! + +The Levels of Cities are: +Los Angeles +Las Vegas +Houston +St. Louis +Chicago +New York + 0.50 + 19830101T000000 + Irem + Race, Driving / Motorcycle + 2943 + 1-2 + Irem Classics + 270 + 240x256 + media/mixrbv2/travrusa.png + + + + treahunt.zip + Treasure Hunt + This game plays a lot like "Donkey Kong" except that the controls are not quite as smooth. There are 5 screens to master if you want to help Jack in his mission. You do not get to play each screen at first, they are added on as you progress through the game. The first time through the game skips from screen 1 right to screen 4. +The 1st screen is fairly simple, you just have to climb to the top of the beanstalk. There are a few enemies, but they can be defeated by simply tossing beans at them. You can find the beans scattered all around the stalk, and picking one up adds one to your ammunition count (or two, depending on the dip switch settings). +In the 2nd screen, Jack manuevers through the clouds and attempts to cross the drawbridge into the castle, but lions and birds stand in his way. +The 3rd screen has Jack climbing the castle stairway in a scene that was obviously inspired by "Donkey Kong". Avoid the cat and the mouse and you can make it to the top. +On the 4th screen you have to jump from platform to platform until you reach the giant's lair. There will be several treasures, grab the flashing one and try to make your escape. +The 5th screen is the first one again, except that this time you are climbing down the beanstalk, and you have falling rocks to dodge, and the giant himself may even be after you (that one depends on the level). + +After making it back to your house you get to watch a little intermission before going after the next treasure. There are four different treasures altogether. The last one is the princess, when you have her the giant himself will follow you down the beanstalk, and you must chop it down to defeat him. After rescuing the princess the game starts over with increased difficulty. + 0.60 + 19820101T000000 + Cinematronics + Hara Industries (Cinematronics license) + Action + 10 + 1-2 + jack.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/jack.png + + + + ctisland3.zip + Treasure Island (DECO Cassette) (Europe?) + Treasure Island &copy; 1982 Data East. + 0.50 + 19810101T000000 + Subsino + Data East + Casino / Slot machine + 2860 + 1-2 + ctisland.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/ctisland.png + + + + ctisland.zip + Treasure Island (DECO Cassette) (US) (set 1) + Treasure Island &copy; 1982 Data East. + 0.50 + 19810101T000000 + Subsino + Data East + Casino / Slot machine + 2860 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/ctisland.png + + + + ctisland2.zip + Treasure Island (DECO Cassette) (US) (set 2) + Treasure Island &copy; 1982 Data East. + 0.50 + 19810101T000000 + Subsino + Data East + Casino / Slot machine + 2860 + 1-2 + ctisland.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/ctisland.png + + + + totc.zip + Treasure of the Caribbean + Treasure of the Caribbean is a puzzle game: you must combine three ghosts or more of the same color. The number of combined ghosts above three are sent to the opponent in the form of graves. Of course, these can in turn be returned if they are close to a combination of three colored ghosts. Of course, the speed also increases but not enough to make the game impossible as a Puyo Puyo or Tetris for example. + 20110101T000000 + Le Cortex / Face + Neo Conception International + Puzzle-Game + 26 + 1-2 + Neo-Geo + media/mixrbv2/totc.png + + + + tripool.zip + Tri-Pool (Casino Tech) + Tri-Pool (c) 1981 Noma. - TECHNICAL - Main CPU : Z80 (@ 3 Mhz) Sound CPU : Z80 (@ 1.5 Mhz) Sound Chips : AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 224 x 256 pixels Screen refresh : 60.00 Hz Palette Colors : 32 Players : 2 Con + 0.30 + 19810101T000000 + Noma + Noma (Casino Tech license) + Sports / Pool + 3028 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/tripool.png + + + + tripoola.zip + Tri-Pool (Costal Games) + Tri-Pool (c) 1981 Noma. - TECHNICAL - Main CPU : Z80 (@ 3 Mhz) Sound CPU : Z80 (@ 1.5 Mhz) Sound Chips : AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 224 x 256 pixels Screen refresh : 60.00 Hz Palette Colors : 32 Players : 2 Con + 0.30 + 19810101T000000 + Noma + Noma (Casino Tech license) + Sports / Pool + 3028 + 1-2 + tripool.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/tripool.png + + + + tricktrp.zip + Trick Trap (World?) + The princess of Vegetaria named Papaya has been kidnapped by the Devil. Now it's up to the prince to rescue her. The prince is equipped with a gun that shoots bullets, a laser gun, and bombs. These weapons can continually be upgraded to more powerful versions. The prince has to go through five areas of Vegetaria, through the forest, a castle wall, a maze, riding a railway truck, and finally the devil's castle. Each of these areas are filled with and enemies and a boss monster and have to be beaten within the given time limit. + 0.70 + 19870101T000000 + Konami + Konami + Shooter / Run and Gun + 2903 + 1-2 + Konami Classics + 270 + 280x224 + media/mixrbv2/tricktrp.png + + + + trckydoc.zip + Tricky Doc (set 1) + The protagonist, is a mad scientist that inadvertently release his genetic creations in all the phases. Of course, our mission is to enclose again all our creatures and avoid chaos. + +Tricky Doc will move through six levels full of enemies running trying to escape, and you must go dodging, crouch, hitting, jumping, going up the stairs and spraying with a spray to paralyze and defend herself from all the naughty creatures to go to the next phase. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Platform / Run Jump Scrolling + 2897 + 1-2 + Mame + 240x224 + media/mixrbv2/trckydoc.png + + + + trckydoca.zip + Tricky Doc (set 2) + The protagonist, is a mad scientist that inadvertently release his genetic creations in all the phases. Of course, our mission is to enclose again all our creatures and avoid chaos. + +Tricky Doc will move through six levels full of enemies running trying to escape, and you must go dodging, crouch, hitting, jumping, going up the stairs and spraying with a spray to paralyze and defend herself from all the naughty creatures to go to the next phase. + 0.30 + 19870101T000000 + Tecfri + Tecfri + Platform / Run Jump Scrolling + 2897 + 1-2 + trckydoc.zip + Mame + 240x224 + media/mixrbv2/trckydoc.png + + + + trigon.zip + Trigon (Japan) + In Lightning Fighters and Trigon, the original Japanese version, there are different rules depending on whether you start the game with one or two players. In a one-player game, you start with no bombs, and when you die the game restarts you at a checkpoint. In a two-player game, each life starts with one bomb, and when you die you respawn in place. There are some powerups that only appear in a two-player game and one that only appears in a one-player game. The game type cannot be changed once the game starts. A second player cannot join an originally one-player game; conversely, if one player dies in a two-player game the game remains in two-player mode and the second player can rejoin at any time. + +In Lightning Fighters, even if you start a one-player game, the game is always in two-player mode: you respawn in place when you die and you start each life with one bomb stocked. This means that a second player can join midway into a one-player game. Unfortunately it also means that the powerup that only appears in one-player games in the other versions, does not appear at all in the US version. + 0.70 + 19900101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + lgtnfght.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/lgtnfght.png + + + + trikitri.zip + Triki Triki (Lover Boy bootleg) + An adult maze game, with explicit sexual action levels in-between. + +In this controversial game, you control a naked man with a purple fedora who runs around a city maze chasing and raping helpless women and must pick up all the women items, while avoid being caught by the police officers and their furious dog. + 0.50 + 19830101T000000 + G.T Enterprise Inc. + Adult + 413 + 1-2 + loverboy.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/loverboy.png + + + + tdpgal.zip + Triple Draw Poker + 19830101T000000 + Design Labs + Design Labs / Thomas Automatics + Casino / Cards + 2872 + 1 + Konami Classics + 270 + 768x224 + media/mixrbv2/tdpgal.png + + + + triplfun.zip + Triple Fun + The game takes place on a game board where you take the role of Hebe. Each time you turn comes, a wheel determines how much spaces you go. When you land on a certain colored space, you go directly to a minigame. These minigames include spot the difference, put the puzzle together, find the character, and a crossword puzzle. The player can also land on a special space where you can use a special wheel. The wheel can either land on something that is useful for the player or could give the player bad luck. After you have beaten a board, you go on to the next one. + 0.50 + 19930101T000000 + Sunsoft + Sunsoft + Various + 39 + 1-2 + oisipuzl.zip + Mame + 320x224 + media/mixrbv2/oisipuzl.png + + + + triplep.zip + Triple Punch (set 1) + You're the carpenter and your task is to complete the squares until you've filled the screen. Sound easy? Not when you hear what's trying to stop you. A gorilla, ghost, eraser and burst of fire all wander the paths. The eraser erases uncompleted squares and the gorilla would love to hammer you. But you're not defenceless. With three swift punches you can knock them out, except for the fire which can't be stopped. Each level introduces a larger area to fill so keep moving! + 0.90 + 19820101T000000 + KKI + K.K. International + Action + 10 + 1-2 + Century Electronics + 270 + 256x224 + media/mixrbv2/triplep.png + + + + triplepa.zip + Triple Punch (set 2) + You're the carpenter and your task is to complete the squares until you've filled the screen. Sound easy? Not when you hear what's trying to stop you. A gorilla, ghost, eraser and burst of fire all wander the paths. The eraser erases uncompleted squares and the gorilla would love to hammer you. But you're not defenceless. With three swift punches you can knock them out, except for the fire which can't be stopped. Each level introduces a larger area to fill so keep moving! + 0.90 + 19820101T000000 + KKI + K.K. International + Action + 10 + 1-2 + triplep.zip + Century Electronics + 270 + 256x224 + media/mixrbv2/triplep.png + + + + trvgns.zip + Trivia Genius + Trivia Master (c) 1985 Enerdyne Technologies. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Screen orientation : Vertical Video resolution : 224 x 288 pixels Screen refresh : 60.00 Hz Palette colors : + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + trvmstr.zip + Jaleco + 90 + 288x224 + media/mixrbv2/trvmstr.png + + + + trvmstr.zip + Trivia Master (set 1) + Trivia Master (c) 1985 Enerdyne Technologies. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Screen orientation : Vertical Video resolution : 224 x 288 pixels Screen refresh : 60.00 Hz Palette colors : + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + Jaleco + 90 + 288x224 + media/mixrbv2/trvmstr.png + + + + trvmstra.zip + Trivia Master (set 2) + Trivia Master (c) 1985 Enerdyne Technologies. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Screen orientation : Vertical Video resolution : 224 x 288 pixels Screen refresh : 60.00 Hz Palette colors : + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + trvmstr.zip + Jaleco + 90 + 288x224 + media/mixrbv2/trvmstr.png + + + + trvmstrb.zip + Trivia Master (set 3) + Trivia Master (c) 1985 Enerdyne Technologies. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Screen orientation : Vertical Video resolution : 224 x 288 pixels Screen refresh : 60.00 Hz Palette colors : + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + trvmstr.zip + Jaleco + 90 + 288x224 + media/mixrbv2/trvmstr.png + + + + trvmstrc.zip + Trivia Master (set 4) + Trivia Master (c) 1985 Enerdyne Technologies. - TECHNICAL - Main CPU : Z80 (@ 1.5 Mhz) Sound Chips : TMS36XX (@ 0.35 Khz), Custom (@ 0.35 Khz) Screen orientation : Vertical Video resolution : 224 x 288 pixels Screen refresh : 60.00 Hz Palette colors : + 19850101T000000 + Enerdyne Technologies + Enerdyne Technologies Inc. + Quiz / English + 2931 + 1-4 + trvmstr.zip + Jaleco + 90 + 288x224 + media/mixrbv2/trvmstr.png + + + + trojanb.zip + Trojan (bootleg) + The game consist of six stages, where the player will face the usual series of small fry enemies, as well as a sub-boss at the middle of each stage and a boss at the end. The player is allowed to start the game at any of the six stages. However, the player must play through the entire game again after defeating the final boss, Achilles, in order to see the true ending (similarly to Ghosts'n Goblins). The player can continue after a game over depending on the dip switch settings. + 0.70 + 19860101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + trojan.zip + Capcom Classics + 256x240 + media/mixrbv2/trojan.png + + + + trojanr.zip + Trojan (Romstar) + The game consist of six stages, where the player will face the usual series of small fry enemies, as well as a sub-boss at the middle of each stage and a boss at the end. The player is allowed to start the game at any of the six stages. However, the player must play through the entire game again after defeating the final boss, Achilles, in order to see the true ending (similarly to Ghosts'n Goblins). The player can continue after a game over depending on the dip switch settings. + 0.70 + 19860101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + trojan.zip + Capcom Classics + 256x240 + media/mixrbv2/trojan.png + + + + trojan.zip + Trojan (US set 1) + The game consist of six stages, where the player will face the usual series of small fry enemies, as well as a sub-boss at the middle of each stage and a boss at the end. The player is allowed to start the game at any of the six stages. However, the player must play through the entire game again after defeating the final boss, Achilles, in order to see the true ending (similarly to Ghosts'n Goblins). The player can continue after a game over depending on the dip switch settings. + 0.70 + 19860101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + Capcom Classics + 256x240 + media/mixrbv2/trojan.png + + + + trojana.zip + Trojan (US set 2) + The game consist of six stages, where the player will face the usual series of small fry enemies, as well as a sub-boss at the middle of each stage and a boss at the end. The player is allowed to start the game at any of the six stages. However, the player must play through the entire game again after defeating the final boss, Achilles, in order to see the true ending (similarly to Ghosts'n Goblins). The player can continue after a game over depending on the dip switch settings. + 0.70 + 19860101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-2 + trojan.zip + Capcom Classics + 256x240 + media/mixrbv2/trojan.png + + + + tron5.zip + Tron (5/12) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + tron.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + tron4.zip + Tron (6/15) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + tron.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + tron3.zip + Tron (6/17) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + tron.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + tron2.zip + Tron (6/25) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + tron.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + tron.zip + Tron (8/9) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + tronger.zip + Tron (Germany) + Tron is a 1- or 2-player game set inside the 'Tron' computer, and is based on the ground-breaking Disney movie of the same name. + +Tron consists of twenty-two stages - or 'phases' - of play. Each phase consists of four separate games called "domains", all of which must be completed before moving on to the next phase. Players can determine the order in which each of the four domains is attempted, but the domain position is random and is only revealed once that domain has been chosen. + +The four domains that make up a phase never change throughout the game, although both the difficulty level and number of enemies increases with each subsequent phase. The domains are as follows: + +LIGHT CYCLES: The player controls a Light Cycle that leaves a blue light trail in its wake. The aim is to 'box in' the yellow enemy Light Cycles, making them crash into either a cycle trail (theirs or the player's) or a wall. The player must also avoid any collision with either walls or light trails. The joystick controls the direction of the bike and the trigger controls its speed. +I/O TOWER: Destroy the Grid Bugs that emerge from the grid surrounding the tower. The bugs will multiply and fill the entire screen if not stopped. Players must attempt to clear a path to - and enter - the I/O Tower before the timer runs out. The stick controls the movement of the player's character and the spinner controls the direction of fire. +TANK MAZE: Destroy all enemy tanks that are patrolling the maze. The player's tank can fire in all directions and can bounce shots off walls, but can be destroyed by a single shot; while enemy tanks can only fire in the direction of travel but need three shots before they are destroyed. "Recognizer" tanks also feature in later phases; these Do NOT shoot but move quickly and will try to ram the player's tank. The joystick controls the movement of the player's tank and the spinner controls the direction of fire. +MCP CONE: Destroy the blocks in the descending, rotating coloured column to clear a path and move the character up into the light cone above the blocks. A bonus is awarded if all of the blocks are destroyed. The stick controls the movement of the character and the spinner controls the direction of fire. + +Bonus lives are awarded periodically throughout the game as specific point scores are reached. Each enemy and item has an assigned point value (see the "SCORING" section for details). + 0.90 + 19820101T000000 + Bally Midway + Bally Midway + Compilation + 34 + 1-2 + tron.zip + Midway Classics + 270 + 512x480 + media/mixrbv2/tron.png + + + + troangel.zip + Tropical Angel + An abstract take on the 3d racing genre, Tropical Angel puts the player in control of a female water-skier who must dodge the many rocks that protrude from the water while attempting to steer through a set number of gates - in the form of a pair of flags - before the time limit expires. The acceleration button needs to be held down all the time while the 'trick' button makes the water-skiing girl spin through one-eighty degrees and proceed to ski backwards. The player cannot steer while traveling backwards, but will earn bonus points for the duration of the trick. As the game progresses, small ramps, buoys and sharks come into play. The small ramps can be jumped to add to the player's score, although they're always in difficult to reach locations. The buoys are usually very close together, but skiing between them earns bonus points. Finally, the shark will appear from time-to-time, running into it means game over, regardless of how much time the player has left. + 0.50 + 19830101T000000 + Irem + Irem + Sports / Skiing + 2902 + 1-2 + Irem Classics + 240x240 + media/mixrbv2/troangel.png + + + + truxton.zip + Truxton / Tatsujin + Tatsujin is taking place somewhere in the near future of space travel, an alien armada is invading the player's home planet aboard 5 gargantuan asteroids. After surviving an attack on the player's cargo barge, players board and pilot one remaining fighter and challenge the aliens in a desperate attempt to quell the alien invasion and divert their asteroid fortresses in the process. + +Tatsujin is a vertical scrolling shooter arcade game, featuring 8 levels with non-stop action and 5 bosses. + 0.70 + 19880101T000000 + Toaplan + Toaplan + Shoot'em up / Vertical + 2851 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/truxton.png + + + + truxton2.zip + Truxton II + Gameplay is similar to the previous Tatsujin. Tatsujin Oh has six huge areas, each with a boss at the end; the game "loops" these six areas forever. Lives are given out at 70000 points, then every 200000 points after; players start with three. + +There are power-ups to increase ship speed, add a smartbomb to your stock, and change/strengthen your current weapon. Red fires bombs in a small area around your ship, blue is a homing laser, and green fires wide-reaching salvos of green shots. + 0.90 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/truxton2.png + + + + tubep.zip + Tube Panic + An early 3-D shoot'em up game. + +Pilot your ship through vast zones and large tubular vortex levels full of enemies. The vast zones are similar in gameplay to William's Blaster, while the tubular levels are similar to Konami's Gyruss. Upon the completion of the tubular levels, the player must dock with the mothership. + +Good luck, fighter pilot! + 0.50 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Plane, 3rd person + 2881 + 1-2 + Nichibutsu + 256x224 + media/mixrbv2/tubep.png + + + + tubepb.zip + Tube Panic (bootleg) + An early 3-D shoot'em up game. + +Pilot your ship through vast zones and large tubular vortex levels full of enemies. The vast zones are similar in gameplay to William's Blaster, while the tubular levels are similar to Konami's Gyruss. Upon the completion of the tubular levels, the player must dock with the mothership. + +Good luck, fighter pilot! + 0.50 + 19840101T000000 + Nichibutsu + Nichibutsu + Shooter / Plane, 3rd person + 2881 + 1-2 + tubep.zip + Nichibutsu + 256x224 + media/mixrbv2/tubep.png + + + + tubeit.zip + Tube-It + Cachat is a very challenging puzzle game where you must complete a line from one electrode along the sides to another, same side or other side. Blocks fall from the top of the screen, but if they reach the top of the playing area, the game is over. This mind-blowing fast game is very highly addictive. The gameplay is quite easy but requires a lot of attention. + 0.50 + 19930101T000000 + Taito + Taito + Puzzle-Game / Fall + 2912 + 1-2 + cachat.zip + Taito Classics + 320x224 + media/mixrbv2/cachat.png + + + + tumbleb.zip + Tumble Pop (bootleg set 1) + Tumble Pop is a platform game for one or two players in which the aim is to clear each level of enemies by sucking them into - then ejecting them from - a portable vacuum-cleaner. + +Holding down the fire button sucks the enemies into the cleaner, releasing the button causes them to be expelled back out. Ejected enemies act as projectiles that can damage and kill any other on-screen enemies that they collide with. All enemies must be killed before players can progress to the next stage. + +Throughout the game, letters of the alphabet randomly appear in bubbles. These can be collected to eventually spell the word "TUMBLEPOP". Once this has been achieved players are transported to a time-limited bonus level, giving them the opportunity to earn bonus points and extra lives. + + + 0.80 + 19910101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + tumblep.zip + Data East Classics + 319x240 + media/mixrbv2/tumblep.png + + + + tumbleb2.zip + Tumble Pop (bootleg set 2) + Tumble Pop is a platform game for one or two players in which the aim is to clear each level of enemies by sucking them into - then ejecting them from - a portable vacuum-cleaner. + +Holding down the fire button sucks the enemies into the cleaner, releasing the button causes them to be expelled back out. Ejected enemies act as projectiles that can damage and kill any other on-screen enemies that they collide with. All enemies must be killed before players can progress to the next stage. + +Throughout the game, letters of the alphabet randomly appear in bubbles. These can be collected to eventually spell the word "TUMBLEPOP". Once this has been achieved players are transported to a time-limited bonus level, giving them the opportunity to earn bonus points and extra lives. + + + 0.80 + 19910101T000000 + Data East + Data East + Platform / Run Jump + 2915 + 1-2 + tumblep.zip + Data East Classics + 319x240 + media/mixrbv2/tumblep.png + + + + turboa.zip + Turbo (encrypted, program 1262-1264) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turbod.zip + Turbo (encrypted, program 1363-1365 rev A) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turboc.zip + Turbo (encrypted, program 1363-1365 rev B) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turbob.zip + Turbo (encrypted, program 1363-1365 rev C) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turboe.zip + Turbo (encrypted, program 1363-1365) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + turbo.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turbo.zip + Turbo (program 1513-1515) + Sega's Turbo is a 3-D racing game from Sega in which the player must pass a set number of rival racers (usually 30) before the time limit expires. Success would see the player progress to the next stage. Turbo's gameplay was unique in that centered ENTIRELY on the passing of cars; while the tracks the player raced on had all of the usual bends and turns of the racing genre, they existed purely for effect and at no point did the player actually have to STEER through them. + 0.90 + 19810101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + Sega Classics + 270 + 512x224 + media/mixrbv2/turbo.png + + + + turbofrcu.zip + Turbo Force (US) + Turbo Force is even more of a direct predecessor to Sonic Wings than is Rabio Lepus: Turbo Force features vertical scrolling gameplay very similar to that of the Sonic Wings series along with a nearly identical power-up system. The only differences in power-ups are that the vehicle slowly loses power even if not damaged, and that instead of a bomb that can be deployed at the player's discretion, the special weapon detonates as soon as its power-up is touched. + 0.70 + 19910101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-3 + turbofrc.zip + Video System Co. + 270 + 352x240 + media/mixrbv2/turbofrc.png + + + + turbofrc.zip + Turbo Force (World, set 1) + Turbo Force is even more of a direct predecessor to Sonic Wings than is Rabio Lepus: Turbo Force features vertical scrolling gameplay very similar to that of the Sonic Wings series along with a nearly identical power-up system. The only differences in power-ups are that the vehicle slowly loses power even if not damaged, and that instead of a bomb that can be deployed at the player's discretion, the special weapon detonates as soon as its power-up is touched. + 0.70 + 19910101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-3 + Video System Co. + 270 + 352x240 + media/mixrbv2/turbofrc.png + + + + turbofrco.zip + Turbo Force (World, set 2) + Turbo Force is even more of a direct predecessor to Sonic Wings than is Rabio Lepus: Turbo Force features vertical scrolling gameplay very similar to that of the Sonic Wings series along with a nearly identical power-up system. The only differences in power-ups are that the vehicle slowly loses power even if not damaged, and that instead of a bomb that can be deployed at the player's discretion, the special weapon detonates as soon as its power-up is touched. + 0.70 + 19910101T000000 + Video System + Video System + Shoot'em Up + 79 + 1-3 + turbofrc.zip + Video System Co. + 270 + 352x240 + media/mixrbv2/turbofrc.png + + + + toutrun3d.zip + Turbo Out Run (cockpit, FD1094 317-0107 decrypted) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrun3.zip + Turbo Out Run (cockpit, FD1094 317-0107) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrun1.zip + Turbo Out Run (deluxe cockpit, FD1094 317-0109) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrunj1d.zip + Turbo Out Run (Japan, deluxe cockpit, FD1094 317-0101 decrypted) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrunj1.zip + Turbo Out Run (Japan, deluxe cockpit, FD1094 317-0101) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrunjd.zip + Turbo Out Run (Japan, Out Run upgrade, FD1094 317-0117 decrypted) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrunj.zip + Turbo Out Run (Japan, Out Run upgrade, FD1094 317-0117) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrund.zip + Turbo Out Run (Out Run upgrade, FD1094 317-0118 decrypted) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + toutrun.zip + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + toutrun.zip + Turbo Out Run (Out Run upgrade, FD1094 317-0118) + Turbo Out Run is the first arcade-based sequel to the legendary 1986 original. It eschews the forked-road, variable route gameplay of it's illustrious predecessor and instead opts for a set route point-to-point race across Am + 0.90 + 19890101T000000 + SEGA + SEGA + Race 3rd Pers. view + 2888 + 1 + Sega Classics + 320x224 + media/mixrbv2/toutrun.png + + + + turpin.zip + Turpin + Help the turtles carry their babies to safety. Watch out for the evil beetles! + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + turtles.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/turtles.png + + + + turpins.zip + Turpin (bootleg on Scramble hardware) + Help the turtles carry their babies to safety. Watch out for the evil beetles! + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + turtles.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/turtles.png + + + + turtshipj.zip + Turtle Ship (Japan) + The game is a typical space shooter that plays horizontally or vertically depending on the level. Three buttons per player: guns, missiles and special. Special is a super weapon which kills all but the most powerful enemies. + 0.60 + 19880101T000000 + Philko + Philko (Sharp Image license) + Shoot'em Up + 79 + 1-2 + turtship.zip + Mame + 384x224 + media/mixrbv2/turtship.png + + + + turtshipk.zip + Turtle Ship (Korea) + The game is a typical space shooter that plays horizontally or vertically depending on the level. Three buttons per player: guns, missiles and special. Special is a super weapon which kills all but the most powerful enemies. + 0.60 + 19880101T000000 + Philko + Philko (Sharp Image license) + Shoot'em Up + 79 + 1-2 + turtship.zip + Mame + 384x224 + media/mixrbv2/turtship.png + + + + turtshipkn.zip + Turtle Ship (Korea, 88/9) + The game is a typical space shooter that plays horizontally or vertically depending on the level. Three buttons per player: guns, missiles and special. Special is a super weapon which kills all but the most powerful enemies. + 0.60 + 19880101T000000 + Philko + Philko (Sharp Image license) + Shoot'em Up + 79 + 1-2 + turtship.zip + Mame + 384x224 + media/mixrbv2/turtship.png + + + + turtshipko.zip + Turtle Ship (Korea, older) + The game is a typical space shooter that plays horizontally or vertically depending on the level. Three buttons per player: guns, missiles and special. Special is a super weapon which kills all but the most powerful enemies. + 0.60 + 19880101T000000 + Philko + Philko (Sharp Image license) + Shoot'em Up + 79 + 1-2 + turtship.zip + Mame + 384x224 + media/mixrbv2/turtship.png + + + + turtship.zip + Turtle Ship (North America) + The game is a typical space shooter that plays horizontally or vertically depending on the level. Three buttons per player: guns, missiles and special. Special is a super weapon which kills all but the most powerful enemies. + 0.60 + 19880101T000000 + Philko + Philko (Sharp Image license) + Shoot'em Up + 79 + 1-2 + Mame + 384x224 + media/mixrbv2/turtship.png + + + + turtles.zip + Turtles + Help the turtles carry their babies to safety. Watch out for the evil beetles! + 0.90 + 19810101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/turtles.png + + + + tutankhm.zip + Tutankham + Inside King Tut's tomb are treasures beyond your wildest dreams. They can be yours... if you dare to take them. Supernatural creatures roam the mazes of the tomb guarding the treasures at all costs. Your only defenses against them are your laser gun... and your wits. Blast away, snatch the loot, escape through secret passageway before it's too late! And when you see a key, take that, too. It will unlock the door to the next chamber and the next adventure. Enter King Tut's tomb and see what awaits you... if you dare. + 0.80 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/tutankhm.png + + + + tutankhms.zip + Tutankham (Stern Electronics) + Inside King Tut's tomb are treasures beyond your wildest dreams. They can be yours... if you dare to take them. Supernatural creatures roam the mazes of the tomb guarding the treasures at all costs. Your only defenses against them are your laser gun... and your wits. Blast away, snatch the loot, escape through secret passageway before it's too late! And when you see a key, take that, too. It will unlock the door to the next chamber and the next adventure. Enter King Tut's tomb and see what awaits you... if you dare. + 0.80 + 19820101T000000 + Konami + Konami + Action + 10 + 1-2 + tutankhm.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/tutankhm.png + + + + twinactn.zip + Twin Action + A rip-off of UPL 1990's "US AAF Mustang". + 0.50 + 19950101T000000 + Afega + Afega + Shoot'em Up + 79 + 1-2 + NMK + 256x224 + media/mixrbv2/twinactn.png + + + + twinadvk.zip + Twin Adventure (Korea) + Guide twin brothers Tom and Sam to rescuing the princess and restoring peace to the Dream Land Paradise by going through various mini-games. + 0.50 + 19950101T000000 + Barko Corp. + Barko Corp. + Compilation + 34 + 1-2 + twinadv.zip + SemiCom + 256x224 + media/mixrbv2/twinadv.png + + + + twinadv.zip + Twin Adventure (World) + Guide twin brothers Tom and Sam to rescuing the princess and restoring peace to the Dream Land Paradise by going through various mini-games. + 0.50 + 19950101T000000 + Barko Corp. + Barko Corp. + Compilation + 34 + 1-2 + SemiCom + 256x224 + media/mixrbv2/twinadv.png + + + + twinbrat.zip + Twin Brats (set 1) + This game is "Ladybug" with more stylish graphics and pictures of naked women between the racks. Like "Mad Donna", it takes the completion of two racks to see the naked lady picture, unlike Mad Donna completing the first (odd numbered) rack will give you the picture obscured by a pattern. + 0.60 + 19950101T000000 + Elettronica Video-Games + Action + 10 + 1-2 + Mame + 336x240 + media/mixrbv2/twinbrat.png + + + + twinbrata.zip + Twin Brats (set 2) + This game is "Ladybug" with more stylish graphics and pictures of naked women between the racks. Like "Mad Donna", it takes the completion of two racks to see the naked lady picture, unlike Mad Donna completing the first (odd numbered) rack will give you the picture obscured by a pattern. + 0.60 + 19950101T000000 + Elettronica Video-Games + Action + 10 + 1-2 + twinbrat.zip + Mame + 336x240 + media/mixrbv2/twinbrat.png + + + + twinbratb.zip + Twin Brats (set 3) + This game is "Ladybug" with more stylish graphics and pictures of naked women between the racks. Like "Mad Donna", it takes the completion of two racks to see the naked lady picture, unlike Mad Donna completing the first (odd numbered) rack will give you the picture obscured by a pattern. + 0.60 + 19950101T000000 + Elettronica Video-Games + Action + 10 + 1-2 + twinbrat.zip + Mame + 336x240 + media/mixrbv2/twinbrat.png + + + + twincobru.zip + Twin Cobra (US) + Twin Cobra also known as "Kyuukyoku Tiger" in japan. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + twincobr.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/twincobr.png + + + + twincobr.zip + Twin Cobra (World) + Twin Cobra also known as "Kyuukyoku Tiger" in japan. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/twincobr.png + + + + twineagl.zip + Twin Eagle - Revenge Joe's Brother + A vertical shoot-em-up that places the player's helicopter against multiple attacking targets in the air, sea, and land. Collecting the weapon and speed power-ups throughout the game is vital since the gameplay is quite difficult. + +The object of the game, which is not explained further, is to avenge Joe's brother - which is probably not assumed to be the player, but presumably a friend of the player who lost his brother to the enemy. (It uses bad English grammar on the subtitle of the screen, using "revenge" as a verb, as apposed to "avenge". That being said, it's a pretty tight game otherwise.) To do so, you must destroy the fortress on the very last level. When you start the game and it scrolls onto the starting screen, the background contains the different levels that you must survive. The starting position of the various enemies does not vary from game to game. + 0.30 + 19880101T000000 + SETA Corporation + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/twineagl.png + + + + twinfalc.zip + Twin Falcons + Twin Falcons or Whizz is a military themed 2D side-scrolling shoot 'em up game where you take control of a fighter aircraft. The aircraft has separate weapons for flying and ground based units/ships. + +You fight a variety of enemies like ships, aircraft and bosses. While playing destroyed enemies drop power-ups. These include: lower or higher speed (D and U), laser (L), hand operated three shot weapon (3 in a circle), three way automatic weapon (3 in a square) and a five shot weapon (R). + 0.30 + 19890101T000000 + Philko + Philko (Poara Enterprises license) + Shoot'em Up + 79 + 1-2 + Mame + 384x224 + media/mixrbv2/twinfalc.png + + + + twinhawku.zip + Twin Hawk (US) + Twin Hawk is a typical vertical scrolling shooter with a top-down view. Your goal is easy, shoot all the enemies along the way. You only get a standard gun on your plane, and no bombs. Instead of bombs you can call helper planes. These planes make a formation around you and help to shoot all enemies. + +Along the way you get the chance to collect power-ups by shooting transport trucks. When these are destroyed they release a power-up. There are three types. First is the weapon upgrade, with this you get a wider and more powerful shot. Second, you get more calls for helper planes. And third are extra lives. + + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + twinhawk.zip + Taito Classics + 270 + 384x224 + media/mixrbv2/twinhawk.png + + + + twinhawk.zip + Twin Hawk (World) + Twin Hawk is a typical vertical scrolling shooter with a top-down view. Your goal is easy, shoot all the enemies along the way. You only get a standard gun on your plane, and no bombs. Instead of bombs you can call helper planes. These planes make a formation around you and help to shoot all enemies. + +Along the way you get the chance to collect power-ups by shooting transport trucks. When these are destroyed they release a power-up. There are three types. First is the weapon upgrade, with this you get a wider and more powerful shot. Second, you get more calls for helper planes. And third are extra lives. + + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + Taito Classics + 270 + 384x224 + media/mixrbv2/twinhawk.png + + + + twinsqua.zip + Twin Squash + Twin Squash (c) 1991 Sega. - TECHNICAL - Sega System C2 hardware Main CPU : 68000 (@ 8.948862 Mhz) Sound Chips : YM3438 (@ 7.670453 Mhz), SN76496 (@ 3.579545 Mhz), UPD7759 (@ 640 Khz) Screen orientation : Horizontal Video resolution : 320 x 224 pixels + 0.70 + 19910101T000000 + SEGA + SEGA + Action / Breakout games + 2917 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/twinsqua.png + + + + twinbeeb.zip + TwinBee (Bubble System) + Twin Bee is an overhead scrolling game starring a pair of bee-shaped robots, Twinbee (the blue one) and his female counterpart Winbee (the pink one), Twin Bee is part of what are called 'cute 'em ups', a slang for shoot-em-up games that feature cute characters, animals and other funny looking creatures, among other whimsical themes and brightly colored landscapes. It's a fun game to play with at least 6 stages that repeat themselves with increased difficulty as you go along. + +Power-ups and extra points can be found in special bells hidden in some enemies that, when shot a certain number of times, will change color and then, when touched by the player, will provide a powerup, such as extra speed. + 0.70 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + twinbee.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/twinbee.png + + + + twinbee.zip + TwinBee (ROM version) + Twin Bee is an overhead scrolling game starring a pair of bee-shaped robots, Twinbee (the blue one) and his female counterpart Winbee (the pink one), Twin Bee is part of what are called 'cute 'em ups', a slang for shoot-em-up games that feature cute characters, animals and other funny looking creatures, among other whimsical themes and brightly colored landscapes. It's a fun game to play with at least 6 stages that repeat themselves with increased difficulty as you go along. + +Power-ups and extra points can be found in special bells hidden in some enemies that, when shot a certain number of times, will change color and then, when touched by the player, will provide a powerup, such as extra speed. + 0.70 + 19850101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/twinbee.png + + + + twinkle.zip + Twinkle (set 1) + A sequel to "Hyper Pacman". The power-ups tossed throughout the mazes consist of vision goggles, helmet/laser helmets, speed, hyperspeed, jump shoes, bonus stages and free pac-men. The game ends after the 40th stage. + 0.50 + 19970101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + SemiCom + 256x224 + media/mixrbv2/twinkle.png + + + + twinklea.zip + Twinkle (set 2) + A sequel to "Hyper Pacman". The power-ups tossed throughout the mazes consist of vision goggles, helmet/laser helmets, speed, hyperspeed, jump shoes, bonus stages and free pac-men. The game ends after the 40th stage. + 0.50 + 19970101T000000 + SemiCom + SemiCom + Action + 10 + 1-2 + twinkle.zip + SemiCom + 256x224 + media/mixrbv2/twinkle.png + + + + twinspri.zip + Twinkle Star Sprites + Competitive shooter with flavors of Galaga, Fighting Games, and Sailor Moon. + 0.65 + 19970101T000000 + ADK + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/twinspri.png + + + + mtwinsb.zip + Twins (bootleg of Mega Twins) + The game features two twins who are attempting to re-take control of their land, Alurea, after a monster unexpectedly attacks, destroying everything in its path. The people of Alurea have lived in peace for a thousand years and have forgotten how to fight, yet the land's only survivors, the twin sons of the king, must take up the challenge and return their kingdom to its former glory. The two twins, aged around 15 at the time the game takes place, venture forth in search of a legendary stone known as "Dragon Blue Eyes", which is rumored to be able to put everything back to rights. + 0.80 + 19900101T000000 + Capcom + Capcom + Platform + 7 + 1-2 + mtwins.zip + Capcom Play System + 384x224 + media/mixrbv2/mtwins.png + + + + twotiger.zip + Two Tigers (dedicated) + Two Tigers is a 2-D shooter. The game starts by telling you how may hits you must make on the ship before you can claim credit for sinking it. You then will go to the next screen which has your fighter/bomber in the middle of the screen. A gunsight will also be somewhere in the sky (the gunsight is actually the spot where anti-aircraft fire will be hitting at). Soon the sky is filled with enemy planes and a ship enters the screen from the left side. You mission will be to do whatever it takes to put the required number of holes into the enemy ship to sink it. You have at your disposal a single bomb and the enemy planes themselves for achieving your goal. Along the way, other things may assist (if you shoot them) such as mines and fuel drums. The game will go until you fail to sink 2 ships. If you are in 2-player cooperative mode, then the number of holes to sink a ship will be increased. The same rules apply, though, for sending it to the bottom of the sea. + 0.40 + 19840101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/twotiger.png + + + + tylz.zip + Tylz (prototype) + This is an isometric scrolling game where the player controls a jester & has to either walk on or shoot tiles to change them from black to purple. The player can also walk over holes to change them to black tiles, which then can be changed to purple by doing either of those 2 things. Sometimes, a crown will appear. By walking over the crown, the level automatically ends and the player is transported a few levels beyond the last one. There are several enemies including various soldiers, knights, elephants, ostrich like birds, archers, and royal characters like princes, queens, and kings that the player can shoot to temporarily defeat. There is also a flat block that can only be defeated by shooting at its narrow side (not directly from the front or behind). There are also flashing tiles that the player has to get to prevent the cracking of the tiles. Once the player steps on or shoots these, he is temporarily invincible until the screen stops flashing. + 0.10 + 19820101T000000 + Mylstar Electronics + Mylstar + Action + 10 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/tylz.png + + + + typhoon.zip + Typhoon + The player has been issued an emergency order. He must save the earth from being conquered by enemy forces. He climbs into his helicopter and prepares for intense aerial combat. Shooting oncoming enemy aircrafts and bombing the enemies below, he tries to make his way through the different stages to reach the enemy base. When he finishes the first stage, he is transported to his next mission by ab aircraft carrier. He hops into his jet fighters, tanks, ships, helicopters, and aircraft carriers. The player must also be aware of unseen enemies and surprise attacks. + +Different kinds of power ups can be obtained throughout the game. These include: +'3' 3-Way: Bullets fire forward, right, and left. +'L' Laser: Player can shoot double lasers. +'T' Triple: Missiles are fired that spread out three ways in front. +'V' Vulcan: Rapid bullets are fired in the directions controlled. +'B' Bomb: Air to ground missles which can be upgraded twice. +'O' Orbital: A small drone using the same weaponry as the helicopter which can be otained by clearing a special formation of little red fighters. + +There is an additional super weapon that destroys all the enemies on the screen at once. However, use of this weapon is limited. + +Ajax contains 2 different types of stages: 2-D and 3-D. In the 2-D stage, the player controls a helicopter. In the 3-D stage, the player commands a jet fighter. + +Ajax features some impressive graphics filled with rotation and scaling effects (some may get a little dizzy, though!), a solid soundtrack and excellent game control. Highly recommended for any shoot'em up enthusiast! + 0.70 + 19870101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + ajax.zip + Konami Classics + 270 + 288x224 + media/mixrbv2/ajax.png + + + + earthjkrp.zip + U.N. Defense Force: Earth Joker (Japan, prototype?) + A.D. 2026. The earth feels the onslaught of total takeover from a hostile and powerful enemy. They call themselves Slytow. All the countries of the Earth fall before there might. The military is powerless against the Slytow. The few who survive flee out to space to form colonies, based on their former nations. Their dream: to regroup and wrest control of the earth from the Slytow. + +Earth Joker - U.N. Defense Force is a Vertical Shoot-'Em-Up, developed and published by Visco Games, which was released in 1993. The player can pick from four different ships, and has to go through seven stages. The ships are equipped with a charge laser, that can be used holding down the fire button. + 0.70 + 19930101T000000 + Visco + Visco + Shoot'em Up + 79 + 1-2 + earthjkr.zip + Visco + 270 + 320x240 + media/mixrbv2/earthjkr.png + + + + earthjkr.zip + U.N. Defense Force: Earth Joker (US / Japan, set 1) + A.D. 2026. The earth feels the onslaught of total takeover from a hostile and powerful enemy. They call themselves Slytow. All the countries of the Earth fall before there might. The military is powerless against the Slytow. The few who survive flee out to space to form colonies, based on their former nations. Their dream: to regroup and wrest control of the earth from the Slytow. + +Earth Joker - U.N. Defense Force is a Vertical Shoot-'Em-Up, developed and published by Visco Games, which was released in 1993. The player can pick from four different ships, and has to go through seven stages. The ships are equipped with a charge laser, that can be used holding down the fire button. + 0.70 + 19930101T000000 + Visco + Visco + Shoot'em Up + 79 + 1-2 + Visco + 270 + 320x240 + media/mixrbv2/earthjkr.png + + + + earthjkra.zip + U.N. Defense Force: Earth Joker (US / Japan, set 2) + A.D. 2026. The earth feels the onslaught of total takeover from a hostile and powerful enemy. They call themselves Slytow. All the countries of the Earth fall before there might. The military is powerless against the Slytow. The few who survive flee out to space to form colonies, based on their former nations. Their dream: to regroup and wrest control of the earth from the Slytow. + +Earth Joker - U.N. Defense Force is a Vertical Shoot-'Em-Up, developed and published by Visco Games, which was released in 1993. The player can pick from four different ships, and has to go through seven stages. The ships are equipped with a charge laser, that can be used holding down the fire button. + 0.70 + 19930101T000000 + Visco + Visco + Shoot'em Up + 79 + 1-2 + earthjkr.zip + Visco + 270 + 320x240 + media/mixrbv2/earthjkr.png + + + + earthjkrb.zip + U.N. Defense Force: Earth Joker (US / Japan, set 3) + A.D. 2026. The earth feels the onslaught of total takeover from a hostile and powerful enemy. They call themselves Slytow. All the countries of the Earth fall before there might. The military is powerless against the Slytow. The few who survive flee out to space to form colonies, based on their former nations. Their dream: to regroup and wrest control of the earth from the Slytow. + +Earth Joker - U.N. Defense Force is a Vertical Shoot-'Em-Up, developed and published by Visco Games, which was released in 1993. The player can pick from four different ships, and has to go through seven stages. The ships are equipped with a charge laser, that can be used holding down the fire button. + 0.70 + 19930101T000000 + Visco + Visco + Shoot'em Up + 79 + 1-2 + earthjkr.zip + Visco + 270 + 320x240 + media/mixrbv2/earthjkr.png + + + + unsquad.zip + U.N. Squadron (US) + U.N. Squadron / Area 88 is a horizontally-scrolling shoot-em-up and is based on the Manga series of the same name. The game features characters from the original Manga and their mission is to battle their way through enemy-packed levels to stop a terrorist group known as 'Project 4'. + 0.70 + 19890101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/unsquad.png + + + + vball2pjb.zip + U.S. Championship V'ball (bootleg of Japan set) + The player takes control of a pair of beach bums named George and Michael who make their living playing beach volleyball against locals. One day, they find a flyer for a nationwide beach volleyball tournament offering the winning team a $2,500,000 cash prize. + +In single-player mode, one person controls both characters on a team. In two-player mode, the players either cooperate by playing on the same team or compete against each other by controlling opposing teams. The American version allows the game to be played by up to four players (if the cabinet allows it). The single-player mode consists of two cycles with four stages: the Minor Circuit and the Major Circuit. The stages in the game are Daytona Beach, New York, Los Angeles and Hawaii. After completing the Major Circuit, the player faces against the U.S. Navy team, set in a naval base. + +The controls consist of an eight directional joystick and two buttons for jumping and receiving. The characters perform several moves including power spiking, back spiking, jump-serving, blocking and diving. + +There are a few minor differences between the Japanese and American releases. The Japanese release features an opening cut-scene explaining the plot. Between matches, intermission sequences depict the main characters visiting a car dealership to purchase a vehicle. As the player progresses, the cars increase in quality, shifting from used cars to new cars during the Major Circuit. The American release removes these cut-scenes, but extends the multiplayer support to up to four players with multiple game modes: 1 or 2 players against the computer, 1-on-1, 2-on-1, or 2-on-2. + 0.70 + 19890101T000000 + SPS + Sharp + Sports / Volleyball + 2883 + 1-4 + vball.zip + Technos + 256x240 + media/mixrbv2/vball.png + + + + vballb.zip + U.S. Championship V'ball (bootleg of US set) + The player takes control of a pair of beach bums named George and Michael who make their living playing beach volleyball against locals. One day, they find a flyer for a nationwide beach volleyball tournament offering the winning team a $2,500,000 cash prize. + +In single-player mode, one person controls both characters on a team. In two-player mode, the players either cooperate by playing on the same team or compete against each other by controlling opposing teams. The American version allows the game to be played by up to four players (if the cabinet allows it). The single-player mode consists of two cycles with four stages: the Minor Circuit and the Major Circuit. The stages in the game are Daytona Beach, New York, Los Angeles and Hawaii. After completing the Major Circuit, the player faces against the U.S. Navy team, set in a naval base. + +The controls consist of an eight directional joystick and two buttons for jumping and receiving. The characters perform several moves including power spiking, back spiking, jump-serving, blocking and diving. + +There are a few minor differences between the Japanese and American releases. The Japanese release features an opening cut-scene explaining the plot. Between matches, intermission sequences depict the main characters visiting a car dealership to purchase a vehicle. As the player progresses, the cars increase in quality, shifting from used cars to new cars during the Major Circuit. The American release removes these cut-scenes, but extends the multiplayer support to up to four players with multiple game modes: 1 or 2 players against the computer, 1-on-1, 2-on-1, or 2-on-2. + 0.70 + 19890101T000000 + SPS + Sharp + Sports / Volleyball + 2883 + 1-4 + vball.zip + Technos + 256x240 + media/mixrbv2/vball.png + + + + vball2pj.zip + U.S. Championship V'ball (Japan) + The player takes control of a pair of beach bums named George and Michael who make their living playing beach volleyball against locals. One day, they find a flyer for a nationwide beach volleyball tournament offering the winning team a $2,500,000 cash prize. + +In single-player mode, one person controls both characters on a team. In two-player mode, the players either cooperate by playing on the same team or compete against each other by controlling opposing teams. The American version allows the game to be played by up to four players (if the cabinet allows it). The single-player mode consists of two cycles with four stages: the Minor Circuit and the Major Circuit. The stages in the game are Daytona Beach, New York, Los Angeles and Hawaii. After completing the Major Circuit, the player faces against the U.S. Navy team, set in a naval base. + +The controls consist of an eight directional joystick and two buttons for jumping and receiving. The characters perform several moves including power spiking, back spiking, jump-serving, blocking and diving. + +There are a few minor differences between the Japanese and American releases. The Japanese release features an opening cut-scene explaining the plot. Between matches, intermission sequences depict the main characters visiting a car dealership to purchase a vehicle. As the player progresses, the cars increase in quality, shifting from used cars to new cars during the Major Circuit. The American release removes these cut-scenes, but extends the multiplayer support to up to four players with multiple game modes: 1 or 2 players against the computer, 1-on-1, 2-on-1, or 2-on-2. + 0.70 + 19890101T000000 + SPS + Sharp + Sports / Volleyball + 2883 + 1-4 + vball.zip + Technos + 256x240 + media/mixrbv2/vball.png + + + + vball.zip + U.S. Championship V'ball (US) + The player takes control of a pair of beach bums named George and Michael who make their living playing beach volleyball against locals. One day, they find a flyer for a nationwide beach volleyball tournament offering the winning team a $2,500,000 cash prize. + +In single-player mode, one person controls both characters on a team. In two-player mode, the players either cooperate by playing on the same team or compete against each other by controlling opposing teams. The American version allows the game to be played by up to four players (if the cabinet allows it). The single-player mode consists of two cycles with four stages: the Minor Circuit and the Major Circuit. The stages in the game are Daytona Beach, New York, Los Angeles and Hawaii. After completing the Major Circuit, the player faces against the U.S. Navy team, set in a naval base. + +The controls consist of an eight directional joystick and two buttons for jumping and receiving. The characters perform several moves including power spiking, back spiking, jump-serving, blocking and diving. + +There are a few minor differences between the Japanese and American releases. The Japanese release features an opening cut-scene explaining the plot. Between matches, intermission sequences depict the main characters visiting a car dealership to purchase a vehicle. As the player progresses, the cars increase in quality, shifting from used cars to new cars during the Major Circuit. The American release removes these cut-scenes, but extends the multiplayer support to up to four players with multiple game modes: 1 or 2 players against the computer, 1-on-1, 2-on-1, or 2-on-2. + 0.70 + 19890101T000000 + SPS + Sharp + Sports / Volleyball + 2883 + 1-4 + Technos + 256x240 + media/mixrbv2/vball.png + + + + usclssic.zip + U.S. Classic + A basic golf game that starts with a view from the tee that shows wind velocity, direction and distance to the green. Choose your club and swing by rolling the track-ball with the desired force and direction. Extra holes given for par and under par. + 0.70 + 19890101T000000 + SETA Corporation + Sports / Golf + 2913 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/usclssic.png + + + + cawingj.zip + U.S. Navy (901012 Japan) + Carrier Air Wing / U.S. Navy is a horizontally-scrolling shoot-em-up for one or two players set in the 1990s, a decade of great change marked by growing friendships between old enemies and never before seen levels of co-operation between powerful nations of the world. However, in 1997, using new weapons designed in secrecy, the Middle Eastern country of 'Rabu' threatens to destroy this new and fragile peace. + +Players chose to pilot any one of three different jet fighters and must battle their way through ten enemy-packed stages. Each fighter has a fuel bar which is full at the start of each stage but gradually decreases, additional fuel is lost each time the fighter takes damage from an enemy. + 0.85 + 19900101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + cawing.zip + Capcom Play System + 384x224 + media/mixrbv2/cawing.png + + + + dangara.zip + Ufo Robo Dangar (12/1/1986) + You fly a spaceship in a vertically scrolling game while fighting off enemy ships and collecting ship parts that combine to form an enormous, fist-launching robot. If the player can keep the robot in one piece (a difficult task considering the number of enemies the game throws at you), they'll eventually be able to arm it with a gun and even transform it into one of several devastatingly powerful smaller ships. + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + dangar.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/dangar.png + + + + dangar.zip + Ufo Robo Dangar (4/07/1987) + You fly a spaceship in a vertically scrolling game while fighting off enemy ships and collecting ship parts that combine to form an enormous, fist-launching robot. If the player can keep the robot in one piece (a difficult task considering the number of enemies the game throws at you), they'll eventually be able to arm it with a gun and even transform it into one of several devastatingly powerful smaller ships. + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + Nichibutsu + 270 + 256x224 + media/mixrbv2/dangar.png + + + + dangarb.zip + Ufo Robo Dangar (9/26/1986) + You fly a spaceship in a vertically scrolling game while fighting off enemy ships and collecting ship parts that combine to form an enormous, fist-launching robot. If the player can keep the robot in one piece (a difficult task considering the number of enemies the game throws at you), they'll eventually be able to arm it with a gun and even transform it into one of several devastatingly powerful smaller ships. + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + dangar.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/dangar.png + + + + dangarj.zip + Ufo Robo Dangar (9/26/1986, Japan) + You fly a spaceship in a vertically scrolling game while fighting off enemy ships and collecting ship parts that combine to form an enormous, fist-launching robot. If the player can keep the robot in one piece (a difficult task considering the number of enemies the game throws at you), they'll eventually be able to arm it with a gun and even transform it into one of several devastatingly powerful smaller ships. + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + dangar.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/dangar.png + + + + dangarbt.zip + Ufo Robo Dangar (bootleg) + You fly a spaceship in a vertically scrolling game while fighting off enemy ships and collecting ship parts that combine to form an enormous, fist-launching robot. If the player can keep the robot in one piece (a difficult task considering the number of enemies the game throws at you), they'll eventually be able to arm it with a gun and even transform it into one of several devastatingly powerful smaller ships. + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shoot'em Up + 79 + 1-2 + dangar.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/dangar.png + + + + ufosensi.zip + Ufo Senshi Yohko Chan (MC-8123, 317-0064) + You play with a cute extraterrestrial soldier girl named Youko-chan, through a top view city maze full of enemies, after descending of UFO ship, will have to defend the city at all costs using his gun and his power digging to hide and evade enemies such as monsters, gargoyle, evil Knights and robots and pick coins to earn points and save the city. + 0.50 + 19880101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/ufosensi.png + + + + uecology.zip + Ultimate Ecology (931203 Japan) + Eco Fighters is a horizontal shooter, where the player controls a ship with a rotating gun. As suggested by both its titles, the game has an "eco-friendly" theme. It was also developed by the same team from two Mega Man arcade titles, The Power Battle and The Power Fighters. + 0.70 + 19930101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + ecofghtr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/ecofghtr.png + + + + uballoon.zip + Ultra Balloon + On a seemingly peaceful night in the Robinson household there are strange things afoot in the baby's room... the toys are launching a revolution and are creating a crazy mess! You must help the cool robot-controlling infant and save him from the evil blue monster. Take the part of a cool blue penguin and navigate through the increasingly tricky levels to solve the puzzles and save the day! Jump between platforms and solve the puzzles to stop the evil plans of the blue monster! + +A "Bubble Bobble" clone. + 0.50 + 19960101T000000 + SunA + SunA + Platform / Run Jump + 2915 + 1-2 + Mame + 256x224 + media/mixrbv2/uballoon.png + + + + utoukond.zip + Ultra Toukon Densetsu (Japan) + Horizontal beat'em up featuring, in SD (Super Deformed), Ultraman and his comrades who fight evil monsters. + 0.50 + 19930101T000000 + Banpresto + Banpresto + Beat'em Up + 1 + 1-2 + Banpresto + 384x224 + media/mixrbv2/utoukond.png + + + + ultraman.zip + Ultraman (Japan) + In the future, Earth must protect itself from alien invaders, a task handled by the Science Special Search Party. However, they are not alone in this endeavor. After crashing his ship on Earth while in pursuit of the evil alien Bemular, the super-being Ultraman is here to help whenever the attacking aliens prove too much for humanity alone to handle. Standing hundreds of feet tall with incredible strength and amazing abilities, he can only remain on Earth for a few minutes, and so must defeat his foes before his power drains completely. + 0.30 + 19910101T000000 + Banpresto + Banpresto + Fight / Versus + 2885 + 1-2 + Banpresto + 288x224 + media/mixrbv2/ultraman.png + + + + umanclub.zip + Ultraman Club - Tatakae! Ultraman Kyoudai!! + Is a 2D top-down single screen arcade game, based on the superhero Ultraman, with chibi, anime-style graphic. The player controls one of 8 versions of Ultraman. Gameplay is very simple - Ultraman must kill all enemies on screen. He has two types of attack - one is very short, but has basically unlimited ammo, & the second has better range, but is very limited. Fallen enemies drop various bonuses (like extra life or bombardment special moves), & Ultraman can pick them up. + 0.50 + 19920101T000000 + Banpresto + Shooter + 2646 + 1-2 + Banpresto + 384x240 + media/mixrbv2/umanclub.png + + + + unclepoo.zip + Uncle Poo + A one or two player funny maze game. + +Help the hilarious old man named literally "uncle poo" to escape from maze and collecting all the treasure items, defeat the animal enemies using flatulence and advancing fast using roller skates to avoiding the inundation advance to go to the next level! + 0.60 + 19830101T000000 + Diatec + Diatec + Action + 10 + 1-2 + Cinematronics + 270 + 256x240 + media/mixrbv2/unclepoo.png + + + + uniwars.zip + UniWar S + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + uniwarsa.zip + UniWar S (bootleg) + A four-stage space shoot-em-up where the player faces off against four different types of enemies. Certain enemies drop "space soldiers" down to the bottom of the screen, where they can attack the player's ship from behind. After completing a stage, the game warps the player's ship to the next stage. + 0.50 + 19800101T000000 + Irem + Irem + Shooter / Space Invaders Like + 2900 + 1-2 + uniwars.zip + Irem Classics + 270 + 768x224 + media/mixrbv2/uniwars.png + + + + unkpacg.zip + unknown Pac-Man gambling game + Casino / Cards + 2872 + 1 + Mame + 256x224 + media/mixrbv2/unkpacg.png + + + + upndown.zip + Up'n Down (315-5030) + Up'n Down is an abstract racing game viewed in a forced third-person perspective. + +The goal of the game is to collect coloured flags, while avoiding the enemy vehicles and obstacles that litter each course. The flags needed are displayed at the top of the screen and are coloured as follows: Light green, blue, red, olive, dark green, magenta, yellow and black. If the flags are collected quickly enough, bonus points are awarded. Collected flags remain visible on the track but are changed to white in colour. + 0.90 + 19830101T000000 + SEGA + SEGA + Action + 10 + 1-2 + Sega Classics + 270 + 512x224 + media/mixrbv2/upndown.png + + + + upndownu.zip + Up'n Down (not encrypted) + Up'n Down is an abstract racing game viewed in a forced third-person perspective. + +The goal of the game is to collect coloured flags, while avoiding the enemy vehicles and obstacles that litter each course. The flags needed are displayed at the top of the screen and are coloured as follows: Light green, blue, red, olive, dark green, magenta, yellow and black. If the flags are collected quickly enough, bonus points are awarded. Collected flags remain visible on the track but are changed to white in colour. + 0.90 + 19830101T000000 + SEGA + SEGA + Action + 10 + 1-2 + upndown.zip + Sega Classics + 270 + 512x224 + media/mixrbv2/upndown.png + + + + mustangs.zip + US AAF Mustang (25th May. 1990 / Seoul Trading) + You take control of a US fighter-fighter plane. And keep going on, by shooting dozens of enemy plane. This side scrolling game has good BGs. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + mustang.zip + Mame + 256x224 + media/mixrbv2/mustang.png + + + + mustang.zip + US AAF Mustang (25th May. 1990) + You take control of a US fighter-fighter plane. And keep going on, by shooting dozens of enemy plane. This side scrolling game has good BGs. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 256x224 + media/mixrbv2/mustang.png + + + + mustangb.zip + US AAF Mustang (bootleg) + You take control of a US fighter-fighter plane. And keep going on, by shooting dozens of enemy plane. This side scrolling game has good BGs. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + mustang.zip + Mame + 256x224 + media/mixrbv2/mustang.png + + + + mustangb2.zip + US AAF Mustang (TAB Austria bootleg) + You take control of a US fighter-fighter plane. And keep going on, by shooting dozens of enemy plane. This side scrolling game has good BGs. + 0.50 + 19900101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + mustang.zip + Mame + 256x224 + media/mixrbv2/mustang.png + + + + vfive.zip + V-Five (Japan) + A rather obscure vertical scrolling shooter, guide your ship in a battle against aliens using three different weapons. This game is known in Japan as V-Five and is also the first game from Tsuneki Ikeda. + 0.60 + 19920101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + grindstm.zip + Toaplan + 270 + 320x240 + media/mixrbv2/grindstm.png + + + + vliner53.zip + V-Liner (v0.53) + V-Liner is simply a money game (virtual) as a slot machine like a real Casino! + 20010101T000000 + Dyna + SNK + Casino / Slot machine + 2860 + 1 + vliner.zip + Neo-Geo + 320x224 + media/mixrbv2/vliner.png + + + + vliner54.zip + V-Liner (v0.54) + V-Liner is simply a money game (virtual) as a slot machine like a real Casino! + 20010101T000000 + Dyna + SNK + Casino / Slot machine + 2860 + 1 + vliner.zip + Neo-Geo + 320x224 + media/mixrbv2/vliner.png + + + + vliner6e.zip + V-Liner (v0.6e) + V-Liner is simply a money game (virtual) as a slot machine like a real Casino! + 20010101T000000 + Dyna + SNK + Casino / Slot machine + 2860 + 1 + vliner.zip + Neo-Geo + 320x224 + media/mixrbv2/vliner.png + + + + vliner.zip + V-Liner (v0.7a) + V-Liner is simply a money game (virtual) as a slot machine like a real Casino! + 20010101T000000 + Dyna + SNK + Casino / Slot machine + 2860 + 1 + Neo-Geo + 320x224 + media/mixrbv2/vliner.png + + + + vliner7e.zip + V-Liner (v0.7e) + V-Liner is simply a money game (virtual) as a slot machine like a real Casino! + 20010101T000000 + Dyna + SNK + Casino / Slot machine + 2860 + 1 + vliner.zip + Neo-Geo + 320x224 + media/mixrbv2/vliner.png + + + + valkyrie.zip + Valkyrie no Densetsu (Japan) + A top-down action-adventure game somewhat similar to The Legend of Zelda. + 0.70 + 19890101T000000 + Namco + Namco + Shooter / Run and Gun + 2903 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/valkyrie.png + + + + valtric.zip + Valtric + The player controls a space ship in eight directions through four different overhead view stages, and is able to shoot in the direction the space ship faces. The space ship drop bombs vertically above the ship and the player can pick up power-ups that enhance the ship weapons, as well as attach options that fire in a direction depending on where the option was attached. The player can avoid danger and obstacles by pushing the ascend button. + +The Enemies consist of a infinitely respawning smaller hordes of moving enemies, stationary cannons, and large bosses enemies, you must destroying all the enemies to clear the stage and complete the mission. + 0.70 + 19860101T000000 + NMK + Jaleco + Shooter / Vehicle, Vertical + 2921 + 1-2 + NMK + 270 + 256x224 + media/mixrbv2/valtric.png + + + + vampjr1.zip + Vampire - the night warriors (940630 Japan) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + vampj.zip + Vampire - the night warriors (940705 Japan) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + vampja.zip + Vampire - the night warriors (940705 Japan, alt) + People tremble in fear of these monsters. A mysterious force awakens them from their long slumber. 'Arise and show your fangs!' The silence of the night is broken by the growls and roars of these evil spirits which have been summoned from beyond. They are coming... tonight! DarkStalkers - the warriors of the night! + +DarkStalkers features spectacular fighting between supernatural monsters with 4 TIMES the graphics of SFII (its 15,000 animation patterns put it way out in front of SSFII Turbo, resulting in realistic movement with smooth animation). With endless playability you'll never tire of, make sport of your opponent with incredible moves like the Special Attack and Death Blow which are humanly impossible. We're talking about unlimited varieties of attack! + +The unimaginable secret power of the dark is unleashed! + 0.80 + 19940101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + dstlk.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/dstlk.png + + + + vhuntjr2.zip + Vampire Hunter - darkstalkers' revenge (950302 Japan) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + vhuntjr1s.zip + Vampire Hunter - darkstalkers' revenge (950307 Japan stop version) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + vhuntjr1.zip + Vampire Hunter - darkstalkers' revenge (950307 Japan) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + vhuntj.zip + Vampire Hunter - darkstalkers' revenge (950316 Japan) + Night Warriors: Darkstalkers' Revenge is the second game in the Darkstalkers series of gothic horror fighting games. Released in 1995, it is the upgraded version of the original game which introduced several gameplay changes to the game. + +The game introduced two new playable characters, Donovan Baine and Hsien-Ko, who were out to hunt the other Darkstalkers (hence the Japanese title, Vampire Hunter). The two bosses from the first game, Huitzil and Pyron, were now playable characters as well. The game was first released for arcades and later ported to the Sega Saturn. Character art was done by Ikeno. + 0.70 + 19950101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + nwarr.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/nwarr.png + + + + vhunt2d.zip + Vampire Hunter 2 - darkstalkers revenge (970913 Japan Phoenix Edition) + Fourteen well-animated creatures from Hell rip, tear and otherwise fight for control of the nether-realms. + 0.70 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vhunt2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vhunt2.png + + + + vhunt2r1.zip + Vampire Hunter 2 - darkstalkers revenge (970913 Japan) + Fourteen well-animated creatures from Hell rip, tear and otherwise fight for control of the nether-realms. + 0.70 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vhunt2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vhunt2.png + + + + vhunt2.zip + Vampire Hunter 2 - darkstalkers revenge (970929 Japan) + Fourteen well-animated creatures from Hell rip, tear and otherwise fight for control of the nether-realms. + 0.70 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/vhunt2.png + + + + vsava.zip + Vampire Savior - the lord of vampire (970519 Asia) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsavb.zip + Vampire Savior - the lord of vampire (970519 Brazil) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsavd.zip + Vampire Savior - the lord of vampire (970519 Euro Phoenix Edition) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsav.zip + Vampire Savior - the lord of vampire (970519 Euro) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsavh.zip + Vampire Savior - the lord of vampire (970519 Hispanic) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsavj.zip + Vampire Savior - the lord of vampire (970519 Japan) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsavu.zip + Vampire Savior - the lord of vampire (970519 USA) + Jedah, one of the ancient Three Lords of Darkrealm has returned. You play as one of fifteen Darkstalkers. Beat Jedah and take your throne as the Lord of the Darkness. + 0.80 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav.png + + + + vsav2d.zip + Vampire Savior 2 - the lord of vampire (970913 Japan Phoenix Edition) + Fifteen characters fight to end the reign of Jedah, the Vampire Savior and save their own souls! + 0.70 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + vsav2.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav2.png + + + + vsav2.zip + Vampire Savior 2 - the lord of vampire (970913 Japan) + Fifteen characters fight to end the reign of Jedah, the Vampire Savior and save their own souls! + 0.70 + 19970101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/vsav2.png + + + + vanvan.zip + Van-Van Car + The player must use a 4-directional joystick to take control of a yellow racer car (the "Van-Van Car"), which is on a mission to burst balloons with its front-mounted spike while watching out for the three killer cars. + 0.70 + 19830101T000000 + Sanritsu Denki + Sanritsu Denki + Action + 10 + 1-2 + Namco Classics + 256x224 + media/mixrbv2/vanvan.png + + + + vanvank.zip + Van-Van Car (Karateco) + The player must use a 4-directional joystick to take control of a yellow racer car (the "Van-Van Car"), which is on a mission to burst balloons with its front-mounted spike while watching out for the three killer cars. + 0.70 + 19830101T000000 + Sanritsu Denki + Sanritsu Denki + Action + 10 + 1-2 + vanvan.zip + Namco Classics + 256x224 + media/mixrbv2/vanvan.png + + + + vanvanb.zip + Van-Van Car (set 3) + The player must use a 4-directional joystick to take control of a yellow racer car (the "Van-Van Car"), which is on a mission to burst balloons with its front-mounted spike while watching out for the three killer cars. + 0.70 + 19830101T000000 + Sanritsu Denki + Sanritsu Denki + Action + 10 + 1-2 + vanvan.zip + Namco Classics + 256x224 + media/mixrbv2/vanvan.png + + + + vandykeb.zip + Vandyke (bootleg with PIC16c57) + Vandyke is a 2D arcade top-down weapon based beat'em up, similar to Avengers.The player controls a barbarian-like warrior, and fights against various enemies and monsters (giant scorpions, giant toads etc.) He uses a sword as main weapon, but can find a better weapon (for example: a flail on a long chain). + 0.70 + 19900101T000000 + UPL + UPL + Fight / Vertical + 2922 + 1-2 + vandyke.zip + Mame + 270 + 256x224 + media/mixrbv2/vandyke.png + + + + vandykejal.zip + Vandyke (Jaleco, Set 1) + Vandyke is a 2D arcade top-down weapon based beat'em up, similar to Avengers.The player controls a barbarian-like warrior, and fights against various enemies and monsters (giant scorpions, giant toads etc.) He uses a sword as main weapon, but can find a better weapon (for example: a flail on a long chain). + 0.70 + 19900101T000000 + UPL + UPL + Fight / Vertical + 2922 + 1-2 + vandyke.zip + Mame + 270 + 256x224 + media/mixrbv2/vandyke.png + + + + vandykejal2.zip + Vandyke (Jaleco, Set 2) + Vandyke is a 2D arcade top-down weapon based beat'em up, similar to Avengers.The player controls a barbarian-like warrior, and fights against various enemies and monsters (giant scorpions, giant toads etc.) He uses a sword as main weapon, but can find a better weapon (for example: a flail on a long chain). + 0.70 + 19900101T000000 + UPL + UPL + Fight / Vertical + 2922 + 1-2 + vandyke.zip + Mame + 270 + 256x224 + media/mixrbv2/vandyke.png + + + + vandyke.zip + Vandyke (Japan) + Vandyke is a 2D arcade top-down weapon based beat'em up, similar to Avengers.The player controls a barbarian-like warrior, and fights against various enemies and monsters (giant scorpions, giant toads etc.) He uses a sword as main weapon, but can find a better weapon (for example: a flail on a long chain). + 0.70 + 19900101T000000 + UPL + UPL + Fight / Vertical + 2922 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/vandyke.png + + + + vanguardc.zip + Vanguard (Centuri) + Vanguard is a scrolling space shooter (some levels are horizontal, some are diagonal, and some are vertical). Shoot down enemies with your laser. Keep a close eye on your ever decreasing fuel gauge, luckily each enemy that you destroy will add to your remaining fuel. Find the energy pods to be temporarily invulnerable; the energy pods will also increase your fuel level. At the end of each level you must defeat a boss that is guarded by two moving force fields with holes in them. The computer will announce the name of the each zone using some nifty early 80's synthesized speech. The different levels include Mountain Zone, Rainbow Zone, Styx Zone, Rainbow Zone 2, Stripe Zone, Rainbow Zone 3, Bleak Zone, and the City of Mystery. + 0.90 + 19810101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + vanguard.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/vanguard.png + + + + vanguardg.zip + Vanguard (Germany) + Vanguard is a scrolling space shooter (some levels are horizontal, some are diagonal, and some are vertical). Shoot down enemies with your laser. Keep a close eye on your ever decreasing fuel gauge, luckily each enemy that you destroy will add to your remaining fuel. Find the energy pods to be temporarily invulnerable; the energy pods will also increase your fuel level. At the end of each level you must defeat a boss that is guarded by two moving force fields with holes in them. The computer will announce the name of the each zone using some nifty early 80's synthesized speech. The different levels include Mountain Zone, Rainbow Zone, Styx Zone, Rainbow Zone 2, Stripe Zone, Rainbow Zone 3, Bleak Zone, and the City of Mystery. + 0.90 + 19810101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + vanguard.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/vanguard.png + + + + vanguardj.zip + Vanguard (Japan) + Vanguard is a scrolling space shooter (some levels are horizontal, some are diagonal, and some are vertical). Shoot down enemies with your laser. Keep a close eye on your ever decreasing fuel gauge, luckily each enemy that you destroy will add to your remaining fuel. Find the energy pods to be temporarily invulnerable; the energy pods will also increase your fuel level. At the end of each level you must defeat a boss that is guarded by two moving force fields with holes in them. The computer will announce the name of the each zone using some nifty early 80's synthesized speech. The different levels include Mountain Zone, Rainbow Zone, Styx Zone, Rainbow Zone 2, Stripe Zone, Rainbow Zone 3, Bleak Zone, and the City of Mystery. + 0.90 + 19810101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + vanguard.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/vanguard.png + + + + vanguard.zip + Vanguard (SNK) + Vanguard is a scrolling space shooter (some levels are horizontal, some are diagonal, and some are vertical). Shoot down enemies with your laser. Keep a close eye on your ever decreasing fuel gauge, luckily each enemy that you destroy will add to your remaining fuel. Find the energy pods to be temporarily invulnerable; the energy pods will also increase your fuel level. At the end of each level you must defeat a boss that is guarded by two moving force fields with holes in them. The computer will announce the name of the each zone using some nifty early 80's synthesized speech. The different levels include Mountain Zone, Rainbow Zone, Styx Zone, Rainbow Zone 2, Stripe Zone, Rainbow Zone 3, Bleak Zone, and the City of Mystery. + 0.90 + 19810101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 256x224 + media/mixrbv2/vanguard.png + + + + vangrd2.zip + Vanguard II + he sequel to Vanguard, Vanguard II takes players out of the caves and into the sky above Earth. Instead of merely being able to shoot in four directions the ship now has the ability to move in eight directions as it flies over the floating alien platform. Pods on the platform must be bombed while aerial defenses must be shot down. After enough pods are destroyed the core can be bombed, destroying the platform and ending the level. + 0.50 + 19840101T000000 + SNK + SNK + Shooter + 2646 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/vangrd2.png + + + + vmetal.zip + Varia Metal + In the 25th century, the evil Ocayea Empire is threatening, and two brave warriors have emerged to fight for freedom. Gameplay is very generic and straightforward - the player flies forward, and shoots at enemies and bosses.He can collect power-ups - green balls that increase your fire-power. He can use a special, destructive shot - you must hold your fire for a moment, to load the laser. The game has multi-player mode, where the first player controls the man (Grey), & the second player the girl (Atuja) - Varia Metal hasn't got a selection screen. + 0.70 + 19950101T000000 + Excellent System + Excellent System + Shoot'em Up + 79 + 1-2 + Mitchell + 270 + 320x224 + media/mixrbv2/vmetal.png + + + + vmetaln.zip + Varia Metal (New Ways Trading Co.) + In the 25th century, the evil Ocayea Empire is threatening, and two brave warriors have emerged to fight for freedom. Gameplay is very generic and straightforward - the player flies forward, and shoots at enemies and bosses.He can collect power-ups - green balls that increase your fire-power. He can use a special, destructive shot - you must hold your fire for a moment, to load the laser. The game has multi-player mode, where the first player controls the man (Grey), & the second player the girl (Atuja) - Varia Metal hasn't got a selection screen. + 0.70 + 19950101T000000 + Excellent System + Excellent System + Shoot'em Up + 79 + 1-2 + vmetal.zip + Mitchell + 270 + 320x224 + media/mixrbv2/vmetal.png + + + + varthr1.zip + Varth - operation thunderstorm (920612 etc) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + varth.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + varthu.zip + Varth - operation thunderstorm (920612 USA) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + varth.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + varth.zip + Varth - operation thunderstorm (920714 etc) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + varthjr.zip + Varth - operation thunderstorm (920714 Japan Resale Ver.) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + varth.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + varthj.zip + Varth - operation thunderstorm (920714 Japan) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + varth.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + varthb.zip + Varth - operation thunderstorm (bootleg, 920612 etc) + Varth: Operation Thunderstorm is an arcade game in the vertical scrolling shooter genre, published in 1992. The game did not see a console port following its initial release, but 14 years later Digital Eclipse Software would port the game onto the PlayStation 2, PSP and Xbox as part of the Capcom Classics Collection Vol. 2. + 0.70 + 19920101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + varth.zip + Capcom Play System + 270 + 384x224 + media/mixrbv2/varth.png + + + + vastar.zip + Vastar (set 1) + In cosmic calendar 2956, our planet was attacked by the galaxy empire. It was at this critical point that a fighting robot 'VASTAR' was developed by superior scientists. The time has come for 'VASTAR' to defend our planet. + 0.50 + 19830101T000000 + Sesame Japan + Sesame Japan + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/vastar.png + + + + vastar2.zip + Vastar (set 2) + In cosmic calendar 2956, our planet was attacked by the galaxy empire. It was at this critical point that a fighting robot 'VASTAR' was developed by superior scientists. The time has come for 'VASTAR' to defend our planet. + 0.50 + 19830101T000000 + Sesame Japan + Sesame Japan + Shoot'em Up + 79 + 1-2 + vastar.zip + Mame + 270 + 256x224 + media/mixrbv2/vastar.png + + + + vastar3.zip + Vastar (set 3) + In cosmic calendar 2956, our planet was attacked by the galaxy empire. It was at this critical point that a fighting robot 'VASTAR' was developed by superior scientists. The time has come for 'VASTAR' to defend our planet. + 0.50 + 19830101T000000 + Sesame Japan + Sesame Japan + Shoot'em Up + 79 + 1-2 + vastar.zip + Mame + 270 + 256x224 + media/mixrbv2/vastar.png + + + + vastar4.zip + Vastar (set 4) + In cosmic calendar 2956, our planet was attacked by the galaxy empire. It was at this critical point that a fighting robot 'VASTAR' was developed by superior scientists. The time has come for 'VASTAR' to defend our planet. + 0.50 + 19830101T000000 + Sesame Japan + Sesame Japan + Shoot'em Up + 79 + 1-2 + vastar.zip + Mame + 270 + 256x224 + media/mixrbv2/vastar.png + + + + vautour.zip + Vautour (bootleg of Phoenix) (8085A CPU) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + vautourz.zip + Vautour (bootleg of Phoenix) (Z80 CPU) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + vautourza.zip + Vautour (bootleg of Phoenix) (Z80 CPU, single PROM) + Phoenix is a classic vertical shoot-em-up in the mould of Taito's "Space Invaders" and Namco's "Galaxian", but takes the concept further with the introduction of progressive stages of play (instead of simply repeating a single playfield over and over with an increasing difficulty level). + +According to Centuri's Joel Hochberg, the game was licensed from "a smaller Japanese developer." Amstar Electronics licensed the game to Centuri for manufacture in the United States. Taito released the game in Japan. + 0.85 + 19780101T000000 + Amstar + Centuri + Shoot'em Up + 79 + 1-2 + phoenix.zip + Konami Classics + 270 + 208x256 + media/mixrbv2/phoenix.png + + + + vbrakout.zip + Vector Breakout [h] + The objective of Tempest is to survive as long as possible and score as many points as possible by clearing the screen of enemies that have landed on the playing field. The player's ship can rapid-fire shots down the tube, destroying any enemies within the same segment, and is also equipped with a Superzapper, which destroys all enemies currently on the playfield once per level. (A second use of the Superzapper in a level destroys one random enemy.) + 0.90 + 19800101T000000 + Atari + Atari + Shooter / Space Invaders Like + 2900 + 1-2 + tempest.zip + Atari Classics + 270 + media/mixrbv2/tempest.png + + + + vendetta2pd.zip + Vendetta (Asia, 2 Players ver. D) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendetta2pu.zip + Vendetta (Asia, 2 Players ver. U) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendettaz.zip + Vendetta (Asia, 4 Players ver. Z) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendettar.zip + Vendetta (US, 4 Players ver. R) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendetta2pun.zip + Vendetta (World, 2 Players ver. ?) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendetta2peba.zip + Vendetta (World, 2 Players ver. EB-A?) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendetta2pw.zip + Vendetta (World, 2 Players ver. W) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendetta.zip + Vendetta (World, 4 Players ver. T) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + vendettaun.zip + Vendetta (World, 4 Players, ver. ?) + The hero gang, called The Cobras, numbers five members: Blood (former prizefighter, with a passing resemblance to Mike Tyson), Hawk (former professional wrestler, with strong resemblance to Hulk Hogan), Boomer (a martial artist, possibly based on Jean-Claude Van Damme), Sledge (a military ex-convict with passing resemblance to Mr. T), and Kate, the damsel in distress, described as Hawk's protegee and wearing blue clothing similar to his. + +One day, Kate is kidnapped by the Dead End Gang under the leadership of Faust. The four men go save her, fighting through the waves of enemies that are sent against them. + 0.80 + 19910101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + vendetta.zip + Konami Classics + 304x224 + media/mixrbv2/vendetta.png + + + + venus.zip + Venus (bootleg of Gyruss) + Gyruss is a single-player shoot-em-up in which the purpose is to fly through the solar system, destroying waves of alien attackers, before finally reaching Earth. Planets that must be passed before Earth is reached are Neptune, Uranus, Saturn, Jupiter, and Mars. + +It only takes two warps to reach Neptune, but all of the others, including Earth, take three warps to get to. Each time the player reaches a planet, they will be faced with a 'Chance Stage', a bonus stage in which players try to destroy as many aliens as possible to accrue points. After reaching Earth, there is a Chance Stage, followed by a very fast '3 Warps to Neptune' stage. After this, the levels and the background music start over. + +Gyruss' superb gameplay, in which the player ship rotates around the edges of the screen and fires 'inwards', is heavily influenced by Atari's 1981 classic, "Tempest". While the design of the alien ships themselves is similar to those of Namco's also-legendary "Galaga" series. + 0.90 + 19830101T000000 + Konami + Konami + Shooter / Plane, 3rd person + 2881 + 1-2 + gyruss.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/gyruss.png + + + + verbena.zip + Verbena (bootleg of Carnival) + CARNIVAL is a 1 or 2 player alternate action game that simulates a carnival shooting gallery. The playfield consists of three target rows, a rotating pipe wheel, a bonus message panel, and a 'special' target block. + +The player uses a left right control to position a rifle at the bottom of the screen, and a shoot control to fire the rifle. Two rows of bullets at the bottom of the screen indicate the number of shots remaining to the player. Every time the player shoots, one of the bullets disappears from the screen. More bullets are given during the first round than the others, so, the inexperienced player will have a chance to enjoy the play. +bear between rounds for extra points. + 0.70 + 19800101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + carnival.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/carnival.png + + + + hangonvf.zip + VF (bootleg of Hang-On) + Hang-On is a superb point-to-point sprite scaling racing game in which the player takes control of a superbike and must race over five twisting circuits, avoiding rival bikers and trying to reach the end of each stage before the time limit expires. + +Hang-On's handling and superb graphics were unlike anything seen before in the arcades and, like many Yu Suzuki games that followed, revolutionised the racing genre. + 0.90 + 19850101T000000 + SEGA + SEGA + Motorcycle Race, 3rd Pers. + 2871 + 1 + hangon.zip + Sega Classics + 320x224 + media/mixrbv2/hangon.png + + + + victoryc.zip + Victory (Comsoft) + Victory is a game which you control your Battlestar to destroy an alien force which has overrun your planet. This force has installed radar and quark silos on your planet and use their deadly armada to drop paratroopers to the surface to release the quarks. All is not lost however as your Battlestar is equipped capable lasers and shields as well as the 'Doomsday Device'. + 0.50 + 19820101T000000 + Exidy + 256x256 + media/mixrbv2/victoryc.png + + + + victorycb.zip + Victory (Comsoft) (bootleg) + Victory is a game which you control your Battlestar to destroy an alien force which has overrun your planet. This force has installed radar and quark silos on your planet and use their deadly armada to drop paratroopers to the surface to release the quarks. All is not lost however as your Battlestar is equipped capable lasers and shields as well as the 'Doomsday Device'. + 0.50 + 19820101T000000 + victoryc.zip + Exidy + 256x256 + media/mixrbv2/victoryc.png + + + + victroad.zip + Victory Road + The story directly picks up at the ending of Ikari Warriors. Congratulated by General Kawasaki for rescuing him, Paul and Vince return home to their native country in a plane arranged by the general. A mysterious storm appears and they are hurtled thousands of years into the future. They are met by an alien creature who says that the villain Zang Zip has taken over the land. + 0.70 + 19860101T000000 + SNK + SNK + Shooter / Run and Gun + 2903 + 1-2 + SNK Classics + 270 + 288x216 + media/mixrbv2/victroad.png + + + + hustler.zip + Video Hustler + Pool game released by Konami in 1981 for the arcade + 0.30 + 19810101T000000 + Konami + Konami + Sports / Pool + 3028 + 1-2 + Konami Classics + 270 + 256x224 + media/mixrbv2/hustler.png + + + + hustlerb.zip + Video Hustler (bootleg) + Pool game released by Konami in 1981 for the arcade + 0.30 + 19810101T000000 + Konami + Konami + Sports / Pool + 3028 + 1-2 + hustler.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/hustler.png + + + + vpool.zip + Video Pool (bootleg on Moon Cresta hardware) + Pool game released by Konami in 1981 for the arcade + 0.30 + 19810101T000000 + Konami + Konami + Sports / Pool + 3028 + 1-2 + hustler.zip + Konami Classics + 270 + 256x224 + media/mixrbv2/hustler.png + + + + vidvince.zip + Video Vince and the Game Factory (prototype) + This is a platformer where the player controls a character who has to cage various critters, one of which looks like the snake from Q?bert. + 0.50 + 19840101T000000 + Mylstar Electronics + Mylstar + Platform / Run Jump + 2915 + 1 + Gottlieb + 256x240 + media/mixrbv2/vidvince.png + + + + viewpoin.zip + Viewpoint + Viewpoint is a top-down orthographic perspective game in the tradition of Zaxxon. The PlayStation and Saturn versions feature 3D rendered graphics with texture maps, unlike the other versions which primarily feature shaded polygons. + +One or two players (in hot-seat or cooperative mode) control a spaceship equipped with a laser cannon which can be charged (by holding the shooting button down) for a stronger blast. Besides the main weapon, three special weapons are available: a wall of fire which wipes the screen up in a wave, a nova-like blast and a circle of spherical-green homing missiles. + 0.65 + 19920101T000000 + Aicom + SNK + Shoot'em Up + 79 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/viewpoin.png + + + + viewpoinp.zip + Viewpoint (prototype) + Viewpoint is a top-down orthographic perspective game in the tradition of Zaxxon. The PlayStation and Saturn versions feature 3D rendered graphics with texture maps, unlike the other versions which primarily feature shaded polygons. + +One or two players (in hot-seat or cooperative mode) control a spaceship equipped with a laser cannon which can be charged (by holding the shooting button down) for a stronger blast. Besides the main weapon, three special weapons are available: a wall of fire which wipes the screen up in a wave, a nova-like blast and a circle of spherical-green homing missiles. + 0.65 + 19920101T000000 + Aicom + SNK + Shoot'em Up + 79 + 1-2 + viewpoin.zip + Neo-Geo + 320x224 + media/mixrbv2/viewpoin.png + + + + vigilantbl.zip + Vigilante (bootleg) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilantd.zip + Vigilante (Japan, Rev D) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilanto.zip + Vigilante (US) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilantb.zip + Vigilante (US, Rev B) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilantg.zip + Vigilante (US, Rev G) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilanta.zip + Vigilante (World, Rev A) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilantc.zip + Vigilante (World, Rev C) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + vigilant.zip + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vigilant.zip + Vigilante (World, Rev E) + A sequel to Irem's legendary 1984 beat-em-up, "Kung-Fu Master", Vigilante sees the hero's girlfriend, Madonna, kidnapped by a gang of thugs and driven away in the back of their van. The vigilante must fight through five enemy-packed levels to rescue his girlfriend. As with "Kung-Fu Master", a tough guardian enemy awaits the player at the end of each level. The guardians must be defeated as quickly as possible as their energy bars will replenish in between the player's attacks. + +A weapon, in the form of Nunchakas, can occasionally be found and picked-up; adding to the player's 'kick' and 'punch' fighting moves. Some of the game's many enemies are also armed, with either clubs, chains, knives or guns. The game ends once Madonna is rescued. + 0.70 + 19880101T000000 + Irem + Irem + Platform / Fighter Scrolling + 2896 + 1 + Irem Classics + 256x256 + media/mixrbv2/vigilant.png + + + + vimanaj.zip + Vimana (Japan) + Players control their ship over a constantly scrolling background; the scenery never stops moving until the final level is reached. Players have three weapons at their disposal: the standard shot, a charge shot and a bomb weapon. + +The standard shot weapon is a twin-shot weapon capable of strengthening in size and power with upgrades. However, the player has to tap the fire button to fire rapidly; once the button is held down, the ship charges a stronger version of the normal shot capable of spreading out across the entire screen in twelve directions. The player’s bomb weapon, the Circle Bomb, encircles the ship once activated and seeks out enemies upon an additional tap of the bomb button. + +There are a total of four items for the player to pick up shot strength, circle bomb, points, and and extra life. + 0.80 + 19910101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + vimana.zip + Toaplan + 270 + 320x240 + media/mixrbv2/vimana.png + + + + vimana.zip + Vimana (World, set 1) + Players control their ship over a constantly scrolling background; the scenery never stops moving until the final level is reached. Players have three weapons at their disposal: the standard shot, a charge shot and a bomb weapon. + +The standard shot weapon is a twin-shot weapon capable of strengthening in size and power with upgrades. However, the player has to tap the fire button to fire rapidly; once the button is held down, the ship charges a stronger version of the normal shot capable of spreading out across the entire screen in twelve directions. The player’s bomb weapon, the Circle Bomb, encircles the ship once activated and seeks out enemies upon an additional tap of the bomb button. + +There are a total of four items for the player to pick up shot strength, circle bomb, points, and and extra life. + 0.80 + 19910101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + Toaplan + 270 + 320x240 + media/mixrbv2/vimana.png + + + + vimanan.zip + Vimana (World, set 2) + Players control their ship over a constantly scrolling background; the scenery never stops moving until the final level is reached. Players have three weapons at their disposal: the standard shot, a charge shot and a bomb weapon. + +The standard shot weapon is a twin-shot weapon capable of strengthening in size and power with upgrades. However, the player has to tap the fire button to fire rapidly; once the button is held down, the ship charges a stronger version of the normal shot capable of spreading out across the entire screen in twelve directions. The player’s bomb weapon, the Circle Bomb, encircles the ship once activated and seeks out enemies upon an additional tap of the bomb button. + +There are a total of four items for the player to pick up shot strength, circle bomb, points, and and extra life. + 0.80 + 19910101T000000 + Toaplan + Toaplan + Shoot'em Up + 79 + 1-2 + vimana.zip + Toaplan + 270 + 320x240 + media/mixrbv2/vimana.png + + + + vindictre3.zip + Vindicators (Europe, rev 3) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictre4.zip + Vindicators (Europe, rev 4) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictre.zip + Vindicators (Europe, rev 5) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictrg.zip + Vindicators (German, rev 1) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictr1.zip + Vindicators (rev 1) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictr2.zip + Vindicators (rev 2) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictr4.zip + Vindicators (rev 4) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindictr.zip + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindictr.zip + Vindicators (rev 5) + Vindicators &copy; 1988 Atari Games Corp. + +As team commander of the SR-88 Strategic Battle tanks, you must face the evil invading forces of the Tangent Empire. They&#039;re invading the galaxy with 14 space stations designed to defeat your team. Turrets and highly mobile armoured tanks are constantly on patrol to protect the fortifications that Tangents have built. + +With limited supplies and weapons, you must make a last stand and attempt to defeat the invaders. The most powerful weapon in your arsenal is the SR-88 Battle Tank, but their fuel supply is very volatile. You must constantly replenish its fuel by picking up fuel canisters throughout the stations&#039; many levels. + +Battle stars can be found along the way. These are vital to enhancing your tank and adding weapons. Process generators can convert the battle stars into powers and weapons while in transit between levels and stations. Only with these customized tanks can the evil Tangent Empire be conquered. + +As you defeat each station, demolish its control room and take the supplies the fleeing Tangents have left behind. Proceed in their mothership to the next station for another battle. + 0.50 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/vindictr.png + + + + vindctr2r1.zip + Vindicators Part II (rev 1) + A sequel to the arcade version was released the same year as a conversion kit for Gauntlet titled Vindicators Part II. Only approximately 400 units were made. There are only a few minor differences as the gameplay is nearly identical to the first, even keeping 10 of the 14 original stations of the first Vindicators. It even keeps the old graphics, music and sound. Though the in-game voice was changed to a less robotic sounding male, and several tank upgrades were added that are picked up as powerups and expire after a level is finished. + 0.70 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindctr2.zip + Atari Classics + 336x240 + media/mixrbv2/vindctr2.png + + + + vindctr2r2.zip + Vindicators Part II (rev 2) + A sequel to the arcade version was released the same year as a conversion kit for Gauntlet titled Vindicators Part II. Only approximately 400 units were made. There are only a few minor differences as the gameplay is nearly identical to the first, even keeping 10 of the 14 original stations of the first Vindicators. It even keeps the old graphics, music and sound. Though the in-game voice was changed to a less robotic sounding male, and several tank upgrades were added that are picked up as powerups and expire after a level is finished. + 0.70 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + vindctr2.zip + Atari Classics + 336x240 + media/mixrbv2/vindctr2.png + + + + vindctr2.zip + Vindicators Part II (rev 3) + A sequel to the arcade version was released the same year as a conversion kit for Gauntlet titled Vindicators Part II. Only approximately 400 units were made. There are only a few minor differences as the gameplay is nearly identical to the first, even keeping 10 of the 14 original stations of the first Vindicators. It even keeps the old graphics, music and sound. Though the in-game voice was changed to a less robotic sounding male, and several tank upgrades were added that are picked up as powerups and expire after a level is finished. + 0.70 + 19880101T000000 + Atari + Atari + Shooter / Vehicle, Vertical + 2921 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/vindctr2.png + + + + viofightj.zip + Violence Fight (Japan) + Control different characters with various fighting styles and engage in single or two-player bouts. + +In the early 1950's, a game called Violence Fight was popular in the US crime world. Fighters from all over the USA would compete against each other to become that year's champion. The winner stood to make a considerable amount of money. + +In downtown LA, a manager called Blinks is training up a new fighter called Bad Blue. He is a strong contender to become the champion and desperately needs the prize money. + 0.50 + 19890101T000000 + Taito + Taito + Fight / Versus + 2885 + 1-2 + viofight.zip + Taito Classics + 320x224 + media/mixrbv2/viofight.png + + + + viofightu.zip + Violence Fight (US) + Control different characters with various fighting styles and engage in single or two-player bouts. + +In the early 1950's, a game called Violence Fight was popular in the US crime world. Fighters from all over the USA would compete against each other to become that year's champion. The winner stood to make a considerable amount of money. + +In downtown LA, a manager called Blinks is training up a new fighter called Bad Blue. He is a strong contender to become the champion and desperately needs the prize money. + 0.50 + 19890101T000000 + Taito + Taito + Fight / Versus + 2885 + 1-2 + viofight.zip + Taito Classics + 320x224 + media/mixrbv2/viofight.png + + + + viofight.zip + Violence Fight (World) + Control different characters with various fighting styles and engage in single or two-player bouts. + +In the early 1950's, a game called Violence Fight was popular in the US crime world. Fighters from all over the USA would compete against each other to become that year's champion. The winner stood to make a considerable amount of money. + +In downtown LA, a manager called Blinks is training up a new fighter called Bad Blue. He is a strong contender to become the champion and desperately needs the prize money. + 0.50 + 19890101T000000 + Taito + Taito + Fight / Versus + 2885 + 1-2 + Taito Classics + 320x224 + media/mixrbv2/viofight.png + + + + viostormab.zip + Violent Storm (ver AAB) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostorma.zip + Violent Storm (ver AAC) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostormeb.zip + Violent Storm (ver EAB) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostorm.zip + Violent Storm (ver EAC) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostormj.zip + Violent Storm (ver JAC) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostormub.zip + Violent Storm (ver UAB) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + viostormu.zip + Violent Storm (ver UAC) + Violent Storm is a sideways-scrolling beat-em-up for up to three players set in the aftermath of World War III. The survivors of the war are attempting to rebuild their world but are being terrorised by violent gangs . Three vigilante heroes called 'Boris', 'Wade' and 'Kyle' are trying to protect the citizens but are hampered in their efforts by the evil and corrupt 'GELD' gang. As the heroes are patrolling the streets, they see their friend, Sheena, kidnapped by the gang. The vigilantes must fight through seven enemy-packed stages to rescue their friend and destroy the gang. + +As well as the standard punch and kick moves, each character also has a special attack. This move is powerful enough to fell several enemies at once, but with the trade-off that each time a special attack is executed, some of the player's health is lost. Health levels can be replenished by finding the food that lies hidden in breakable crates and barrels. + +Some of the gang members will drop a weapon when they are felled. These weapons can then be picked up and used by the players. Destructible crates and barrels also contain weapons and random bonus items. Stunned enemies fall to the ground and can still be attacked while prone. + 0.80 + 19930101T000000 + Konami + Konami + Beat'em Up + 1 + 1-3 + viostorm.zip + Konami Classics + 384x224 + media/mixrbv2/viostorm.png + + + + volfiedjo.zip + Volfied (Japan) + An update of Taito's 1981 classic, "Qix", Volfied adopts the same 'draw boxes to colour in the background' gameplay of its predecessor but updates both the graphics and in-game enemies. A number of power-ups are available, re + 19890101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + volfied.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/volfied.png + + + + volfiedj.zip + Volfied (Japan, revision 1) + An update of Taito's 1981 classic, "Qix", Volfied adopts the same 'draw boxes to colour in the background' gameplay of its predecessor but updates both the graphics and in-game enemies. A number of power-ups are available, re + 19890101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + volfied.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/volfied.png + + + + volfiedu.zip + Volfied (US, revision 1) + An update of Taito's 1981 classic, "Qix", Volfied adopts the same 'draw boxes to colour in the background' gameplay of its predecessor but updates both the graphics and in-game enemies. A number of power-ups are available, re + 19890101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + volfied.zip + Taito Classics + 270 + 320x240 + media/mixrbv2/volfied.png + + + + volfied.zip + Volfied (World, revision 1) + An update of Taito's 1981 classic, "Qix", Volfied adopts the same 'draw boxes to colour in the background' gameplay of its predecessor but updates both the graphics and in-game enemies. A number of power-ups are available, re + 19890101T000000 + Taito + Taito + Puzzle-Game + 26 + 1-2 + Taito Classics + 270 + 320x240 + media/mixrbv2/volfied.png + + + + gowcaizr.zip + Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer + The ultimate warriors are ready for battle! The Auto-Zoom feature draws you in to the red-hot action! Use the new "Special Attack Tracing System" to copy the special abilities of the foes you defeat and build your own warrior from over 100 combinations! + 0.70 + 19950101T000000 + Technos Japan Corp. + Tecmo + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/gowcaizr.png + + + + vs10yardj.zip + Vs 10-Yard Fight (Japan) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + 10yard.zip + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + vs10yardu.zip + Vs 10-Yard Fight (US, Taito license) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + 10yard.zip + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + vs10yard.zip + Vs 10-Yard Fight (World, 11/05/84) + The game is viewed in a top-down perspective and is vertical scrolling. The player does not select plays for either offense or defense. On offense, the player simply receives the ball upon the snap and either attempt to run with the quarterback, toss the ball to a running back, or throw the ball to the one long distance receiver - basically the option offense. On defense, the player chooses one of two players to control, and the computer manipulates the others. The ball can also be punted or a field goal can be attempted. +10-Yard Fight has five levels of difficulty; from easiest to most difficult: high school, college, professional, playoff, and Super Bowl. If the player wins both halves of an "accelerated real time" 30-minute half at an easier level, the player advanced to the next level of difficulty, like a career mode. + 0.50 + 19840101T000000 + Irem + Irem + Sports / Football + 2846 + 1-2 + 10yard.zip + Irem Classics + 256x224 + media/mixrbv2/10yard.png + + + + vsgongf.zip + VS Gong Fight + VS Gong Fight es un juego de boxeo arcade, que fue lanzado por Kaneko en 1984 y licenciado a Taito Corporation para su fabricación y distribución en los Estados Unidos, bajo el nombre de Ring Fighter. Los jugadores deben usar un joystick de 4 vías para tomar el control de un boxeador (1P's usa guantes azules, baúles y botas, pero 2P's usa guantes rojos), con dos botones para hacerlos golpear y bloquear - y si sólo un jugador está jugando el juego, 2P's boxer será controlado por la CPU y silueteado en negro. Los niveles de energía de ambos boxeadores se muestran en las esquinas superior izquierda y superior derecha de la pantalla, con sus niveles de "daño" en las esquinas inferior izquierda y inferior derecha de la pantalla; el número de la ronda actual y su tiempo restante también se muestran en el centro superior de la pantalla. Al igual que en el boxeo real, tienes que golpear a tu oponente antes de que se acabe el tiempo, para proceder a la siguiente ronda - y una vez que lo hayas hecho, tendrás que enfrentarte a otro oponente de la CPU, o se acabará el juego para el perdedor. + 0.30 + 19840101T000000 + Kaneko + Kaneko + Sports / Boxing + 2929 + 1-2 + Kaneko + 270 + 256x240 + media/mixrbv2/vsgongf.png + + + + vulcan.zip + Vulcan Venture (New) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + vulcana.zip + Vulcan Venture (Old) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + vulcan.zip + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + vulcanb.zip + Vulcan Venture (Oldest) + The third game in Konami's renowned Gradius series; the prequel being "Gradius [Model GX400]" and a spinoff called "Salamande. + 0.90 + 19880101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + vulcan.zip + Konami Classics + 320x224 + media/mixrbv2/vulcan.png + + + + vulgusj.zip + Vulgus (Japan?) + Vulgus is pretty simple. You just pilot a spaceship and blast countless enemies. That is what is fun about this game. There is nothing complicated, just pure blasting. You only have two weapons, your blaster, and a limited supply of bombs. This title uses the time honored top-down vertically scrolling format. The background moves eternally forward, but you can move all around the screen, and can make the screen scroll both left and right. Your enemies consist of an assortment of fairly realistic looking spacecraft, some of which have a distinctive 'insectoid' look to them. This game is endless and it doesn't seem to have a level format. You just move forward and shoot. The backgrounds will change from time to time from planetary surfaces to space scenes and eventually they will start repeating once you blast this particularly large alien formation. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + vulgus.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/vulgus.png + + + + vulgus.zip + Vulgus (set 1) + Vulgus is pretty simple. You just pilot a spaceship and blast countless enemies. That is what is fun about this game. There is nothing complicated, just pure blasting. You only have two weapons, your blaster, and a limited supply of bombs. This title uses the time honored top-down vertically scrolling format. The background moves eternally forward, but you can move all around the screen, and can make the screen scroll both left and right. Your enemies consist of an assortment of fairly realistic looking spacecraft, some of which have a distinctive 'insectoid' look to them. This game is endless and it doesn't seem to have a level format. You just move forward and shoot. The backgrounds will change from time to time from planetary surfaces to space scenes and eventually they will start repeating once you blast this particularly large alien formation. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + Capcom Classics + 270 + 256x224 + media/mixrbv2/vulgus.png + + + + vulgusa.zip + Vulgus (set 2) + Vulgus is pretty simple. You just pilot a spaceship and blast countless enemies. That is what is fun about this game. There is nothing complicated, just pure blasting. You only have two weapons, your blaster, and a limited supply of bombs. This title uses the time honored top-down vertically scrolling format. The background moves eternally forward, but you can move all around the screen, and can make the screen scroll both left and right. Your enemies consist of an assortment of fairly realistic looking spacecraft, some of which have a distinctive 'insectoid' look to them. This game is endless and it doesn't seem to have a level format. You just move forward and shoot. The backgrounds will change from time to time from planetary surfaces to space scenes and eventually they will start repeating once you blast this particularly large alien formation. + 0.70 + 19840101T000000 + Capcom + Capcom + Shoot'em Up + 79 + 1-2 + vulgus.zip + Capcom Classics + 270 + 256x224 + media/mixrbv2/vulgus.png + + + + wacko.zip + Wacko + Wacko is a colorful single screen shooter, with excellent graphics for the time. You maneuver Kapt'n Krooz'r around the screen in his spaceship. The terrain is an orange moon scene, various cartoonish monsters dot the landscape. You must blast the monsters in pairs to make them vanish. Later levels introduce even more complex rules as to what can be shot. You control your ship with the trackball, while using the joystick to aim and shoot. The controls feel natural with a little practice, but the game quickly becomes very difficult on the higher levels. + 0.70 + 19820101T000000 + Bally Midway + Bally Midway + Shooter + 2646 + 1-2 + Midway Classics + 512x480 + media/mixrbv2/wacko.png + + + + wwjgtin.zip + Wai Wai Jockey Gate-In! + Gate-In! - Wai Wai Jockey (c) 1984 Jaleco. An early Horse Racing game. - TECHNICAL - Main CPU : M6502 (@ 2 Mhz) Sound CPU : M6502 (@ 600 Khz) Sound Chips : (2x) SN76496 (@ 2 Mhz), DAC Players : 2 Control : 4-way joystick Buttons : 2 - TRIVIA - Relea + 19840101T000000 + Jaleco + Sports with Animals + 2650 + 1-2 + Jaleco + 240x224 + media/mixrbv2/wwjgtin.png + + + + wakuwak7.zip + Waku Waku 7 + The seven magical Waku Waku balls have surfaced once again and the few that know of their existence decide to battle against each other in order to collect them all. If they are able to defeat the powerful monster enslaved in them, the Waku Waku balls will grant the lucky victor whatever wish they desire. The game was created as a parody of animé series in general, WW7 pools together all the mainstays of the genre and has them fight against each other. From furry catgirls and effeminate, super-cool elfs to cute pokémon-like creatures and dumb and loud heroes. + 0.90 + 19960101T000000 + Sunsoft + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/wakuwak7.png + + + + wakuwak7bh.zip + Waku Waku 7 (Boss Hack) + The seven magical Waku Waku balls have surfaced once again and the few that know of their existence decide to battle against each other in order to collect them all. If they are able to defeat the powerful monster enslaved in them, the Waku Waku balls will grant the lucky victor whatever wish they desire. The game was created as a parody of animé series in general, WW7 pools together all the mainstays of the genre and has them fight against each other. From furry catgirls and effeminate, super-cool elfs to cute pokémon-like creatures and dumb and loud heroes. + 0.90 + 19960101T000000 + Sunsoft + SNK + Fight / Versus + 2885 + 1-2 + wakuwak7.zip + Neo-Geo + 320x224 + media/mixrbv2/wakuwak7.png + + + + wwmarine.zip + Waku Waku Marine + Sega Classics + media/mixrbv2/wwmarine.png + + + + soniccar.zip + Waku Waku Sonic Patrol Car + On your permanently set northward journey, you can avoid cars by moving left and right. You can also jump out the car (after which you land right back in), but the only use for this feature is to defeat Eggman. The two-minute story plays out in the course of the action: officer Sonic heads out from the station and hits the streets, on what appears to be a routine patrol. (On the way, you encounter a traffic light and must stop to let Flicky and the gang pass.) During the patrol, you spot Doctor Eggman pushing cars off the street in a vehicle of his own. The chase begins! Doctor Eggman can be taken out with a few spins; just watch out for the bombs he's chucking at you. Whether you defeat him or not, Sonic eventually drives in to another police station and says something to you in Japanese. + 0.40 + 19910101T000000 + SEGA + SEGA + Sega Classics + 256x224 + media/mixrbv2/soniccar.png + + + + ultracin.zip + Waku Waku Ultraman Racing + 19960101T000000 + SEGA + SEGA + Race, Driving + 28 + 1 + Sega Classics + media/mixrbv2/ultracin.png + + + + wallc.zip + Wall Crash (set 1) + A rather simple breakout-style game. There are a few powerup blocks which will provide the player with some assistance along the way. Powerups include: bomb, double bases, and bonus points. + 0.30 + 19840101T000000 + Midcoin + Midcoin + Action / Breakout games + 2917 + 1 + Mame + 256x256 + media/mixrbv2/wallc.png + + + + wallca.zip + Wall Crash (set 2) + A rather simple breakout-style game. There are a few powerup blocks which will provide the player with some assistance along the way. Powerups include: bomb, double bases, and bonus points. + 0.30 + 19840101T000000 + Midcoin + Midcoin + Action / Breakout games + 2917 + 1 + wallc.zip + Mame + 256x256 + media/mixrbv2/wallc.png + + + + wwallyjad.zip + Wally wo Sagase! (rev A, Japan, 2 players, FD1094 317-0197A decrypted) + Wally wo Sagase! (c) 1992 Sega. - TECHNICAL - Sega System 18 hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz) Players : 3 Control : trackball Buttons : 3 - TRIVIA - Released in Jun + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + wwallyj.zip + Sega Classics + 320x224 + media/mixrbv2/wwallyj.png + + + + wwallyja.zip + Wally wo Sagase! (rev A, Japan, 2 players, FD1094 317-0197A) + Wally wo Sagase! (c) 1992 Sega. - TECHNICAL - Sega System 18 hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz) Players : 3 Control : trackball Buttons : 3 - TRIVIA - Released in Jun + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + wwallyj.zip + Sega Classics + 320x224 + media/mixrbv2/wwallyj.png + + + + wwallyja3p.zip + Wally wo Sagase! (rev A, Japan, 3 players, FD1094 317-0198A) + Wally wo Sagase! (c) 1992 Sega. - TECHNICAL - Sega System 18 hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz) Players : 3 Control : trackball Buttons : 3 - TRIVIA - Released in Jun + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + wwallyj.zip + Sega Classics + 320x224 + media/mixrbv2/wwallyj.png + + + + wwallyjd.zip + Wally wo Sagase! (rev B, Japan, 2 players, FD1094 317-0197B decrypted) + Wally wo Sagase! (c) 1992 Sega. - TECHNICAL - Sega System 18 hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz) Players : 3 Control : trackball Buttons : 3 - TRIVIA - Released in Jun + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + wwallyj.zip + Sega Classics + 320x224 + media/mixrbv2/wwallyj.png + + + + wwallyj.zip + Wally wo Sagase! (rev B, Japan, 2 players, FD1094 317-0197B) + Wally wo Sagase! (c) 1992 Sega. - TECHNICAL - Sega System 18 hardware Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 8 Mhz) Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz) Players : 3 Control : trackball Buttons : 3 - TRIVIA - Released in Jun + 0.70 + 19920101T000000 + SEGA + Compilation + 34 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/wwallyj.png + + + + wanted.zip + Wanted + Wanted is a third person shooter based in the wild west. + +In the old wild west, times has get tough, you play on the role of a renegade cowboy surrounded by hostiles native indians, mexican bandits and the most wanted outlaws, in the most varied and iconic west landscapes and they attacking you from all directions, must shoot them all to defend and advance to the next level. + 0.30 + 19840101T000000 + Sigma Enterprises + Sigma Enterprises + Shooter / 3rd person + 2899 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/wanted.png + + + + wrofaero.zip + War of Aero - Project MEIOU + War of Aero: Project MEIOU is a 2D vertical scrolling futuristic shoot 'em up. The player controls a spaceship and fights against others - he flies straightforward over cities and more futuristic locations, shoots all enemies in sight and hard bosses, avoids one-hit-death obstacles and collects bonuses to increase firepower (similar to options from Gradius). + 0.50 + 19930101T000000 + Yang Cheng + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/wrofaero.png + + + + warofbug.zip + War of the Bugs or Monsterous Manouvers in a Mushroom Maze + Very interesting game. Play "Centipede" in a "Galaxian" environment :). + 0.30 + 19810101T000000 + Armenia + Armenia + Shooter / Space Invaders Like + 2900 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/warofbug.png + + + + warofbugu.zip + War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US) + Very interesting game. Play "Centipede" in a "Galaxian" environment :). + 0.30 + 19810101T000000 + Armenia + Armenia + Shooter / Space Invaders Like + 2900 + 1-2 + warofbug.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/warofbug.png + + + + wardner.zip + Wardner (World) + Two young children, Pyros and Erika, have unexpectedly strayed into a wonderland called 'Wardner's Forest'. Upon entering the magical forest, the young girl is changed into a crystal ball by evil warlock and ruler of the forest, 'Wardner'. She is taken to a secret place deep inside the woods. The brave young Pyros, armed only with a magical flame as a weapon, sets out to rescue his female companion from the clutches of the evil Wardner and bring her safely home. + +At the end of every level, Pyros enters a shop. The player can use any gold that has been collected on route to buy useful items; such as extra health, time and more powerful weapons. Wardner is an accomplished and playable platform game with smooth, colourful graphics and finely honed gameplay. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Platform / Fighter Scrolling + 2896 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/wardner.png + + + + wardnerb.zip + Wardner (World, bootleg) + Two young children, Pyros and Erika, have unexpectedly strayed into a wonderland called 'Wardner's Forest'. Upon entering the magical forest, the young girl is changed into a crystal ball by evil warlock and ruler of the forest, 'Wardner'. She is taken to a secret place deep inside the woods. The brave young Pyros, armed only with a magical flame as a weapon, sets out to rescue his female companion from the clutches of the evil Wardner and bring her safely home. + +At the end of every level, Pyros enters a shop. The player can use any gold that has been collected on route to buy useful items; such as extra health, time and more powerful weapons. Wardner is an accomplished and playable platform game with smooth, colourful graphics and finely honed gameplay. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Platform / Fighter Scrolling + 2896 + 1-2 + wardner.zip + Taito Classics + 320x240 + media/mixrbv2/wardner.png + + + + wardnerj.zip + Wardner no Mori (Japan) + Two young children, Pyros and Erika, have unexpectedly strayed into a wonderland called 'Wardner's Forest'. Upon entering the magical forest, the young girl is changed into a crystal ball by evil warlock and ruler of the forest, 'Wardner'. She is taken to a secret place deep inside the woods. The brave young Pyros, armed only with a magical flame as a weapon, sets out to rescue his female companion from the clutches of the evil Wardner and bring her safely home. + +At the end of every level, Pyros enters a shop. The player can use any gold that has been collected on route to buy useful items; such as extra health, time and more powerful weapons. Wardner is an accomplished and playable platform game with smooth, colourful graphics and finely honed gameplay. + 0.70 + 19870101T000000 + Toaplan + Toaplan + Platform / Fighter Scrolling + 2896 + 1-2 + wardner.zip + Taito Classics + 320x240 + media/mixrbv2/wardner.png + + + + warpwarp.zip + Warp & Warp + The objective of the game is to pursue the mystery aliens by warping across 2 different worlds: the Space World and Maze World. The player may choose when to warp to a different world, so it is possible to continue playing in the same world throughout the game. In Space World, the character uses a gun to shoot up enemy aliens, and in Maze World, aliens are killed using a time-delay bomb. The delay is controlled by the length of time the button is held down, and the player loses if the character is caught in the resulting explosion. + +Power-ups may appear on some levels, and allow the player to shoot exploding bullets or attach bombs directly onto enemy aliens. However, the exploding bullets usable in Space World can only obtained in Maze World, and the power-up to attach bombs onto enemies in Maze World only appears in Space World. Players must alternate turns on the screen in the multiplayer mode. + 0.30 + 19810101T000000 + Namco + Namco + Various + 39 + 1-2 + Namco Classics + 270 + 272x224 + media/mixrbv2/warpwarp.png + + + + warpwarpr.zip + Warp Warp (Rock-Ola set 1) + The objective of the game is to pursue the mystery aliens by warping across 2 different worlds: the Space World and Maze World. The player may choose when to warp to a different world, so it is possible to continue playing in the same world throughout the game. In Space World, the character uses a gun to shoot up enemy aliens, and in Maze World, aliens are killed using a time-delay bomb. The delay is controlled by the length of time the button is held down, and the player loses if the character is caught in the resulting explosion. + +Power-ups may appear on some levels, and allow the player to shoot exploding bullets or attach bombs directly onto enemy aliens. However, the exploding bullets usable in Space World can only obtained in Maze World, and the power-up to attach bombs onto enemies in Maze World only appears in Space World. Players must alternate turns on the screen in the multiplayer mode. + 0.30 + 19810101T000000 + Namco + Namco + Various + 39 + 1-2 + warpwarp.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/warpwarp.png + + + + warpwarpr2.zip + Warp Warp (Rock-Ola set 2) + The objective of the game is to pursue the mystery aliens by warping across 2 different worlds: the Space World and Maze World. The player may choose when to warp to a different world, so it is possible to continue playing in the same world throughout the game. In Space World, the character uses a gun to shoot up enemy aliens, and in Maze World, aliens are killed using a time-delay bomb. The delay is controlled by the length of time the button is held down, and the player loses if the character is caught in the resulting explosion. + +Power-ups may appear on some levels, and allow the player to shoot exploding bullets or attach bombs directly onto enemy aliens. However, the exploding bullets usable in Space World can only obtained in Maze World, and the power-up to attach bombs onto enemies in Maze World only appears in Space World. Players must alternate turns on the screen in the multiplayer mode. + 0.30 + 19810101T000000 + Namco + Namco + Various + 39 + 1-2 + warpwarp.zip + Namco Classics + 270 + 272x224 + media/mixrbv2/warpwarp.png + + + + warriorb.zip + Warrior Blade - Rastan Saga Episode III (Japan) + Warrior Blade is a fantasy-themed hack-and-slash game for one or two players, featuring both horizontal and vertically scrolling levels. Unlike previous Rastan games that featured only Rastan himself, players can now choose to play as one of three different warriors: Rastan, Dewey (a hireling) or Sophia (a thief). + +Players must then fight their way through a multitude of enemy-packed levels set in a variety of different locations, such as castles, a forest, a swamp and on board a sinking ship. Certain levels also have the players riding on animals, such as horses and dragons. Coins and treasure items can be found in the numerous barrels and chests that litter the levels, as well as being dropped by some defeated enemies. Bonus points and "vitality" - depending on the amount of treasure collected - are awarded upon the level's completion. + 0.70 + 19910101T000000 + Taito + Taito + Beat'em Up + 1 + 1-2 + Taito Classics + 320x240 + media/mixrbv2/warriorb.png + + + + wofr1.zip + Warriors of Fate (921002 etc) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofu.zip + Warriors of Fate (921031 USA) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wof.zip + Warriors of Fate (921031 World) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofpic.zip + Warriors of Fate (bootleg with PIC16C57, 921002 etc) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + wofr1bl.zip + Warriors of Fate (bootleg, 921002 etc) + Warriors of Fate is a side-scrolling beat 'em up produced by Capcom, first released as a coin-operated arcade game in 1992 and later ported to the Sega Saturn and Sony PlayStation. It is Capcom's third game based on the Tenchi wo Kurau manga, following Dynasty Wars and Destiny of an Emperor. + 0.60 + 19920101T000000 + Capcom + Capcom + Beat'em Up + 1 + 1-3 + wof.zip + Capcom Play System + 384x224 + media/mixrbv2/wof.png + + + + watrball.zip + Water Balls + The players controls a comic mouse that controls a tiny fire old engine you must eject the water to catch the falling colors balls (you can also change the color) for then eject again to hit them with balls of the same color for complete the level. + 0.50 + 19960101T000000 + ABM Games + ABM Games + Puzzle-Game / Throw + 2923 + 1 + Mame + 384x240 + media/mixrbv2/watrball.png + + + + wmatch.zip + Water Match (315-5064) + Water Match is a multi event multi-player game in the style of Konami's legendary "Track and field" series, featuring events such as free-style swimming, one-man kayaking, four-man boating etc. + 0.50 + 19840101T000000 + SEGA + SEGA + Sports / Running trails + 2877 + 1-2 + Sega Classics + 270 + 479x224 + media/mixrbv2/wmatch.png + + + + waterski.zip + Water Ski + In this timed abstract racing game, a single player controls a water-skier who is being pulled along behind a power-boat. The objective is to complete the course in as fast a time as possible to reach the next course, while avoiding rocks, sharks, motor boats, wind surfers and numerous other obstacles. + +The player can move their skier left or right, and can press buttons to either slow the boat's speed or to jump over obstacles. Small rocks are the most common obstacle and can either be avoided or jumped over. As well as the small rocks that litter each course, there are also occasional large rocks; these cannot be jumped and must be avoided at all costs. Also, players must be watchful of the direction their tow-boat takes them otherwise they risk being dragged into oncoming obstacles or having their tow-rope snapped on one of the large rocks. + 0.70 + 19830101T000000 + Taito + Taito + Sports / Skiing + 2902 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/waterski.png + + + + wavybug.zip + Wavy Bug + 19810101T000000 + lazybug.zip + Mame + + + weclemanc.zip + WEC Le Mans 24 (v1.26) + A demanding yet superb sprite-scaling racing game from Konami, based on the annual 'WEC Le Mans 24' race; a grueling event that, as its name suggests, takes place over a 24-hour period. + +The width of Le Mans' racetrack never varied and remained a constant 3 lanes wide. The track itself was incredibly demanding and contact with either a rival racer or one of the many track-side objects would send the player's vehicle flying dramatically through the air, costing valuable seconds in time. + 0.90 + 19860101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + wecleman.zip + Konami Classics + 320x224 + media/mixrbv2/wecleman.png + + + + weclemana.zip + WEC Le Mans 24 (v2.00) + A demanding yet superb sprite-scaling racing game from Konami, based on the annual 'WEC Le Mans 24' race; a grueling event that, as its name suggests, takes place over a 24-hour period. + +The width of Le Mans' racetrack never varied and remained a constant 3 lanes wide. The track itself was incredibly demanding and contact with either a rival racer or one of the many track-side objects would send the player's vehicle flying dramatically through the air, costing valuable seconds in time. + 0.90 + 19860101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + wecleman.zip + Konami Classics + 320x224 + media/mixrbv2/wecleman.png + + + + weclemanb.zip + WEC Le Mans 24 (v2.00, hack) + A demanding yet superb sprite-scaling racing game from Konami, based on the annual 'WEC Le Mans 24' race; a grueling event that, as its name suggests, takes place over a 24-hour period. + +The width of Le Mans' racetrack never varied and remained a constant 3 lanes wide. The track itself was incredibly demanding and contact with either a rival racer or one of the many track-side objects would send the player's vehicle flying dramatically through the air, costing valuable seconds in time. + 0.90 + 19860101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + wecleman.zip + Konami Classics + 320x224 + media/mixrbv2/wecleman.png + + + + wecleman.zip + WEC Le Mans 24 (v2.01) + A demanding yet superb sprite-scaling racing game from Konami, based on the annual 'WEC Le Mans 24' race; a grueling event that, as its name suggests, takes place over a 24-hour period. + +The width of Le Mans' racetrack never varied and remained a constant 3 lanes wide. The track itself was incredibly demanding and contact with either a rival racer or one of the many track-side objects would send the player's vehicle flying dramatically through the air, costing valuable seconds in time. + 0.90 + 19860101T000000 + Konami + Konami + Race 3rd Pers. view + 2888 + 1 + Konami Classics + 320x224 + media/mixrbv2/wecleman.png + + + + welltrisj.zip + Welltris - Alexey Pajitnov's (Japan, 2 players) + A fun and addicting puzzle game from the creator of the hugely popular "Tetris". + 0.90 + 19910101T000000 + Video System + Video System + Puzzle-Game / Fall + 2912 + 1-2 + welltris.zip + Video System Co. + 352x240 + media/mixrbv2/welltris.png + + + + welltris.zip + Welltris - Alexey Pajitnov's (World?, 2 players) + A fun and addicting puzzle game from the creator of the hugely popular "Tetris". + 0.90 + 19910101T000000 + Video System + Video System + Puzzle-Game / Fall + 2912 + 1-2 + Video System Co. + 352x240 + media/mixrbv2/welltris.png + + + + wexpressb1.zip + Western Express (bootleg set 1) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + wexpressb2.zip + Western Express (bootleg set 2) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + wexpressb3.zip + Western Express (bootleg set 3) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + wexpress.zip + Western Express (Japan, rev 4) + The wild west-themed Express Raider is separated into two different game types; a sideways scrolling fighting sequence and a shooting sequence. The player controls a train robber, or 'Express Raider', and must try to steal the bags of money from the moving locomotives. + +During the fighting sequence, the Raider must fight the bank teller, hit the coyotes and then jump onto the train before it speeds away. Once on the train, he must fight his way past other enemies and avoid various projectiles, such as bottles, bullets and shovels full of coal. Players must be careful to duck under the low signs that come along as the train is travelling. Also, once a train carriage is clear of enemies, a bomb will appear between the current carriage and the next; players must quickly jump over to the next carriage before the bomb goes off, otherwise the Raider will fall from the train and a life is lost. If the Express Raider manages to reach the train engine, the loot will be captured and the game will then move on to the shooting sequence. + +In the shooting sequence, the Express Raider rides a horse and must shoot at the enemies that appear from the windows of a train carriage. They will shoot back at the player and throw various objects. Players can hit the DUCK button to avoid the enemy attacks. A woman will appear at regular intervals offering the player a bag of money, if the player shoots the woman, a life is lost. After the shooting sequence has been completed, the game will start over again with an increased level of difficulty. + 0.60 + 19860101T000000 + Data East + Data East + Platform / Fighter Scrolling + 2896 + 1-2 + exprraid.zip + Data East Classics + 240x240 + media/mixrbv2/exprraid.png + + + + wheelrun.zip + Wheels Runner + Wheels Runner (c) 199? International Games. - SOURCES - Game's rom + 0.50 + 20190101T000000 + International Games + Race, Driving / Race + 2924 + 1-2 + Mame + 256x224 + media/mixrbv2/wheelrun.png + + + + whizz.zip + Whizz + Twin Falcons or Whizz is a military themed 2D side-scrolling shoot 'em up game where you take control of a fighter aircraft. The aircraft has separate weapons for flying and ground based units/ships. + +You fight a variety of enemies like ships, aircraft and bosses. While playing destroyed enemies drop power-ups. These include: lower or higher speed (D and U), laser (L), hand operated three shot weapon (3 in a circle), three way automatic weapon (3 in a square) and a five shot weapon (R). + 0.30 + 19890101T000000 + Philko + Philko (Poara Enterprises license) + Shoot'em Up + 79 + 1-2 + twinfalc.zip + Mame + 384x224 + media/mixrbv2/twinfalc.png + + + + wiggie.zip + Wiggie Waggie + A rip-off of Seta's "Thunder & Lightning" featuring naked women. + 0.50 + 19940101T000000 + Promat + Action / Breakout games + 2917 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/wiggie.png + + + + wildfangs.zip + Wild Fang + Wild Fang is a sideways scrolling beat-em-up for 1 or 2 players with a medieval setting. Players take on a variety of orcs, ogres, demons and other mythical creatures in their bid to destroy Satan, decapitating each enemy they encounter in order to collect their skulls for points and power-ups. + +The player's character is an armor wearing beastmaster who sits atop of a fist-fighting giant. Upon the player's command, the player may switch his mount into a tiger and attack with his mace. Within each stage, there are also power-ups that allow the player to morph into a laser breathing dragon for a limited period of time. + +The player's life bar is represented by a fire breathing dragon in the upper corner. With each hit the player takes, the fire breath grows smaller. Once the life bar is depleted the player's mount is killed and the player travels on foot and fights with throwing daggers. If hit in this form then the player loses a life. The game is over when all of a players lives are lost. + 0.50 + 19890101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1-2 + wildfang.zip + Tecmo + 256x224 + media/mixrbv2/wildfang.png + + + + wildfang.zip + Wild Fang / Tecmo Knight + Wild Fang is a sideways scrolling beat-em-up for 1 or 2 players with a medieval setting. Players take on a variety of orcs, ogres, demons and other mythical creatures in their bid to destroy Satan, decapitating each enemy they encounter in order to collect their skulls for points and power-ups. + +The player's character is an armor wearing beastmaster who sits atop of a fist-fighting giant. Upon the player's command, the player may switch his mount into a tiger and attack with his mace. Within each stage, there are also power-ups that allow the player to morph into a laser breathing dragon for a limited period of time. + +The player's life bar is represented by a fire breathing dragon in the upper corner. With each hit the player takes, the fire breath grows smaller. Once the life bar is depleted the player's mount is killed and the player travels on foot and fights with throwing daggers. If hit in this form then the player loses a life. The game is over when all of a players lives are lost. + 0.50 + 19890101T000000 + Tecmo + Tecmo + Platform / Fighter Scrolling + 2896 + 1-2 + Tecmo + 256x224 + media/mixrbv2/wildfang.png + + + + wildplt.zip + Wild Pilot + The player pilots an old-fashioned biplane which he or she sees from behind and slightly above. The plane moves through constantly-scrolling clouds, over cities, etc. and shoots at a wide variety of on-coming aerial enemies. +Each game comprises of six novice bosses and four expert bosses that can only be challenged after you beat the six bosses. + 19920101T000000 + Jaleco + Jaleco + Lightgun Shooter + 32 + 1-2 + Jaleco + 256x224 + media/mixrbv2/wildplt.png + + + + moomesaaab.zip + Wild West C.O.W.-Boys of Moo Mesa (ver AAB) + Wild West C.O.W. Boys of Moo Mesa is a horizontally-scrolling platform run 'n' gun game for up to four players. The game is set in America's Wild West and is based on the cartoon series of the same name. + +Players take on the roles of four recently mutated cows - now turned lawmen; the Cowlorado Kid, the Dakota Dude, Marshall Moo Montana and the shotgun-toting Buffalo Bull. The lawmen must shoot their way through enemy-packed stages to take down wanted criminals. + +Controls consist of a jump and an attack button and pressing both buttons simultaneously will cause the player character to perform a stampede attack, do a spinning jump, or use any equipped item like dynamite sticks and tomahawk blades. + +Numerous variety of power-up items can be found by shooting flying chickens, these include a rapid-fire Machine Gun and a Power-Up for wider bullets. Players have a three-unit life gauge that allows them to take three hits before losing a life. + +The game consists of eight stages, each with a boss fight at the end, and after the first stage, players can choose in which order they want to tackle the following stages. + 0.70 + 19920101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-4 + moomesa.zip + Konami Classics + 384x224 + media/mixrbv2/moomesa.png + + + + moomesa.zip + Wild West C.O.W.-Boys of Moo Mesa (ver EAB) + Wild West C.O.W. Boys of Moo Mesa is a horizontally-scrolling platform run 'n' gun game for up to four players. The game is set in America's Wild West and is based on the cartoon series of the same name. + +Players take on the roles of four recently mutated cows - now turned lawmen; the Cowlorado Kid, the Dakota Dude, Marshall Moo Montana and the shotgun-toting Buffalo Bull. The lawmen must shoot their way through enemy-packed stages to take down wanted criminals. + +Controls consist of a jump and an attack button and pressing both buttons simultaneously will cause the player character to perform a stampede attack, do a spinning jump, or use any equipped item like dynamite sticks and tomahawk blades. + +Numerous variety of power-up items can be found by shooting flying chickens, these include a rapid-fire Machine Gun and a Power-Up for wider bullets. Players have a three-unit life gauge that allows them to take three hits before losing a life. + +The game consists of eight stages, each with a boss fight at the end, and after the first stage, players can choose in which order they want to tackle the following stages. + 0.70 + 19920101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-4 + Konami Classics + 384x224 + media/mixrbv2/moomesa.png + + + + moomesauab.zip + Wild West C.O.W.-Boys of Moo Mesa (ver UAB) + Wild West C.O.W. Boys of Moo Mesa is a horizontally-scrolling platform run 'n' gun game for up to four players. The game is set in America's Wild West and is based on the cartoon series of the same name. + +Players take on the roles of four recently mutated cows - now turned lawmen; the Cowlorado Kid, the Dakota Dude, Marshall Moo Montana and the shotgun-toting Buffalo Bull. The lawmen must shoot their way through enemy-packed stages to take down wanted criminals. + +Controls consist of a jump and an attack button and pressing both buttons simultaneously will cause the player character to perform a stampede attack, do a spinning jump, or use any equipped item like dynamite sticks and tomahawk blades. + +Numerous variety of power-up items can be found by shooting flying chickens, these include a rapid-fire Machine Gun and a Power-Up for wider bullets. Players have a three-unit life gauge that allows them to take three hits before losing a life. + +The game consists of eight stages, each with a boss fight at the end, and after the first stage, players can choose in which order they want to tackle the following stages. + 0.70 + 19920101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-4 + moomesa.zip + Konami Classics + 384x224 + media/mixrbv2/moomesa.png + + + + moomesauac.zip + Wild West C.O.W.-Boys of Moo Mesa (ver UAC) + Wild West C.O.W. Boys of Moo Mesa is a horizontally-scrolling platform run 'n' gun game for up to four players. The game is set in America's Wild West and is based on the cartoon series of the same name. + +Players take on the roles of four recently mutated cows - now turned lawmen; the Cowlorado Kid, the Dakota Dude, Marshall Moo Montana and the shotgun-toting Buffalo Bull. The lawmen must shoot their way through enemy-packed stages to take down wanted criminals. + +Controls consist of a jump and an attack button and pressing both buttons simultaneously will cause the player character to perform a stampede attack, do a spinning jump, or use any equipped item like dynamite sticks and tomahawk blades. + +Numerous variety of power-up items can be found by shooting flying chickens, these include a rapid-fire Machine Gun and a Power-Up for wider bullets. Players have a three-unit life gauge that allows them to take three hits before losing a life. + +The game consists of eight stages, each with a boss fight at the end, and after the first stage, players can choose in which order they want to tackle the following stages. + 0.70 + 19920101T000000 + Konami + Konami + Platform / Shooter Scrolling + 2887 + 1-4 + moomesa.zip + Konami Classics + 384x224 + media/mixrbv2/moomesa.png + + + + wwestern.zip + Wild Western (set 1) + A sheriff on horseback must protect a train, located in the center of the screen, from groups of bandits. Players must avoid running into obstacles, getting shot, or allowing three bandits to board the train. A bonus game is played between rounds. + 0.50 + 19820101T000000 + Taito + Taito + Shooter / Vertical + 2889 + 1-2 + Taito Classics + 270 + 256x224 + media/mixrbv2/wwestern.png + + + + wwestern1.zip + Wild Western (set 2) + A sheriff on horseback must protect a train, located in the center of the screen, from groups of bandits. Players must avoid running into obstacles, getting shot, or allowing three bandits to board the train. A bonus game is played between rounds. + 0.50 + 19820101T000000 + Taito + Taito + Shooter / Vertical + 2889 + 1-2 + wwestern.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/wwestern.png + + + + willowj.zip + Willow (Japan, Japanese) + Willow is a sideways scrolling platform shoot-em-up game loosely based upon the movie of the same name. Players take on the role of one of two characters: Willow Ufgood or Madmartigan. The hero's mission is to rescue the baby Elora Danan from the evil Queen Bavmorda and bring her back safely. If the quest fails, the Queen will plunge the world into darkness and chaos. + +The game consists of 6 levels, each representing a scene from the movie. Defeated enemies drop gold coins that can be collected by the player. In addition, each level is littered with locked treasure chests that can be shot open and the treasure within collected. The gold can be used to purchase a number of weapons and character power-ups from a nearby shop (represented on screen by a wise old man). All power-ups will stay with the player until all lives are lost and the game is over. + 0.80 + 19890101T000000 + Capcom + Lucasfilm Games + Platform / Shooter Scrolling + 2887 + 1-2 + willow.zip + Capcom Play System + 384x224 + media/mixrbv2/willow.png + + + + willowuo.zip + Willow (USA Old Ver.) + Willow is a sideways scrolling platform shoot-em-up game loosely based upon the movie of the same name. Players take on the role of one of two characters: Willow Ufgood or Madmartigan. The hero's mission is to rescue the baby Elora Danan from the evil Queen Bavmorda and bring her back safely. If the quest fails, the Queen will plunge the world into darkness and chaos. + +The game consists of 6 levels, each representing a scene from the movie. Defeated enemies drop gold coins that can be collected by the player. In addition, each level is littered with locked treasure chests that can be shot open and the treasure within collected. The gold can be used to purchase a number of weapons and character power-ups from a nearby shop (represented on screen by a wise old man). All power-ups will stay with the player until all lives are lost and the game is over. + 0.80 + 19890101T000000 + Capcom + Lucasfilm Games + Platform / Shooter Scrolling + 2887 + 1-2 + willow.zip + Capcom Play System + 384x224 + media/mixrbv2/willow.png + + + + willowu.zip + Willow (USA) + Willow is a sideways scrolling platform shoot-em-up game loosely based upon the movie of the same name. Players take on the role of one of two characters: Willow Ufgood or Madmartigan. The hero's mission is to rescue the baby Elora Danan from the evil Queen Bavmorda and bring her back safely. If the quest fails, the Queen will plunge the world into darkness and chaos. + +The game consists of 6 levels, each representing a scene from the movie. Defeated enemies drop gold coins that can be collected by the player. In addition, each level is littered with locked treasure chests that can be shot open and the treasure within collected. The gold can be used to purchase a number of weapons and character power-ups from a nearby shop (represented on screen by a wise old man). All power-ups will stay with the player until all lives are lost and the game is over. + 0.80 + 19890101T000000 + Capcom + Lucasfilm Games + Platform / Shooter Scrolling + 2887 + 1-2 + willow.zip + Capcom Play System + 384x224 + media/mixrbv2/willow.png + + + + willow.zip + Willow (World) + Willow is a sideways scrolling platform shoot-em-up game loosely based upon the movie of the same name. Players take on the role of one of two characters: Willow Ufgood or Madmartigan. The hero's mission is to rescue the baby Elora Danan from the evil Queen Bavmorda and bring her back safely. If the quest fails, the Queen will plunge the world into darkness and chaos. + +The game consists of 6 levels, each representing a scene from the movie. Defeated enemies drop gold coins that can be collected by the player. In addition, each level is littered with locked treasure chests that can be shot open and the treasure within collected. The gold can be used to purchase a number of weapons and character power-ups from a nearby shop (represented on screen by a wise old man). All power-ups will stay with the player until all lives are lost and the game is over. + 0.80 + 19890101T000000 + Capcom + Lucasfilm Games + Platform / Shooter Scrolling + 2887 + 1-2 + Capcom Play System + 384x224 + media/mixrbv2/willow.png + + + + wilytowr.zip + Wily Tower + A platform game where you must climb around lattice of pipes to deactivate power switches for main computer while avoiding robots. Jump on generators to send out disrupters and kill robots. + 0.50 + 19840101T000000 + Irem + Irem + Platform / Run Jump Scrolling + 2897 + 1-2 + Irem Classics + 256x224 + media/mixrbv2/wilytowr.png + + + + wjammers.zip + Windjammers / Flying Power Disc + Windjammers is based on a real-life sport known as Saucer Tennis or Frisbee Tennis. You and an opponent face off in an arena with a low net in the middle. Points are scored by throwing a disc into the goals behind a player or whenever your opponent is not able to catch the disc in time. There are two moves: a regular throw and a lob. By using quarter-circle movement, you can also add effect to the throw. To catch difficult discs, you can slide to move more quickly. There are six characters to choose from, with specific abilities and their own court fit for their skills. A single game consists of short sets of thirty seconds. The game is won after two winning sets or sudden death after two draws. + 0.70 + 19940101T000000 + Data East + SNK + Sports + 685 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/wjammers.png + + + + wingforc.zip + Wing Force (Japan, prototype) + Horizontal scrolling shoot'em up. Destroy the conspiracy with 4 types of wings! + 0.70 + 19930101T000000 + A.I + Atlus + Shoot'em Up + 79 + Kaneko + 270 + 320x224 + media/mixrbv2/wingforc.png + + + + wiping.zip + Wiping + Wiping, later rereleased as Rug Rats, is Dig Dug-style arcade game that was released by Nichibutsu in 1982; it utilises two Zilog Z80 microprocessors (running up at 3.072 MHz) and a custom sound chip running at the same speed. The player must use a 4-way joystick to take control of a vacuum cleaner (which bears a striking resemblance to Numatic International's then-new "Henry") with a single button to make it spray soapbubbles at germs (of which there are three different types, "Baddons", "Bilbolas" and "Bigimbas"), and roll over them while they're stunned to suck them up - and it can also pass over rugs to make them roll up and squash any germs standing on them, but it can also be a victim of this. + + + 0.70 + 19820101T000000 + Nichibutsu + Nichibutsu + Action + 10 + 1-2 + Nichibutsu + 270 + 288x224 + media/mixrbv2/wiping.png + + + + wits.zip + Wit's (Japan) + A game with play much like "Tron"'s Light Cycles game, but with the ability to jump and speed burst. + 0.50 + 19890101T000000 + Athena + Action + 10 + 1-2 + Seta + 384x240 + media/mixrbv2/wits.png + + + + wiz.zip + Wiz + As an awesome and fearless wizard named Wiz you must embark on an epic journey through a strange and enchanted wood to battle the evil wizards and then travel up into the skies to continue the fight against evil, using your powerful magic to cast spells on the baddies! Master the dark arts to conjure up amazing spells that will defeat all manner of creatures and rival wizards with ease! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Platform / Shooter Scrolling + 2887 + 1-2 + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/wiz.png + + + + wizt.zip + Wiz (Taito, set 1) + As an awesome and fearless wizard named Wiz you must embark on an epic journey through a strange and enchanted wood to battle the evil wizards and then travel up into the skies to continue the fight against evil, using your powerful magic to cast spells on the baddies! Master the dark arts to conjure up amazing spells that will defeat all manner of creatures and rival wizards with ease! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Platform / Shooter Scrolling + 2887 + 1-2 + wiz.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/wiz.png + + + + wizta.zip + Wiz (Taito, set 2) + As an awesome and fearless wizard named Wiz you must embark on an epic journey through a strange and enchanted wood to battle the evil wizards and then travel up into the skies to continue the fight against evil, using your powerful magic to cast spells on the baddies! Master the dark arts to conjure up amazing spells that will defeat all manner of creatures and rival wizards with ease! + 0.50 + 19850101T000000 + Seibu Kaihatsu + Seibu Kaihatsu + Platform / Shooter Scrolling + 2887 + 1-2 + wiz.zip + Seibu Kaihatsu + 270 + 256x224 + media/mixrbv2/wiz.png + + + + wizwarz.zip + Wiz Warz (prototype) + To play Wiz Warz: +Use MOVE KNOB to move the wizard around the wall. +Use FIRE JOYSTICK to hurl wizard's energy bolts. +ELECTRIFY WALLS will destroy all enemies on the wall. +SHOOT TREASURES for points before devils get them. +Hitting STORM CLOUDS will prove to be very unpleasant. + 0.70 + 19840101T000000 + Mylstar Electronics + Mylstar + Shooter / Space Invaders Like + 2900 + 1-2 + Gottlieb + 256x240 + media/mixrbv2/wizwarz.png + + + + wizzquiz.zip + Wizz Quiz (Konami version) + 19850101T000000 + Zilec Electronics + Zilec Electronics + Quiz / English + 2931 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/wizzquiz.png + + + + wizzquiza.zip + Wizz Quiz (version 4) + 19850101T000000 + Zilec Electronics + Zilec Electronics + Quiz / English + 2931 + 1-2 + wizzquiz.zip + Konami Classics + 256x224 + media/mixrbv2/wizzquiz.png + + + + wonder3.zip + Wonder 3 (910520 Japan) + Three Wonders contains three games from which a player may choose: + +Midnight Wanderers: Quest for the Chariot - A platform game that sees the player control a hobbit named Lou and his traveling companion, Siva, to run, climb, and shoot at enemies. +Chariot: Adventure through the Sky - A shoot 'em up game featuring the characters from Midnight Wanderers, but in a Gradius-esque game. +Don't Pull - A puzzle game similar to games like the Eggerland series, Pengo and Capcom's own puzzle game Pirate Ship Higemaru. It involves the player controlling either a rabbit named Don (Player 1) or a squirrel called Pull (Player 2), pushing blocks to crush monsters. + 0.70 + 19910101T000000 + Capcom + Capcom + Compilation + 34 + 1-2 + 3wonders.zip + Capcom Play System + 384x224 + media/mixrbv2/3wonders.png + + + + wboyu.zip + Wonder Boy (not encrypted) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboyo.zip + Wonder Boy (set 1, 315-5135) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy.zip + Wonder Boy (set 1, 315-5177) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy2.zip + Wonder Boy (set 2, 315-5178) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy2u.zip + Wonder Boy (set 2, not encrypted) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy3.zip + Wonder Boy (set 3, 315-5135) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy4.zip + Wonder Boy (set 4, 315-5162) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wboy5.zip + Wonder Boy (set 5, bootleg) + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wbdeluxe.zip + Wonder Boy Deluxe + Wonder Boy (ワンダーボーイ Wandā Bōi?) (also known as Super Wonder Boy for its Sega Mark III release in Japan and Revenge of Drancon for its Game Gear release in North America) is a 1986 video game published by Sega and developed by Escape (now known as WestOne Bit Entertainment, not to be confused with Westone). + 0.90 + 19860101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wboy.zip + Sega Classics + 512x224 + media/mixrbv2/wboy.png + + + + wb31d.zip + Wonder Boy III - Monster Lair (set 1, Japan, System 16A, FD1094 317-0084 decrypted) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb31.zip + Wonder Boy III - Monster Lair (set 1, Japan, System 16A, FD1094 317-0084) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb32d.zip + Wonder Boy III - Monster Lair (set 2, Japan, System 16B, FD1094 317-0085 decrypted) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb32.zip + Wonder Boy III - Monster Lair (set 2, Japan, System 16B, FD1094 317-0085) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb33d.zip + Wonder Boy III - Monster Lair (set 3, World, System 16B, FD1094 317-0089 decrypted) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb33.zip + Wonder Boy III - Monster Lair (set 3, World, System 16B, FD1094 317-0089) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb34d.zip + Wonder Boy III - Monster Lair (set 4, Japan, System 16B, FD1094 317-0087 decrypted) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb34.zip + Wonder Boy III - Monster Lair (set 4, Japan, System 16B, FD1094 317-0087) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb35d.zip + Wonder Boy III - Monster Lair (set 5, Japan, System 16A, FD1089A 317-0086 decrypted) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb35.zip + Wonder Boy III - Monster Lair (set 5, Japan, System 16A, FD1089A 317-0086) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wb3.zip + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wb3.zip + Wonder Boy III - Monster Lair (set 6, World, System 16B, 8751 317-0098) + Strange enemies are attacking your lands and have advanced weapons that they use to destroy everything, so you must take either the awesome Leo or the incredible Princess Purapril on a cool mission to fight these invaders to snatch their weapons and save your lands from total destruction. In the brilliant Wonder Boy III - Monster Lair you must fight the colourful and crazy creatures and defeat them all to save the land! + 0.80 + 19880101T000000 + Westone Bit Entertainment + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + Sega Classics + 320x224 + media/mixrbv2/wb3.png + + + + wbmlb.zip + Wonder Boy in Monster Land (English bootleg set 1) + Wonder Boy in Monster Land is a multi-directional scrolling platform hack 'n' slash game with RPG elements, in which the game's hero, Wonder Boy, has seen his home of Wonderland invaded by the evil 'MEKA Dragon' and its army of minions. + +At the start of the game Wonder Boy is unarmed, but the mayor of Wonder Land (as it was known before the invasion) gives him a short sword to help him in his quest. Wonder Boy has a life meter represented as a series of red hearts and whenever he sustains damage, the hearts deplete. When all the hearts are depleted, Wonder Boy dies and the game ends. As well as the life meter, there is also an Hourglass Timer at the top of the screen; whenever this runs out, Wonder Boy loses some life. The Timer can be refilled by collecting hourglasses or by visiting hospitals or taverns. + 0.80 + 19870101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wbml.zip + Sega Classics + 512x224 + media/mixrbv2/wbml.png + + + + wbmlvc.zip + Wonder Boy in Monster Land (English, Virtual Console) + Wonder Boy in Monster Land is a multi-directional scrolling platform hack 'n' slash game with RPG elements, in which the game's hero, Wonder Boy, has seen his home of Wonderland invaded by the evil 'MEKA Dragon' and its army of minions. + +At the start of the game Wonder Boy is unarmed, but the mayor of Wonder Land (as it was known before the invasion) gives him a short sword to help him in his quest. Wonder Boy has a life meter represented as a series of red hearts and whenever he sustains damage, the hearts deplete. When all the hearts are depleted, Wonder Boy dies and the game ends. As well as the life meter, there is also an Hourglass Timer at the top of the screen; whenever this runs out, Wonder Boy loses some life. The Timer can be refilled by collecting hourglasses or by visiting hospitals or taverns. + 0.80 + 19870101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wbml.zip + Sega Classics + 512x224 + media/mixrbv2/wbml.png + + + + wbml.zip + Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043) + Wonder Boy in Monster Land is a multi-directional scrolling platform hack 'n' slash game with RPG elements, in which the game's hero, Wonder Boy, has seen his home of Wonderland invaded by the evil 'MEKA Dragon' and its army of minions. + +At the start of the game Wonder Boy is unarmed, but the mayor of Wonder Land (as it was known before the invasion) gives him a short sword to help him in his quest. Wonder Boy has a life meter represented as a series of red hearts and whenever he sustains damage, the hearts deplete. When all the hearts are depleted, Wonder Boy dies and the game ends. As well as the life meter, there is also an Hourglass Timer at the top of the screen; whenever this runs out, Wonder Boy loses some life. The Timer can be refilled by collecting hourglasses or by visiting hospitals or taverns. + 0.80 + 19870101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + Sega Classics + 512x224 + media/mixrbv2/wbml.png + + + + wbmljb.zip + Wonder Boy in Monster Land (Japan not encrypted) + Wonder Boy in Monster Land is a multi-directional scrolling platform hack 'n' slash game with RPG elements, in which the game's hero, Wonder Boy, has seen his home of Wonderland invaded by the evil 'MEKA Dragon' and its army of minions. + +At the start of the game Wonder Boy is unarmed, but the mayor of Wonder Land (as it was known before the invasion) gives him a short sword to help him in his quest. Wonder Boy has a life meter represented as a series of red hearts and whenever he sustains damage, the hearts deplete. When all the hearts are depleted, Wonder Boy dies and the game ends. As well as the life meter, there is also an Hourglass Timer at the top of the screen; whenever this runs out, Wonder Boy loses some life. The Timer can be refilled by collecting hourglasses or by visiting hospitals or taverns. + 0.80 + 19870101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wbml.zip + Sega Classics + 512x224 + media/mixrbv2/wbml.png + + + + wbmljo.zip + Wonder Boy in Monster Land (Japan Old Ver., MC-8123, 317-0043) + Wonder Boy in Monster Land is a multi-directional scrolling platform hack 'n' slash game with RPG elements, in which the game's hero, Wonder Boy, has seen his home of Wonderland invaded by the evil 'MEKA Dragon' and its army of minions. + +At the start of the game Wonder Boy is unarmed, but the mayor of Wonder Land (as it was known before the invasion) gives him a short sword to help him in his quest. Wonder Boy has a life meter represented as a series of red hearts and whenever he sustains damage, the hearts deplete. When all the hearts are depleted, Wonder Boy dies and the game ends. As well as the life meter, there is also an Hourglass Timer at the top of the screen; whenever this runs out, Wonder Boy loses some life. The Timer can be refilled by collecting hourglasses or by visiting hospitals or taverns. + 0.80 + 19870101T000000 + SEGA + SEGA + Platform / Shooter Scrolling + 2887 + 1-2 + wbml.zip + Sega Classics + 512x224 + media/mixrbv2/wbml.png + + + + wondl96.zip + Wonder League '96 (Korea) + 0.50 + 19960101T000000 + SemiCom + Sports / Baseball + 2853 + 1-2 + SemiCom + 320x240 + media/mixrbv2/wondl96.png + + + + wlstar.zip + Wonder League Star - Sok-Magicball Fighting (Korea) + A baseball game. + 0.50 + 19950101T000000 + Mijin + Sports / Baseball + 2853 + 1-2 + SemiCom + 320x240 + media/mixrbv2/wlstar.png + + + + wndrmomo.zip + Wonder Momo + An excellent side-scrolling beat em up game. + +We play with a beautiful teen actress named Momo, through various theater levels, she must face of all enemies from the 'Warudemon' Phantom Army, with kicks and double kicks and must pick up a tornado item to get the ability to turn into 'Wonder Momo' using his super suit that lets throw his 'Wonder hoop' and the powerful 'Wonder Typhoon'. + +When you reach the end of each level, a boss appears and has to be defeated to unlock the next stage. + 0.50 + 19870101T000000 + Namco + Namco + Fight / 2D + 2914 + 1-2 + Namco Classics + 288x224 + media/mixrbv2/wndrmomo.png + + + + wndrplnt.zip + Wonder Planet (Japan) + In this colorful shooter, the player controls a starship with two basic attacks - Twin bullets that hit airborne enemies and Drop bombs that hit ground objects indicated by the target in front of the starship. Throughout each planet, the player will find shops in which better equipment can be purchased for the ship's engines (to increase speed), missiles (for better but limited firepower), bombs (greater but limited destruction on ground targets), barriers (to protect the starship) and option (which sells mixed equipment). The credit needed for purchases is found from destroyed airborne and ground targets. The player can find letter pickups, which spell the words EXTRA, MONEY, BLAST and SECRO. If all the letters of one word are collected, the player earns a bonus that matches the word. The player loses a life if the starship is destroyed (from an enemy projectile or collision with an enemy). At the end of a planet, the player must repeatedly bomb or shoot a boss enemy to proceed to the next planet. + 0.70 + 19870101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/wndrplnt.png + + + + wondstck.zip + Wonder Stick (set 1) + Wonder Stick is an adult maze game in the model of the 1981 Konami classic, Amidar. The objective is to encircle sections on a grid while avoiding the enemies in order to remove the blocks and reveal the hidden nude image underneath. Once all of the blocks are removed the stage is complete. + +The player character is penguin that drops a line to encircle blocks while the button is held down. At the start of each line the player drops a tag. The tag will return to the player if the button is let go or will circle around any blocks that are fully enclosed by the line. Enemies can be killed by this moving tag and will drop either power-ups or food items for the player. If a situation gets too hairy the player may use a help, denoted by the fish icons in the upper-left hand corner, which will momentarily stun enemies and allow the player to pass by them unscathed. + +Every five levels the player gets to play a bonus level where he can travel a grid with no enemies for the purpose of picking up food items and extra lives before the end of the time limit. The game is over once the player has lost all of his lives. + 0.70 + Yun Sung + Puzzle-Game + 26 + 1-2 + Mame + 320x240 + media/mixrbv2/wondstck.png + + + + wondstcka.zip + Wonder Stick (set 2, censored) + Wonder Stick is an adult maze game in the model of the 1981 Konami classic, Amidar. The objective is to encircle sections on a grid while avoiding the enemies in order to remove the blocks and reveal the hidden nude image underneath. Once all of the blocks are removed the stage is complete. + +The player character is penguin that drops a line to encircle blocks while the button is held down. At the start of each line the player drops a tag. The tag will return to the player if the button is let go or will circle around any blocks that are fully enclosed by the line. Enemies can be killed by this moving tag and will drop either power-ups or food items for the player. If a situation gets too hairy the player may use a help, denoted by the fish icons in the upper-left hand corner, which will momentarily stun enemies and allow the player to pass by them unscathed. + +Every five levels the player gets to play a bonus level where he can travel a grid with no enemies for the purpose of picking up food items and extra lives before the end of the time limit. The game is over once the player has lost all of his lives. + 0.70 + Yun Sung + Puzzle-Game + 26 + 1-2 + wondstck.zip + Mame + 320x240 + media/mixrbv2/wondstck.png + + + + woodpeck.zip + Woodpecker (set 1) + 0.60 + 19810101T000000 + Amenip + Amenip + Platform / Run Jump + 2915 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/woodpeck.png + + + + woodpeca.zip + Woodpecker (set 2) + 0.60 + 19810101T000000 + Amenip + Amenip + Platform / Run Jump + 2915 + 1-2 + woodpeck.zip + Namco Classics + 270 + 288x224 + media/mixrbv2/woodpeck.png + + + + twcup90b2.zip + World Cup '90 (bootleg, set 1) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90b3.zip + World Cup '90 (bootleg, set 2) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90b4.zip + World Cup '90 (bootleg, set 3) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90a.zip + World Cup '90 (Euro set 1) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90b.zip + World Cup '90 (Euro set 2) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90c.zip + World Cup '90 (Euro set 3) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90bb.zip + World Cup '90 (european hack, different title) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90t.zip + World Cup '90 (trackball) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + twcup90.zip + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + twcup90.zip + World Cup '90 (World, set 1) + Tecmo World Cup is a football game which features solely national teams. Like the title indicates, you can play the World Cup tournament, which will also include a qualification round. You can choose your team from a pool of 24 nations, though the assortment is not identical to the roster of the latest World Cup by the time of the games release. Also, the qualification, in contrast to the real World Cup, only has four teams as no other than the available 24 teams take part. Apart from the World Cup, the only other single-player mode is a friendly match against a randomly chosen team. + + + 0.50 + 19890101T000000 + Tecmo + Tecmo + Sports + 685 + 1-2 + Tecmo + 256x224 + media/mixrbv2/twcup90.png + + + + wh1h.zip + World Heroes (ALH-005) + An alien entity known as Geegus threatens the Earth in the year 3091. As all of Earth's forces have been defeated, a scientist uses his recently-built time machine to find the greatest fighters of different eras to compete against Geegus. + +Featuring a cast of characters ranging from ninjas to a cybernetic supersoldier, you'll fight your way through standard-fare one-on-one matches or take on an opponent in a Deathmatch, where spiked walls and landmines add to the danger. + 0.80 + 19920101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + wh1.zip + Neo-Geo + 320x224 + media/mixrbv2/wh1.png + + + + wh1.zip + World Heroes (ALM-005) + An alien entity known as Geegus threatens the Earth in the year 3091. As all of Earth's forces have been defeated, a scientist uses his recently-built time machine to find the greatest fighters of different eras to compete against Geegus. + +Featuring a cast of characters ranging from ninjas to a cybernetic supersoldier, you'll fight your way through standard-fare one-on-one matches or take on an opponent in a Deathmatch, where spiked walls and landmines add to the danger. + 0.80 + 19920101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/wh1.png + + + + wh1ha.zip + World Heroes (set 3) + An alien entity known as Geegus threatens the Earth in the year 3091. As all of Earth's forces have been defeated, a scientist uses his recently-built time machine to find the greatest fighters of different eras to compete against Geegus. + +Featuring a cast of characters ranging from ninjas to a cybernetic supersoldier, you'll fight your way through standard-fare one-on-one matches or take on an opponent in a Deathmatch, where spiked walls and landmines add to the danger. + 0.80 + 19920101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + wh1.zip + Neo-Geo + 320x224 + media/mixrbv2/wh1.png + + + + wh2h.zip + World Heroes 2 (ALH-006) + The time traveling tournament fighters are back! The original eight characters from the popular arcade hit return, along with six new characters hand-picked from several different eras and locations all through time. But a new boss awaits the victor... who or what is behind this new tournament? You'll have to get to him to find out! + +This sequel features all-new stages and music, and improved animation and graphics. You can now reflect projectile moves at your opponent, and reverse normal throws if your timing is right! The original game's Death Match mode is also back, but with a new feature - the life bar will increase or decrease as you inflict or receive damage. Get your side's life bar to 100% and your enemy will lose. + 0.80 + 19930101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + wh2.zip + Neo-Geo + 320x224 + media/mixrbv2/wh2.png + + + + wh2.zip + World Heroes 2 (ALM-006)(ALH-006) + The time traveling tournament fighters are back! The original eight characters from the popular arcade hit return, along with six new characters hand-picked from several different eras and locations all through time. But a new boss awaits the victor... who or what is behind this new tournament? You'll have to get to him to find out! + +This sequel features all-new stages and music, and improved animation and graphics. You can now reflect projectile moves at your opponent, and reverse normal throws if your timing is right! The original game's Death Match mode is also back, but with a new feature - the life bar will increase or decrease as you inflict or receive damage. Get your side's life bar to 100% and your enemy will lose. + 0.80 + 19930101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/wh2.png + + + + wh2ja.zip + World Heroes 2 Jet (ADM-007) + World Heroes 2 JET is the third game in the World Heroes series. A third tournament featuring warriors from all over the world (and different periods in time) has begun, and it's up to you to fight to the finish to find out who is organizing it. The game is an upgrade / fine-tuning of World Heroes 2. + 0.60 + 19940101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + wh2j.zip + Neo-Geo + 320x224 + media/mixrbv2/wh2j.png + + + + wh2j.zip + World Heroes 2 Jet (ADM-007)(ADH-007) + World Heroes 2 JET is the third game in the World Heroes series. A third tournament featuring warriors from all over the world (and different periods in time) has begun, and it's up to you to fight to the finish to find out who is organizing it. The game is an upgrade / fine-tuning of World Heroes 2. + 0.60 + 19940101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/wh2j.png + + + + whp.zip + World Heroes Perfect + In the final entry in the World Heroes saga, all sixteen fighters from previous games return for another tournament. New features include: + +1. An all-new attack mode where you use all four buttons to attack an enemy. +2. A power bar which grants you special abilities depending on the character. +3. All-new stages and music set across different locations in Earth's past and future. +4. Three secret characters to choose from, including a character new to the series + 0.70 + 19950101T000000 + ADK + SNK + Fight / Versus + 2885 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/whp.png + + + + wrallyat.zip + World Rally (US, 930217) + World Rally is a road rally-themed driving game. Licensed by Gaelco of Barcelona, Spain, it is suitable for both street and arcade locations. World Rally is a 1- or 2-player alternating driving game. Controls include a steering wheel on a mounting pod, a high/low gear shifter assembly, and an accelerator pedal. + +Players select 1 of 4 rallies to start, each progressively more difficult than the one before. A rally is composed of three stages, offering a variety of different track layouts and road surfaces. Asphalt, dirt, night driving and snow-covered roads require players to adjust their driving skills accordingly. + +Players maneuver their way through hairpin curves, jumps, bridges, puddles, and other obstacles. Completing each stage within the 60-second time limit allows players to advance to the next stage for free. After the finish of each stage, and at the completion of all 12 stages, players' times are displayed and compared with other top drivers. + 0.90 + 19930101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + wrally.zip + Gaelco + 368x232 + media/mixrbv2/wrally.png + + + + wrally.zip + World Rally (Version 1.0, Checksum 0E56) + World Rally is a road rally-themed driving game. Licensed by Gaelco of Barcelona, Spain, it is suitable for both street and arcade locations. World Rally is a 1- or 2-player alternating driving game. Controls include a steering wheel on a mounting pod, a high/low gear shifter assembly, and an accelerator pedal. + +Players select 1 of 4 rallies to start, each progressively more difficult than the one before. A rally is composed of three stages, offering a variety of different track layouts and road surfaces. Asphalt, dirt, night driving and snow-covered roads require players to adjust their driving skills accordingly. + +Players maneuver their way through hairpin curves, jumps, bridges, puddles, and other obstacles. Completing each stage within the 60-second time limit allows players to advance to the next stage for free. After the finish of each stage, and at the completion of all 12 stages, players' times are displayed and compared with other top drivers. + 0.90 + 19930101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + Gaelco + 368x232 + media/mixrbv2/wrally.png + + + + wrallya.zip + World Rally (Version 1.0, Checksum 3873) + World Rally is a road rally-themed driving game. Licensed by Gaelco of Barcelona, Spain, it is suitable for both street and arcade locations. World Rally is a 1- or 2-player alternating driving game. Controls include a steering wheel on a mounting pod, a high/low gear shifter assembly, and an accelerator pedal. + +Players select 1 of 4 rallies to start, each progressively more difficult than the one before. A rally is composed of three stages, offering a variety of different track layouts and road surfaces. Asphalt, dirt, night driving and snow-covered roads require players to adjust their driving skills accordingly. + +Players maneuver their way through hairpin curves, jumps, bridges, puddles, and other obstacles. Completing each stage within the 60-second time limit allows players to advance to the next stage for free. After the finish of each stage, and at the completion of all 12 stages, players' times are displayed and compared with other top drivers. + 0.90 + 19930101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + wrally.zip + Gaelco + 368x232 + media/mixrbv2/wrally.png + + + + wrallyb.zip + World Rally (Version 1.0, Checksum 8AA2) + World Rally is a road rally-themed driving game. Licensed by Gaelco of Barcelona, Spain, it is suitable for both street and arcade locations. World Rally is a 1- or 2-player alternating driving game. Controls include a steering wheel on a mounting pod, a high/low gear shifter assembly, and an accelerator pedal. + +Players select 1 of 4 rallies to start, each progressively more difficult than the one before. A rally is composed of three stages, offering a variety of different track layouts and road surfaces. Asphalt, dirt, night driving and snow-covered roads require players to adjust their driving skills accordingly. + +Players maneuver their way through hairpin curves, jumps, bridges, puddles, and other obstacles. Completing each stage within the 60-second time limit allows players to advance to the next stage for free. After the finish of each stage, and at the completion of all 12 stages, players' times are displayed and compared with other top drivers. + 0.90 + 19930101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + wrally.zip + Gaelco + 368x232 + media/mixrbv2/wrally.png + + + + wrallyc.zip + World Rally (Version 1.0, Checksum E586) + World Rally is a road rally-themed driving game. Licensed by Gaelco of Barcelona, Spain, it is suitable for both street and arcade locations. World Rally is a 1- or 2-player alternating driving game. Controls include a steering wheel on a mounting pod, a high/low gear shifter assembly, and an accelerator pedal. + +Players select 1 of 4 rallies to start, each progressively more difficult than the one before. A rally is composed of three stages, offering a variety of different track layouts and road surfaces. Asphalt, dirt, night driving and snow-covered roads require players to adjust their driving skills accordingly. + +Players maneuver their way through hairpin curves, jumps, bridges, puddles, and other obstacles. Completing each stage within the 60-second time limit allows players to advance to the next stage for free. After the finish of each stage, and at the completion of all 12 stages, players' times are displayed and compared with other top drivers. + 0.90 + 19930101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + wrally.zip + Gaelco + 368x232 + media/mixrbv2/wrally.png + + + + wrally2a.zip + World Rally 2: Twin Racing (EPROM version) + World Rally 2: Twin Racing is the sequel to World Rally Championship with gameplay largely similar to the original game. Twin Racing in the title refers to a new gameplay element as the cabinet now has a setup with two units side by side, each with their own screen, seat, steering wheel and pedals. Only a single PCB is used to provide for both units. The first game was a standing single-player cabinet only with a steering wheel and buttons. Two players can challenge each other directly for a competition on the same track and the other player is shown as a ghost that cannot be harmed. Players can also choose to race side by side, but each their own single-player game. Both players can continue playing without spending an extra credit as long as they both finish under 60 seconds. + + + 0.80 + 19950101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + wrally2.zip + Gaelco + 384x240 + media/mixrbv2/wrally2.png + + + + wrally2.zip + World Rally 2: Twin Racing (mask ROM version) + World Rally 2: Twin Racing is the sequel to World Rally Championship with gameplay largely similar to the original game. Twin Racing in the title refers to a new gameplay element as the cabinet now has a setup with two units side by side, each with their own screen, seat, steering wheel and pedals. Only a single PCB is used to provide for both units. The first game was a standing single-player cabinet only with a steering wheel and buttons. Two players can challenge each other directly for a competition on the same track and the other player is shown as a ghost that cannot be harmed. Players can also choose to race side by side, but each their own single-player game. Both players can continue playing without spending an extra credit as long as they both finish under 60 seconds. + + + 0.80 + 19950101T000000 + Gaelco + Gaelco + Race, Driving / Race + 2924 + 1-2 + Gaelco + 384x240 + media/mixrbv2/wrally2.png + + + + worldwar.zip + World Wars (World?) + World Wars and an early "Bermuda Triangle" version, it have different gameplay and graphics from the other versions. + 0.50 + 19870101T000000 + SNK + SNK + Shoot'em Up + 79 + 1-2 + SNK Classics + 270 + 400x224 + media/mixrbv2/worldwar.png + + + + wownfant.zip + WOW New Fantasia + WOW New Fantasia is a game in the adult "Qix"-styled Fantasia series. + 20020101T000000 + Comad + Comad + Adult + 413 + 1-2 + Comad + 256x224 + media/mixrbv2/wownfant.png + + + + wrestwar1d.zip + Wrestle War (set 1, Japan, FD1094 317-0090 decrypted) + Lead rookie wrestler Bruce Blade to the top of the wrestling world in this 1989 arcade game by Sega. + 0.50 + 19890101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + wrestwar.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/wrestwar.png + + + + wrestwar1.zip + Wrestle War (set 1, Japan, FD1094 317-0090) + Lead rookie wrestler Bruce Blade to the top of the wrestling world in this 1989 arcade game by Sega. + 0.50 + 19890101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + wrestwar.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/wrestwar.png + + + + wrestwar2d.zip + Wrestle War (set 2, World, FD1094 317-0102 decrypted) + Lead rookie wrestler Bruce Blade to the top of the wrestling world in this 1989 arcade game by Sega. + 0.50 + 19890101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + wrestwar.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/wrestwar.png + + + + wrestwar2.zip + Wrestle War (set 2, World, FD1094 317-0102) + Lead rookie wrestler Bruce Blade to the top of the wrestling world in this 1989 arcade game by Sega. + 0.50 + 19890101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + wrestwar.zip + Sega Classics + 270 + 320x224 + media/mixrbv2/wrestwar.png + + + + wrestwar.zip + Wrestle War (set 3, World, 8751 317-0103) + Lead rookie wrestler Bruce Blade to the top of the wrestling world in this 1989 arcade game by Sega. + 0.50 + 19890101T000000 + SEGA + SEGA + Sports / Wrestling + 2861 + 1-2 + Sega Classics + 270 + 320x224 + media/mixrbv2/wrestwar.png + + + + neoww2.zip + WW2 (Demo) - Arcade Development Project + 20120101T000000 + Charles DOTY/R + Charles DOTY/R + Mame + media/mixrbv2/neoww2.png + + + wwfsstarb.zip + WWF Superstars (bootleg) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + wwfsstar.zip + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfsstar.zip + WWF Superstars (Europe) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfsstarj.zip + WWF Superstars (Japan) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + wwfsstar.zip + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfsstaru4.zip + WWF Superstars (US revision 4) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + wwfsstar.zip + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfsstaru6.zip + WWF Superstars (US revision 6) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + wwfsstar.zip + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfsstaru7.zip + WWF Superstars (US revision 7) + A tag-team wrestling game with 6 WWF superstars to choose from. + 0.60 + 19890101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-2 + wwfsstar.zip + Technos + 256x240 + media/mixrbv2/wwfsstar.png + + + + wwfwfestj.zip + WWF WrestleFest (Japan) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + wwfwfest.zip + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wwfwfestk.zip + WWF WrestleFest (Korea) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + wwfwfest.zip + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wwfwfestub.zip + WWF WrestleFest (US bootleg) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + wwfwfest.zip + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wwfwfestu1.zip + WWF WrestleFest (US) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + wwfwfest.zip + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wwfwfestu.zip + WWF WrestleFest (US, rev 2) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + wwfwfest.zip + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wwfwfest.zip + WWF WrestleFest (World) + 10 selectable wrestlers fight in a tag team tournament or take part in the Royal Rumble. + 0.70 + 19910101T000000 + Technos Japan Corp. + Tecmo + Sports / Wrestling + 2861 + 1-4 + Technos + 320x240 + media/mixrbv2/wwfwfest.png + + + + wyvernf0a.zip + Wyvern F-0 + Wyvern F-0 is a rare vertical shoot 'em up similar to "Xevious". The airplane has an aerial loop like "1942". + 0.60 + 19850101T000000 + Taito + Taito + Shoot'em Up + 79 + wyvernf0.zip + Taito Classics + 270 + 256x224 + media/mixrbv2/wyvernf0.png + + + + wyvernf0.zip + Wyvern F-0 (Rev 1) + Wyvern F-0 is a rare vertical shoot 'em up similar to "Xevious". The airplane has an aerial loop like "1942". + 0.60 + 19850101T000000 + Taito + Taito + Shoot'em Up + 79 + Taito Classics + 270 + 256x224 + media/mixrbv2/wyvernf0.png + + + + xmultiplm72.zip + X Multiply (Japan, M72 hardware) + The game centers around an unusual alien invasion against a colony planet in the year 2249 the aliens themselves are microscopic creatures that invade, infect, and kill the colonists. Scientists have deployed the microscopic fighter X-002 into the body of the hapless woman whose body has been invaded by the alien queen. + +The game itself is a side-scroller like R-Type, albeit with a short vertical-scrolling area towards the end of the sixth level. Instead of the Force pod, however, the main power-up apparatus takes the form of two flexible tentacles. The tentacles are invulnerable to all enemy attacks, and can be positioned with careful maneuvering of the X-002. + 0.70 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + xmultipl.zip + Irem Classics + 384x256 + media/mixrbv2/xmultipl.png + + + + xmultipl.zip + X Multiply (World, M81 hardware) + The game centers around an unusual alien invasion against a colony planet in the year 2249 the aliens themselves are microscopic creatures that invade, infect, and kill the colonists. Scientists have deployed the microscopic fighter X-002 into the body of the hapless woman whose body has been invaded by the alien queen. + +The game itself is a side-scroller like R-Type, albeit with a short vertical-scrolling area towards the end of the sixth level. Instead of the Force pod, however, the main power-up apparatus takes the form of two flexible tentacles. The tentacles are invulnerable to all enemy attacks, and can be positioned with careful maneuvering of the X-002. + 0.70 + 19890101T000000 + Irem + Irem + Shoot'em Up + 79 + 1-2 + Irem Classics + 384x256 + media/mixrbv2/xmultipl.png + + + + xmen2pa.zip + X-Men (2 Players ver AAA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen2pe.zip + X-Men (2 Players ver EAA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen2pj.zip + X-Men (2 Players ver JAA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen2pu.zip + X-Men (2 Players ver UAB) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmenaa.zip + X-Men (4 Players ver ADA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmena.zip + X-Men (4 Players ver AEA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen.zip + X-Men (4 Players ver EBA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmenj.zip + X-Men (4 Players ver JBA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmenja.zip + X-Men (4 Players ver JEA) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmenu.zip + X-Men (4 Players ver UBB) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmenua.zip + X-Men (4 Players ver UEB) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen6p.zip + X-Men (6 Players ver ECB) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmen6pu.zip + X-Men (6 Players ver UCB) + X-Men is a side-scrolling beat-em-up for up to four players. The X-Men's mission is to find and rescue Professor X, who has been captured by evil mutants and is now being held prisoner by Magneto. + +Each X-Man character has an 'Attack', 'Jump' and 'Mutant Power' button. The mutant power attack is a powerful special move unique to each X-Man. While it inflicts a lot of damage on the enemies, the trade-off is that each usage removes 3 bars from the players health meter (a full meter has 10 bars). Each level ends with a face-off against a powerful mutant boss character. + +The game has six stages, with the final one set on 'Asteroid M', Magneto's base. The defeated mutant bosses from the previous levels each make an appearance (albeit in a less powerful form) before the final encounter with Magneto himself. + +Players can chose from 6 X-Men characters, they are: +Cyclops +Colossus +Wolverine +Storm +Nightcrawler +Dazzler + 0.90 + 19920101T000000 + Konami + Konami + Beat'em Up + 1 + 1-4 + xmen.zip + Konami Classics + 304x224 + media/mixrbv2/xmen.png + + + + xmcotajr.zip + X-Men - children of the atom (941208 Japan, rent version) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaar2.zip + X-Men - children of the atom (941217 Asia) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaj3.zip + X-Men - children of the atom (941217 Japan) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaar1.zip + X-Men - children of the atom (941219 Asia) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaj2.zip + X-Men - children of the atom (941219 Japan) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaj1.zip + X-Men - children of the atom (941222 Japan) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaa.zip + X-Men - children of the atom (950105 Asia) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotar1d.zip + X-Men - children of the atom (950105 Euro Phoenix Edition) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotar1.zip + X-Men - children of the atom (950105 Euro) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotahr1.zip + X-Men - children of the atom (950105 Hispanic) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotaj.zip + X-Men - children of the atom (950105 Japan) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotau.zip + X-Men - children of the atom (950105 USA) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotab.zip + X-Men - children of the atom (950331 Brazil) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcota.zip + X-Men - children of the atom (950331 Euro) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmcotah.zip + X-Men - children of the atom (950331 Hispanic) + X-MEN UNLEASHED! It's here! Ultimate combat! Mutant mayhem! X-Power! Special moves! Mid-air action! Big characters! Sizzling graphics! Exactly like you played in the arcade! You will need all your mutant powers, all your speed, all your strength... for this is the ultimate combat! Have you got enough to defeat Magneto, Omega Red and the Sentinel? Are you tough enough for Wolverine, powerful enough for Cyclops, cool enough for Iceman... are you good enough to join the new breed of mutant heroes? X-Men Children of the Atom - the fighting game to end them all! + 0.60 + 19940101T000000 + Capcom + Capcom + Fight / Versus + 2885 + 1-2 + xmcota.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmcota.png + + + + xmvsfjr3.zip + X-Men vs Street Fighter (960909 Japan) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfar3.zip + X-Men vs Street Fighter (960910 Asia) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfr1.zip + X-Men vs Street Fighter (960910 Euro) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfjr2.zip + X-Men vs Street Fighter (960910 Japan) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfur2.zip + X-Men vs Street Fighter (960910 USA) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfar2.zip + X-Men vs Street Fighter (960919 Asia) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfar1.zip + X-Men vs Street Fighter (961004 Asia) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsf.zip + X-Men vs Street Fighter (961004 Euro) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfh.zip + X-Men vs Street Fighter (961004 Hispanic) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfjr1.zip + X-Men vs Street Fighter (961004 Japan) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfu1d.zip + X-Men vs Street Fighter (961004 USA Phoenix Edition) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfur1.zip + X-Men vs Street Fighter (961004 USA) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfa.zip + X-Men vs Street Fighter (961023 Asia) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfb.zip + X-Men vs Street Fighter (961023 Brazil) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfj.zip + X-Men vs Street Fighter (961023 Japan) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xmvsfu.zip + X-Men vs Street Fighter (961023 USA) + X-Men vs. Street Fighter pits Marvel's mighty mutants against Capcom's legendary fighters in a slugfest of epic proportions. Now you can perform outrageous moves and link together amazing Chain Combos. X-Men vs. Street Fighter... the collision of two explosive universes in the world's most amazing fantasy fighter! + 0.85 + 19960101T000000 + Capcom + Capcom + Fight + 14 + 1-2 + xmvsf.zip + Capcom Play System 2 + 384x224 + media/mixrbv2/xmvsf.png + + + + xsleenab.zip + Xain'd Sleena (bootleg) + You are an armoured, rocket-booted soldier, whose mission is to defend five planets against the evil empire. You run from left to right, shooting your way to the base at the end of each level, then tackle a left to right space ship stage. Each of the five planets can be played in any order desired. + 0.70 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Platform / Shooter Scrolling + 2887 + 1-2 + xsleena.zip + Taito Classics + 256x240 + media/mixrbv2/xsleena.png + + + + xsleenaba.zip + Xain'd Sleena (bootleg, bugfixed) + You are an armoured, rocket-booted soldier, whose mission is to defend five planets against the evil empire. You run from left to right, shooting your way to the base at the end of each level, then tackle a left to right space ship stage. Each of the five planets can be played in any order desired. + 0.70 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Platform / Shooter Scrolling + 2887 + 1-2 + xsleena.zip + Taito Classics + 256x240 + media/mixrbv2/xsleena.png + + + + xsleenaj.zip + Xain'd Sleena (Japan) + You are an armoured, rocket-booted soldier, whose mission is to defend five planets against the evil empire. You run from left to right, shooting your way to the base at the end of each level, then tackle a left to right space ship stage. Each of the five planets can be played in any order desired. + 0.70 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Platform / Shooter Scrolling + 2887 + 1-2 + xsleena.zip + Taito Classics + 256x240 + media/mixrbv2/xsleena.png + + + + xsleena.zip + Xain'd Sleena (World) + You are an armoured, rocket-booted soldier, whose mission is to defend five planets against the evil empire. You run from left to right, shooting your way to the base at the end of each level, then tackle a left to right space ship stage. Each of the five planets can be played in any order desired. + 0.70 + 19860101T000000 + Technos Japan Corp. + Technos Japan Corp. + Platform / Shooter Scrolling + 2887 + 1-2 + Taito Classics + 256x240 + media/mixrbv2/xsleena.png + + + + xenocrisis.zip + Xeno Crisis (NGM-BB01) (NGH-BB01) + 20190101T000000 + Mame + + + xevious.zip + Xevious (Namco) + It's a nightmare, but it's true! Research shows that we are the actual aliens on Earth, and the ruthless Xevions are the original inhabitants. + +Now the Xevions want Earth back -- minus humans! Their invasion forces are fierce -- the land is crawling with deadly Domogram Rovers; the sky is black with Toroid Patrol Fleets and Zoshi Death Squads. + +Our puny weapons offer no defense. Earth's only hope is our powerful new Solvalou Fighter Plane. Its pilot will have a single mission: Penetrate the enemy ranks and destroy the Xevious Mother Ship. + +The mission is dangerous. We can't guarantee success. But at this point, it's do or die! + +One small problem. We still need a pilot. Any volunteers? + 0.90 + 19820101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + Namco Classics + 270 + 288x224 + media/mixrbv2/xevious.png + + + + xexexa.zip + Xexex (ver AAA) + Xexex is a horizontally-scrolling shoot-em-up in which players pilot a ship called the 'Flintlock' and must save the blue-haired Princess Irene of the planet E-Square from an evil lord named Klaus. + +The player's ship has a detachable orb attachment called the Flint, which behaves in a similar fashion to the 'Force Device' from Irem's "R-Type" series. Power-ups can be obtained to increase the Flint's power, movement speed, change the main weapon, or even give the player an extra life. + +The player starts the game armed with the Proton Laser, which emits thin stream of weak bullets. Defeating certain enemies will drop other weapons: +Homing Laser: A 3-way laser with weak "bending" homing for top and bottom lasers. +Shadow Laser: A laser beam that creates a damage-inflicting shadow as the ship moves up and down. +Round Laser: An unusual spread shot (different from the overseas version's main weapon) +Spiral Laser: A spiral laser of considerable width. +Search Laser: A laser with strong homing that travels in square trajectories. +Ground Laser: Fires an upgraded Proton Laser along with a laser beam that travels along the ground. + +The name of the current weapon is displayed at the bottom of the screen. In the non-Japanese overseas versions, the only available weapon is the Proton Laser and picking up power-ups simply increases the spread of the weapon. Missiles are a secondary weapon. + 0.90 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + xexex.zip + Konami Classics + 384x256 + media/mixrbv2/xexex.png + + + + xexex.zip + Xexex (ver EAA) + Xexex is a horizontally-scrolling shoot-em-up in which players pilot a ship called the 'Flintlock' and must save the blue-haired Princess Irene of the planet E-Square from an evil lord named Klaus. + +The player's ship has a detachable orb attachment called the Flint, which behaves in a similar fashion to the 'Force Device' from Irem's "R-Type" series. Power-ups can be obtained to increase the Flint's power, movement speed, change the main weapon, or even give the player an extra life. + +The player starts the game armed with the Proton Laser, which emits thin stream of weak bullets. Defeating certain enemies will drop other weapons: +Homing Laser: A 3-way laser with weak "bending" homing for top and bottom lasers. +Shadow Laser: A laser beam that creates a damage-inflicting shadow as the ship moves up and down. +Round Laser: An unusual spread shot (different from the overseas version's main weapon) +Spiral Laser: A spiral laser of considerable width. +Search Laser: A laser with strong homing that travels in square trajectories. +Ground Laser: Fires an upgraded Proton Laser along with a laser beam that travels along the ground. + +The name of the current weapon is displayed at the bottom of the screen. In the non-Japanese overseas versions, the only available weapon is the Proton Laser and picking up power-ups simply increases the spread of the weapon. Missiles are a secondary weapon. + 0.90 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + Konami Classics + 384x256 + media/mixrbv2/xexex.png + + + + xexexj.zip + Xexex (ver JAA) + Xexex is a horizontally-scrolling shoot-em-up in which players pilot a ship called the 'Flintlock' and must save the blue-haired Princess Irene of the planet E-Square from an evil lord named Klaus. + +The player's ship has a detachable orb attachment called the Flint, which behaves in a similar fashion to the 'Force Device' from Irem's "R-Type" series. Power-ups can be obtained to increase the Flint's power, movement speed, change the main weapon, or even give the player an extra life. + +The player starts the game armed with the Proton Laser, which emits thin stream of weak bullets. Defeating certain enemies will drop other weapons: +Homing Laser: A 3-way laser with weak "bending" homing for top and bottom lasers. +Shadow Laser: A laser beam that creates a damage-inflicting shadow as the ship moves up and down. +Round Laser: An unusual spread shot (different from the overseas version's main weapon) +Spiral Laser: A spiral laser of considerable width. +Search Laser: A laser with strong homing that travels in square trajectories. +Ground Laser: Fires an upgraded Proton Laser along with a laser beam that travels along the ground. + +The name of the current weapon is displayed at the bottom of the screen. In the non-Japanese overseas versions, the only available weapon is the Proton Laser and picking up power-ups simply increases the spread of the weapon. Missiles are a secondary weapon. + 0.90 + 19910101T000000 + Konami + Konami + Shoot'em Up + 79 + 1-2 + xexex.zip + Konami Classics + 384x256 + media/mixrbv2/xexex.png + + + + xorworld.zip + Xor World (prototype) + This is a puzzle game that is very similar to Tetris. + 0.50 + 19900101T000000 + Gaelco + Gaelco + Various + 39 + 1-2 + Gaelco + 256x224 + media/mixrbv2/xorworld.png + + + + xxmissio.zip + XX Mission + Fairly similar to most overhead shooters of the time. The player moves an attack jet up a vertically scrolling screen shooting air and land targets with guns and bombs. Features various unremarkable power-ups. + +While switching between air and ground attacks, take out the approaching large and small craft and large fleets. + +Powering up allows you to use different powerful air attacks and wider ranged ground attacks depending on the ship's form. + 0.50 + 19860101T000000 + UPL + UPL + Shoot'em Up + 79 + 1-2 + Mame + 270 + 512x192 + media/mixrbv2/xxmissio.png + + + + xybotsf.zip + Xybots (French, rev 3) + Xybots is a 3-Dimensional, 3rd-person perspective shoot-em-up for 1 or 2 players. Taking on the role of either 'Major Rock Hardy' or 'Captain Ace Gunn' (in the 2-player game), players must shoot their way through a huge, multi-level underground city - made up of a series of mazes - and destroy the evil 'Xybot' robot warriors that have invaded the planet and established their underground fortress. The players' on-screen counterparts walk 'into' the screen and players must manually rotate the maze's viewpoint left and right when changing direction in order to be able to look in the direction they are moving. + +Each level has at least one exit that must be reached in order to progress to the next (some levels have extra hidden exits that 'warp' players to later levels). Players can find energy pods to restore energy levels, keys to open doors, and golden coins. Some of the levels also feature transporters that connect different parts of the same level. + +At the end of each level, players can enter a shop where supplies and power-ups can be purchased with any coins they have collected. Some supplies, such as 'Shield' or 'Speed' are permanent, whereas others are only temporary and must be replenished. + +A map of each level is displayed at the top of the screen. For some levels, all enemies, objects and walls are shown. On later levels, however, the map may only display the enemy robots and/or objects; with the maze walls and layout only becoming visible once a player has 'looked' at a wall section. Xybots' gameplay feels highly reminiscent of a 3-Dimensional "Gauntlet" (with good reason, see TRIVIA for more details). The game also uses a split-screen display to allow for two-player simultaneous play; something of an innovation for 1987. + +Like the "Gauntlet" games on which Xybots is based; the game is endless and play will continue until all lives are lost and players no longer wish to use the 'Continue' option. + 0.90 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + xybots.zip + Atari Classics + 336x240 + media/mixrbv2/xybots.png + + + + xybotsg.zip + Xybots (German, rev 3) + Xybots is a 3-Dimensional, 3rd-person perspective shoot-em-up for 1 or 2 players. Taking on the role of either 'Major Rock Hardy' or 'Captain Ace Gunn' (in the 2-player game), players must shoot their way through a huge, multi-level underground city - made up of a series of mazes - and destroy the evil 'Xybot' robot warriors that have invaded the planet and established their underground fortress. The players' on-screen counterparts walk 'into' the screen and players must manually rotate the maze's viewpoint left and right when changing direction in order to be able to look in the direction they are moving. + +Each level has at least one exit that must be reached in order to progress to the next (some levels have extra hidden exits that 'warp' players to later levels). Players can find energy pods to restore energy levels, keys to open doors, and golden coins. Some of the levels also feature transporters that connect different parts of the same level. + +At the end of each level, players can enter a shop where supplies and power-ups can be purchased with any coins they have collected. Some supplies, such as 'Shield' or 'Speed' are permanent, whereas others are only temporary and must be replenished. + +A map of each level is displayed at the top of the screen. For some levels, all enemies, objects and walls are shown. On later levels, however, the map may only display the enemy robots and/or objects; with the maze walls and layout only becoming visible once a player has 'looked' at a wall section. Xybots' gameplay feels highly reminiscent of a 3-Dimensional "Gauntlet" (with good reason, see TRIVIA for more details). The game also uses a split-screen display to allow for two-player simultaneous play; something of an innovation for 1987. + +Like the "Gauntlet" games on which Xybots is based; the game is endless and play will continue until all lives are lost and players no longer wish to use the 'Continue' option. + 0.90 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + xybots.zip + Atari Classics + 336x240 + media/mixrbv2/xybots.png + + + + xybots0.zip + Xybots (rev 0) + Xybots is a 3-Dimensional, 3rd-person perspective shoot-em-up for 1 or 2 players. Taking on the role of either 'Major Rock Hardy' or 'Captain Ace Gunn' (in the 2-player game), players must shoot their way through a huge, multi-level underground city - made up of a series of mazes - and destroy the evil 'Xybot' robot warriors that have invaded the planet and established their underground fortress. The players' on-screen counterparts walk 'into' the screen and players must manually rotate the maze's viewpoint left and right when changing direction in order to be able to look in the direction they are moving. + +Each level has at least one exit that must be reached in order to progress to the next (some levels have extra hidden exits that 'warp' players to later levels). Players can find energy pods to restore energy levels, keys to open doors, and golden coins. Some of the levels also feature transporters that connect different parts of the same level. + +At the end of each level, players can enter a shop where supplies and power-ups can be purchased with any coins they have collected. Some supplies, such as 'Shield' or 'Speed' are permanent, whereas others are only temporary and must be replenished. + +A map of each level is displayed at the top of the screen. For some levels, all enemies, objects and walls are shown. On later levels, however, the map may only display the enemy robots and/or objects; with the maze walls and layout only becoming visible once a player has 'looked' at a wall section. Xybots' gameplay feels highly reminiscent of a 3-Dimensional "Gauntlet" (with good reason, see TRIVIA for more details). The game also uses a split-screen display to allow for two-player simultaneous play; something of an innovation for 1987. + +Like the "Gauntlet" games on which Xybots is based; the game is endless and play will continue until all lives are lost and players no longer wish to use the 'Continue' option. + 0.90 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + xybots.zip + Atari Classics + 336x240 + media/mixrbv2/xybots.png + + + + xybots1.zip + Xybots (rev 1) + Xybots is a 3-Dimensional, 3rd-person perspective shoot-em-up for 1 or 2 players. Taking on the role of either 'Major Rock Hardy' or 'Captain Ace Gunn' (in the 2-player game), players must shoot their way through a huge, multi-level underground city - made up of a series of mazes - and destroy the evil 'Xybot' robot warriors that have invaded the planet and established their underground fortress. The players' on-screen counterparts walk 'into' the screen and players must manually rotate the maze's viewpoint left and right when changing direction in order to be able to look in the direction they are moving. + +Each level has at least one exit that must be reached in order to progress to the next (some levels have extra hidden exits that 'warp' players to later levels). Players can find energy pods to restore energy levels, keys to open doors, and golden coins. Some of the levels also feature transporters that connect different parts of the same level. + +At the end of each level, players can enter a shop where supplies and power-ups can be purchased with any coins they have collected. Some supplies, such as 'Shield' or 'Speed' are permanent, whereas others are only temporary and must be replenished. + +A map of each level is displayed at the top of the screen. For some levels, all enemies, objects and walls are shown. On later levels, however, the map may only display the enemy robots and/or objects; with the maze walls and layout only becoming visible once a player has 'looked' at a wall section. Xybots' gameplay feels highly reminiscent of a 3-Dimensional "Gauntlet" (with good reason, see TRIVIA for more details). The game also uses a split-screen display to allow for two-player simultaneous play; something of an innovation for 1987. + +Like the "Gauntlet" games on which Xybots is based; the game is endless and play will continue until all lives are lost and players no longer wish to use the 'Continue' option. + 0.90 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + xybots.zip + Atari Classics + 336x240 + media/mixrbv2/xybots.png + + + + xybots.zip + Xybots (rev 2) + Xybots is a 3-Dimensional, 3rd-person perspective shoot-em-up for 1 or 2 players. Taking on the role of either 'Major Rock Hardy' or 'Captain Ace Gunn' (in the 2-player game), players must shoot their way through a huge, multi-level underground city - made up of a series of mazes - and destroy the evil 'Xybot' robot warriors that have invaded the planet and established their underground fortress. The players' on-screen counterparts walk 'into' the screen and players must manually rotate the maze's viewpoint left and right when changing direction in order to be able to look in the direction they are moving. + +Each level has at least one exit that must be reached in order to progress to the next (some levels have extra hidden exits that 'warp' players to later levels). Players can find energy pods to restore energy levels, keys to open doors, and golden coins. Some of the levels also feature transporters that connect different parts of the same level. + +At the end of each level, players can enter a shop where supplies and power-ups can be purchased with any coins they have collected. Some supplies, such as 'Shield' or 'Speed' are permanent, whereas others are only temporary and must be replenished. + +A map of each level is displayed at the top of the screen. For some levels, all enemies, objects and walls are shown. On later levels, however, the map may only display the enemy robots and/or objects; with the maze walls and layout only becoming visible once a player has 'looked' at a wall section. Xybots' gameplay feels highly reminiscent of a 3-Dimensional "Gauntlet" (with good reason, see TRIVIA for more details). The game also uses a split-screen display to allow for two-player simultaneous play; something of an innovation for 1987. + +Like the "Gauntlet" games on which Xybots is based; the game is endless and play will continue until all lives are lost and players no longer wish to use the 'Continue' option. + 0.90 + 19870101T000000 + Atari + Atari + Shooter + 2646 + 1-2 + Atari Classics + 336x240 + media/mixrbv2/xybots.png + + + + xyonix.zip + Xyonix + A "Tetris"-type game. +The totems you can see during the gameplay are called "Jangseung" (village guardian), Jangseungs, usually made of wood, were traditionally placed at the edges of villages to mark for village boundaries and frighten away demons. They were also worshipped as village tutelary deities. + +On the Jangseungs' body is written 'Chunha Dae Jangoon' (translated from Korean as 'The Great General Under Heaven'). + +When you finish a stage, you can hear the famous folk song 'Ariang'. + 0.50 + 19890101T000000 + Philko + Philko + Puzzle-Game / Fall + 2912 + 1-2 + Mame + 320x224 + media/mixrbv2/xyonix.png + + + + yamato.zip + Yamato (US) + A 1983 arcade game developed by SEGA. The player controls a ship that is being fired upon by aircraft and enemy ships. + 0.30 + 19830101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/yamato.png + + + + yamato2.zip + Yamato (World?) + A 1983 arcade game developed by SEGA. The player controls a ship that is being fired upon by aircraft and enemy ships. + 0.30 + 19830101T000000 + SEGA + SEGA + Shooter / Space Invaders Like + 2900 + 1-2 + yamato.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/yamato.png + + + + yankeedo.zip + Yankee DO! + Mr. Do! is a colourful and addictive maze game in which the player takes on the role of the eponymous Mr. Do, a circus clown, who must clear each level of either cherries or monsters. The game's single screen levels are made up of tunnels surrounded by a colourful, soil-like substance. This soil can be dug through to create new tunnels, allowing Mr. Do to escape his enemies and to reach the many cherries that litter the levels. A number of apples are also scattered around each level, and Mr. Do can push them along tunnels (to block and/or kill monsters) or can tunnel beneath them to drop them onto the heads of any pursuing enemies. Mr. Do himself can also be killed by a falling apple. + +Mr. Do is armed with a 'Powerball' that can be fired down a tunnel, it will then bounce around the tunnels until it either returns to Mr. Do, or comes into contact with, and kills, one of the level's monsters. The Powerball regenerates immediately the first time you use it, but takes longer each time it is used to return to your hands. As each level progresses, the monsters themselves start to dig tunnels of their own in their pursuit of Mr. Do. Monsters can also push the apples. + +Each screen has a doorway through which the monsters enter the level. Once all of the monsters have appeared, the doorway will turn into a 'prize', (ice cream, biscuits, etc.). If Mr. Do collects the prize, the 'Alphamonster' and his three 'Muncher' henchmen will appear. The Alphamonster may be in the EXTRA box at the top of the screen or be moving around the screen. The Alphamonster and the Munchers cannot be easily crushed under apples because they tend to eat them. They can be killed individually with the Powerball or by killing the Alphamonster itself, at which point any remaining Munchers will turn into apples. + +After every three levels, there is a brief intermission in which a tune is played and a large, animated Mr. Do appears, together with some of the game's monsters. The time to complete each level and the preferred method (monsters, cherries, Alphamonsters, or Diamond) is shown. The paths in the first level resemble a 'D', after this each level's tunnels resemble a digit, ('2', '3', '4' etc.) up to '0' for level 10. + +A level can be completed any one of several different ways: either by collecting all of the on-screen cherries; by killing all of the monsters, by completing the EXTRA box, or by collecting the diamond. The latter appears only very occasionally ('Special' awards an extra credit). + 0.90 + 19820101T000000 + Action + 10 + 1-2 + mrdo.zip + Universal + 270 + 240x192 + media/mixrbv2/mrdo.png + + + + yellowcbb.zip + Yellow Cab (bootleg) + The game has the player collecting a fare at a taxi stop and taking that passenger to the desired location. The amount of money the fare grants is indicated as score points. Along the way, the player is free to crash into other vehicles for extra points. Dropping a passenger off successfully will complete the stage and proceed to a newer and harder one. If the player completes the stage fast enough, tips are awarded for additional points. The player gets a bonus for the first 20,000 points and every 30,000 points after that. The fuel gauge acts as a health meter which depletes over time and even more when the taxi cab collides. Fuel can be recharged at a gas station. The game is over if the player runs out of fuel. + 0.50 + 19840101T000000 + Data East + Data East + Action + 10 + 1-2 + kamikcab.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/kamikcab.png + + + + yellowcbj.zip + Yellow Cab (Japan) + The game has the player collecting a fare at a taxi stop and taking that passenger to the desired location. The amount of money the fare grants is indicated as score points. Along the way, the player is free to crash into other vehicles for extra points. Dropping a passenger off successfully will complete the stage and proceed to a newer and harder one. If the player completes the stage fast enough, tips are awarded for additional points. The player gets a bonus for the first 20,000 points and every 30,000 points after that. The fuel gauge acts as a health meter which depletes over time and even more when the taxi cab collides. Fuel can be recharged at a gas station. The game is over if the player runs out of fuel. + 0.50 + 19840101T000000 + Data East + Data East + Action + 10 + 1-2 + kamikcab.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/kamikcab.png + + + + yieartf.zip + Yie Ar Kung-Fu (GX361 conversion) + Yie Ar Kung-fu is a single-player one-on-one fighting game in which the player takes on the role of 'Oolong' who must fight and defeat eleven martial arts masters. His ulimate goal is to win the title of "Grand Master" and honour the memory of his father, who was killed while fighting the current grand master. + +The player faces a variety of opponents, each with a unique appearance and fighting style. Some opponents are also armed, with weapons including nunchaku, throwing stars and a club. The player can perform up to 16 different moves using a combination of buttons and joystick movements while standing, crouching or jumping. Moves are thrown at high, middle, and low levels. + +Yie Ar Kung-Fu plays incredibly quickly, with the player having to be constantly on the move to avoid getting 'pegged in' by some of the game's tougher opponents. There is no time limit in which the opponent must be defeated but Oolong possesses a finite amount of health, represented by a health bar at the top of the screen. Once Oolong's health is fully depleted, the match is over. + + + 0.90 + 19850101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + yiear.zip + Konami Classics + 256x224 + media/mixrbv2/yiear.png + + + + yiear2.zip + Yie Ar Kung-Fu (program code G) + Yie Ar Kung-fu is a single-player one-on-one fighting game in which the player takes on the role of 'Oolong' who must fight and defeat eleven martial arts masters. His ulimate goal is to win the title of "Grand Master" and honour the memory of his father, who was killed while fighting the current grand master. + +The player faces a variety of opponents, each with a unique appearance and fighting style. Some opponents are also armed, with weapons including nunchaku, throwing stars and a club. The player can perform up to 16 different moves using a combination of buttons and joystick movements while standing, crouching or jumping. Moves are thrown at high, middle, and low levels. + +Yie Ar Kung-Fu plays incredibly quickly, with the player having to be constantly on the move to avoid getting 'pegged in' by some of the game's tougher opponents. There is no time limit in which the opponent must be defeated but Oolong possesses a finite amount of health, represented by a health bar at the top of the screen. Once Oolong's health is fully depleted, the match is over. + + + 0.90 + 19850101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + yiear.zip + Konami Classics + 256x224 + media/mixrbv2/yiear.png + + + + yiear.zip + Yie Ar Kung-Fu (program code I) + Yie Ar Kung-fu is a single-player one-on-one fighting game in which the player takes on the role of 'Oolong' who must fight and defeat eleven martial arts masters. His ulimate goal is to win the title of "Grand Master" and honour the memory of his father, who was killed while fighting the current grand master. + +The player faces a variety of opponents, each with a unique appearance and fighting style. Some opponents are also armed, with weapons including nunchaku, throwing stars and a club. The player can perform up to 16 different moves using a combination of buttons and joystick movements while standing, crouching or jumping. Moves are thrown at high, middle, and low levels. + +Yie Ar Kung-Fu plays incredibly quickly, with the player having to be constantly on the move to avoid getting 'pegged in' by some of the game's tougher opponents. There is no time limit in which the opponent must be defeated but Oolong possesses a finite amount of health, represented by a health bar at the top of the screen. Once Oolong's health is fully depleted, the match is over. + + + 0.90 + 19850101T000000 + Konami + Konami + Fight / Versus + 2885 + 1-2 + Konami Classics + 256x224 + media/mixrbv2/yiear.png + + + + ym2608.zip + YM2608 Internal ROM + non Jeu + media/mixrbv2/ym2608.png + + + youkaidk2.zip + Yokai Douchuuki (Japan, new version (YD2, Rev B)) + You control Tarousuke, a boy who must travel through a scary world fighting demons and other monsters. + 0.70 + 19870101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + shadowld.zip + Namco Classics + 288x224 + media/mixrbv2/shadowld.png + + + + youkaidk1.zip + Yokai Douchuuki (Japan, old version (YD1)) + You control Tarousuke, a boy who must travel through a scary world fighting demons and other monsters. + 0.70 + 19870101T000000 + Namco + Namco + Platform / Shooter Scrolling + 2887 + 1-2 + shadowld.zip + Namco Classics + 288x224 + media/mixrbv2/shadowld.png + + + + youjyudn.zip + Youjyuden (Japan) + The title of this game translates from Japanese as 'Legend of Bewitching Beast'. +From the japanese arcade flyer: "The player operates and drives Mule Warrior. In order to get back the robbed-of patron god of peace "Minerva", he runs through the ruins, flies in the sky and crosses the sea. On the way, killing every warrior of Gasp Empire standing in the way, he advanced on bravely. But at the end of the territory of Gasp Empire, the more fearful enemy. It is unknown what will happen next. Developing on exciting story, Mythological type shooting Game is staged on." + +Soundtrack releases: +R?Type / Irem Game Music [Alfa Records - 28XA-199 - Jan 25, 1988] + 0.70 + 19860101T000000 + Irem + Irem + Shooter / Run and Gun + 2903 + 1-2 + Irem Classics + 270 + 256x256 + media/mixrbv2/youjyudn.png + + + + youma.zip + Youma Ninpou Chou (Japan) + Evil demons and enemies are closing into forever confine this world into darkness... but a young and brave ninja arose to conquer the witch castle and defeat the evil. + +Fly at full speed on your magic cloud to reach enemy lands and battle your way through a variety of landscapes, shooting plenty of enemies as you go. Grab special ninja scrolls that allow you to use a limited-time power-up weapon. Beat the end boss to move on to the next stage and save the royal princess from the clutches of evil! + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Vertical + 2889 + 1-2 + ninjemak.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ninjemak.png + + + + youma2.zip + Youma Ninpou Chou (Japan, alt) + Evil demons and enemies are closing into forever confine this world into darkness... but a young and brave ninja arose to conquer the witch castle and defeat the evil. + +Fly at full speed on your magic cloud to reach enemy lands and battle your way through a variety of landscapes, shooting plenty of enemies as you go. Grab special ninja scrolls that allow you to use a limited-time power-up weapon. Beat the end boss to move on to the next stage and save the royal princess from the clutches of evil! + 0.70 + 19860101T000000 + Nichibutsu + Nichibutsu + Shooter / Vertical + 2889 + 1-2 + ninjemak.zip + Nichibutsu + 270 + 256x224 + media/mixrbv2/ninjemak.png + + + + yukiwo.zip + Yukiwo (World, prototype) + A seven-day nuclear storm brings on a big change on the earth. The earth cracks, the sea boils and the living things change. And human is no exception. After finishing of the cursed 7-day war, the remaining people change their cells and return to the nature in order to endure severe environmental changes. However, a selected part of the people - they had been called scientists - create a computer, which can lead the people in order to leave a seed humankind. This computer is called N. + 0.70 + 19890101T000000 + Taito + Taito + Shoot'em Up + 79 + 1-2 + masterw.zip + Taito Classics + 270 + 320x224 + media/mixrbv2/masterw.png + + + + zarzon.zip + Zarzon + A space shoot 'em up game. The gameplay is a variation of Space Invaders. + +Fly your spaceship to Saturn, then once on Saturn destroy as many Satan's as possible. Additional bonus points can be accumlated by destroying the comet or attacking dragonflies. An additional spaceship is rewarded if the players score reaches 5,000 or 10,000 points. If the attacking UFOs or enemy rockets are destroyed, points will be scored. The game progresses through 4 different screens. + 0.30 + 19810101T000000 + SNK + SNK + Shooter / Space Invaders Like + 2900 + 1-2 + satansat.zip + SNK Classics + 270 + 256x224 + media/mixrbv2/satansat.png + + + + zaviga.zip + Zaviga + You play as a futuristic jet fighter aircraft that can transform into a tank to descend and ascend. The planet is under attack by hordes of shape bugs robotics and other war machines. Your Aircraft are equipped with 2 laser cannons and bombs for a dual attack in air or land. The game scrolls infinitely of the levels are stopping for an occasional fight against a cannon mountain, that you defeat by destroying a glowing weak spot. With each scroll through the game introduces new enemies and obstacles like flying rocks and underwater enemies. + 0.70 + 19840101T000000 + Data East + Data East + Shooter / Vertical + 2889 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/zaviga.png + + + + zavigaj.zip + Zaviga (Japan) + You play as a futuristic jet fighter aircraft that can transform into a tank to descend and ascend. The planet is under attack by hordes of shape bugs robotics and other war machines. Your Aircraft are equipped with 2 laser cannons and bombs for a dual attack in air or land. The game scrolls infinitely of the levels are stopping for an occasional fight against a cannon mountain, that you defeat by destroying a glowing weak spot. With each scroll through the game introduces new enemies and obstacles like flying rocks and underwater enemies. + 0.70 + 19840101T000000 + Data East + Data East + Shooter / Vertical + 2889 + 1-2 + zaviga.zip + Data East Classics + 270 + 256x240 + media/mixrbv2/zaviga.png + + + + zaxxonj.zip + Zaxxon (Japan) + Zaxxon is an isometric scrolling shoot-em-up in which the player pilots an armed spaceship and must penetrate heavily-fortified enemy bases, destroying enemy ships and installations before reaching the final confrontation with a giant armoured robot. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + zaxxon.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/zaxxon.png + + + + zaxxon.zip + Zaxxon (set 1, rev D) + Zaxxon is an isometric scrolling shoot-em-up in which the player pilots an armed spaceship and must penetrate heavily-fortified enemy bases, destroying enemy ships and installations before reaching the final confrontation with a giant armoured robot. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + Sega Classics + 270 + 256x224 + media/mixrbv2/zaxxon.png + + + + zaxxon2.zip + Zaxxon (set 2, unknown rev) + Zaxxon is an isometric scrolling shoot-em-up in which the player pilots an armed spaceship and must penetrate heavily-fortified enemy bases, destroying enemy ships and installations before reaching the final confrontation with a giant armoured robot. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + zaxxon.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/zaxxon.png + + + + zaxxon3.zip + Zaxxon (set 3, unknown rev) + Zaxxon is an isometric scrolling shoot-em-up in which the player pilots an armed spaceship and must penetrate heavily-fortified enemy bases, destroying enemy ships and installations before reaching the final confrontation with a giant armoured robot. + 0.90 + 19820101T000000 + SEGA + SEGA + Shoot'em Up + 79 + 1-2 + zaxxon.zip + Sega Classics + 270 + 256x224 + media/mixrbv2/zaxxon.png + + + + zedblade.zip + Zed Blade / Operation Ragnarok + You and/or a friend must choose one of three characters to play as, each with different speeds at which they control their ships. Then select three weapons to use for the front and back of your ship. During play, you must travel to every planet in the solar system, and defeat the various enemy ships and the boss near the end of the planet. Your weapons can be upgraded during the battle, and you can also collect HyperBombs if you want to do maximum damage. Contains a nice soundtrack reminiscent of early 1990s "rave" music. + 0.75 + 19940101T000000 + Saurus + SNK + Shoot'em up / Horizontal + 2870 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/zedblade.png + + + + zektor.zip + Zektor (revision B) + Zektor is a one- or two-player game that tasks you with the liberation of eight cities that have been seized by the evil cadre of alien robots. In order to liberate a city, you must defeat three attack waves of fighters and robo-probes. Fighters and Robo-probes are often shielded (in red), and each consecutive hit reduces the enemies shield strength, until, when the shield drops, a hit will destroy it. In addition, you will encounter three types of Moboids: +Green Moboids spin the players ship on contact, and bounce enemy ships. +Blue Moboids bounce all ships. +Red Moboids destroy all un-shielded ships (including the players ship). + +After defeating three attack waves, the Alien Robot holding that city will reappear within rotating protective rings, through which a 'slot shot' neutralizes that Robot, awarding the player a bonus ship and advancement to the next round. + 0.40 + 19820101T000000 + SEGA + SEGA + Shooter + 2646 + 1-2 + Sega Classics + media/mixrbv2/zektor.png + + + + zero.zip + Zero (set 1, Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + zero2.zip + Zero (set 2, Defender bootleg) + Defender is a legendary sideways-scrolling shoot-em-up - the very first of its genre - in which the aim is to pilot a laser-firing spaceship and protect humanoids stranded on the planet's surface from swarms of alien abductors. + +A long-range scanner at the top of the screen shows the positions of both the humanoids and the attacking aliens. The ideal strategy is to shoot down the alien ships before they reach the humanoids. If a humanoid is captured, the alien abductor can still be destroyed, but the player must then catch the falling humanoid and return it to the safety of the planet's surface before it falls to its death. + +If an alien is allowed to carry its victim to the very top of the screen, the humanoid will mutate, becoming a permanent part of the alien that captured it. This new and deadly mutation will then immediately join in the alien attack. + +The challenge becomes more intense as action progresses. Fighter ships and their mines will soon join the abductors. There are also mother ships that must be destroyed; these are particularly difficult as a direct hit smashes the mother ship into a swarming mass of mini-ships that must also be wiped out. Throughout the entire mission, the player must act quickly or face possible destruction by the cosmic baiter, a fast and dangerous enemy. + +Players have two escape options to use as a last resort. The first is the 'smart bomb', which destroys all on-screen enemies. The second option is 'hyperspace', which randomly teleports the player's ship to another part of the level. This is highly risky as it may place the player's ship in a position more dangerous than the one it left. + +If all humanoids are successfully abducted, the planet will explode in a blinding flash and the waves remaining until the next planet is reached take place in outer space, and consist solely of destroying enemy waves. + 0.90 + 19800101T000000 + Williams + Williams + Shoot'em Up + 79 + 1-2 + defender.zip + Midway Classics + 294x238 + media/mixrbv2/defender.png + + + + zerohouri.zip + Zero Hour (Inder) + Maneuver your spaceship and destroy meteorites and enemy ships falling from the top of the screen. Shooting a red meteorite awards a quadruple score. After all enemy ships have been destroyed, a landing pad will appear where you must carefully land your ship. Bonus points are awarded for a successful landing. + 0.30 + 19800101T000000 + Shooter / Space Invaders Like + 2900 + 1-2 + zerohour.zip + Universal + 270 + 240x192 + media/mixrbv2/zerohour.png + + + + zerohour.zip + Zero Hour (set 1) + Maneuver your spaceship and destroy meteorites and enemy ships falling from the top of the screen. Shooting a red meteorite awards a quadruple score. After all enemy ships have been destroyed, a landing pad will appear where you must carefully land your ship. Bonus points are awarded for a successful landing. + 0.30 + 19800101T000000 + Shooter / Space Invaders Like + 2900 + 1-2 + Universal + 270 + 240x192 + media/mixrbv2/zerohour.png + + + + zerohoura.zip + Zero Hour (set 2) + Maneuver your spaceship and destroy meteorites and enemy ships falling from the top of the screen. Shooting a red meteorite awards a quadruple score. After all enemy ships have been destroyed, a landing pad will appear where you must carefully land your ship. Bonus points are awarded for a successful landing. + 0.30 + 19800101T000000 + Shooter / Space Invaders Like + 2900 + 1-2 + zerohour.zip + Universal + 270 + 240x192 + media/mixrbv2/zerohour.png + + + + zeropntj.zip + Zero Point (Japan) + A target shooting game. + 0.70 + 19980101T000000 + Unicorn Group + Unico + Lightgun Shooter + 32 + 1-2 + zeropnt.zip + Mame + 384x224 + media/mixrbv2/zeropnt.png + + + + zeropnt.zip + Zero Point (set 1) + A target shooting game. + 0.70 + 19980101T000000 + Unicorn Group + Unico + Lightgun Shooter + 32 + 1-2 + Mame + 384x224 + media/mixrbv2/zeropnt.png + + + + zeropnta.zip + Zero Point (set 2) + A target shooting game. + 0.70 + 19980101T000000 + Unicorn Group + Unico + Lightgun Shooter + 32 + 1-2 + zeropnt.zip + Mame + 384x224 + media/mixrbv2/zeropnt.png + + + + zeropnt2.zip + Zero Point 2 + A shooting game controlled by a light-gun. Its the 2nd game in the Zero point series. + 0.70 + 19990101T000000 + Unicorn Group + Unico + Lightgun Shooter + 32 + 1-2 + Mame + 384x224 + media/mixrbv2/zeropnt2.png + + + + zeroteama.zip + Zero Team (set 2, Japan? (earlier?)) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteamb.zip + Zero Team (set 3, Japan? (later batteryless)) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteamc.zip + Zero Team (set 4, Taiwan, Liang Hwa license) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteamd.zip + Zero Team (set 5, Korea, Dream Soft license) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zerotm2k.zip + Zero Team 2000 + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteams.zip + Zero Team Selection + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteamsr.zip + Zero Team Suicide Revival Kit + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + zeroteam.zip + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zeroteam.zip + Zero Team USA (set 1, US, Fabtek license) + A side scrolling beat-em-up that uses Japanese superhero-type characters. Characters are able to throw and break background objects and use them against their enemies. The goal is to progress past the end-of-level bosse + 19930101T000000 + Seibu Kaihatsu + Fabtek + Beat'em Up + 1 + Seibu Kaihatsu + 320x256 + media/mixrbv2/zeroteam.png + + + + zerotimed.zip + Zero Time (Datamat) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + zerotimemc.zip + Zero Time (Marti Colls) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + zerotime.zip + Zero Time (Petaco S.A.) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + zerotimeu.zip + Zero Time (Spanish bootleg) + Galaxian is a legendary single-screen shoot-em-up that took everything that made Taito's ground-breaking "Space Invaders" so good, and improved upon it on every level. Each screen starts with a wave of multi-colored aliens moving left and right at the top of the screen; the aliens quickly break ranks and start dive-bombing the Galaxip (player's ship) - either in single units or in groups of 3 - dropping multiple missiles as they descend. All of the aliens need to be destroyed before the player can progress to the next wave. + 0.90 + 19790101T000000 + Namco + Namco + Shoot'em Up + 79 + 1-2 + galaxian.zip + Namco Classics + 270 + 768x224 + media/mixrbv2/galaxian.png + + + + zerowing1.zip + Zero Wing (1P set) + The player is a lone hero who will save the universe from an evil force. + +It enjoyed a degree of success in arcades and was subsequently ported to the Mega Drive by Toaplan on May 31, 1991, in Japan, and by Sega during the following year in Europe, followed by a Japan-only release by Naxat Soft on September 18, 1992, for the PC Engine's CD-ROM². + +The European version of the Mega Drive port was the source for "All your base are belong to us", an Internet meme which plays off the poorly translated English in the game's introduction. + +Set in 2101, the game follows the signing of a peace treaty between the United Nations and CATS, an alien cyborg. However, CATS breaks the covenant and takes control of the Japanese space colonies. The protagonist leads the ZIG spacecraft, managed to escape from the mother ship destroyed by CATS, with the aim to defeat enemy forces and liberate the Earth. + +As with other scrolling shooters, the aim of the game is to shoot all enemies that appear on screen and avoid getting obliterated by enemy fire, crashing into enemies or into foreground scenery. There are mid-level and end-of-level boss enemies that stay with the player until they are defeated. The game features eight levels. + 0.80 + 19890101T000000 + Toaplan + Taito + Shooter + 2646 + 1 + zerowing.zip + Toaplan + 320x240 + media/mixrbv2/zerowing.png + + + + zerowing.zip + Zero Wing (2P set) + The player is a lone hero who will save the universe from an evil force. + +It enjoyed a degree of success in arcades and was subsequently ported to the Mega Drive by Toaplan on May 31, 1991, in Japan, and by Sega during the following year in Europe, followed by a Japan-only release by Naxat Soft on September 18, 1992, for the PC Engine's CD-ROM². + +The European version of the Mega Drive port was the source for "All your base are belong to us", an Internet meme which plays off the poorly translated English in the game's introduction. + +Set in 2101, the game follows the signing of a peace treaty between the United Nations and CATS, an alien cyborg. However, CATS breaks the covenant and takes control of the Japanese space colonies. The protagonist leads the ZIG spacecraft, managed to escape from the mother ship destroyed by CATS, with the aim to defeat enemy forces and liberate the Earth. + +As with other scrolling shooters, the aim of the game is to shoot all enemies that appear on screen and avoid getting obliterated by enemy fire, crashing into enemies or into foreground scenery. There are mid-level and end-of-level boss enemies that stay with the player until they are defeated. The game features eight levels. + 0.80 + 19890101T000000 + Toaplan + Taito + Shooter + 2646 + 1 + Toaplan + 320x240 + media/mixrbv2/zerowing.png + + + + zerowingw.zip + Zero Wing (2P set, Williams license) + The player is a lone hero who will save the universe from an evil force. + +It enjoyed a degree of success in arcades and was subsequently ported to the Mega Drive by Toaplan on May 31, 1991, in Japan, and by Sega during the following year in Europe, followed by a Japan-only release by Naxat Soft on September 18, 1992, for the PC Engine's CD-ROM². + +The European version of the Mega Drive port was the source for "All your base are belong to us", an Internet meme which plays off the poorly translated English in the game's introduction. + +Set in 2101, the game follows the signing of a peace treaty between the United Nations and CATS, an alien cyborg. However, CATS breaks the covenant and takes control of the Japanese space colonies. The protagonist leads the ZIG spacecraft, managed to escape from the mother ship destroyed by CATS, with the aim to defeat enemy forces and liberate the Earth. + +As with other scrolling shooters, the aim of the game is to shoot all enemies that appear on screen and avoid getting obliterated by enemy fire, crashing into enemies or into foreground scenery. There are mid-level and end-of-level boss enemies that stay with the player until they are defeated. The game features eight levels. + 0.80 + 19890101T000000 + Toaplan + Taito + Shooter + 2646 + 1 + zerowing.zip + Toaplan + 320x240 + media/mixrbv2/zerowing.png + + + + zerozone.zip + Zero Zone + Zero Zone (c) 1993 Comad Industry Co., Ltd. A risque version of "Columns". - TECHNICAL - Main CPU : 68000 (@ 10 Mhz) Sound CPU : Z80 (@ 1 Mhz) Sound Chips : OKI6295 (@ 8 Khz) Players : 2 Control : 4-way joystick Buttons : 3 - TRIVIA - This game shar + 19930101T000000 + Comad + Comad + Puzzle-Game / Fall + 2912 + 1-2 + Comad + 368x224 + media/mixrbv2/zerozone.png + + + + czeroize.zip + Zeroize (DECO Cassette) (US) + Zeroize (c) 1983 Data East. - TECHNICAL - DECO Cassette System hardware [Cassette No.37] Main CPU : M6502 (@ 750 Khz), M6502 (@ 500 Khz), I8X41 (@ 500 Khz) Sound Chips : (2x) AY8910 (@ 1.5 Mhz) Screen orientation : Vertical Video resolution : 240 x 24 + 0.70 + 19830101T000000 + Data East + Data East + Action + 10 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/czeroize.png + + + + zigzagb.zip + Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 1) + Zig Zag is a Pirate version of Dig Dug. + 19820101T000000 + Action + 10 + 1-2 + Konami Classics + 270 + 768x224 + media/mixrbv2/zigzagb.png + + + + zigzagb2.zip + Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 2) + Zig Zag is a Pirate version of Dig Dug. + 19820101T000000 + Action + 10 + 1-2 + zigzagb.zip + Konami Classics + 270 + 768x224 + media/mixrbv2/zigzagb.png + + + + zingzip.zip + Zing Zing Zip + A vertically scrolling shooter where you control a plane to shoot larger planes, tanks and trains. + 0.70 + 19920101T000000 + Allumer + Allumer + Shoot'em Up + 79 + 1-2 + Seta + 270 + 384x240 + media/mixrbv2/zingzip.png + + + + zintrckb.zip + Zintrick / Oshidashi Zentrix (hack / bootleg) + Yet another puzzle game on Neo-Geo! Every four years to Asgard, the "Tournament Zintrick" occurs. During the competition, participants from around the world come to compete for the honor, glory and wealth. + 0.65 + 19950101T000000 + ADK + SNK + Puzzle-Game / Throw + 2923 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/zintrckb.png + + + + zintrkcd.zip + Zintrick / Oshidashi Zentrix (Neo CD conversion) + Yet another puzzle game on Neo-Geo! Every four years to Asgard, the "Tournament Zintrick" occurs. During the competition, participants from around the world come to compete for the honor, glory and wealth. + 0.65 + 19950101T000000 + ADK + SNK + Puzzle-Game / Throw + 2923 + 1-2 + zintrckb.zip + Neo-Geo + 320x224 + media/mixrbv2/zintrckb.png + + + + zipzap.zip + Zip & Zap + 0.10 + 19950101T000000 + Barko Corp + Action / Breakout games + 2917 + 1-2 + Comad + 270 + 256x224 + media/mixrbv2/zipzap.png + + + + zoar.zip + Zoar + Shoot oncoming planes and ground targets using your gun. Land on the air strip for extra points between stages. The game is an X and Z axis vertical shooter. + 0.30 + 19820101T000000 + Data East + Data East + Shoot'em Up + 79 + 1-2 + Data East Classics + 270 + 256x240 + media/mixrbv2/zoar.png + + + + zodiack.zip + Zodiack + A challenging, vertical scrolling shooter. + +On deep space you must fly the 'Zogram' (your spaceship fighter) and destroy hordes of enemies, while dodge space objects. + +Destroy eight 'Mitiohro' around the 'Goke' (the enemy base) for takeoff and landing of 'Ahro' (the enemy's fighter). After destroying all the 'Mitiohro', return to the 'Battlestar-asat' base. + +The color of 'Mitiohro' on the picture changes when the gates for takeoff and landing of 'Ahro' opens. It is the time to attack! + +As you destroy 'Ahro', 'Mitiohro' becomes to leave the 'Goke's' body, but you cannot destroy those 'Mitiohro' with your laser beam. + +You can get a higher score depending of the precision landing of your spaceship at nearer spot to the center of the 'Battlestar-asat' base. + +When you score 20,000 points, you can get one more Zogram and at 50,000 points you can get another Zogram. + 0.30 + 19830101T000000 + Orca Corporation + Orca (Esco Trading Co) + Shoot'em Up + 79 + 1-2 + Mame + 270 + 256x224 + media/mixrbv2/zodiack.png + + + + zombraidpj.zip + Zombie Raid (9/28/95, Japan, prototype PCB) + Welcome to the extraordinary world of Zombie Raid. Players use specially designed sawed-off shotguns with pump action reload to fight their way through the graveyard, through castles and dungeons and even through the mad scientist's laboratory. Battle all kinds of ghastly creatures, like zombies and other frightful beings. You may feel like you're lost in a horror movie! + +A myriad of secrets have been programmed into the game for added dimension. Can you discover how to get extra life? Can you find a way to escape the forces? Can you defeat the evil? The challenges are endless! + 0.90 + 19950101T000000 + Sammy + Sammy + Lightgun Shooter + 32 + 1-2 + zombraid.zip + Sammy Classics + 384x240 + media/mixrbv2/zombraid.png + + + + zombraid.zip + Zombie Raid (9/28/95, US) + Welcome to the extraordinary world of Zombie Raid. Players use specially designed sawed-off shotguns with pump action reload to fight their way through the graveyard, through castles and dungeons and even through the mad scientist's laboratory. Battle all kinds of ghastly creatures, like zombies and other frightful beings. You may feel like you're lost in a horror movie! + +A myriad of secrets have been programmed into the game for added dimension. Can you discover how to get extra life? Can you find a way to escape the forces? Can you defeat the evil? The challenges are endless! + 0.90 + 19950101T000000 + Sammy + Sammy + Lightgun Shooter + 32 + 1-2 + Sammy Classics + 384x240 + media/mixrbv2/zombraid.png + + + + zombraidp.zip + Zombie Raid (9/28/95, US, prototype PCB) + Welcome to the extraordinary world of Zombie Raid. Players use specially designed sawed-off shotguns with pump action reload to fight their way through the graveyard, through castles and dungeons and even through the mad scientist's laboratory. Battle all kinds of ghastly creatures, like zombies and other frightful beings. You may feel like you're lost in a horror movie! + +A myriad of secrets have been programmed into the game for added dimension. Can you discover how to get extra life? Can you find a way to escape the forces? Can you defeat the evil? The challenges are endless! + 0.90 + 19950101T000000 + Sammy + Sammy + Lightgun Shooter + 32 + 1-2 + zombraid.zip + Sammy Classics + 384x240 + media/mixrbv2/zombraid.png + + + + zookeep.zip + Zoo Keeper (set 1) + Zoo Keeper is a superb, fast-paced arcade game in which the player takes control of Zeke the zookeeper. Many of the animals at Zeke's zoo are running wild and have captured Zeke's girlfriend, Zelda. Zeke must recapture as many animals as possible and rescue his sweetheart from the animals' clutches. + +Zoo Keeper features two different, alternating play fields, with each level having its own task to complete; as well as a final 'bonus screen'. + 0.90 + 19820101T000000 + Taito + Platform / Run Jump + 2915 + 1-2 + Taito Classics + 256x256 + media/mixrbv2/zookeep.png + + + + zookeep2.zip + Zoo Keeper (set 2) + Zoo Keeper is a superb, fast-paced arcade game in which the player takes control of Zeke the zookeeper. Many of the animals at Zeke's zoo are running wild and have captured Zeke's girlfriend, Zelda. Zeke must recapture as many animals as possible and rescue his sweetheart from the animals' clutches. + +Zoo Keeper features two different, alternating play fields, with each level having its own task to complete; as well as a final 'bonus screen'. + 0.90 + 19820101T000000 + Taito + Platform / Run Jump + 2915 + 1-2 + zookeep.zip + Taito Classics + 256x256 + media/mixrbv2/zookeep.png + + + + zookeep3.zip + Zoo Keeper (set 3) + Zoo Keeper is a superb, fast-paced arcade game in which the player takes control of Zeke the zookeeper. Many of the animals at Zeke's zoo are running wild and have captured Zeke's girlfriend, Zelda. Zeke must recapture as many animals as possible and rescue his sweetheart from the animals' clutches. + +Zoo Keeper features two different, alternating play fields, with each level having its own task to complete; as well as a final 'bonus screen'. + 0.90 + 19820101T000000 + Taito + Platform / Run Jump + 2915 + 1-2 + zookeep.zip + Taito Classics + 256x256 + media/mixrbv2/zookeep.png + + + + zoom909.zip + Zoom 909 + Buck Rogers: Planet of Zoom is a forward-scrolling rail shooter where the user controls a spaceship in a behind-the-back third-person perspective that must destroy enemy ships and avoid obstacles. The game was notable for its fast pseudo 3-D scaling and detailed sprites. The game would later go on to influence the 1985 Sega hit Space Harrier. Buck is never seen in the game, except presumably in the illustration on the side of the arcade cabinet, and its only real connections to Buck Rogers are the use of the name and the outer space setting. In Japan, the game was known as Zoom 909. + 0.50 + 19820101T000000 + SEGA + Shooter / Plane, 3rd person + 2881 + 1 + buckrog.zip + Sega Classics + 512x224 + media/mixrbv2/buckrog.png + + + + zunkyou.zip + Zunzunkyou no Yabou (Japan) + ZnY is basically Parodius meets Space Invaders (a premise also done by Taito themselves with Space Invaders '95: Attack of the Lunar Loonies), except you control a statue instead of a spaceship and you fight within an enclosed arena instead of vertical space. It would be more akin to an arena shooter like Robotron: 2084, except your statue can only shoot straight upward. The stages themselves all seem to be themed around different parts of the world: The kabuki boss on the far-left represents Japan, the chef represents China and mainland Asia, the crusader knight stands for Europe, and the superhero on the far-right stands for America. Yet even outside of the Japanese stages, there's a distinctly goofy flair about the game that emphasizes screwy cultural stereotypes from a Japanese game company. The game's actual developer, Minato Giken, also helped work on the Game Gear version of Dynamite Headdy, one of the most fantastically insane Genesis platformers ever, and that same sort of unhinged design can also be seen in ZnY. You fight talk show hosts, salarymen, pandas, matadors, clowns, rock stars, and other outlandish opponents detailed in exaggeratedly comical fashions. The graphic design is definitely ZnY's strong suit, with its colorful characters and quite detailed playfields making high use of Sega's System C-2 hardware, the same processor behind Puyo Puyo. + 0.50 + 19940101T000000 + SEGA + SEGA + Shooter / 3rd person + 2899 + 1-2 + Sega Classics + 256x224 + media/mixrbv2/zunkyou.png + + + + zupapa.zip + Zupapa! + Is a 2001 release of SNK for MVS. It's pretty much a puzzler / screen-cleaning game with bright and colourful optics and simple gameplay. + 0.80 + 20010101T000000 + SNK + SNK + Platform / Run Jump + 2915 + 1-2 + Neo-Geo + 320x224 + media/mixrbv2/zupapa.png + + + + zzyzzyxx.zip + Zzyzzyxx (set 1) + Perseverance will be overwhelming emotion game players as they move ZZYZZYXX up and down horizontal rows of alternating moving bricks to gather presents which will satisfy his love. Lola -- whose affection is not easily captured. ZZYZZYXX's vulnerability increases (as he collects gifts, as well as points) not only because of Lola's untouchable attitude, but because of obstacles such as rattifers trying to put an end to ZZYZZYXX's quest for Lola's love and affection. + +Intelligent as the rattifers may be, there are 2 defenses ZZYZZYXX can use to outsmart the destructive creatures. ZZYZZYXX can brick himself within a brick when he sees an approaching rattifer or ZZYZZYXX can move into the space where there is a gold helmet. The gold helmet intensifies ZZYZZYXX's goal to reach Lola by allowing ZZYZZYXX to use the helmet to enclose a rattifer or break through one brick which is obstructing ZZYZZYXX's course towards Lola. + +As irreproachable as Lola appears. Lola is overjoyed by ZZYZZYXX's success to retrieve enough presents and she whistles resoundingly to let ZZYZZYXX know. After ZZYZZYXX's triumphant deed for love. ZZYZZYXX becomes invincible, enabling him to elude the rattifers by imprisoning them within their spaces. + +Other dangers testing ZZYZZYXX's skillful maneuvering are falling bombs, rising missiles and cracked bricks, each capable of disintegrating ZZYZZYXX. + +As an added attraction, when a game player completes each level, there are animated cartoons depicting ZZYZZYXX's passionate desire to impress his love for Lola. Also delightful music throughout the game leaves the players humming and their foot tapping. + 0.70 + 19820101T000000 + Advanced Microcomputer Systems + Cinematronics + Action + 10 + 1-2 + Cinematronics + 270 + 256x224 + media/mixrbv2/zzyzzyxx.png + + + + zzyzzyxx2.zip + Zzyzzyxx (set 2) + Perseverance will be overwhelming emotion game players as they move ZZYZZYXX up and down horizontal rows of alternating moving bricks to gather presents which will satisfy his love. Lola -- whose affection is not easily captured. ZZYZZYXX's vulnerability increases (as he collects gifts, as well as points) not only because of Lola's untouchable attitude, but because of obstacles such as rattifers trying to put an end to ZZYZZYXX's quest for Lola's love and affection. + +Intelligent as the rattifers may be, there are 2 defenses ZZYZZYXX can use to outsmart the destructive creatures. ZZYZZYXX can brick himself within a brick when he sees an approaching rattifer or ZZYZZYXX can move into the space where there is a gold helmet. The gold helmet intensifies ZZYZZYXX's goal to reach Lola by allowing ZZYZZYXX to use the helmet to enclose a rattifer or break through one brick which is obstructing ZZYZZYXX's course towards Lola. + +As irreproachable as Lola appears. Lola is overjoyed by ZZYZZYXX's success to retrieve enough presents and she whistles resoundingly to let ZZYZZYXX know. After ZZYZZYXX's triumphant deed for love. ZZYZZYXX becomes invincible, enabling him to elude the rattifers by imprisoning them within their spaces. + +Other dangers testing ZZYZZYXX's skillful maneuvering are falling bombs, rising missiles and cracked bricks, each capable of disintegrating ZZYZZYXX. + +As an added attraction, when a game player completes each level, there are animated cartoons depicting ZZYZZYXX's passionate desire to impress his love for Lola. Also delightful music throughout the game leaves the players humming and their foot tapping. + 0.70 + 19820101T000000 + Advanced Microcomputer Systems + Cinematronics + Action + 10 + 1-2 + zzyzzyxx.zip + Cinematronics + 270 + 256x224 + media/mixrbv2/zzyzzyxx.png + + + diff --git a/ui/c2dui_ui_help.cpp b/ui/c2dui_ui_help.cpp index b41bc568..2b178647 100644 --- a/ui/c2dui_ui_help.cpp +++ b/ui/c2dui_ui_help.cpp @@ -25,13 +25,15 @@ UiHelp::UiHelp(UiMain *ui) : SkinnedRectangle(ui->getSkin(), {"MAIN", "HELP"}) { "FAVORITE", {pos + 12, getSize().y / 2}); } - if (!(ui->getConfig()->get(Option::Id::GUI_FILTER_SYSTEM)->getFlags() & Option::Flags::HIDDEN)) { - // system - button1 = ui->getConfig()->get(Option::Id::JOY_LT)->getValueInt(); - button2 = ui->getConfig()->get(Option::Id::JOY_RT)->getValueInt(); - addItem(true, font, - {ui->getSkin()->getButton(button1), ui->getSkin()->getButton(button2)}, - "SWITCH SYSTEM", {pos + 12, getSize().y / 2}); + if (ui->getSize().x > 400) { + if (!(ui->getConfig()->get(Option::Id::GUI_FILTER_SYSTEM)->getFlags() & Option::Flags::HIDDEN)) { + // system + button1 = ui->getConfig()->get(Option::Id::JOY_LT)->getValueInt(); + button2 = ui->getConfig()->get(Option::Id::JOY_RT)->getValueInt(); + addItem(true, font, + {ui->getSkin()->getButton(button1), ui->getSkin()->getButton(button2)}, + "SWITCH SYSTEM", {pos + 12, getSize().y / 2}); + } } // main menu From cb828232cdf2415ff2dce7807624e2a794c0dfa5 Mon Sep 17 00:00:00 2001 From: R-YaTian <47445484+R-YaTian@users.noreply.github.com> Date: Thu, 6 Oct 2022 04:31:20 +0800 Subject: [PATCH 32/70] Support latest fbneo core --- pfbneo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pfbneo/CMakeLists.txt b/pfbneo/CMakeLists.txt index 449201d3..95b56736 100644 --- a/pfbneo/CMakeLists.txt +++ b/pfbneo/CMakeLists.txt @@ -200,7 +200,7 @@ if (OPTION_LIGHT) list(FILTER SRC_DRV EXCLUDE REGEX d_msx.cpp|d_nes.cpp|d_pce.cpp|pce.cpp|d_pgm.cpp|pgm_asic25.cpp|pgm_asic27a_type1.cpp|pgm_asic27a_type2.cpp|pgm_asic27a_type3.cpp|pgm_asic3.cpp) list(FILTER SRC_DRV EXCLUDE REGEX - pgm_crypt.cpp|pgm_draw.cpp|pgm_run.cpp|d_exterm.cpp|d_madmotor.cpp|d_psikyo4.cpp|d_psikyosh.cpp|psikyosh_render.cpp|d_ms32.cpp|d_ssv.cpp) + pgm_crypt.cpp|pgm_draw.cpp|pgm_run.cpp|d_exterm.cpp|d_madmotor.cpp|d_mcr68.cpp|d_psikyo4.cpp|d_psikyosh.cpp|psikyosh_render.cpp|d_ms32.cpp|d_ssv.cpp) list(FILTER SRC_DRV EXCLUDE REGEX d_namcona1.cpp|d_namconb1.cpp|d_btoads.cpp|d_artmagic.cpp|d_eolith16.cpp|d_gstream.cpp|d_vegaeo.cpp|d_limenko.cpp|d_pasha2.cpp|d_eolith.cpp) list(FILTER SRC_DRV EXCLUDE REGEX From 021b4de7d699785bfdb24dba331b0e58212a5532 Mon Sep 17 00:00:00 2001 From: R-YaTian <47445484+R-YaTian@users.noreply.github.com> Date: Thu, 6 Oct 2022 04:32:28 +0800 Subject: [PATCH 33/70] Support latest fbneo core (Part 2) --- pfbneo/sources/fbneo/drv.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pfbneo/sources/fbneo/drv.cpp b/pfbneo/sources/fbneo/drv.cpp index 41c8ac80..14d65fbc 100644 --- a/pfbneo/sources/fbneo/drv.cpp +++ b/pfbneo/sources/fbneo/drv.cpp @@ -12,8 +12,10 @@ extern UINT8 NeoSystem; int bDrvOkay = 0; int kNetGame = 0; int nIpsMaxFileLen = 0; +INT32 nInputIntfMouseDivider = 1; INT32 GetIpsesMaxLen(char *) { return 0; } +UINT32 GetIpsDrvDefine() { return 0; } bool GetIpsDrvProtection() { return false; } @@ -210,4 +212,4 @@ int AppError(TCHAR *szText, int bWarning) { void nes_add_cheat(char *code) {}; void nes_remove_cheat(char *code) {}; -#endif \ No newline at end of file +#endif From ddd146d55d393159a251bc95a741d76471e30022 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 6 Oct 2022 09:14:44 +0200 Subject: [PATCH 34/70] sscrap: update submodule --- sscrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sscrap b/sscrap index 702775ec..2a99aabf 160000 --- a/sscrap +++ b/sscrap @@ -1 +1 @@ -Subproject commit 702775ec0354ed366480bd378478a33d53c993cc +Subproject commit 2a99aabfe33eca05995fc7bbfdf9e6c5dcddbd52 From 54910c5e65f183fd8e763eff73c39906f920647f Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Thu, 6 Oct 2022 09:51:21 +0200 Subject: [PATCH 35/70] sscrap: update submodule --- sscrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sscrap b/sscrap index 2a99aabf..9f69b83d 160000 --- a/sscrap +++ b/sscrap @@ -1 +1 @@ -Subproject commit 2a99aabfe33eca05995fc7bbfdf9e6c5dcddbd52 +Subproject commit 9f69b83d8a78edc54806a42c45e12b43a4829918 From 94b8ca6fca53b895c18077e457d1e118945be127 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Wed, 12 Oct 2022 09:29:17 +0200 Subject: [PATCH 36/70] android: multiple fixes and improvements (data path, audio, ...) --- .gitignore | 3 + libcross2d | 2 +- pfbneo/CMakeLists.txt | 21 ++++-- pfbneo/android/app/build.gradle | 31 ++++++-- .../android/app/src/main/AndroidManifest.xml | 15 ++-- .../main/java/fr/mydedibox/pfbneo/Main.java | 1 - .../app/src/main/res/values/strings.xml | 2 +- .../app/src/main/res/values/styles.xml | 8 -- pfbneo/android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- pfbneo/sources/uiEmu.cpp | 2 +- pgen/CMakeLists.txt | 7 +- pgen/android/app/build.gradle | 31 ++++++-- pgen/android/app/src/main/AndroidManifest.xml | 16 ++-- .../app/src/main/res/values/strings.xml | 2 +- .../app/src/main/res/values/styles.xml | 8 -- pgen/android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- pgen/sources/osd.c | 4 + pgen/sources/pgen_ui_emu.cpp | 40 ++++++---- pnes/android/app/build.gradle | 31 ++++++-- pnes/android/build.gradle | 4 +- psnes/CMakeLists.txt | 9 +++ psnes/android/app/build.gradle | 31 ++++++-- .../android/app/src/main/AndroidManifest.xml | 10 ++- .../app/src/main/res/values/strings.xml | 2 +- .../app/src/main/res/values/styles.xml | 8 -- psnes/android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 4 +- ui/c2dui_config.cpp | 74 ++++++++++++------- ui/c2dui_ui_help.cpp | 4 +- 31 files changed, 244 insertions(+), 142 deletions(-) delete mode 100644 pfbneo/android/app/src/main/res/values/styles.xml delete mode 100644 pgen/android/app/src/main/res/values/styles.xml delete mode 100644 psnes/android/app/src/main/res/values/styles.xml diff --git a/.gitignore b/.gitignore index a3958ed2..d7c0b4be 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ ss_dev_id.key ss_dev_pwd.key ss_user_id.key ss_user_pwd.key + +# android +keystore.properties diff --git a/libcross2d b/libcross2d index e32a5fdb..0b34d25f 160000 --- a/libcross2d +++ b/libcross2d @@ -1 +1 @@ -Subproject commit e32a5fdbad81c59e11df4fb238b33b755a86689a +Subproject commit 0b34d25f0ff8d44ff631f64dfd4ff689a6eda912 diff --git a/pfbneo/CMakeLists.txt b/pfbneo/CMakeLists.txt index 95b56736..5eca80f1 100644 --- a/pfbneo/CMakeLists.txt +++ b/pfbneo/CMakeLists.txt @@ -256,6 +256,7 @@ set(FLAGS -D__PFBA__ -D__PFBA_VERSION_MAJOR__=${VERSION_MAJOR} -D__PFBA_VERSION_MINOR__=${VERSION_MINOR} + -DLSB_FIRST -DINCLUDE_7Z_SUPPORT -DMINIZIP_LIB -DBUILD_SDL2 -DBUILD_M68K -fomit-frame-pointer -Wno-write-strings @@ -280,13 +281,13 @@ if (PLATFORM_VITA) list(APPEND INC sources/cpu/cyclone) list(REMOVE_ITEM SRC_CPU ${CMAKE_SOURCE_DIR}/cores/fbneo/src/cpu/m68000_intf.cpp) list(APPEND SRC_PFBA sources/cpu/c68000_intf.cpp sources/cpu/cyclone/Cyclone.s) - list(APPEND FLAGS -DBUILD_C68K -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS -D__PFBA_ARM__) + list(APPEND FLAGS -DBUILD_C68K -DUSE_FILE32API -DUSE_SPEEDHACKS -D__PFBA_ARM__) list(APPEND LDFLAGS ScePower_stub pthread) elseif (PLATFORM_PS4) set(PS4_PKG_TITLE "pFBN - Portable Final Burn Neo") set(PS4_PKG_TITLE_ID "PFBN00001") set(PS4_PKG_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}") - list(APPEND FLAGS -D__fastcall= -DLSB_FIRST) + list(APPEND FLAGS -D__fastcall=) list(APPEND LDFLAGS) elseif (PLATFORM_PS3) ############## @@ -321,26 +322,30 @@ elseif (PLATFORM_3DS) sources/cpu/cyclone ${DEVKITPRO}/libctru/include ${DEVKITPRO}/portlibs/armv6k/include) - list(APPEND FLAGS -DUSE_FILE32API -DLSB_FIRST -DUSE_SPEEDHACKS -D__PFBA_ARM__ + list(APPEND FLAGS -DLSB_FIRST -DUSE_SPEEDHACKS -D__PFBA_ARM__ -ffunction-sections -fomit-frame-pointer) elseif (PLATFORM_SWITCH) ############## # NX (SWITCH) ############## - list(APPEND FLAGS - -DUSE_FILE32API -DLSB_FIRST - -ffunction-sections -fomit-frame-pointer) + list(APPEND FLAGS -DUSE_FILE32API -ffunction-sections -fomit-frame-pointer) elseif (PLATFORM_LINUX) ############## # LINUX ############## - list(APPEND FLAGS -DLSB_FIRST) list(APPEND FLAGS -D__fastcall=) elseif (PLATFORM_WINDOWS) ############## # WINDOWS ############## - list(APPEND FLAGS -DLSB_FIRST) + list(APPEND FLAGS) +elseif (PLATFORM_ANDROID) + if (ANDROID_ABI STREQUAL armeabi-v7a) + list(APPEND FLAGS -DUSE_SPEEDHACKS + -ffunction-sections -fomit-frame-pointer + -ffast-math -frounding-math -marm -mcpu=cortex-a7 -mfpu=neon) + endif () + list(APPEND FLAGS -O3) endif (PLATFORM_VITA) # source files diff --git a/pfbneo/android/app/build.gradle b/pfbneo/android/app/build.gradle index 522d14f4..ce2d047b 100644 --- a/pfbneo/android/app/build.gradle +++ b/pfbneo/android/app/build.gradle @@ -2,24 +2,38 @@ plugins { id 'com.android.application' } +// load signing key from file +def keystorePropertiesFile = rootProject.file("../../keystore.properties") +def keystoreProperties = new Properties() +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + android { - compileSdk 32 + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + compileSdk 33 defaultConfig { applicationId "fr.mydedibox.pfbneo" - minSdk 26 - targetSdk 32 + minSdk 24 + //noinspection ExpiredTargetSdkVersion + targetSdk 28 versionCode 1 - versionName "1.0" + versionName "3.6" ndk { - abiFilters 'arm64-v8a' + abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' } externalNativeBuild { cmake { cppFlags '-std=c++17' - arguments "-DOPTION_EMU=pfbneo", "-DPLATFORM_ANDROID=ON", "-DOPTION_FTP_SERVER=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" + arguments "-DOPTION_EMU=pfbneo", "-DPLATFORM_ANDROID=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" } } } @@ -28,6 +42,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } compileOptions { @@ -37,7 +52,7 @@ android { externalNativeBuild { cmake { path file('../../../CMakeLists.txt') - version '3.18.1' + version '3.22.1' } } buildFeatures { @@ -46,7 +61,7 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation project(path: ':lib') diff --git a/pfbneo/android/app/src/main/AndroidManifest.xml b/pfbneo/android/app/src/main/AndroidManifest.xml index fcf71c9c..c6b91d9a 100644 --- a/pfbneo/android/app/src/main/AndroidManifest.xml +++ b/pfbneo/android/app/src/main/AndroidManifest.xml @@ -5,8 +5,11 @@ android:installLocation="preferExternal"> + android:label="pfbneo" + android:icon="@mipmap/ic_launcher" + android:isGame="true" + android:requestLegacyExternalStorage="true" + tools:replace="android:label"> + android:screenOrientation="landscape" + android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" + tools:targetApi="r"> - - - + \ No newline at end of file diff --git a/pfbneo/android/app/src/main/java/fr/mydedibox/pfbneo/Main.java b/pfbneo/android/app/src/main/java/fr/mydedibox/pfbneo/Main.java index d9a09078..bf3939b8 100644 --- a/pfbneo/android/app/src/main/java/fr/mydedibox/pfbneo/Main.java +++ b/pfbneo/android/app/src/main/java/fr/mydedibox/pfbneo/Main.java @@ -3,7 +3,6 @@ import fr.mydedibox.libcross2d.*; public class Main extends C2DMainActivity { - @Override protected String[] getLibraries() { return new String[]{ diff --git a/pfbneo/android/app/src/main/res/values/strings.xml b/pfbneo/android/app/src/main/res/values/strings.xml index 388f8f02..ec8a7bd5 100644 --- a/pfbneo/android/app/src/main/res/values/strings.xml +++ b/pfbneo/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - pEMU + pfbneo diff --git a/pfbneo/android/app/src/main/res/values/styles.xml b/pfbneo/android/app/src/main/res/values/styles.xml deleted file mode 100644 index ff6c9d2c..00000000 --- a/pfbneo/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/pfbneo/android/build.gradle b/pfbneo/android/build.gradle index 307de6d1..50e7c7cc 100644 --- a/pfbneo/android/build.gradle +++ b/pfbneo/android/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false } task clean(type: Delete) { diff --git a/pfbneo/android/gradle/wrapper/gradle-wrapper.properties b/pfbneo/android/gradle/wrapper/gradle-wrapper.properties index 67a9916a..5dc8cd94 100644 --- a/pfbneo/android/gradle/wrapper/gradle-wrapper.properties +++ b/pfbneo/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon May 02 13:20:11 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/pfbneo/sources/uiEmu.cpp b/pfbneo/sources/uiEmu.cpp index 1cd7857d..5f63efa9 100644 --- a/pfbneo/sources/uiEmu.cpp +++ b/pfbneo/sources/uiEmu.cpp @@ -340,7 +340,7 @@ void PFBAUiEmu::onUpdate() { } if (audio) { -#if 0 +#if 1 int queued = audio->getSampleBufferQueued(); int capacity = audio->getSampleBufferCapacity(); if (audio->getSamples() + queued > capacity) { diff --git a/pgen/CMakeLists.txt b/pgen/CMakeLists.txt index 3aa3d93d..62b63149 100644 --- a/pgen/CMakeLists.txt +++ b/pgen/CMakeLists.txt @@ -35,7 +35,8 @@ file(GLOB GENESIS_SRC ) set(GENESIS_CFLAGS - -DUSE_16BPP_RENDERING -DHAVE_YM3438_CORE -DHAVE_OPLL_CORE + -DUSE_16BPP_RENDERING + -DHAVE_YM3438_CORE -DHAVE_OPLL_CORE -DLSB_FIRST -DMAXROMSIZE=33554432 -D__PGEN__ -D__PGEN_VERSION_MAJOR__=${VERSION_MAJOR} -D__PGEN_VERSION_MINOR__=${VERSION_MINOR} ) @@ -95,6 +96,10 @@ elseif (PLATFORM_ANDROID) ##################### # ANDROID PLATORM ##################### + if (ANDROID_ABI STREQUAL armeabi-v7a) + list(APPEND PGEN_CFLAGS -marm -mcpu=cortex-a7 -mfpu=neon + -ffunction-sections -fomit-frame-pointer) # fix crash with release optimizations + endif () list(APPEND GENESIS_CFLAGS -DHAVE_SYS_PARAM_H) endif (PLATFORM_VITA) diff --git a/pgen/android/app/build.gradle b/pgen/android/app/build.gradle index 1a4d00a6..b5a11751 100644 --- a/pgen/android/app/build.gradle +++ b/pgen/android/app/build.gradle @@ -2,24 +2,38 @@ plugins { id 'com.android.application' } +// load signing key from file +def keystorePropertiesFile = rootProject.file("../../keystore.properties") +def keystoreProperties = new Properties() +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + android { - compileSdk 32 + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + compileSdk 33 defaultConfig { applicationId "fr.mydedibox.pgen" - minSdk 26 - targetSdk 32 + minSdk 24 + //noinspection ExpiredTargetSdkVersion + targetSdk 28 // needed for external sdcard access... versionCode 1 - versionName "1.0" + versionName "3.6" ndk { - abiFilters 'arm64-v8a' + abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' } externalNativeBuild { cmake { cppFlags '-std=c++17' - arguments "-DOPTION_EMU=pgen", "-DPLATFORM_ANDROID=ON", "-DOPTION_FTP_SERVER=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" + arguments "-DOPTION_EMU=pgen", "-DPLATFORM_ANDROID=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" } } } @@ -28,6 +42,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } compileOptions { @@ -37,7 +52,7 @@ android { externalNativeBuild { cmake { path file('../../../CMakeLists.txt') - version '3.18.1' + version '3.22.1' } } buildFeatures { @@ -46,7 +61,7 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation project(path: ':lib') diff --git a/pgen/android/app/src/main/AndroidManifest.xml b/pgen/android/app/src/main/AndroidManifest.xml index 463bddb1..cd9297de 100644 --- a/pgen/android/app/src/main/AndroidManifest.xml +++ b/pgen/android/app/src/main/AndroidManifest.xml @@ -5,8 +5,11 @@ android:installLocation="preferExternal"> + android:label="pgen" + android:icon="@mipmap/ic_launcher" + android:isGame="true" + android:requestLegacyExternalStorage="true" + tools:replace="android:label"> + android:screenOrientation="landscape" + android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" + tools:targetApi="r"> - - - - + \ No newline at end of file diff --git a/pgen/android/app/src/main/res/values/strings.xml b/pgen/android/app/src/main/res/values/strings.xml index 388f8f02..c593aeab 100644 --- a/pgen/android/app/src/main/res/values/strings.xml +++ b/pgen/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - pEMU + pgen diff --git a/pgen/android/app/src/main/res/values/styles.xml b/pgen/android/app/src/main/res/values/styles.xml deleted file mode 100644 index ff6c9d2c..00000000 --- a/pgen/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/pgen/android/build.gradle b/pgen/android/build.gradle index 307de6d1..50e7c7cc 100644 --- a/pgen/android/build.gradle +++ b/pgen/android/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false } task clean(type: Delete) { diff --git a/pgen/android/gradle/wrapper/gradle-wrapper.properties b/pgen/android/gradle/wrapper/gradle-wrapper.properties index 67a9916a..5dc8cd94 100644 --- a/pgen/android/gradle/wrapper/gradle-wrapper.properties +++ b/pgen/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon May 02 13:20:11 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/pgen/sources/osd.c b/pgen/sources/osd.c index 15fe4c1d..d0604313 100644 --- a/pgen/sources/osd.c +++ b/pgen/sources/osd.c @@ -62,8 +62,12 @@ void set_config_defaults() { config.lp_range = 0x9999; /* 0.6 in 0.16 fixed point */ config.ym2612 = YM2612_DISCRETE; config.ym2413 = 2; /* = AUTO (0 = always OFF, 1 = always ON) */ +#if HAVE_YM3438_CORE config.ym3438 = 0; +#endif +#if HAVE_OPLL_CORE config.opll = 0; +#endif config.mono = 0; /* system options */ diff --git a/pgen/sources/pgen_ui_emu.cpp b/pgen/sources/pgen_ui_emu.cpp index d10de8c6..b5b40718 100644 --- a/pgen/sources/pgen_ui_emu.cpp +++ b/pgen/sources/pgen_ui_emu.cpp @@ -15,10 +15,14 @@ static short sound_buffer[2048]; static uint32_t brm_crc[2]; static uint8 brm_format[0x40] = { - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x45, 0x47, 0x41, 0x5f, 0x43, 0x44, 0x5f, 0x52, 0x4f, 0x4d, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x52, 0x41, 0x4d, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x5f, 0x5f + 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, + 0x53, 0x45, 0x47, 0x41, 0x5f, 0x43, 0x44, 0x5f, 0x52, 0x4f, 0x4d, 0x00, 0x01, 0x00, 0x00, + 0x00, + 0x52, 0x41, 0x4d, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x5f, + 0x5f }; PGENUiEmu::PGENUiEmu(UiMain *ui) : UiEmu(ui) { @@ -67,9 +71,13 @@ int PGENUiEmu::load(const ss_api::Game &game) { } // system init - audio_init(48000, 0); system_init(); + // audio init + targetFps = vdp_pal ? 50 : 60; + addAudio(48000, vdp_pal ? 966 : 801); + audio_init(audio->getSampleRate(), targetFps); + // game gear "special" resolution handling if (system_hw == SYSTEM_GG || system_hw == SYSTEM_GGMS) { resizeVideo(true); @@ -80,10 +88,6 @@ int PGENUiEmu::load(const ss_api::Game &game) { loadSram(); - // audio init - targetFps = vdp_pal ? 50 : 60; - addAudio(48000, vdp_pal ? 966 : 801); - getUi()->getUiProgressBox()->setProgress(1); getUi()->flip(); getUi()->delay(500); @@ -145,7 +149,8 @@ void PGENUiEmu::onUpdate() { } else if (video->getTextureRect().width != bitmap.viewport.w || video->getTextureRect().height != bitmap.viewport.h) { printf("video rect {%i, %i} != viewport size: {%i, %i}\n", - video->getTextureRect().width, video->getTextureRect().height, bitmap.viewport.w, + video->getTextureRect().width, video->getTextureRect().height, + bitmap.viewport.w, bitmap.viewport.h); resizeVideo(); } @@ -229,7 +234,8 @@ void PGENUiEmu::loadBram() { char *data; std::string ramPath = ui->getIo()->getDataPath() + "rams/"; - size_t size = getUi()->getIo()->read(ramPath + Utility::removeExt(currentGame.path) + ".brm", &data, 0x2000); + size_t size = getUi()->getIo()->read(ramPath + Utility::removeExt(currentGame.path) + ".brm", + &data, 0x2000); if (data && size == 0x2000) { memcpy(scd.bram, data, 0x2000); free(data); @@ -252,7 +258,8 @@ void PGENUiEmu::loadBram() { /* internal Backup RAM size fields */ brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; - brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = + (sizeof(scd.bram) / 64) - 3; /* format internal backup RAM */ memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); @@ -274,7 +281,8 @@ void PGENUiEmu::loadBram() { } /* check if cartridge backup RAM is correctly formatted */ - if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20) != 0) { + if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20) != + 0) { /* clear cartridge backup RAM */ memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); @@ -312,7 +320,8 @@ void PGENUiEmu::saveBram() { if (scd.cartridge.id && (crc32(0, scd.cartridge.area, scd.cartridge.mask + 1) != brm_crc[1])) { /* check if it is correctly formatted before saving */ if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) { - ui->getIo()->write(ramPath + CD_BRAM_CART, (const char *) scd.cartridge.area, scd.cartridge.mask + 1); + ui->getIo()->write(ramPath + CD_BRAM_CART, (const char *) scd.cartridge.area, + scd.cartridge.mask + 1); /* update CRC */ brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); } @@ -323,7 +332,8 @@ void PGENUiEmu::loadSram() { if (sram.on) { char *data; std::string ramPath = ui->getIo()->getDataPath() + "rams/"; - size_t size = getUi()->getIo()->read(ramPath + Utility::removeExt(currentGame.path) + ".srm", &data, 0x10000); + size_t size = getUi()->getIo()->read( + ramPath + Utility::removeExt(currentGame.path) + ".srm", &data, 0x10000); if (data && size == 0x10000) { memcpy(sram.sram, data, 0x10000); } diff --git a/pnes/android/app/build.gradle b/pnes/android/app/build.gradle index 4eb3b359..36e1b41a 100644 --- a/pnes/android/app/build.gradle +++ b/pnes/android/app/build.gradle @@ -2,24 +2,38 @@ plugins { id 'com.android.application' } +// load signing key from file +def keystorePropertiesFile = rootProject.file("../../keystore.properties") +def keystoreProperties = new Properties() +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + android { - compileSdk 32 + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + compileSdk 33 defaultConfig { applicationId "fr.mydedibox.pnes" - minSdk 26 - targetSdk 32 + minSdk 24 + //noinspection ExpiredTargetSdkVersion + targetSdk 28 // needed for external sdcard access... versionCode 1 - versionName "1.0" + versionName "3.6" ndk { - abiFilters 'arm64-v8a' + abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' } externalNativeBuild { cmake { cppFlags '-std=c++17' - arguments "-DOPTION_EMU=pnes", "-DPLATFORM_ANDROID=ON", "-DOPTION_FTP_SERVER=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" + arguments "-DOPTION_EMU=pnes", "-DPLATFORM_ANDROID=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" } } } @@ -28,6 +42,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } compileOptions { @@ -37,7 +52,7 @@ android { externalNativeBuild { cmake { path file('../../../CMakeLists.txt') - version '3.18.1' + version '3.22.1' } } buildFeatures { @@ -46,7 +61,7 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation project(path: ':lib') diff --git a/pnes/android/build.gradle b/pnes/android/build.gradle index 307de6d1..50e7c7cc 100644 --- a/pnes/android/build.gradle +++ b/pnes/android/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false } task clean(type: Delete) { diff --git a/psnes/CMakeLists.txt b/psnes/CMakeLists.txt index 5e9f7cdb..003d8913 100644 --- a/psnes/CMakeLists.txt +++ b/psnes/CMakeLists.txt @@ -116,6 +116,15 @@ elseif (PLATFORM_SWITCH) elseif (PLATFORM_WINDOWS) list(REMOVE_ITEM SNES9X_SRC ${CMAKE_SOURCE_DIR}/cores/snes9x/compat.cpp) list(APPEND SNES9X_CFLAGS -Dunztell=unzTell) +elseif (PLATFORM_ANDROID) + ##################### + # ANDROID PLATORM + ##################### + if (ANDROID_ABI STREQUAL armeabi-v7a) + list(APPEND PGEN_CFLAGS -marm -mcpu=cortex-a7 -mfpu=neon + -ffunction-sections -fomit-frame-pointer) # fix crash with release optimizations + endif () + list(APPEND GENESIS_CFLAGS -DHAVE_SYS_PARAM_H) endif () add_executable(${PROJECT_NAME} ${PSNES_SRC} ${SNES9X_SRC} ${UNZIP_SRC} ${JMA_SRC}) diff --git a/psnes/android/app/build.gradle b/psnes/android/app/build.gradle index b2baeedb..759fccd8 100644 --- a/psnes/android/app/build.gradle +++ b/psnes/android/app/build.gradle @@ -2,24 +2,38 @@ plugins { id 'com.android.application' } +// load signing key from file +def keystorePropertiesFile = rootProject.file("../../keystore.properties") +def keystoreProperties = new Properties() +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + android { - compileSdk 32 + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + compileSdk 33 defaultConfig { applicationId "fr.mydedibox.psnes" - minSdk 26 - targetSdk 32 + minSdk 24 + //noinspection ExpiredTargetSdkVersion + targetSdk 28 // needed for external sdcard access... versionCode 1 - versionName "1.0" + versionName "3.6" ndk { - abiFilters 'arm64-v8a' + abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' } externalNativeBuild { cmake { cppFlags '-std=c++17' - arguments "-DOPTION_EMU=psnes", "-DPLATFORM_ANDROID=ON", "-DOPTION_FTP_SERVER=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" + arguments "-DOPTION_EMU=psnes", "-DPLATFORM_ANDROID=ON", "-DANDROID_ASSETS_PATH=${sourceSets.main.assets.srcDirs[0]}" } } } @@ -28,6 +42,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } compileOptions { @@ -37,7 +52,7 @@ android { externalNativeBuild { cmake { path file('../../../CMakeLists.txt') - version '3.18.1' + version '3.22.1' } } buildFeatures { @@ -46,7 +61,7 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation project(path: ':lib') diff --git a/psnes/android/app/src/main/AndroidManifest.xml b/psnes/android/app/src/main/AndroidManifest.xml index 42b6ae94..1ec390ec 100644 --- a/psnes/android/app/src/main/AndroidManifest.xml +++ b/psnes/android/app/src/main/AndroidManifest.xml @@ -6,6 +6,9 @@ + android:screenOrientation="landscape" + android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" + tools:targetApi="r"> - - - diff --git a/psnes/android/app/src/main/res/values/strings.xml b/psnes/android/app/src/main/res/values/strings.xml index 388f8f02..e734eda0 100644 --- a/psnes/android/app/src/main/res/values/strings.xml +++ b/psnes/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - pEMU + psnes diff --git a/psnes/android/app/src/main/res/values/styles.xml b/psnes/android/app/src/main/res/values/styles.xml deleted file mode 100644 index ff6c9d2c..00000000 --- a/psnes/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/psnes/android/build.gradle b/psnes/android/build.gradle index 307de6d1..50e7c7cc 100644 --- a/psnes/android/build.gradle +++ b/psnes/android/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false } task clean(type: Delete) { diff --git a/psnes/android/gradle/wrapper/gradle-wrapper.properties b/psnes/android/gradle/wrapper/gradle-wrapper.properties index 67a9916a..c55eb78b 100644 --- a/psnes/android/gradle/wrapper/gradle-wrapper.properties +++ b/psnes/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 02 13:20:11 CEST 2022 +#Tue Oct 11 13:59:43 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/ui/c2dui_config.cpp b/ui/c2dui_config.cpp index c93419cc..ea8f7bb9 100644 --- a/ui/c2dui_config.cpp +++ b/ui/c2dui_config.cpp @@ -12,6 +12,15 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { printf("Config(%s, v%i)\n", configPath.c_str(), ver); + /// custom screens size + int joyDeadZoneIndex = 3; + Vector2i screenSize = {C2D_SCREEN_WIDTH, C2D_SCREEN_HEIGHT}; + std::string device = C2DDevice::getName(); + if (device == "pocket2") { + screenSize = {640, 480}; + joyDeadZoneIndex = 11; + } + /// add default roms paths roms_paths.clear(); roms_paths.emplace_back(io->getDataPath() + defaultRomsPath); @@ -21,15 +30,19 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { /// main/gui config ///////////////////////////////////////////////// append("MAIN", {"MAIN"}, 0, Option::Id::MENU_MAIN, Option::Flags::MENU); - append("SHOW", {"ALL", "AVAILABLE", "FAVORITES"}, 0, Option::Id::GUI_SHOW_ALL, Option::Flags::STRING); + append("SHOW", {"ALL", "AVAILABLE", "FAVORITES"}, 0, Option::Id::GUI_SHOW_ALL, + Option::Flags::STRING); append("SHOW_CLONES", {"OFF", "ON"}, 0, Option::Id::GUI_FILTER_CLONES, Option::Flags::BOOLEAN | Option::Flags::HIDDEN); - append("SHOW_ZIP_NAMES", {"OFF", "ON"}, 1, Option::Id::GUI_SHOW_ZIP_NAMES, Option::Flags::BOOLEAN); - append("SHOW_ICONS", {"OFF", "ON"}, 0, Option::Id::GUI_SHOW_ICONS, Option::Flags::BOOLEAN | Option::Flags::HIDDEN); - get()->at(get()->size() - 1).setInfo("YOU NEED TO RESTART THE APPLICATION AFTER CHANGING THIS OPTION"); - append("SCREEN_WIDTH", C2D_SCREEN_WIDTH, Option::Id::GUI_SCREEN_WIDTH, + append("SHOW_ZIP_NAMES", {"OFF", "ON"}, 1, Option::Id::GUI_SHOW_ZIP_NAMES, + Option::Flags::BOOLEAN); + append("SHOW_ICONS", {"OFF", "ON"}, 0, Option::Id::GUI_SHOW_ICONS, + Option::Flags::BOOLEAN | Option::Flags::HIDDEN); + get()->at(get()->size() - 1).setInfo( + "YOU NEED TO RESTART THE APPLICATION AFTER CHANGING THIS OPTION"); + append("SCREEN_WIDTH", screenSize.x, Option::Id::GUI_SCREEN_WIDTH, Option::Flags::INTEGER | Option::Flags::HIDDEN); - append("SCREEN_HEIGHT", C2D_SCREEN_HEIGHT, Option::Id::GUI_SCREEN_HEIGHT, + append("SCREEN_HEIGHT", screenSize.y, Option::Id::GUI_SCREEN_HEIGHT, Option::Flags::INTEGER | Option::Flags::HIDDEN); #ifdef __FULLSCREEN__ append("FULLSCREEN", {"OFF", "ON"}, 0, Option::Id::GUI_FULLSCREEN, Option::Flags::BOOLEAN); @@ -71,7 +84,7 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { if (!get(Option::Id::GUI_SKIN)) { int index = 0; for (size_t i = 0; i < skins.size(); i++) { - if (C2D_SCREEN_HEIGHT > 240) { + if (screenSize.y > 240) { if (skins.at(i) == "default") { index = (int) i; } @@ -83,7 +96,8 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { } append("SKIN", skins, index, Option::Id::GUI_SKIN, Option::Flags::STRING); } - get()->at(get()->size() - 1).setInfo("YOU NEED TO RESTART THE APPLICATION AFTER CHANGING THIS OPTION"); + get()->at(get()->size() - 1).setInfo( + "YOU NEED TO RESTART THE APPLICATION AFTER CHANGING THIS OPTION"); append("VIDEO_SNAP_DELAY", {"3", "5", "7", "10"}, 1, Option::Id::GUI_VIDEO_SNAP_DELAY, Option::Flags::STRING); @@ -92,17 +106,18 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { /// default rom config ///////////////////////////////////////////////// append("EMULATION", {"EMULATION"}, 0, Option::Id::MENU_ROM_OPTIONS, Option::Flags::MENU); - if (C2D_SCREEN_HEIGHT > 720) { - append("SCALING", {"NONE", "2X", "3X", "4X", "FIT", "FULL"}, 3, + if (screenSize.y > 720) { + append("SCALING", {"NONE", "2X", "3X", "4X", "FIT", "FULL"}, 4, Option::Id::ROM_SCALING, Option::Flags::STRING); - } else if (C2D_SCREEN_HEIGHT > 544) { - append("SCALING", {"NONE", "2X", "3X", "FIT", "FULL"}, 2, + } else if (screenSize.y > 544) { + append("SCALING", {"NONE", "2X", "3X", "FIT", "FULL"}, 3, Option::Id::ROM_SCALING, Option::Flags::STRING); - } else if (C2D_SCREEN_HEIGHT > 240) { - append("SCALING", {"NONE", "2X", "FIT", "FULL"}, 1, + } else if (screenSize.y > 240) { + append("SCALING", {"NONE", "2X", "FIT", "FULL"}, 2, Option::Id::ROM_SCALING, Option::Flags::STRING); } else { - append("SCALING", {"NONE", "FIT", "FULL"}, 0, Option::Id::ROM_SCALING, Option::Flags::STRING); + append("SCALING", {"NONE", "FIT", "FULL"}, 1, Option::Id::ROM_SCALING, + Option::Flags::STRING); } append("SCALING_MODE", {"AUTO", "ASPECT", "INTEGER"}, 0, Option::Id::ROM_SCALING_MODE, Option::Flags::STRING); @@ -131,13 +146,17 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { append("JOY_MENU1", KEY_JOY_MENU1_DEFAULT, Option::Id::JOY_MENU1, Option::Flags::INPUT); append("JOY_MENU2", KEY_JOY_MENU2_DEFAULT, Option::Id::JOY_MENU2, Option::Flags::INPUT); // TODO: add gui option for axis in option menu - append("JOY_AXIS_LX", KEY_JOY_AXIS_LX, Option::Id::JOY_AXIS_LX, Option::Flags::INPUT | Option::Flags::HIDDEN); - append("JOY_AXIS_LY", KEY_JOY_AXIS_LY, Option::Id::JOY_AXIS_LY, Option::Flags::INPUT | Option::Flags::HIDDEN); - append("JOY_AXIS_RX", KEY_JOY_AXIS_RX, Option::Id::JOY_AXIS_RX, Option::Flags::INPUT | Option::Flags::HIDDEN); - append("JOY_AXIS_RY", KEY_JOY_AXIS_RY, Option::Id::JOY_AXIS_RY, Option::Flags::INPUT | Option::Flags::HIDDEN); + append("JOY_AXIS_LX", KEY_JOY_AXIS_LX, Option::Id::JOY_AXIS_LX, + Option::Flags::INPUT | Option::Flags::HIDDEN); + append("JOY_AXIS_LY", KEY_JOY_AXIS_LY, Option::Id::JOY_AXIS_LY, + Option::Flags::INPUT | Option::Flags::HIDDEN); + append("JOY_AXIS_RX", KEY_JOY_AXIS_RX, Option::Id::JOY_AXIS_RX, + Option::Flags::INPUT | Option::Flags::HIDDEN); + append("JOY_AXIS_RY", KEY_JOY_AXIS_RY, Option::Id::JOY_AXIS_RY, + Option::Flags::INPUT | Option::Flags::HIDDEN); append("JOY_DEADZONE", {"2000", "4000", "6000", "8000", "10000", "12000", "14000", "16000", - "18000", "20000", "22000", "24000", "26000", "28000", "30000"}, 3, + "18000", "20000", "22000", "24000", "26000", "28000", "30000"}, joyDeadZoneIndex, Option::Id::JOY_DEADZONE, Option::Flags::STRING); #ifndef NO_KEYBOARD // keyboard @@ -224,14 +243,16 @@ void Config::load(const ss_api::Game &game) { if (settings != nullptr) { if (flags & Option::Flags::INTEGER || flags & Option::Flags::INPUT) { int value = 0; - if (config_setting_lookup_int(settings, option.getName().c_str(), &value) != 0) { + if (config_setting_lookup_int(settings, option.getName().c_str(), &value) != + 0) { option.setValueInt(value); //printf("Config::load: OPTION: %s, VALUE: %i\n", option.getName().c_str(), // option.getValueInt()); } } else { const char *value; - if (config_setting_lookup_string(settings, option.getName().c_str(), &value) != 0) { + if (config_setting_lookup_string(settings, option.getName().c_str(), + &value) != 0) { option.setValueString(value); //printf("Config::load: OPTION: %s, VALUE: %s\n", option.getName().c_str(), // option.getValueString().c_str()); @@ -298,15 +319,18 @@ void Config::save(const ss_api::Game &game) { for (auto &option: *options) { unsigned int flags = option.getFlags(); if (flags & Option::Flags::MENU) { - sub_setting = config_setting_add(setting_fba, option.getName().c_str(), CONFIG_TYPE_GROUP); + sub_setting = config_setting_add(setting_fba, option.getName().c_str(), + CONFIG_TYPE_GROUP); continue; } if (flags & Option::Flags::INTEGER || flags & Option::Flags::INPUT) { - config_setting_t *setting = config_setting_add(sub_setting, option.getName().c_str(), CONFIG_TYPE_INT); + config_setting_t *setting = config_setting_add(sub_setting, option.getName().c_str(), + CONFIG_TYPE_INT); config_setting_set_int(setting, option.getValueInt()); } else { - config_setting_t *setting = config_setting_add(sub_setting, option.getName().c_str(), CONFIG_TYPE_STRING); + config_setting_t *setting = config_setting_add(sub_setting, option.getName().c_str(), + CONFIG_TYPE_STRING); config_setting_set_string(setting, option.getValueString().c_str()); } } diff --git a/ui/c2dui_ui_help.cpp b/ui/c2dui_ui_help.cpp index 2b178647..ff4b8ad7 100644 --- a/ui/c2dui_ui_help.cpp +++ b/ui/c2dui_ui_help.cpp @@ -17,7 +17,7 @@ UiHelp::UiHelp(UiMain *ui) : SkinnedRectangle(ui->getSkin(), {"MAIN", "HELP"}) { "RUN", {pos + 12, getSize().y / 2}); // favorite button1 = ui->getConfig()->get(Option::Id::JOY_X)->getValueInt(); - if (ui->getSize().y < 240) { + if (ui->getSize().x > 640) { pos = addItem(true, font, {ui->getSkin()->getButton(button1)}, "ADD / REMOVE FAVORITE", {pos + 12, getSize().y / 2}); } else { @@ -25,7 +25,7 @@ UiHelp::UiHelp(UiMain *ui) : SkinnedRectangle(ui->getSkin(), {"MAIN", "HELP"}) { "FAVORITE", {pos + 12, getSize().y / 2}); } - if (ui->getSize().x > 400) { + if (ui->getSize().x > 640) { if (!(ui->getConfig()->get(Option::Id::GUI_FILTER_SYSTEM)->getFlags() & Option::Flags::HIDDEN)) { // system button1 = ui->getConfig()->get(Option::Id::JOY_LT)->getValueInt(); From 334807c31b2d4a4ae6de310b62995e3835c79d68 Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Wed, 12 Oct 2022 09:40:24 +0200 Subject: [PATCH 37/70] common: remove ftp option --- ui/CMakeLists.txt | 6 - ui/c2dui_config.cpp | 3 - ui/c2dui_option.h | 1 - ui/c2dui_ui_main.cpp | 39 - ui/c2dui_ui_main.h | 36 - ui/c2dui_ui_menu.cpp | 10 +- ui/external/fineftp-server/.gitignore | 19 - ui/external/fineftp-server/.gitmodules | 3 - ui/external/fineftp-server/CMakeLists.txt | 27 - ui/external/fineftp-server/CMakeWindows.bat | 6 - ui/external/fineftp-server/LICENSE | 21 - ui/external/fineftp-server/README.md | 84 - .../fineftp-server/cmake/Findasio.cmake | 30 - .../cmake/fineftpConfig.cmake.in | 4 - .../fineftp-server/example/CMakeLists.txt | 19 - .../fineftp-server/example/src/main.cpp | 37 - .../fineftp-server/CMakeLists.txt | 132 - .../fineftp-server/Command return codes.txt | 148 - .../fineftp-server/fineftp_version.h.in | 5 - .../include/fineftp/permissions.h | 31 - .../fineftp-server/include/fineftp/server.h | 159 - .../fineftp-server/sourcetree.cmake | 12 - .../fineftp-server/src/filesystem.cpp | 461 - .../fineftp-server/src/filesystem.h | 93 - .../fineftp-server/src/ftp_message.h | 86 - .../fineftp-server/src/ftp_session.cpp | 1523 - .../fineftp-server/src/ftp_session.h | 217 - .../fineftp-server/src/ftp_user.h | 20 - .../fineftp-server/src/server.cpp | 54 - .../fineftp-server/src/server_impl.cpp | 156 - .../fineftp-server/src/server_impl.h | 52 - .../fineftp-server/src/user_database.cpp | 85 - .../fineftp-server/src/user_database.h | 29 - .../fineftp-server/src/win_str_convert.cpp | 59 - .../fineftp-server/src/win_str_convert.h | 21 - .../thirdparty/asio/asio/.gitignore | 23 - .../thirdparty/asio/asio/COPYING | 4 - .../thirdparty/asio/asio/INSTALL | 5 - .../thirdparty/asio/asio/LICENSE_1_0.txt | 23 - .../thirdparty/asio/asio/Makefile.am | 19 - .../thirdparty/asio/asio/README | 4 - .../thirdparty/asio/asio/asio.manifest | 5678 - .../thirdparty/asio/asio/autogen.sh | 55 - .../thirdparty/asio/asio/boost_asio.manifest | 6056 - .../thirdparty/asio/asio/boostify.pl | 635 - .../thirdparty/asio/asio/configure.ac | 230 - .../thirdparty/asio/asio/include/.gitignore | 2 - .../thirdparty/asio/asio/include/Makefile.am | 566 - .../thirdparty/asio/asio/include/asio.hpp | 182 - .../asio/include/asio/any_io_executor.hpp | 71 - .../include/asio/associated_allocator.hpp | 125 - .../asio/include/asio/associated_executor.hpp | 166 - .../asio/asio/include/asio/async_result.hpp | 582 - .../asio/asio/include/asio/awaitable.hpp | 133 - .../include/asio/basic_datagram_socket.hpp | 1215 - .../include/asio/basic_deadline_timer.hpp | 693 - .../asio/include/asio/basic_io_object.hpp | 290 - .../asio/include/asio/basic_raw_socket.hpp | 1206 - .../include/asio/basic_seq_packet_socket.hpp | 761 - .../asio/include/asio/basic_serial_port.hpp | 907 - .../asio/include/asio/basic_signal_set.hpp | 572 - .../asio/asio/include/asio/basic_socket.hpp | 1894 - .../include/asio/basic_socket_acceptor.hpp | 2501 - .../include/asio/basic_socket_iostream.hpp | 407 - .../include/asio/basic_socket_streambuf.hpp | 687 - .../asio/include/asio/basic_stream_socket.hpp | 1053 - .../asio/include/asio/basic_streambuf.hpp | 452 - .../asio/include/asio/basic_streambuf_fwd.hpp | 36 - .../include/asio/basic_waitable_timer.hpp | 811 - .../asio/asio/include/asio/bind_executor.hpp | 575 - .../asio/asio/include/asio/buffer.hpp | 2496 - .../include/asio/buffered_read_stream.hpp | 253 - .../include/asio/buffered_read_stream_fwd.hpp | 25 - .../asio/include/asio/buffered_stream.hpp | 279 - .../asio/include/asio/buffered_stream_fwd.hpp | 25 - .../include/asio/buffered_write_stream.hpp | 245 - .../asio/buffered_write_stream_fwd.hpp | 25 - .../asio/include/asio/buffers_iterator.hpp | 521 - .../asio/asio/include/asio/co_spawn.hpp | 471 - .../include/asio/completion_condition.hpp | 218 - .../asio/asio/include/asio/compose.hpp | 136 - .../asio/asio/include/asio/connect.hpp | 1076 - .../asio/asio/include/asio/coroutine.hpp | 328 - .../asio/asio/include/asio/deadline_timer.hpp | 38 - .../asio/asio/include/asio/defer.hpp | 130 - .../asio/asio/include/asio/detached.hpp | 112 - .../asio/asio/include/asio/detail/array.hpp | 38 - .../asio/include/asio/detail/array_fwd.hpp | 34 - .../asio/asio/include/asio/detail/assert.hpp | 32 - .../asio/include/asio/detail/atomic_count.hpp | 64 - .../asio/detail/base_from_completion_cond.hpp | 69 - .../asio/include/asio/detail/bind_handler.hpp | 938 - .../asio/detail/blocking_executor_op.hpp | 107 - .../asio/detail/buffer_resize_guard.hpp | 66 - .../asio/detail/buffer_sequence_adapter.hpp | 650 - .../asio/detail/buffered_stream_storage.hpp | 126 - .../include/asio/detail/bulk_executor_op.hpp | 88 - .../asio/include/asio/detail/call_stack.hpp | 125 - .../asio/asio/include/asio/detail/chrono.hpp | 66 - .../asio/detail/chrono_time_traits.hpp | 190 - .../asio/detail/completion_handler.hpp | 88 - .../include/asio/detail/concurrency_hint.hpp | 94 - .../detail/conditionally_enabled_event.hpp | 120 - .../detail/conditionally_enabled_mutex.hpp | 149 - .../asio/asio/include/asio/detail/config.hpp | 1836 - .../include/asio/detail/consuming_buffers.hpp | 414 - .../asio/asio/include/asio/detail/cstddef.hpp | 31 - .../asio/asio/include/asio/detail/cstdint.hpp | 60 - .../include/asio/detail/date_time_fwd.hpp | 34 - .../asio/detail/deadline_timer_service.hpp | 295 - .../include/asio/detail/dependent_type.hpp | 36 - .../include/asio/detail/descriptor_ops.hpp | 139 - .../asio/detail/descriptor_read_op.hpp | 148 - .../asio/detail/descriptor_write_op.hpp | 148 - .../include/asio/detail/dev_poll_reactor.hpp | 218 - .../include/asio/detail/epoll_reactor.hpp | 266 - .../asio/asio/include/asio/detail/event.hpp | 48 - .../detail/eventfd_select_interrupter.hpp | 83 - .../include/asio/detail/executor_function.hpp | 204 - .../asio/include/asio/detail/executor_op.hpp | 84 - .../include/asio/detail/fd_set_adapter.hpp | 39 - .../asio/include/asio/detail/fenced_block.hpp | 80 - .../asio/include/asio/detail/functional.hpp | 38 - .../asio/asio/include/asio/detail/future.hpp | 33 - .../asio/detail/gcc_arm_fenced_block.hpp | 91 - .../asio/detail/gcc_hppa_fenced_block.hpp | 68 - .../asio/detail/gcc_sync_fenced_block.hpp | 65 - .../asio/detail/gcc_x86_fenced_block.hpp | 99 - .../asio/asio/include/asio/detail/global.hpp | 52 - .../asio/detail/handler_alloc_helpers.hpp | 284 - .../asio/detail/handler_cont_helpers.hpp | 45 - .../asio/detail/handler_invoke_helpers.hpp | 80 - .../include/asio/detail/handler_tracking.hpp | 264 - .../asio/detail/handler_type_requirements.hpp | 556 - .../asio/include/asio/detail/handler_work.hpp | 438 - .../asio/include/asio/detail/hash_map.hpp | 331 - .../detail/impl/buffer_sequence_adapter.ipp | 118 - .../asio/detail/impl/descriptor_ops.ipp | 608 - .../asio/detail/impl/dev_poll_reactor.hpp | 91 - .../asio/detail/impl/dev_poll_reactor.ipp | 446 - .../asio/detail/impl/epoll_reactor.hpp | 89 - .../asio/detail/impl/epoll_reactor.ipp | 787 - .../impl/eventfd_select_interrupter.ipp | 171 - .../asio/detail/impl/handler_tracking.ipp | 396 - .../asio/detail/impl/kqueue_reactor.hpp | 93 - .../asio/detail/impl/kqueue_reactor.ipp | 570 - .../include/asio/detail/impl/null_event.ipp | 74 - .../detail/impl/pipe_select_interrupter.ipp | 129 - .../include/asio/detail/impl/posix_event.ipp | 59 - .../include/asio/detail/impl/posix_mutex.ipp | 46 - .../include/asio/detail/impl/posix_thread.ipp | 84 - .../asio/detail/impl/posix_tss_ptr.ipp | 46 - .../impl/reactive_descriptor_service.ipp | 223 - .../impl/reactive_serial_port_service.ipp | 149 - .../impl/reactive_socket_service_base.ipp | 300 - .../detail/impl/resolver_service_base.ipp | 158 - .../include/asio/detail/impl/scheduler.ipp | 654 - .../asio/detail/impl/select_reactor.hpp | 100 - .../asio/detail/impl/select_reactor.ipp | 338 - .../asio/detail/impl/service_registry.hpp | 94 - .../asio/detail/impl/service_registry.ipp | 197 - .../asio/detail/impl/signal_set_service.ipp | 668 - .../include/asio/detail/impl/socket_ops.ipp | 3962 - .../detail/impl/socket_select_interrupter.ipp | 185 - .../detail/impl/strand_executor_service.hpp | 385 - .../detail/impl/strand_executor_service.ipp | 134 - .../asio/detail/impl/strand_service.hpp | 117 - .../asio/detail/impl/strand_service.ipp | 178 - .../include/asio/detail/impl/throw_error.ipp | 60 - .../asio/detail/impl/timer_queue_ptime.ipp | 91 - .../asio/detail/impl/timer_queue_set.ipp | 101 - .../include/asio/detail/impl/win_event.ipp | 76 - .../detail/impl/win_iocp_handle_service.ipp | 525 - .../asio/detail/impl/win_iocp_io_context.hpp | 104 - .../asio/detail/impl/win_iocp_io_context.ipp | 603 - .../impl/win_iocp_serial_port_service.ipp | 192 - .../impl/win_iocp_socket_service_base.ipp | 801 - .../include/asio/detail/impl/win_mutex.ipp | 84 - .../detail/impl/win_object_handle_service.ipp | 448 - .../asio/detail/impl/win_static_mutex.ipp | 136 - .../include/asio/detail/impl/win_thread.ipp | 150 - .../include/asio/detail/impl/win_tss_ptr.ipp | 57 - .../impl/winrt_ssocket_service_base.ipp | 626 - .../detail/impl/winrt_timer_scheduler.hpp | 92 - .../detail/impl/winrt_timer_scheduler.ipp | 121 - .../include/asio/detail/impl/winsock_init.ipp | 82 - .../asio/include/asio/detail/io_control.hpp | 84 - .../include/asio/detail/io_object_impl.hpp | 175 - .../asio/detail/is_buffer_sequence.hpp | 312 - .../asio/include/asio/detail/is_executor.hpp | 126 - .../include/asio/detail/keyword_tss_ptr.hpp | 70 - .../include/asio/detail/kqueue_reactor.hpp | 242 - .../asio/asio/include/asio/detail/limits.hpp | 26 - .../asio/detail/local_free_on_block_exit.hpp | 59 - .../asio/detail/macos_fenced_block.hpp | 62 - .../asio/asio/include/asio/detail/memory.hpp | 73 - .../asio/asio/include/asio/detail/mutex.hpp | 48 - .../include/asio/detail/non_const_lvalue.hpp | 54 - .../asio/include/asio/detail/noncopyable.hpp | 43 - .../asio/include/asio/detail/null_event.hpp | 106 - .../include/asio/detail/null_fenced_block.hpp | 47 - .../asio/include/asio/detail/null_global.hpp | 59 - .../asio/include/asio/detail/null_mutex.hpp | 64 - .../asio/include/asio/detail/null_reactor.hpp | 68 - .../asio/detail/null_signal_blocker.hpp | 69 - .../asio/detail/null_socket_service.hpp | 519 - .../include/asio/detail/null_static_mutex.hpp | 60 - .../asio/include/asio/detail/null_thread.hpp | 67 - .../asio/include/asio/detail/null_tss_ptr.hpp | 68 - .../asio/include/asio/detail/object_pool.hpp | 171 - .../asio/detail/old_win_sdk_compat.hpp | 214 - .../asio/include/asio/detail/op_queue.hpp | 162 - .../asio/include/asio/detail/operation.hpp | 38 - .../asio/detail/pipe_select_interrupter.hpp | 89 - .../asio/include/asio/detail/pop_options.hpp | 141 - .../asio/include/asio/detail/posix_event.hpp | 175 - .../asio/detail/posix_fd_set_adapter.hpp | 118 - .../asio/include/asio/detail/posix_global.hpp | 80 - .../asio/include/asio/detail/posix_mutex.hpp | 76 - .../asio/detail/posix_signal_blocker.hpp | 85 - .../asio/detail/posix_static_mutex.hpp | 64 - .../asio/include/asio/detail/posix_thread.hpp | 109 - .../include/asio/detail/posix_tss_ptr.hpp | 79 - .../asio/include/asio/detail/push_options.hpp | 191 - .../detail/reactive_descriptor_service.hpp | 416 - .../asio/detail/reactive_null_buffers_op.hpp | 98 - .../detail/reactive_serial_port_service.hpp | 237 - .../asio/detail/reactive_socket_accept_op.hpp | 242 - .../detail/reactive_socket_connect_op.hpp | 123 - .../asio/detail/reactive_socket_recv_op.hpp | 159 - .../detail/reactive_socket_recvfrom_op.hpp | 164 - .../detail/reactive_socket_recvmsg_op.hpp | 145 - .../asio/detail/reactive_socket_send_op.hpp | 162 - .../asio/detail/reactive_socket_sendto_op.hpp | 156 - .../asio/detail/reactive_socket_service.hpp | 528 - .../detail/reactive_socket_service_base.hpp | 541 - .../include/asio/detail/reactive_wait_op.hpp | 98 - .../asio/asio/include/asio/detail/reactor.hpp | 32 - .../asio/include/asio/detail/reactor_fwd.hpp | 40 - .../asio/include/asio/detail/reactor_op.hpp | 67 - .../include/asio/detail/reactor_op_queue.hpp | 168 - .../asio/detail/recycling_allocator.hpp | 106 - .../asio/include/asio/detail/regex_fwd.hpp | 35 - .../asio/detail/resolve_endpoint_op.hpp | 140 - .../asio/include/asio/detail/resolve_op.hpp | 45 - .../include/asio/detail/resolve_query_op.hpp | 150 - .../include/asio/detail/resolver_service.hpp | 145 - .../asio/detail/resolver_service_base.hpp | 158 - .../asio/include/asio/detail/scheduler.hpp | 232 - .../asio/detail/scheduler_operation.hpp | 78 - .../asio/detail/scheduler_thread_info.hpp | 40 - .../asio/include/asio/detail/scoped_lock.hpp | 101 - .../asio/include/asio/detail/scoped_ptr.hpp | 87 - .../asio/detail/select_interrupter.hpp | 46 - .../include/asio/detail/select_reactor.hpp | 238 - .../include/asio/detail/service_registry.hpp | 164 - .../include/asio/detail/signal_blocker.hpp | 44 - .../include/asio/detail/signal_handler.hpp | 90 - .../asio/include/asio/detail/signal_init.hpp | 47 - .../asio/include/asio/detail/signal_op.hpp | 49 - .../asio/detail/signal_set_service.hpp | 229 - .../include/asio/detail/socket_holder.hpp | 98 - .../asio/include/asio/detail/socket_ops.hpp | 383 - .../include/asio/detail/socket_option.hpp | 316 - .../asio/detail/socket_select_interrupter.hpp | 91 - .../asio/include/asio/detail/socket_types.hpp | 417 - .../asio/detail/solaris_fenced_block.hpp | 62 - .../include/asio/detail/source_location.hpp | 45 - .../asio/include/asio/detail/static_mutex.hpp | 52 - .../asio/include/asio/detail/std_event.hpp | 188 - .../include/asio/detail/std_fenced_block.hpp | 62 - .../asio/include/asio/detail/std_global.hpp | 70 - .../asio/include/asio/detail/std_mutex.hpp | 73 - .../include/asio/detail/std_static_mutex.hpp | 81 - .../asio/include/asio/detail/std_thread.hpp | 71 - .../asio/detail/strand_executor_service.hpp | 166 - .../include/asio/detail/strand_service.hpp | 145 - .../asio/include/asio/detail/string_view.hpp | 47 - .../asio/asio/include/asio/detail/thread.hpp | 60 - .../include/asio/detail/thread_context.hpp | 42 - .../asio/include/asio/detail/thread_group.hpp | 99 - .../include/asio/detail/thread_info_base.hpp | 190 - .../asio/include/asio/detail/throw_error.hpp | 53 - .../include/asio/detail/throw_exception.hpp | 51 - .../asio/include/asio/detail/timer_queue.hpp | 360 - .../include/asio/detail/timer_queue_base.hpp | 68 - .../include/asio/detail/timer_queue_ptime.hpp | 99 - .../include/asio/detail/timer_queue_set.hpp | 66 - .../include/asio/detail/timer_scheduler.hpp | 35 - .../asio/detail/timer_scheduler_fwd.hpp | 40 - .../asio/asio/include/asio/detail/tss_ptr.hpp | 69 - .../asio/include/asio/detail/type_traits.hpp | 148 - .../asio/detail/variadic_templates.hpp | 294 - .../asio/include/asio/detail/wait_handler.hpp | 90 - .../asio/asio/include/asio/detail/wait_op.hpp | 45 - .../asio/include/asio/detail/win_event.hpp | 164 - .../asio/detail/win_fd_set_adapter.hpp | 149 - .../include/asio/detail/win_fenced_block.hpp | 90 - .../asio/include/asio/detail/win_global.hpp | 71 - .../asio/detail/win_iocp_handle_read_op.hpp | 117 - .../asio/detail/win_iocp_handle_service.hpp | 335 - .../asio/detail/win_iocp_handle_write_op.hpp | 110 - .../asio/detail/win_iocp_io_context.hpp | 342 - .../asio/detail/win_iocp_null_buffers_op.hpp | 127 - .../asio/detail/win_iocp_operation.hpp | 96 - .../asio/detail/win_iocp_overlapped_op.hpp | 96 - .../asio/detail/win_iocp_overlapped_ptr.hpp | 171 - .../detail/win_iocp_serial_port_service.hpp | 232 - .../asio/detail/win_iocp_socket_accept_op.hpp | 312 - .../detail/win_iocp_socket_connect_op.hpp | 135 - .../asio/detail/win_iocp_socket_recv_op.hpp | 124 - .../detail/win_iocp_socket_recvfrom_op.hpp | 133 - .../detail/win_iocp_socket_recvmsg_op.hpp | 125 - .../asio/detail/win_iocp_socket_send_op.hpp | 118 - .../asio/detail/win_iocp_socket_service.hpp | 581 - .../detail/win_iocp_socket_service_base.hpp | 600 - .../asio/detail/win_iocp_thread_info.hpp | 34 - .../include/asio/detail/win_iocp_wait_op.hpp | 128 - .../asio/include/asio/detail/win_mutex.hpp | 78 - .../asio/detail/win_object_handle_service.hpp | 195 - .../include/asio/detail/win_static_mutex.hpp | 74 - .../asio/include/asio/detail/win_thread.hpp | 147 - .../asio/include/asio/detail/win_tss_ptr.hpp | 79 - .../include/asio/detail/winapp_thread.hpp | 124 - .../asio/include/asio/detail/wince_thread.hpp | 124 - .../asio/detail/winrt_async_manager.hpp | 305 - .../include/asio/detail/winrt_async_op.hpp | 65 - .../include/asio/detail/winrt_resolve_op.hpp | 125 - .../asio/detail/winrt_resolver_service.hpp | 212 - .../asio/detail/winrt_socket_connect_op.hpp | 98 - .../asio/detail/winrt_socket_recv_op.hpp | 119 - .../asio/detail/winrt_socket_send_op.hpp | 110 - .../asio/detail/winrt_ssocket_service.hpp | 250 - .../detail/winrt_ssocket_service_base.hpp | 362 - .../asio/detail/winrt_timer_scheduler.hpp | 147 - .../asio/include/asio/detail/winrt_utils.hpp | 106 - .../asio/include/asio/detail/winsock_init.hpp | 128 - .../include/asio/detail/work_dispatcher.hpp | 148 - .../include/asio/detail/wrapped_handler.hpp | 327 - .../asio/asio/include/asio/dispatch.hpp | 121 - .../asio/asio/include/asio/error.hpp | 356 - .../asio/asio/include/asio/error_code.hpp | 202 - .../asio/asio/include/asio/execution.hpp | 48 - .../asio/include/asio/execution/allocator.hpp | 249 - .../include/asio/execution/any_executor.hpp | 2346 - .../include/asio/execution/bad_executor.hpp | 47 - .../asio/include/asio/execution/blocking.hpp | 1351 - .../asio/execution/blocking_adaptation.hpp | 1064 - .../include/asio/execution/bulk_execute.hpp | 390 - .../include/asio/execution/bulk_guarantee.hpp | 1018 - .../asio/include/asio/execution/connect.hpp | 486 - .../asio/include/asio/execution/context.hpp | 185 - .../include/asio/execution/context_as.hpp | 201 - .../asio/execution/detail/as_invocable.hpp | 152 - .../asio/execution/detail/as_operation.hpp | 105 - .../asio/execution/detail/as_receiver.hpp | 128 - .../asio/execution/detail/bulk_sender.hpp | 261 - .../asio/execution/detail/submit_receiver.hpp | 233 - .../asio/execution/detail/void_receiver.hpp | 90 - .../asio/include/asio/execution/execute.hpp | 264 - .../asio/include/asio/execution/executor.hpp | 238 - .../asio/execution/impl/bad_executor.ipp | 40 - .../impl/receiver_invocation_error.ipp | 36 - .../asio/execution/invocable_archetype.hpp | 71 - .../asio/include/asio/execution/mapping.hpp | 917 - .../asio/include/asio/execution/occupancy.hpp | 178 - .../asio/execution/operation_state.hpp | 94 - .../asio/execution/outstanding_work.hpp | 721 - .../include/asio/execution/prefer_only.hpp | 327 - .../asio/include/asio/execution/receiver.hpp | 280 - .../execution/receiver_invocation_error.hpp | 48 - .../include/asio/execution/relationship.hpp | 720 - .../asio/include/asio/execution/schedule.hpp | 290 - .../asio/include/asio/execution/scheduler.hpp | 86 - .../asio/include/asio/execution/sender.hpp | 311 - .../asio/include/asio/execution/set_done.hpp | 253 - .../asio/include/asio/execution/set_error.hpp | 253 - .../asio/include/asio/execution/set_value.hpp | 486 - .../asio/include/asio/execution/start.hpp | 250 - .../asio/include/asio/execution/submit.hpp | 450 - .../asio/include/asio/execution_context.hpp | 412 - .../asio/asio/include/asio/executor.hpp | 347 - .../asio/include/asio/executor_work_guard.hpp | 287 - .../include/asio/experimental/as_single.hpp | 135 - .../asio/experimental/impl/as_single.hpp | 225 - .../include/asio/generic/basic_endpoint.hpp | 193 - .../asio/generic/datagram_protocol.hpp | 123 - .../include/asio/generic/detail/endpoint.hpp | 133 - .../asio/generic/detail/impl/endpoint.ipp | 110 - .../include/asio/generic/raw_protocol.hpp | 121 - .../asio/generic/seq_packet_protocol.hpp | 122 - .../include/asio/generic/stream_protocol.hpp | 127 - .../asio/include/asio/handler_alloc_hook.hpp | 104 - .../asio/handler_continuation_hook.hpp | 54 - .../asio/include/asio/handler_invoke_hook.hpp | 111 - .../include/asio/high_resolution_timer.hpp | 44 - .../asio/asio/include/asio/impl/awaitable.hpp | 436 - .../asio/impl/buffered_read_stream.hpp | 529 - .../asio/impl/buffered_write_stream.hpp | 509 - .../asio/asio/include/asio/impl/co_spawn.hpp | 298 - .../asio/asio/include/asio/impl/compose.hpp | 635 - .../asio/asio/include/asio/impl/connect.hpp | 916 - .../asio/asio/include/asio/impl/defer.hpp | 248 - .../asio/asio/include/asio/impl/detached.hpp | 130 - .../asio/asio/include/asio/impl/dispatch.hpp | 243 - .../asio/asio/include/asio/impl/error.ipp | 128 - .../asio/include/asio/impl/error_code.ipp | 206 - .../include/asio/impl/execution_context.hpp | 109 - .../include/asio/impl/execution_context.ipp | 82 - .../asio/asio/include/asio/impl/executor.hpp | 301 - .../asio/asio/include/asio/impl/executor.ipp | 43 - .../include/asio/impl/handler_alloc_hook.ipp | 61 - .../asio/include/asio/impl/io_context.hpp | 440 - .../asio/include/asio/impl/io_context.ipp | 175 - .../include/asio/impl/multiple_exceptions.ipp | 49 - .../asio/asio/include/asio/impl/post.hpp | 248 - .../asio/asio/include/asio/impl/read.hpp | 1202 - .../asio/asio/include/asio/impl/read_at.hpp | 744 - .../asio/include/asio/impl/read_until.hpp | 3335 - .../asio/include/asio/impl/redirect_error.hpp | 391 - .../include/asio/impl/serial_port_base.hpp | 59 - .../include/asio/impl/serial_port_base.ipp | 554 - .../asio/asio/include/asio/impl/spawn.hpp | 527 - .../asio/asio/include/asio/impl/src.cpp | 25 - .../asio/asio/include/asio/impl/src.hpp | 85 - .../asio/include/asio/impl/system_context.hpp | 34 - .../asio/include/asio/impl/system_context.ipp | 92 - .../include/asio/impl/system_executor.hpp | 186 - .../asio/include/asio/impl/thread_pool.hpp | 350 - .../asio/include/asio/impl/thread_pool.ipp | 141 - .../asio/include/asio/impl/use_awaitable.hpp | 279 - .../asio/include/asio/impl/use_future.hpp | 1028 - .../asio/asio/include/asio/impl/write.hpp | 1104 - .../asio/asio/include/asio/impl/write_at.hpp | 666 - .../asio/asio/include/asio/io_context.hpp | 1530 - .../asio/include/asio/io_context_strand.hpp | 376 - .../asio/asio/include/asio/io_service.hpp | 33 - .../asio/include/asio/io_service_strand.hpp | 20 - .../asio/asio/include/asio/ip/address.hpp | 268 - .../asio/asio/include/asio/ip/address_v4.hpp | 335 - .../include/asio/ip/address_v4_iterator.hpp | 162 - .../asio/include/asio/ip/address_v4_range.hpp | 134 - .../asio/asio/include/asio/ip/address_v6.hpp | 341 - .../include/asio/ip/address_v6_iterator.hpp | 183 - .../asio/include/asio/ip/address_v6_range.hpp | 129 - .../asio/include/asio/ip/bad_address_cast.hpp | 53 - .../asio/include/asio/ip/basic_endpoint.hpp | 264 - .../asio/include/asio/ip/basic_resolver.hpp | 1076 - .../include/asio/ip/basic_resolver_entry.hpp | 113 - .../asio/ip/basic_resolver_iterator.hpp | 192 - .../include/asio/ip/basic_resolver_query.hpp | 244 - .../asio/ip/basic_resolver_results.hpp | 311 - .../asio/include/asio/ip/detail/endpoint.hpp | 141 - .../include/asio/ip/detail/impl/endpoint.ipp | 199 - .../include/asio/ip/detail/socket_option.hpp | 566 - .../asio/asio/include/asio/ip/host_name.hpp | 42 - .../asio/asio/include/asio/ip/icmp.hpp | 115 - .../asio/include/asio/ip/impl/address.hpp | 67 - .../asio/include/asio/ip/impl/address.ipp | 239 - .../asio/include/asio/ip/impl/address_v4.hpp | 67 - .../asio/include/asio/ip/impl/address_v4.ipp | 210 - .../asio/include/asio/ip/impl/address_v6.hpp | 67 - .../asio/include/asio/ip/impl/address_v6.ipp | 350 - .../include/asio/ip/impl/basic_endpoint.hpp | 43 - .../asio/include/asio/ip/impl/host_name.ipp | 54 - .../asio/include/asio/ip/impl/network_v4.hpp | 54 - .../asio/include/asio/ip/impl/network_v4.ipp | 216 - .../asio/include/asio/ip/impl/network_v6.hpp | 53 - .../asio/include/asio/ip/impl/network_v6.ipp | 185 - .../asio/asio/include/asio/ip/multicast.hpp | 191 - .../asio/asio/include/asio/ip/network_v4.hpp | 261 - .../asio/asio/include/asio/ip/network_v6.hpp | 235 - .../asio/include/asio/ip/resolver_base.hpp | 129 - .../include/asio/ip/resolver_query_base.hpp | 43 - .../asio/asio/include/asio/ip/tcp.hpp | 155 - .../asio/asio/include/asio/ip/udp.hpp | 111 - .../asio/asio/include/asio/ip/unicast.hpp | 70 - .../asio/asio/include/asio/ip/v6_only.hpp | 69 - .../include/asio/is_applicable_property.hpp | 61 - .../asio/asio/include/asio/is_executor.hpp | 46 - .../asio/include/asio/is_read_buffered.hpp | 59 - .../asio/include/asio/is_write_buffered.hpp | 59 - .../include/asio/local/basic_endpoint.hpp | 247 - .../asio/include/asio/local/connect_pair.hpp | 101 - .../include/asio/local/datagram_protocol.hpp | 80 - .../include/asio/local/detail/endpoint.hpp | 139 - .../asio/local/detail/impl/endpoint.ipp | 136 - .../include/asio/local/stream_protocol.hpp | 90 - .../asio/include/asio/multiple_exceptions.hpp | 58 - .../asio/asio/include/asio/packaged_task.hpp | 126 - .../asio/asio/include/asio/placeholders.hpp | 151 - .../include/asio/posix/basic_descriptor.hpp | 697 - .../asio/posix/basic_stream_descriptor.hpp | 474 - .../asio/include/asio/posix/descriptor.hpp | 37 - .../include/asio/posix/descriptor_base.hpp | 90 - .../include/asio/posix/stream_descriptor.hpp | 37 - .../asio/asio/include/asio/post.hpp | 126 - .../asio/asio/include/asio/prefer.hpp | 656 - .../asio/asio/include/asio/query.hpp | 296 - .../asio/asio/include/asio/read.hpp | 1288 - .../asio/asio/include/asio/read_at.hpp | 694 - .../asio/asio/include/asio/read_until.hpp | 2863 - .../asio/asio/include/asio/redirect_error.hpp | 66 - .../asio/asio/include/asio/require.hpp | 524 - .../asio/include/asio/require_concept.hpp | 310 - .../asio/asio/include/asio/serial_port.hpp | 36 - .../asio/include/asio/serial_port_base.hpp | 167 - .../asio/asio/include/asio/signal_set.hpp | 28 - .../asio/asio/include/asio/socket_base.hpp | 559 - .../asio/asio/include/asio/spawn.hpp | 344 - .../thirdparty/asio/asio/include/asio/ssl.hpp | 28 - .../asio/asio/include/asio/ssl/context.hpp | 761 - .../asio/include/asio/ssl/context_base.hpp | 209 - .../asio/ssl/detail/buffered_handshake_op.hpp | 119 - .../asio/include/asio/ssl/detail/engine.hpp | 165 - .../include/asio/ssl/detail/handshake_op.hpp | 67 - .../include/asio/ssl/detail/impl/engine.ipp | 349 - .../asio/ssl/detail/impl/openssl_init.ipp | 165 - .../asio/asio/include/asio/ssl/detail/io.hpp | 416 - .../include/asio/ssl/detail/openssl_init.hpp | 101 - .../include/asio/ssl/detail/openssl_types.hpp | 34 - .../asio/ssl/detail/password_callback.hpp | 66 - .../asio/include/asio/ssl/detail/read_op.hpp | 72 - .../include/asio/ssl/detail/shutdown_op.hpp | 69 - .../include/asio/ssl/detail/stream_core.hpp | 169 - .../asio/ssl/detail/verify_callback.hpp | 62 - .../asio/include/asio/ssl/detail/write_op.hpp | 76 - .../asio/asio/include/asio/ssl/error.hpp | 125 - .../asio/ssl/host_name_verification.hpp | 90 - .../asio/include/asio/ssl/impl/context.hpp | 67 - .../asio/include/asio/ssl/impl/context.ipp | 1238 - .../asio/asio/include/asio/ssl/impl/error.ipp | 102 - .../asio/ssl/impl/host_name_verification.ipp | 73 - .../asio/ssl/impl/rfc2818_verification.ipp | 164 - .../asio/asio/include/asio/ssl/impl/src.hpp | 29 - .../include/asio/ssl/rfc2818_verification.hpp | 98 - .../asio/asio/include/asio/ssl/stream.hpp | 900 - .../asio/include/asio/ssl/stream_base.hpp | 52 - .../asio/include/asio/ssl/verify_context.hpp | 67 - .../asio/include/asio/ssl/verify_mode.hpp | 63 - .../asio/include/asio/static_thread_pool.hpp | 31 - .../asio/asio/include/asio/steady_timer.hpp | 42 - .../asio/asio/include/asio/strand.hpp | 540 - .../asio/asio/include/asio/streambuf.hpp | 33 - .../asio/asio/include/asio/system_context.hpp | 90 - .../asio/asio/include/asio/system_error.hpp | 131 - .../asio/include/asio/system_executor.hpp | 662 - .../asio/asio/include/asio/system_timer.hpp | 42 - .../asio/asio/include/asio/this_coro.hpp | 45 - .../asio/asio/include/asio/thread.hpp | 92 - .../asio/asio/include/asio/thread_pool.hpp | 1111 - .../asio/asio/include/asio/time_traits.hpp | 86 - .../include/asio/traits/bulk_execute_free.hpp | 114 - .../asio/traits/bulk_execute_member.hpp | 114 - .../asio/include/asio/traits/connect_free.hpp | 112 - .../include/asio/traits/connect_member.hpp | 112 - .../asio/traits/equality_comparable.hpp | 104 - .../asio/include/asio/traits/execute_free.hpp | 108 - .../include/asio/traits/execute_member.hpp | 108 - .../asio/include/asio/traits/prefer_free.hpp | 108 - .../include/asio/traits/prefer_member.hpp | 108 - .../asio/include/asio/traits/query_free.hpp | 108 - .../asio/include/asio/traits/query_member.hpp | 108 - .../traits/query_static_constexpr_member.hpp | 108 - .../asio/traits/require_concept_free.hpp | 108 - .../asio/traits/require_concept_member.hpp | 108 - .../asio/include/asio/traits/require_free.hpp | 108 - .../include/asio/traits/require_member.hpp | 108 - .../include/asio/traits/schedule_free.hpp | 108 - .../include/asio/traits/schedule_member.hpp | 108 - .../include/asio/traits/set_done_free.hpp | 108 - .../include/asio/traits/set_done_member.hpp | 108 - .../include/asio/traits/set_error_free.hpp | 112 - .../include/asio/traits/set_error_member.hpp | 112 - .../include/asio/traits/set_value_free.hpp | 234 - .../include/asio/traits/set_value_member.hpp | 234 - .../asio/include/asio/traits/start_free.hpp | 108 - .../asio/include/asio/traits/start_member.hpp | 108 - .../asio/include/asio/traits/static_query.hpp | 108 - .../include/asio/traits/static_require.hpp | 123 - .../asio/traits/static_require_concept.hpp | 124 - .../asio/include/asio/traits/submit_free.hpp | 112 - .../include/asio/traits/submit_member.hpp | 112 - .../asio/asio/include/asio/ts/buffer.hpp | 24 - .../asio/asio/include/asio/ts/executor.hpp | 35 - .../asio/asio/include/asio/ts/internet.hpp | 40 - .../asio/asio/include/asio/ts/io_context.hpp | 20 - .../asio/asio/include/asio/ts/net.hpp | 26 - .../asio/asio/include/asio/ts/netfwd.hpp | 262 - .../asio/asio/include/asio/ts/socket.hpp | 27 - .../asio/asio/include/asio/ts/timer.hpp | 26 - .../asio/asio/include/asio/unyield.hpp | 21 - .../asio/asio/include/asio/use_awaitable.hpp | 169 - .../asio/asio/include/asio/use_future.hpp | 160 - .../asio/asio/include/asio/uses_executor.hpp | 71 - .../asio/asio/include/asio/version.hpp | 23 - .../asio/asio/include/asio/wait_traits.hpp | 56 - .../asio/windows/basic_object_handle.hpp | 435 - .../asio/windows/basic_overlapped_handle.hpp | 361 - .../windows/basic_random_access_handle.hpp | 490 - .../asio/windows/basic_stream_handle.hpp | 474 - .../include/asio/windows/object_handle.hpp | 38 - .../asio/windows/overlapped_handle.hpp | 39 - .../include/asio/windows/overlapped_ptr.hpp | 145 - .../asio/windows/random_access_handle.hpp | 37 - .../include/asio/windows/stream_handle.hpp | 37 - .../asio/asio/include/asio/write.hpp | 1246 - .../asio/asio/include/asio/write_at.hpp | 702 - .../asio/asio/include/asio/yield.hpp | 23 - .../thirdparty/asio/asio/release.pl | 440 - .../thirdparty/asio/asio/src/.gitignore | 11 - .../thirdparty/asio/asio/src/Makefile.am | 29 - .../thirdparty/asio/asio/src/Makefile.mgw | 300 - .../thirdparty/asio/asio/src/Makefile.msc | 533 - .../thirdparty/asio/asio/src/asio.cpp | 11 - .../thirdparty/asio/asio/src/asio_ssl.cpp | 11 - .../thirdparty/asio/asio/src/doc/.gitignore | 5 - .../thirdparty/asio/asio/src/doc/Jamfile.v2 | 62 - .../thirdparty/asio/asio/src/doc/asio.png | Bin 3164 -> 0 bytes .../thirdparty/asio/asio/src/doc/asio.qbk | 140 - .../thirdparty/asio/asio/src/doc/asioref.sty | 90 - .../thirdparty/asio/asio/src/doc/asioref.xsl | 94 - .../asio/asio/src/doc/boost_bind_dox.txt | 5 - .../thirdparty/asio/asio/src/doc/doxy2qbk.pl | 22 - .../thirdparty/asio/asio/src/doc/examples.qbk | 568 - .../thirdparty/asio/asio/src/doc/history.qbk | 2134 - .../thirdparty/asio/asio/src/doc/index.xml | 13 - .../thirdparty/asio/asio/src/doc/makepdf.pl | 26 - .../thirdparty/asio/asio/src/doc/net_ts.qbk | 479 - .../asio/asio/src/doc/noncopyable_dox.txt | 3 - .../thirdparty/asio/asio/src/doc/overview.qbk | 103 - .../asio/asio/src/doc/overview/allocation.qbk | 89 - .../asio/asio/src/doc/overview/async.qbk | 185 - .../asio/asio/src/doc/overview/async_op1.dot | 78 - .../asio/asio/src/doc/overview/async_op1.png | Bin 35992 -> 0 bytes .../asio/asio/src/doc/overview/async_op2.dot | 78 - .../asio/asio/src/doc/overview/async_op2.png | Bin 36247 -> 0 bytes .../asio/asio/src/doc/overview/basics.qbk | 111 - .../asio/src/doc/overview/bsd_sockets.qbk | 270 - .../asio/asio/src/doc/overview/buffers.qbk | 163 - .../src/doc/overview/concurrency_hint.qbk | 88 - .../asio/asio/src/doc/overview/coroutine.qbk | 51 - .../asio/src/doc/overview/coroutines_ts.qbk | 94 - .../asio/asio/src/doc/overview/cpp2011.qbk | 271 - .../src/doc/overview/handler_tracking.qbk | 281 - .../asio/src/doc/overview/implementation.qbk | 314 - .../asio/asio/src/doc/overview/iostreams.qbk | 72 - .../asio/asio/src/doc/overview/line_based.qbk | 118 - .../asio/src/doc/overview/other_protocols.qbk | 94 - .../asio/asio/src/doc/overview/posix.qbk | 152 - .../asio/asio/src/doc/overview/proactor.dot | 100 - .../asio/asio/src/doc/overview/proactor.png | Bin 30877 -> 0 bytes .../asio/asio/src/doc/overview/protocols.qbk | 149 - .../asio/asio/src/doc/overview/rationale.qbk | 54 - .../asio/asio/src/doc/overview/reactor.qbk | 44 - .../asio/src/doc/overview/serial_ports.qbk | 45 - .../asio/asio/src/doc/overview/signals.qbk | 44 - .../asio/asio/src/doc/overview/spawn.qbk | 102 - .../asio/asio/src/doc/overview/ssl.qbk | 124 - .../asio/asio/src/doc/overview/strands.qbk | 114 - .../asio/asio/src/doc/overview/streams.qbk | 62 - .../asio/asio/src/doc/overview/sync_op.dot | 67 - .../asio/asio/src/doc/overview/sync_op.png | Bin 30701 -> 0 bytes .../asio/asio/src/doc/overview/threads.qbk | 67 - .../asio/asio/src/doc/overview/timers.qbk | 52 - .../asio/asio/src/doc/overview/windows.qbk | 126 - .../asio/asio/src/doc/platform_macros.pl | 88 - .../asio/asio/src/doc/platform_macros.qbk | 585 - .../asio/asio/src/doc/project-root.jam | 1 - .../thirdparty/asio/asio/src/doc/quickref.xml | 732 - .../asio/asio/src/doc/reference.dox | 269 - .../asio/asio/src/doc/reference.qbk | 138347 --------------- .../asio/asio/src/doc/reference.xsl | 1925 - .../asio/asio/src/doc/release_checklist.htm | 68 - .../src/doc/requirements/AcceptHandler.qbk | 72 - .../doc/requirements/AcceptableProtocol.qbk | 25 - .../AsyncRandomAccessReadDevice.qbk | 56 - .../AsyncRandomAccessWriteDevice.qbk | 57 - .../src/doc/requirements/AsyncReadStream.qbk | 50 - .../src/doc/requirements/AsyncWriteStream.qbk | 48 - .../requirements/BufferedHandshakeHandler.qbk | 55 - .../doc/requirements/CompletionCondition.qbk | 42 - .../doc/requirements/CompletionHandler.qbk | 63 - .../src/doc/requirements/ConnectCondition.qbk | 34 - .../src/doc/requirements/ConnectHandler.qbk | 72 - .../doc/requirements/ConstBufferSequence.qbk | 53 - .../src/doc/requirements/DynamicBuffer.qbk | 16 - .../src/doc/requirements/DynamicBuffer_v1.qbk | 93 - .../src/doc/requirements/DynamicBuffer_v2.qbk | 94 - .../asio/src/doc/requirements/Endpoint.qbk | 97 - .../src/doc/requirements/EndpointSequence.qbk | 30 - .../src/doc/requirements/ExecutionContext.qbk | 36 - .../asio/src/doc/requirements/Executor.qbk | 222 - .../requirements/GettableSerialPortOption.qbk | 33 - .../doc/requirements/GettableSocketOption.qbk | 67 - .../asio/src/doc/requirements/Handler.qbk | 64 - .../src/doc/requirements/HandshakeHandler.qbk | 72 - .../src/doc/requirements/InternetProtocol.qbk | 47 - .../src/doc/requirements/IoControlCommand.qbk | 34 - .../src/doc/requirements/IoObjectService.qbk | 62 - .../requirements/IteratorConnectHandler.qbk | 81 - .../requirements/LegacyCompletionHandler.qbk | 65 - .../doc/requirements/MoveAcceptHandler.qbk | 61 - .../requirements/MutableBufferSequence.qbk | 54 - .../src/doc/requirements/OperationState.qbk | 34 - .../src/doc/requirements/ProtoAllocator.qbk | 19 - .../asio/src/doc/requirements/Protocol.qbk | 56 - .../doc/requirements/RangeConnectHandler.qbk | 82 - .../asio/src/doc/requirements/ReadHandler.qbk | 79 - .../asio/src/doc/requirements/Receiver.qbk | 51 - .../src/doc/requirements/ResolveHandler.qbk | 82 - .../asio/src/doc/requirements/Scheduler.qbk | 90 - .../asio/asio/src/doc/requirements/Sender.qbk | 60 - .../asio/src/doc/requirements/Service.qbk | 40 - .../requirements/SettableSerialPortOption.qbk | 33 - .../doc/requirements/SettableSocketOption.qbk | 54 - .../src/doc/requirements/ShutdownHandler.qbk | 72 - .../src/doc/requirements/SignalHandler.qbk | 79 - .../SyncRandomAccessReadDevice.qbk | 49 - .../SyncRandomAccessWriteDevice.qbk | 49 - .../src/doc/requirements/SyncReadStream.qbk | 41 - .../src/doc/requirements/SyncWriteStream.qbk | 39 - .../asio/src/doc/requirements/TimeTraits.qbk | 72 - .../asio/src/doc/requirements/WaitHandler.qbk | 72 - .../asio/src/doc/requirements/WaitTraits.qbk | 52 - .../src/doc/requirements/WriteHandler.qbk | 79 - .../requirements/asynchronous_operations.qbk | 300 - .../asynchronous_socket_operations.qbk | 39 - .../requirements/read_write_operations.qbk | 34 - .../synchronous_socket_operations.qbk | 37 - .../asio/asio/src/doc/std_exception_dox.txt | 7 - .../asio/asio/src/doc/std_executors.qbk | 216 - .../thirdparty/asio/asio/src/doc/tutorial.dox | 226 - .../thirdparty/asio/asio/src/doc/tutorial.qbk | 2397 - .../thirdparty/asio/asio/src/doc/tutorial.xsl | 444 - .../thirdparty/asio/asio/src/doc/using.qbk | 419 - .../asio/asio/src/examples/cpp03/Makefile.am | 251 - .../src/examples/cpp03/allocation/.gitignore | 10 - .../src/examples/cpp03/allocation/server.cpp | 285 - .../src/examples/cpp03/buffers/.gitignore | 10 - .../cpp03/buffers/reference_counted.cpp | 131 - .../asio/src/examples/cpp03/chat/.gitignore | 11 - .../src/examples/cpp03/chat/chat_client.cpp | 177 - .../src/examples/cpp03/chat/chat_message.hpp | 93 - .../src/examples/cpp03/chat/chat_server.cpp | 249 - .../examples/cpp03/chat/posix_chat_client.cpp | 204 - .../asio/src/examples/cpp03/echo/.gitignore | 11 - .../cpp03/echo/async_tcp_echo_server.cpp | 137 - .../cpp03/echo/async_udp_echo_server.cpp | 92 - .../cpp03/echo/blocking_tcp_echo_client.cpp | 59 - .../cpp03/echo/blocking_tcp_echo_server.cpp | 79 - .../cpp03/echo/blocking_udp_echo_client.cpp | 59 - .../cpp03/echo/blocking_udp_echo_server.cpp | 53 - .../asio/src/examples/cpp03/fork/.gitignore | 11 - .../asio/src/examples/cpp03/fork/daemon.cpp | 190 - .../cpp03/fork/process_per_connection.cpp | 161 - .../src/examples/cpp03/http/client/.gitignore | 10 - .../cpp03/http/client/async_client.cpp | 204 - .../cpp03/http/client/sync_client.cpp | 106 - .../examples/cpp03/http/doc_root/data_1K.html | 28 - .../examples/cpp03/http/doc_root/data_2K.html | 49 - .../examples/cpp03/http/doc_root/data_4K.html | 91 - .../examples/cpp03/http/doc_root/data_8K.html | 175 - .../src/examples/cpp03/http/server/.gitignore | 11 - .../examples/cpp03/http/server/connection.cpp | 99 - .../examples/cpp03/http/server/connection.hpp | 83 - .../cpp03/http/server/connection_manager.cpp | 38 - .../cpp03/http/server/connection_manager.hpp | 44 - .../src/examples/cpp03/http/server/header.hpp | 28 - .../src/examples/cpp03/http/server/main.cpp | 44 - .../examples/cpp03/http/server/mime_types.cpp | 46 - .../examples/cpp03/http/server/mime_types.hpp | 27 - .../src/examples/cpp03/http/server/reply.cpp | 256 - .../src/examples/cpp03/http/server/reply.hpp | 64 - .../examples/cpp03/http/server/request.hpp | 34 - .../cpp03/http/server/request_handler.cpp | 122 - .../cpp03/http/server/request_handler.hpp | 46 - .../cpp03/http/server/request_parser.cpp | 315 - .../cpp03/http/server/request_parser.hpp | 95 - .../src/examples/cpp03/http/server/server.cpp | 94 - .../src/examples/cpp03/http/server/server.hpp | 69 - .../examples/cpp03/http/server2/.gitignore | 11 - .../cpp03/http/server2/connection.cpp | 93 - .../cpp03/http/server2/connection.hpp | 75 - .../examples/cpp03/http/server2/header.hpp | 28 - .../cpp03/http/server2/io_context_pool.cpp | 70 - .../cpp03/http/server2/io_context_pool.hpp | 56 - .../src/examples/cpp03/http/server2/main.cpp | 46 - .../cpp03/http/server2/mime_types.cpp | 46 - .../cpp03/http/server2/mime_types.hpp | 27 - .../src/examples/cpp03/http/server2/reply.cpp | 256 - .../src/examples/cpp03/http/server2/reply.hpp | 64 - .../examples/cpp03/http/server2/request.hpp | 34 - .../cpp03/http/server2/request_handler.cpp | 122 - .../cpp03/http/server2/request_handler.hpp | 46 - .../cpp03/http/server2/request_parser.cpp | 315 - .../cpp03/http/server2/request_parser.hpp | 95 - .../examples/cpp03/http/server2/server.cpp | 77 - .../examples/cpp03/http/server2/server.hpp | 68 - .../examples/cpp03/http/server3/.gitignore | 11 - .../cpp03/http/server3/connection.cpp | 94 - .../cpp03/http/server3/connection.hpp | 78 - .../examples/cpp03/http/server3/header.hpp | 28 - .../src/examples/cpp03/http/server3/main.cpp | 46 - .../cpp03/http/server3/mime_types.cpp | 46 - .../cpp03/http/server3/mime_types.hpp | 27 - .../src/examples/cpp03/http/server3/reply.cpp | 256 - .../src/examples/cpp03/http/server3/reply.hpp | 64 - .../examples/cpp03/http/server3/request.hpp | 34 - .../cpp03/http/server3/request_handler.cpp | 122 - .../cpp03/http/server3/request_handler.hpp | 46 - .../cpp03/http/server3/request_parser.cpp | 315 - .../cpp03/http/server3/request_parser.hpp | 95 - .../examples/cpp03/http/server3/server.cpp | 89 - .../examples/cpp03/http/server3/server.hpp | 70 - .../examples/cpp03/http/server4/.gitignore | 11 - .../cpp03/http/server4/file_handler.cpp | 122 - .../cpp03/http/server4/file_handler.hpp | 44 - .../examples/cpp03/http/server4/header.hpp | 28 - .../src/examples/cpp03/http/server4/main.cpp | 58 - .../cpp03/http/server4/mime_types.cpp | 46 - .../cpp03/http/server4/mime_types.hpp | 27 - .../src/examples/cpp03/http/server4/reply.cpp | 256 - .../src/examples/cpp03/http/server4/reply.hpp | 64 - .../examples/cpp03/http/server4/request.hpp | 46 - .../cpp03/http/server4/request_parser.cpp | 226 - .../cpp03/http/server4/request_parser.hpp | 78 - .../examples/cpp03/http/server4/server.cpp | 122 - .../examples/cpp03/http/server4/server.hpp | 73 - .../asio/src/examples/cpp03/icmp/.gitignore | 10 - .../src/examples/cpp03/icmp/icmp_header.hpp | 94 - .../src/examples/cpp03/icmp/ipv4_header.hpp | 102 - .../asio/src/examples/cpp03/icmp/ping.cpp | 163 - .../src/examples/cpp03/invocation/.gitignore | 10 - .../cpp03/invocation/prioritised_handlers.cpp | 171 - .../src/examples/cpp03/iostreams/.gitignore | 11 - .../cpp03/iostreams/daytime_client.cpp | 44 - .../cpp03/iostreams/daytime_server.cpp | 51 - .../examples/cpp03/iostreams/http_client.cpp | 91 - .../asio/src/examples/cpp03/local/.gitignore | 13 - .../src/examples/cpp03/local/connect_pair.cpp | 141 - .../examples/cpp03/local/iostream_client.cpp | 62 - .../examples/cpp03/local/stream_client.cpp | 61 - .../examples/cpp03/local/stream_server.cpp | 141 - .../src/examples/cpp03/multicast/.gitignore | 11 - .../src/examples/cpp03/multicast/receiver.cpp | 93 - .../src/examples/cpp03/multicast/sender.cpp | 98 - .../src/examples/cpp03/nonblocking/.gitignore | 10 - .../cpp03/nonblocking/third_party_lib.cpp | 240 - .../src/examples/cpp03/porthopper/.gitignore | 11 - .../src/examples/cpp03/porthopper/client.cpp | 192 - .../examples/cpp03/porthopper/protocol.hpp | 156 - .../src/examples/cpp03/porthopper/server.cpp | 187 - .../examples/cpp03/serialization/.gitignore | 11 - .../examples/cpp03/serialization/client.cpp | 125 - .../cpp03/serialization/connection.hpp | 188 - .../examples/cpp03/serialization/server.cpp | 123 - .../examples/cpp03/serialization/stock.hpp | 50 - .../src/examples/cpp03/services/.gitignore | 11 - .../examples/cpp03/services/basic_logger.hpp | 77 - .../cpp03/services/daytime_client.cpp | 101 - .../src/examples/cpp03/services/logger.hpp | 24 - .../cpp03/services/logger_service.cpp | 11 - .../cpp03/services/logger_service.hpp | 145 - .../asio/src/examples/cpp03/socks4/.gitignore | 10 - .../asio/src/examples/cpp03/socks4/socks4.hpp | 144 - .../src/examples/cpp03/socks4/sync_client.cpp | 94 - .../asio/src/examples/cpp03/spawn/.gitignore | 12 - .../src/examples/cpp03/spawn/echo_server.cpp | 122 - .../examples/cpp03/spawn/parallel_grep.cpp | 89 - .../asio/src/examples/cpp03/ssl/.gitignore | 11 - .../asio/asio/src/examples/cpp03/ssl/README | 8 - .../asio/asio/src/examples/cpp03/ssl/ca.pem | 49 - .../asio/src/examples/cpp03/ssl/client.cpp | 157 - .../asio/src/examples/cpp03/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp03/ssl/server.cpp | 170 - .../asio/src/examples/cpp03/ssl/server.pem | 71 - .../src/examples/cpp03/timeouts/.gitignore | 11 - .../cpp03/timeouts/async_tcp_client.cpp | 311 - .../cpp03/timeouts/blocking_tcp_client.cpp | 191 - .../timeouts/blocking_token_tcp_client.cpp | 201 - .../cpp03/timeouts/blocking_udp_client.cpp | 154 - .../src/examples/cpp03/timeouts/server.cpp | 433 - .../asio/src/examples/cpp03/timers/.gitignore | 10 - .../examples/cpp03/timers/time_t_timer.cpp | 106 - .../cpp03/tutorial/daytime1/.gitignore | 10 - .../cpp03/tutorial/daytime1/client.cpp | 57 - .../cpp03/tutorial/daytime2/.gitignore | 10 - .../cpp03/tutorial/daytime2/server.cpp | 50 - .../cpp03/tutorial/daytime3/.gitignore | 10 - .../cpp03/tutorial/daytime3/server.cpp | 119 - .../cpp03/tutorial/daytime4/.gitignore | 10 - .../cpp03/tutorial/daytime4/client.cpp | 52 - .../cpp03/tutorial/daytime5/.gitignore | 10 - .../cpp03/tutorial/daytime5/server.cpp | 53 - .../cpp03/tutorial/daytime6/.gitignore | 10 - .../cpp03/tutorial/daytime6/server.cpp | 89 - .../cpp03/tutorial/daytime7/.gitignore | 10 - .../cpp03/tutorial/daytime7/server.cpp | 160 - .../examples/cpp03/tutorial/daytime_dox.txt | 498 - .../src/examples/cpp03/tutorial/index_dox.txt | 48 - .../examples/cpp03/tutorial/timer1/.gitignore | 10 - .../examples/cpp03/tutorial/timer1/timer.cpp | 24 - .../examples/cpp03/tutorial/timer2/.gitignore | 10 - .../examples/cpp03/tutorial/timer2/timer.cpp | 29 - .../examples/cpp03/tutorial/timer3/.gitignore | 10 - .../examples/cpp03/tutorial/timer3/timer.cpp | 43 - .../examples/cpp03/tutorial/timer4/.gitignore | 10 - .../examples/cpp03/tutorial/timer4/timer.cpp | 54 - .../examples/cpp03/tutorial/timer5/.gitignore | 10 - .../examples/cpp03/tutorial/timer5/timer.cpp | 80 - .../src/examples/cpp03/tutorial/timer_dox.txt | 379 - .../src/examples/cpp03/windows/.gitignore | 10 - .../examples/cpp03/windows/transmit_file.cpp | 177 - .../asio/asio/src/examples/cpp11/Makefile.am | 163 - .../src/examples/cpp11/allocation/.gitignore | 10 - .../src/examples/cpp11/allocation/server.cpp | 255 - .../src/examples/cpp11/buffers/.gitignore | 10 - .../cpp11/buffers/reference_counted.cpp | 122 - .../asio/src/examples/cpp11/chat/.gitignore | 11 - .../src/examples/cpp11/chat/chat_client.cpp | 167 - .../src/examples/cpp11/chat/chat_message.hpp | 91 - .../src/examples/cpp11/chat/chat_server.cpp | 227 - .../asio/src/examples/cpp11/echo/.gitignore | 11 - .../cpp11/echo/async_tcp_echo_server.cpp | 114 - .../cpp11/echo/async_udp_echo_server.cpp | 82 - .../cpp11/echo/blocking_tcp_echo_client.cpp | 55 - .../cpp11/echo/blocking_tcp_echo_server.cpp | 74 - .../cpp11/echo/blocking_udp_echo_client.cpp | 58 - .../cpp11/echo/blocking_udp_echo_server.cpp | 52 - .../src/examples/cpp11/executors/.gitignore | 5 - .../src/examples/cpp11/executors/actor.cpp | 286 - .../cpp11/executors/bank_account_1.cpp | 60 - .../cpp11/executors/bank_account_2.cpp | 60 - .../examples/cpp11/executors/fork_join.cpp | 290 - .../src/examples/cpp11/executors/pipeline.cpp | 288 - .../cpp11/executors/priority_scheduler.cpp | 148 - .../asio/src/examples/cpp11/fork/.gitignore | 11 - .../asio/src/examples/cpp11/fork/daemon.cpp | 189 - .../cpp11/fork/process_per_connection.cpp | 162 - .../src/examples/cpp11/futures/.gitignore | 11 - .../examples/cpp11/futures/daytime_client.cpp | 95 - .../cpp11/handler_tracking/.gitignore | 1 - .../async_tcp_echo_server.cpp | 135 - .../handler_tracking/custom_tracking.hpp | 211 - .../src/examples/cpp11/http/server/.gitignore | 11 - .../examples/cpp11/http/server/connection.cpp | 94 - .../examples/cpp11/http/server/connection.hpp | 79 - .../cpp11/http/server/connection_manager.cpp | 40 - .../cpp11/http/server/connection_manager.hpp | 48 - .../src/examples/cpp11/http/server/header.hpp | 28 - .../src/examples/cpp11/http/server/main.cpp | 43 - .../examples/cpp11/http/server/mime_types.cpp | 45 - .../examples/cpp11/http/server/mime_types.hpp | 27 - .../src/examples/cpp11/http/server/reply.cpp | 255 - .../src/examples/cpp11/http/server/reply.hpp | 64 - .../examples/cpp11/http/server/request.hpp | 34 - .../cpp11/http/server/request_handler.cpp | 121 - .../cpp11/http/server/request_handler.hpp | 47 - .../cpp11/http/server/request_parser.cpp | 315 - .../cpp11/http/server/request_parser.hpp | 96 - .../src/examples/cpp11/http/server/server.cpp | 94 - .../src/examples/cpp11/http/server/server.hpp | 64 - .../src/examples/cpp11/invocation/.gitignore | 10 - .../cpp11/invocation/prioritised_handlers.cpp | 202 - .../src/examples/cpp11/iostreams/.gitignore | 11 - .../examples/cpp11/iostreams/http_client.cpp | 91 - .../asio/src/examples/cpp11/local/.gitignore | 13 - .../src/examples/cpp11/local/connect_pair.cpp | 129 - .../examples/cpp11/local/iostream_client.cpp | 61 - .../examples/cpp11/local/stream_client.cpp | 60 - .../examples/cpp11/local/stream_server.cpp | 121 - .../src/examples/cpp11/multicast/.gitignore | 11 - .../src/examples/cpp11/multicast/receiver.cpp | 88 - .../src/examples/cpp11/multicast/sender.cpp | 91 - .../src/examples/cpp11/nonblocking/.gitignore | 10 - .../cpp11/nonblocking/third_party_lib.cpp | 212 - .../src/examples/cpp11/operations/.gitignore | 10 - .../examples/cpp11/operations/composed_1.cpp | 113 - .../examples/cpp11/operations/composed_2.cpp | 131 - .../examples/cpp11/operations/composed_3.cpp | 192 - .../examples/cpp11/operations/composed_4.cpp | 207 - .../examples/cpp11/operations/composed_5.cpp | 243 - .../examples/cpp11/operations/composed_6.cpp | 302 - .../examples/cpp11/operations/composed_7.cpp | 222 - .../examples/cpp11/operations/composed_8.cpp | 217 - .../asio/src/examples/cpp11/socks4/.gitignore | 10 - .../asio/src/examples/cpp11/socks4/socks4.hpp | 143 - .../src/examples/cpp11/socks4/sync_client.cpp | 94 - .../asio/src/examples/cpp11/spawn/.gitignore | 12 - .../src/examples/cpp11/spawn/echo_server.cpp | 111 - .../examples/cpp11/spawn/parallel_grep.cpp | 84 - .../asio/src/examples/cpp11/ssl/.gitignore | 11 - .../asio/asio/src/examples/cpp11/ssl/README | 8 - .../asio/asio/src/examples/cpp11/ssl/ca.pem | 49 - .../asio/src/examples/cpp11/ssl/client.cpp | 165 - .../asio/src/examples/cpp11/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp11/ssl/server.cpp | 145 - .../asio/src/examples/cpp11/ssl/server.pem | 71 - .../src/examples/cpp11/timeouts/.gitignore | 11 - .../cpp11/timeouts/async_tcp_client.cpp | 311 - .../cpp11/timeouts/blocking_tcp_client.cpp | 192 - .../timeouts/blocking_token_tcp_client.cpp | 198 - .../cpp11/timeouts/blocking_udp_client.cpp | 155 - .../src/examples/cpp11/timeouts/server.cpp | 433 - .../asio/src/examples/cpp11/timers/.gitignore | 10 - .../examples/cpp11/timers/time_t_timer.cpp | 106 - .../asio/asio/src/examples/cpp14/Makefile.am | 64 - .../asio/src/examples/cpp14/echo/.gitignore | 11 - .../cpp14/echo/async_tcp_echo_server.cpp | 117 - .../cpp14/echo/async_udp_echo_server.cpp | 83 - .../cpp14/echo/blocking_tcp_echo_client.cpp | 55 - .../cpp14/echo/blocking_tcp_echo_server.cpp | 77 - .../cpp14/echo/blocking_udp_echo_client.cpp | 59 - .../cpp14/echo/blocking_udp_echo_server.cpp | 53 - .../src/examples/cpp14/executors/.gitignore | 6 - .../src/examples/cpp14/executors/actor.cpp | 285 - .../src/examples/cpp14/executors/async_1.cpp | 56 - .../src/examples/cpp14/executors/async_2.cpp | 81 - .../cpp14/executors/bank_account_1.cpp | 60 - .../cpp14/executors/bank_account_2.cpp | 60 - .../examples/cpp14/executors/fork_join.cpp | 290 - .../src/examples/cpp14/executors/pipeline.cpp | 284 - .../cpp14/executors/priority_scheduler.cpp | 181 - .../src/examples/cpp14/iostreams/.gitignore | 11 - .../examples/cpp14/iostreams/http_client.cpp | 91 - .../src/examples/cpp14/operations/.gitignore | 10 - .../examples/cpp14/operations/composed_1.cpp | 113 - .../examples/cpp14/operations/composed_2.cpp | 131 - .../examples/cpp14/operations/composed_3.cpp | 186 - .../examples/cpp14/operations/composed_4.cpp | 201 - .../examples/cpp14/operations/composed_5.cpp | 238 - .../examples/cpp14/operations/composed_6.cpp | 298 - .../examples/cpp14/operations/composed_7.cpp | 219 - .../examples/cpp14/operations/composed_8.cpp | 212 - .../asio/asio/src/examples/cpp17/Makefile.am | 35 - .../examples/cpp17/coroutines_ts/.gitignore | 12 - .../cpp17/coroutines_ts/chat_server.cpp | 222 - .../cpp17/coroutines_ts/echo_server.cpp | 76 - .../echo_server_with_as_single_default.cpp | 71 - .../echo_server_with_default.cpp | 73 - .../cpp17/coroutines_ts/range_based_for.cpp | 102 - .../coroutines_ts/refactored_echo_server.cpp | 80 - .../thirdparty/asio/asio/src/tests/.gitignore | 11 - .../asio/asio/src/tests/Makefile.am | 512 - .../asio/asio/src/tests/latency/.gitignore | 11 - .../asio/asio/src/tests/latency/allocator.hpp | 52 - .../asio/src/tests/latency/high_res_clock.hpp | 53 - .../asio/src/tests/latency/tcp_client.cpp | 124 - .../asio/src/tests/latency/tcp_server.cpp | 114 - .../asio/src/tests/latency/udp_client.cpp | 104 - .../asio/src/tests/latency/udp_server.cpp | 125 - .../asio/src/tests/performance/.gitignore | 11 - .../asio/src/tests/performance/client.cpp | 286 - .../tests/performance/handler_allocator.hpp | 112 - .../asio/src/tests/performance/server.cpp | 233 - .../asio/asio/src/tests/properties/.gitignore | 8 - .../asio/src/tests/properties/Makefile.am | 367 - .../asio/src/tests/properties/Makefile.msc | 308 - .../cpp03/can_prefer_free_prefer.cpp | 59 - .../cpp03/can_prefer_free_require.cpp | 59 - .../cpp03/can_prefer_member_prefer.cpp | 59 - .../cpp03/can_prefer_member_require.cpp | 59 - .../can_prefer_not_applicable_free_prefer.cpp | 52 - ...can_prefer_not_applicable_free_require.cpp | 52 - ...an_prefer_not_applicable_member_prefer.cpp | 52 - ...n_prefer_not_applicable_member_require.cpp | 52 - .../can_prefer_not_applicable_static.cpp | 45 - .../can_prefer_not_applicable_unsupported.cpp | 33 - .../can_prefer_not_preferable_free_prefer.cpp | 59 - ...can_prefer_not_preferable_free_require.cpp | 59 - ...an_prefer_not_preferable_member_prefer.cpp | 59 - ...n_prefer_not_preferable_member_require.cpp | 59 - .../can_prefer_not_preferable_static.cpp | 52 - .../can_prefer_not_preferable_unsupported.cpp | 43 - .../properties/cpp03/can_prefer_static.cpp | 52 - .../cpp03/can_prefer_unsupported.cpp | 43 - .../tests/properties/cpp03/can_query_free.cpp | 48 - .../properties/cpp03/can_query_member.cpp | 48 - .../cpp03/can_query_not_applicable_free.cpp | 41 - .../cpp03/can_query_not_applicable_member.cpp | 41 - .../cpp03/can_query_not_applicable_static.cpp | 41 - .../can_query_not_applicable_unsupported.cpp | 26 - .../properties/cpp03/can_query_static.cpp | 48 - .../cpp03/can_query_unsupported.cpp | 36 - .../cpp03/can_require_concept_free.cpp | 55 - .../cpp03/can_require_concept_member.cpp | 55 - ...an_require_concept_not_applicable_free.cpp | 48 - ..._require_concept_not_applicable_member.cpp | 48 - ..._require_concept_not_applicable_static.cpp | 41 - ...ire_concept_not_applicable_unsupported.cpp | 28 - .../cpp03/can_require_concept_static.cpp | 48 - .../cpp03/can_require_concept_unsupported.cpp | 38 - .../properties/cpp03/can_require_free.cpp | 59 - .../properties/cpp03/can_require_member.cpp | 59 - .../cpp03/can_require_not_applicable_free.cpp | 52 - .../can_require_not_applicable_member.cpp | 52 - .../can_require_not_applicable_static.cpp | 45 - ...can_require_not_applicable_unsupported.cpp | 32 - .../properties/cpp03/can_require_static.cpp | 52 - .../cpp03/can_require_unsupported.cpp | 42 - .../properties/cpp03/prefer_free_prefer.cpp | 68 - .../properties/cpp03/prefer_free_require.cpp | 68 - .../properties/cpp03/prefer_member_prefer.cpp | 68 - .../cpp03/prefer_member_require.cpp | 68 - .../tests/properties/cpp03/prefer_static.cpp | 61 - .../properties/cpp03/prefer_unsupported.cpp | 46 - .../src/tests/properties/cpp03/query_free.cpp | 55 - .../tests/properties/cpp03/query_member.cpp | 55 - .../tests/properties/cpp03/query_static.cpp | 55 - .../properties/cpp03/require_concept_free.cpp | 60 - .../cpp03/require_concept_member.cpp | 60 - .../cpp03/require_concept_static.cpp | 55 - .../tests/properties/cpp03/require_free.cpp | 68 - .../tests/properties/cpp03/require_member.cpp | 68 - .../tests/properties/cpp03/require_static.cpp | 61 - .../cpp11/can_prefer_free_prefer.cpp | 48 - .../cpp11/can_prefer_free_require.cpp | 48 - .../cpp11/can_prefer_member_prefer.cpp | 48 - .../cpp11/can_prefer_member_require.cpp | 48 - .../can_prefer_not_applicable_free_prefer.cpp | 38 - ...can_prefer_not_applicable_free_require.cpp | 38 - ...an_prefer_not_applicable_member_prefer.cpp | 38 - ...n_prefer_not_applicable_member_require.cpp | 38 - .../can_prefer_not_applicable_static.cpp | 45 - .../can_prefer_not_applicable_unsupported.cpp | 33 - .../can_prefer_not_preferable_free_prefer.cpp | 48 - ...can_prefer_not_preferable_free_require.cpp | 48 - ...an_prefer_not_preferable_member_prefer.cpp | 48 - ...n_prefer_not_preferable_member_require.cpp | 48 - .../can_prefer_not_preferable_static.cpp | 43 - .../can_prefer_not_preferable_unsupported.cpp | 43 - .../properties/cpp11/can_prefer_static.cpp | 52 - .../cpp11/can_prefer_unsupported.cpp | 43 - .../tests/properties/cpp11/can_query_free.cpp | 37 - .../properties/cpp11/can_query_member.cpp | 37 - .../cpp11/can_query_not_applicable_free.cpp | 27 - .../cpp11/can_query_not_applicable_member.cpp | 27 - .../cpp11/can_query_not_applicable_static.cpp | 41 - .../can_query_not_applicable_unsupported.cpp | 26 - .../properties/cpp11/can_query_static.cpp | 48 - .../cpp11/can_query_unsupported.cpp | 36 - .../cpp11/can_require_concept_free.cpp | 44 - .../cpp11/can_require_concept_member.cpp | 44 - ...an_require_concept_not_applicable_free.cpp | 34 - ..._require_concept_not_applicable_member.cpp | 34 - ..._require_concept_not_applicable_static.cpp | 41 - ...ire_concept_not_applicable_unsupported.cpp | 28 - .../cpp11/can_require_concept_static.cpp | 48 - .../cpp11/can_require_concept_unsupported.cpp | 38 - .../properties/cpp11/can_require_free.cpp | 48 - .../properties/cpp11/can_require_member.cpp | 48 - .../cpp11/can_require_not_applicable_free.cpp | 38 - .../can_require_not_applicable_member.cpp | 38 - .../can_require_not_applicable_static.cpp | 45 - ...can_require_not_applicable_unsupported.cpp | 32 - .../properties/cpp11/can_require_static.cpp | 52 - .../cpp11/can_require_unsupported.cpp | 42 - .../properties/cpp11/prefer_free_prefer.cpp | 64 - .../properties/cpp11/prefer_free_require.cpp | 64 - .../properties/cpp11/prefer_member_prefer.cpp | 64 - .../cpp11/prefer_member_require.cpp | 64 - .../tests/properties/cpp11/prefer_static.cpp | 68 - .../properties/cpp11/prefer_unsupported.cpp | 59 - .../src/tests/properties/cpp11/query_free.cpp | 49 - .../tests/properties/cpp11/query_member.cpp | 49 - .../tests/properties/cpp11/query_static.cpp | 60 - .../properties/cpp11/require_concept_free.cpp | 52 - .../cpp11/require_concept_member.cpp | 52 - .../cpp11/require_concept_static.cpp | 58 - .../tests/properties/cpp11/require_free.cpp | 64 - .../tests/properties/cpp11/require_member.cpp | 64 - .../tests/properties/cpp11/require_static.cpp | 68 - .../cpp14/can_prefer_free_prefer.cpp | 39 - .../cpp14/can_prefer_free_require.cpp | 39 - .../cpp14/can_prefer_member_prefer.cpp | 39 - .../cpp14/can_prefer_member_require.cpp | 39 - .../can_prefer_not_applicable_free_prefer.cpp | 38 - ...can_prefer_not_applicable_free_require.cpp | 38 - ...an_prefer_not_applicable_member_prefer.cpp | 38 - ...n_prefer_not_applicable_member_require.cpp | 38 - .../can_prefer_not_applicable_static.cpp | 35 - .../can_prefer_not_applicable_unsupported.cpp | 32 - .../can_prefer_not_preferable_free_prefer.cpp | 39 - ...can_prefer_not_preferable_free_require.cpp | 39 - ...an_prefer_not_preferable_member_prefer.cpp | 39 - ...n_prefer_not_preferable_member_require.cpp | 39 - .../can_prefer_not_preferable_static.cpp | 34 - .../can_prefer_not_preferable_unsupported.cpp | 34 - .../properties/cpp14/can_prefer_static.cpp | 36 - .../cpp14/can_prefer_unsupported.cpp | 42 - .../tests/properties/cpp14/can_query_free.cpp | 28 - .../properties/cpp14/can_query_member.cpp | 28 - .../cpp14/can_query_not_applicable_free.cpp | 27 - .../cpp14/can_query_not_applicable_member.cpp | 27 - .../cpp14/can_query_not_applicable_static.cpp | 27 - .../can_query_not_applicable_unsupported.cpp | 26 - .../properties/cpp14/can_query_static.cpp | 28 - .../cpp14/can_query_unsupported.cpp | 27 - .../cpp14/can_require_concept_free.cpp | 35 - .../cpp14/can_require_concept_member.cpp | 35 - ...an_require_concept_not_applicable_free.cpp | 34 - ..._require_concept_not_applicable_member.cpp | 34 - ..._require_concept_not_applicable_static.cpp | 31 - ...ire_concept_not_applicable_unsupported.cpp | 28 - .../cpp14/can_require_concept_static.cpp | 32 - .../cpp14/can_require_concept_unsupported.cpp | 38 - .../properties/cpp14/can_require_free.cpp | 39 - .../properties/cpp14/can_require_member.cpp | 39 - .../cpp14/can_require_not_applicable_free.cpp | 38 - .../can_require_not_applicable_member.cpp | 38 - .../can_require_not_applicable_static.cpp | 35 - ...can_require_not_applicable_unsupported.cpp | 32 - .../properties/cpp14/can_require_static.cpp | 36 - .../cpp14/can_require_unsupported.cpp | 42 - .../properties/cpp14/prefer_free_prefer.cpp | 55 - .../properties/cpp14/prefer_free_require.cpp | 55 - .../properties/cpp14/prefer_member_prefer.cpp | 55 - .../cpp14/prefer_member_require.cpp | 55 - .../tests/properties/cpp14/prefer_static.cpp | 52 - .../properties/cpp14/prefer_unsupported.cpp | 50 - .../src/tests/properties/cpp14/query_free.cpp | 40 - .../tests/properties/cpp14/query_member.cpp | 40 - .../tests/properties/cpp14/query_static.cpp | 40 - .../properties/cpp14/require_concept_free.cpp | 43 - .../cpp14/require_concept_member.cpp | 43 - .../cpp14/require_concept_static.cpp | 42 - .../tests/properties/cpp14/require_free.cpp | 55 - .../tests/properties/cpp14/require_member.cpp | 55 - .../tests/properties/cpp14/require_static.cpp | 52 - .../asio/asio/src/tests/unit/.gitignore | 78 - .../src/tests/unit/archetypes/async_ops.hpp | 415 - .../tests/unit/archetypes/async_result.hpp | 94 - .../archetypes/gettable_socket_option.hpp | 54 - .../unit/archetypes/io_control_command.hpp | 32 - .../archetypes/settable_socket_option.hpp | 49 - .../src/tests/unit/associated_allocator.cpp | 25 - .../src/tests/unit/associated_executor.cpp | 25 - .../asio/asio/src/tests/unit/async_result.cpp | 25 - .../asio/asio/src/tests/unit/awaitable.cpp | 25 - .../src/tests/unit/basic_datagram_socket.cpp | 25 - .../src/tests/unit/basic_deadline_timer.cpp | 25 - .../asio/src/tests/unit/basic_raw_socket.cpp | 25 - .../tests/unit/basic_seq_packet_socket.cpp | 25 - .../asio/src/tests/unit/basic_serial_port.cpp | 26 - .../asio/src/tests/unit/basic_signal_set.cpp | 25 - .../asio/asio/src/tests/unit/basic_socket.cpp | 25 - .../src/tests/unit/basic_socket_acceptor.cpp | 25 - .../src/tests/unit/basic_stream_socket.cpp | 25 - .../asio/src/tests/unit/basic_streambuf.cpp | 25 - .../src/tests/unit/basic_waitable_timer.cpp | 25 - .../asio/src/tests/unit/bind_executor.cpp | 25 - .../asio/asio/src/tests/unit/buffer.cpp | 830 - .../src/tests/unit/buffered_read_stream.cpp | 338 - .../asio/src/tests/unit/buffered_stream.cpp | 364 - .../src/tests/unit/buffered_write_stream.cpp | 353 - .../asio/src/tests/unit/buffers_iterator.cpp | 292 - .../asio/asio/src/tests/unit/co_spawn.cpp | 25 - .../src/tests/unit/completion_condition.cpp | 25 - .../asio/asio/src/tests/unit/compose.cpp | 242 - .../asio/asio/src/tests/unit/connect.cpp | 1190 - .../asio/asio/src/tests/unit/coroutine.cpp | 112 - .../asio/src/tests/unit/deadline_timer.cpp | 448 - .../asio/asio/src/tests/unit/defer.cpp | 25 - .../asio/asio/src/tests/unit/detached.cpp | 25 - .../asio/asio/src/tests/unit/dispatch.cpp | 25 - .../asio/asio/src/tests/unit/error.cpp | 89 - .../asio/src/tests/unit/execution/.gitignore | 32 - .../src/tests/unit/execution/any_executor.cpp | 886 - .../src/tests/unit/execution/blocking.cpp | 1914 - .../unit/execution/blocking_adaptation.cpp | 1321 - .../src/tests/unit/execution/bulk_execute.cpp | 320 - .../tests/unit/execution/bulk_guarantee.cpp | 1978 - .../asio/src/tests/unit/execution/connect.cpp | 481 - .../src/tests/unit/execution/context_as.cpp | 157 - .../asio/src/tests/unit/execution/execute.cpp | 388 - .../src/tests/unit/execution/executor.cpp | 184 - .../unit/execution/invocable_archetype.cpp | 25 - .../asio/src/tests/unit/execution/mapping.cpp | 1978 - .../tests/unit/execution/operation_state.cpp | 104 - .../tests/unit/execution/outstanding_work.cpp | 1250 - .../src/tests/unit/execution/prefer_only.cpp | 543 - .../src/tests/unit/execution/receiver.cpp | 549 - .../src/tests/unit/execution/relationship.cpp | 1250 - .../src/tests/unit/execution/schedule.cpp | 490 - .../src/tests/unit/execution/scheduler.cpp | 99 - .../asio/src/tests/unit/execution/sender.cpp | 231 - .../src/tests/unit/execution/set_done.cpp | 228 - .../src/tests/unit/execution/set_error.cpp | 244 - .../src/tests/unit/execution/set_value.cpp | 820 - .../asio/src/tests/unit/execution/start.cpp | 228 - .../asio/src/tests/unit/execution/submit.cpp | 546 - .../asio/src/tests/unit/execution_context.cpp | 25 - .../asio/asio/src/tests/unit/executor.cpp | 25 - .../src/tests/unit/executor_work_guard.cpp | 25 - .../asio/src/tests/unit/generic/.gitignore | 14 - .../src/tests/unit/generic/basic_endpoint.cpp | 25 - .../tests/unit/generic/datagram_protocol.cpp | 263 - .../src/tests/unit/generic/raw_protocol.cpp | 263 - .../unit/generic/seq_packet_protocol.cpp | 205 - .../tests/unit/generic/stream_protocol.cpp | 248 - .../src/tests/unit/high_resolution_timer.cpp | 30 - .../asio/asio/src/tests/unit/io_context.cpp | 585 - .../asio/src/tests/unit/io_context_strand.cpp | 325 - .../asio/asio/src/tests/unit/ip/.gitignore | 27 - .../asio/asio/src/tests/unit/ip/address.cpp | 144 - .../asio/src/tests/unit/ip/basic_endpoint.cpp | 25 - .../asio/src/tests/unit/ip/basic_resolver.cpp | 25 - .../tests/unit/ip/basic_resolver_entry.cpp | 25 - .../tests/unit/ip/basic_resolver_iterator.cpp | 25 - .../tests/unit/ip/basic_resolver_query.cpp | 25 - .../asio/asio/src/tests/unit/ip/host_name.cpp | 55 - .../asio/asio/src/tests/unit/ip/icmp.cpp | 577 - .../asio/asio/src/tests/unit/ip/multicast.cpp | 363 - .../asio/src/tests/unit/ip/network_v4.cpp | 314 - .../asio/src/tests/unit/ip/network_v6.cpp | 238 - .../src/tests/unit/ip/resolver_query_base.cpp | 25 - .../asio/asio/src/tests/unit/ip/tcp.cpp | 1346 - .../asio/asio/src/tests/unit/ip/udp.cpp | 673 - .../asio/asio/src/tests/unit/ip/unicast.cpp | 171 - .../asio/asio/src/tests/unit/ip/v6_only.cpp | 135 - .../asio/src/tests/unit/is_read_buffered.cpp | 129 - .../asio/src/tests/unit/is_write_buffered.cpp | 129 - .../asio/asio/src/tests/unit/local/.gitignore | 13 - .../src/tests/unit/local/basic_endpoint.cpp | 25 - .../src/tests/unit/local/connect_pair.cpp | 76 - .../tests/unit/local/datagram_protocol.cpp | 242 - .../src/tests/unit/local/stream_protocol.cpp | 219 - .../asio/src/tests/unit/packaged_task.cpp | 25 - .../asio/asio/src/tests/unit/placeholders.cpp | 25 - .../asio/asio/src/tests/unit/posix/.gitignore | 14 - .../src/tests/unit/posix/basic_descriptor.cpp | 25 - .../unit/posix/basic_stream_descriptor.cpp | 25 - .../asio/src/tests/unit/posix/descriptor.cpp | 25 - .../src/tests/unit/posix/descriptor_base.cpp | 25 - .../tests/unit/posix/stream_descriptor.cpp | 183 - .../asio/asio/src/tests/unit/post.cpp | 25 - .../asio/asio/src/tests/unit/read.cpp | 4997 - .../asio/asio/src/tests/unit/read_at.cpp | 7502 - .../asio/asio/src/tests/unit/read_until.cpp | 1658 - .../asio/src/tests/unit/redirect_error.cpp | 25 - .../asio/asio/src/tests/unit/serial_port.cpp | 173 - .../asio/src/tests/unit/serial_port_base.cpp | 99 - .../asio/asio/src/tests/unit/signal_set.cpp | 95 - .../asio/asio/src/tests/unit/socket_base.cpp | 650 - .../asio/asio/src/tests/unit/ssl/.gitignore | 15 - .../asio/asio/src/tests/unit/ssl/context.cpp | 25 - .../asio/src/tests/unit/ssl/context_base.cpp | 25 - .../asio/asio/src/tests/unit/ssl/error.cpp | 25 - .../tests/unit/ssl/host_name_verification.cpp | 25 - .../tests/unit/ssl/rfc2818_verification.cpp | 25 - .../asio/asio/src/tests/unit/ssl/stream.cpp | 197 - .../asio/src/tests/unit/ssl/stream_base.cpp | 25 - .../src/tests/unit/static_thread_pool.cpp | 30 - .../asio/asio/src/tests/unit/steady_timer.cpp | 30 - .../asio/asio/src/tests/unit/strand.cpp | 476 - .../asio/asio/src/tests/unit/streambuf.cpp | 62 - .../asio/src/tests/unit/system_context.cpp | 30 - .../asio/src/tests/unit/system_executor.cpp | 170 - .../asio/asio/src/tests/unit/system_timer.cpp | 484 - .../asio/asio/src/tests/unit/this_coro.cpp | 25 - .../asio/asio/src/tests/unit/thread.cpp | 25 - .../asio/asio/src/tests/unit/thread_pool.cpp | 526 - .../asio/asio/src/tests/unit/time_traits.cpp | 25 - .../asio/asio/src/tests/unit/ts/.gitignore | 17 - .../asio/asio/src/tests/unit/ts/buffer.cpp | 30 - .../asio/asio/src/tests/unit/ts/executor.cpp | 30 - .../asio/asio/src/tests/unit/ts/internet.cpp | 30 - .../asio/src/tests/unit/ts/io_context.cpp | 30 - .../asio/asio/src/tests/unit/ts/net.cpp | 30 - .../asio/asio/src/tests/unit/ts/netfwd.cpp | 33 - .../asio/asio/src/tests/unit/ts/socket.cpp | 30 - .../asio/asio/src/tests/unit/ts/timer.cpp | 30 - .../asio/asio/src/tests/unit/unit_test.hpp | 190 - .../asio/src/tests/unit/use_awaitable.cpp | 25 - .../asio/asio/src/tests/unit/use_future.cpp | 670 - .../asio/src/tests/unit/uses_executor.cpp | 25 - .../asio/asio/src/tests/unit/wait_traits.cpp | 25 - .../asio/src/tests/unit/windows/.gitignore | 18 - .../unit/windows/basic_object_handle.cpp | 25 - .../unit/windows/basic_overlapped_handle.cpp | 25 - .../windows/basic_random_access_handle.cpp | 25 - .../unit/windows/basic_stream_handle.cpp | 25 - .../src/tests/unit/windows/object_handle.cpp | 130 - .../tests/unit/windows/overlapped_handle.cpp | 26 - .../src/tests/unit/windows/overlapped_ptr.cpp | 119 - .../unit/windows/random_access_handle.cpp | 155 - .../src/tests/unit/windows/stream_handle.cpp | 148 - .../asio/asio/src/tests/unit/write.cpp | 4904 - .../asio/asio/src/tests/unit/write_at.cpp | 7563 - .../asio/asio/src/tools/handlerlive.pl | 89 - .../asio/asio/src/tools/handlertree.pl | 140 - .../asio/asio/src/tools/handlerviz.pl | 375 - .../thirdparty/asio/asio/tsify.pl | 574 - .../fineftp-server/toolchain_mingw.cmake | 24 - 1395 files changed, 1 insertion(+), 419256 deletions(-) delete mode 100644 ui/external/fineftp-server/.gitignore delete mode 100644 ui/external/fineftp-server/.gitmodules delete mode 100644 ui/external/fineftp-server/CMakeLists.txt delete mode 100644 ui/external/fineftp-server/CMakeWindows.bat delete mode 100644 ui/external/fineftp-server/LICENSE delete mode 100644 ui/external/fineftp-server/README.md delete mode 100644 ui/external/fineftp-server/cmake/Findasio.cmake delete mode 100644 ui/external/fineftp-server/cmake/fineftpConfig.cmake.in delete mode 100644 ui/external/fineftp-server/example/CMakeLists.txt delete mode 100644 ui/external/fineftp-server/example/src/main.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/CMakeLists.txt delete mode 100644 ui/external/fineftp-server/fineftp-server/Command return codes.txt delete mode 100644 ui/external/fineftp-server/fineftp-server/fineftp_version.h.in delete mode 100644 ui/external/fineftp-server/fineftp-server/include/fineftp/permissions.h delete mode 100644 ui/external/fineftp-server/fineftp-server/include/fineftp/server.h delete mode 100644 ui/external/fineftp-server/fineftp-server/sourcetree.cmake delete mode 100644 ui/external/fineftp-server/fineftp-server/src/filesystem.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/src/filesystem.h delete mode 100644 ui/external/fineftp-server/fineftp-server/src/ftp_message.h delete mode 100755 ui/external/fineftp-server/fineftp-server/src/ftp_session.cpp delete mode 100755 ui/external/fineftp-server/fineftp-server/src/ftp_session.h delete mode 100644 ui/external/fineftp-server/fineftp-server/src/ftp_user.h delete mode 100644 ui/external/fineftp-server/fineftp-server/src/server.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/src/server_impl.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/src/server_impl.h delete mode 100644 ui/external/fineftp-server/fineftp-server/src/user_database.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/src/user_database.h delete mode 100644 ui/external/fineftp-server/fineftp-server/src/win_str_convert.cpp delete mode 100644 ui/external/fineftp-server/fineftp-server/src/win_str_convert.h delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/COPYING delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/INSTALL delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/LICENSE_1_0.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/README delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/asio.manifest delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/autogen.sh delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/boost_asio.manifest delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/boostify.pl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/configure.ac delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/any_io_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_allocator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/async_result.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/awaitable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_datagram_socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_deadline_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_io_object.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_raw_socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_seq_packet_socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_serial_port.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_signal_set.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_acceptor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_iostream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_streambuf.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_stream_socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_waitable_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/bind_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffers_iterator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/co_spawn.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/completion_condition.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/compose.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/connect.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/coroutine.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/deadline_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/defer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detached.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/assert.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/atomic_count.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/base_from_completion_cond.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bind_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/blocking_executor_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_resize_guard.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffered_stream_storage.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bulk_executor_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/call_stack.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono_time_traits.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/completion_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/concurrency_hint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/config.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/consuming_buffers.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstddef.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstdint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/date_time_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/deadline_timer_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dependent_type.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_ops.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_read_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_write_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dev_poll_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/epoll_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_function.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fd_set_adapter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/functional.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/future.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/global.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_alloc_helpers.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_cont_helpers.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_invoke_helpers.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_tracking.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_type_requirements.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_work.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/hash_map.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/descriptor_ops.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/handler_tracking.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/null_event.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_event.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_mutex.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_thread.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/resolver_service_base.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/scheduler.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/signal_set_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_ops.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/throw_error.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_set.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_event.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_mutex.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_static_mutex.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_thread.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winsock_init.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_control.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_object_impl.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_buffer_sequence.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/keyword_tss_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/kqueue_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/limits.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/local_free_on_block_exit.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/macos_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/memory.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/non_const_lvalue.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/noncopyable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_global.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_signal_blocker.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_socket_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_static_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_tss_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/object_pool.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/old_win_sdk_compat.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/op_queue.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/operation.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pipe_select_interrupter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pop_options.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_global.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_signal_blocker.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_static_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_tss_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/push_options.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_descriptor_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_serial_port_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_send_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_wait_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op_queue.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/recycling_allocator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/regex_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_endpoint_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_query_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_operation.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_thread_info.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_lock.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_interrupter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_reactor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/service_registry.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_blocker.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_init.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_set_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_holder.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_ops.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_option.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_select_interrupter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/solaris_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/source_location.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/static_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_global.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_static_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_executor_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/string_view.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_group.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_info_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_exception.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_ptime.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_set.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/tss_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/type_traits.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/variadic_templates.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_event.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fd_set_adapter.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fenced_block.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_global.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_io_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_operation.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_thread_info.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_wait_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_object_handle_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_static_mutex.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_tss_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winapp_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wince_thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_manager.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolve_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolver_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_send_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_utils.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winsock_init.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/work_dispatcher.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wrapped_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/dispatch.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error_code.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/allocator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/any_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bad_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking_adaptation.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_execute.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_guarantee.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/connect.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context_as.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_invocable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_operation.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_receiver.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/bulk_sender.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/submit_receiver.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/void_receiver.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/execute.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/bad_executor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/invocable_archetype.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/mapping.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/occupancy.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/operation_state.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/outstanding_work.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/prefer_only.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver_invocation_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/relationship.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/schedule.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/scheduler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/sender.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/set_done.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/set_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/set_value.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/start.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/submit.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/executor_work_guard.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/experimental/as_single.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/experimental/impl/as_single.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/basic_endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/datagram_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/detail/endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/detail/impl/endpoint.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/raw_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/seq_packet_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/generic/stream_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/handler_alloc_hook.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/handler_continuation_hook.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/handler_invoke_hook.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/high_resolution_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/awaitable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/buffered_read_stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/buffered_write_stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/co_spawn.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/compose.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/connect.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/defer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/detached.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/dispatch.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/error.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/error_code.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/execution_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/execution_context.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/executor.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/handler_alloc_hook.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/io_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/io_context.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/multiple_exceptions.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/post.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/read.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/read_at.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/read_until.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/redirect_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/serial_port_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/serial_port_base.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/spawn.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/src.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/src.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/system_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/system_context.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/system_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/thread_pool.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/thread_pool.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/use_awaitable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/use_future.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/write.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/impl/write_at.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/io_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/io_context_strand.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/io_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/io_service_strand.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v4_iterator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v4_range.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v6.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v6_iterator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/address_v6_range.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/bad_address_cast.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_resolver.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_resolver_entry.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_resolver_iterator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_resolver_query.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/basic_resolver_results.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/detail/endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/detail/impl/endpoint.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/detail/socket_option.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/host_name.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/icmp.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address_v4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address_v4.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address_v6.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/address_v6.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/basic_endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/host_name.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/network_v4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/network_v4.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/network_v6.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/impl/network_v6.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/multicast.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/network_v4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/network_v6.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/resolver_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/resolver_query_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/tcp.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/udp.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/unicast.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ip/v6_only.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/is_applicable_property.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/is_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/is_read_buffered.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/is_write_buffered.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/basic_endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/connect_pair.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/datagram_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/detail/endpoint.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/detail/impl/endpoint.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/local/stream_protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/multiple_exceptions.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/packaged_task.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/placeholders.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/posix/basic_descriptor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/posix/basic_stream_descriptor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/posix/descriptor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/posix/descriptor_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/posix/stream_descriptor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/post.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/prefer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/query.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/read.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/read_at.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/read_until.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/redirect_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/require.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/require_concept.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/serial_port.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/serial_port_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/signal_set.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/socket_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/spawn.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/context_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/engine.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/handshake_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/impl/engine.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/impl/openssl_init.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/io.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/openssl_init.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/openssl_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/password_callback.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/read_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/shutdown_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/stream_core.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/verify_callback.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/detail/write_op.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/host_name_verification.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/context.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/error.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/host_name_verification.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/rfc2818_verification.ipp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/impl/src.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/rfc2818_verification.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/stream.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/stream_base.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/verify_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ssl/verify_mode.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/static_thread_pool.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/steady_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/strand.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/streambuf.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/system_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/system_error.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/system_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/system_timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/this_coro.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/thread.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/thread_pool.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/time_traits.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/bulk_execute_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/bulk_execute_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/connect_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/connect_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/equality_comparable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/execute_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/execute_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/prefer_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/prefer_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/query_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/query_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/query_static_constexpr_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/require_concept_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/require_concept_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/require_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/require_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/schedule_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/schedule_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_done_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_done_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_error_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_error_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_value_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/set_value_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/start_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/start_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/static_query.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/static_require.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/static_require_concept.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/submit_free.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/traits/submit_member.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/buffer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/internet.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/io_context.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/net.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/netfwd.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/socket.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/ts/timer.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/unyield.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/use_awaitable.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/use_future.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/uses_executor.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/version.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/wait_traits.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/basic_object_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/basic_overlapped_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/basic_random_access_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/basic_stream_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/object_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/overlapped_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/overlapped_ptr.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/random_access_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/windows/stream_handle.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/write.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/write_at.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/include/asio/yield.hpp delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/release.pl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/Makefile.mgw delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/Makefile.msc delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/asio.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/asio_ssl.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/Jamfile.v2 delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/asio.png delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/asio.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/asioref.sty delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/asioref.xsl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/boost_bind_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/doxy2qbk.pl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/examples.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/history.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/index.xml delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/makepdf.pl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/net_ts.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/noncopyable_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/allocation.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/async.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/async_op1.dot delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/async_op1.png delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/async_op2.dot delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/async_op2.png delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/basics.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/bsd_sockets.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/buffers.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/concurrency_hint.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/coroutine.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/coroutines_ts.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/cpp2011.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/handler_tracking.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/implementation.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/iostreams.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/line_based.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/other_protocols.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/posix.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/proactor.dot delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/proactor.png delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/protocols.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/rationale.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/reactor.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/serial_ports.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/signals.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/spawn.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/ssl.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/strands.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/streams.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/sync_op.dot delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/sync_op.png delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/threads.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/timers.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/overview/windows.qbk delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/platform_macros.pl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/platform_macros.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/project-root.jam delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/quickref.xml delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/reference.dox delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/reference.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/reference.xsl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/release_checklist.htm delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AcceptHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AcceptableProtocol.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AsyncReadStream.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/AsyncWriteStream.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/CompletionCondition.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/CompletionHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ConnectCondition.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ConnectHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ConstBufferSequence.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/DynamicBuffer.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Endpoint.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/EndpointSequence.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ExecutionContext.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Executor.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/GettableSocketOption.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Handler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/HandshakeHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/InternetProtocol.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/IoControlCommand.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/IoObjectService.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/MutableBufferSequence.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/OperationState.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ProtoAllocator.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Protocol.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/RangeConnectHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ReadHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Receiver.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ResolveHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Scheduler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Sender.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/Service.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SettableSocketOption.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/ShutdownHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SignalHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SyncReadStream.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/SyncWriteStream.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/TimeTraits.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/WaitHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/WaitTraits.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/WriteHandler.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/asynchronous_operations.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/read_write_operations.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/std_exception_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/std_executors.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/tutorial.dox delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/tutorial.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/tutorial.xsl delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/doc/using.qbk delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/allocation/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/allocation/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/buffers/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/chat/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/chat/chat_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/chat/chat_message.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/chat/chat_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/fork/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/fork/daemon.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/client/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/client/async_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/client/sync_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/connection.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/main.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/mime_types.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/mime_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/reply.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/reply.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/request.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/request_handler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/request_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/request_parser.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/request_parser.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server/server.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/connection.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/main.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/reply.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/reply.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/request.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server2/server.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/connection.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/main.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/reply.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/reply.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/request.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server3/server.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/main.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/reply.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/reply.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/request.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/http/server4/server.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/icmp/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/icmp/ping.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/invocation/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/iostreams/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/iostreams/http_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/local/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/local/connect_pair.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/local/iostream_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/local/stream_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/local/stream_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/multicast/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/multicast/receiver.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/multicast/sender.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/nonblocking/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/porthopper/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/porthopper/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/porthopper/protocol.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/porthopper/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/serialization/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/serialization/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/serialization/connection.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/serialization/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/serialization/stock.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/basic_logger.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/daytime_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/logger.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/logger_service.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/services/logger_service.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/socks4/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/socks4/socks4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/socks4/sync_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/spawn/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/spawn/echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/README delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/ca.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/dh2048.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/ssl/server.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timeouts/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timers/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/index_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/windows/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp03/windows/transmit_file.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/allocation/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/allocation/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/buffers/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/chat/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/chat/chat_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/chat/chat_message.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/chat/chat_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/actor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/fork_join.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/pipeline.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/fork/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/fork/daemon.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/futures/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/futures/daytime_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/handler_tracking/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/handler_tracking/async_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/connection.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/connection.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/header.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/main.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/mime_types.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/mime_types.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/reply.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/reply.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/request.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/request_handler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/request_handler.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/request_parser.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/request_parser.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/http/server/server.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/invocation/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/iostreams/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/iostreams/http_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/local/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/local/connect_pair.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/local/iostream_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/local/stream_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/local/stream_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/multicast/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/multicast/receiver.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/multicast/sender.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/nonblocking/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_1.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_2.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_3.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_4.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_5.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_6.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_7.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/operations/composed_8.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/socks4/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/socks4/socks4.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/socks4/sync_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/spawn/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/spawn/echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/README delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/ca.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/dh2048.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/ssl/server.pem delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timeouts/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timers/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/actor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/async_1.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/async_2.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/fork_join.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/pipeline.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/iostreams/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/iostreams/http_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_1.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_2.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_3.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_4.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_5.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_6.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_7.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp14/operations/composed_8.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/allocator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/high_res_clock.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/tcp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/tcp_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/udp_client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/latency/udp_server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/performance/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/performance/client.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/performance/handler_allocator.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/performance/server.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/Makefile.am delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/Makefile.msc delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_query_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_concept_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/can_require_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp03/require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_query_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_concept_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/can_require_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp11/require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_query_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_concept_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_not_applicable_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_not_applicable_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_not_applicable_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/can_require_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_free_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_free_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_member_prefer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_member_require.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/prefer_unsupported.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/query_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/query_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/query_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_concept_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_concept_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_concept_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_free.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_member.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/properties/cpp14/require_static.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/archetypes/async_ops.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/archetypes/async_result.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/archetypes/io_control_command.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/associated_allocator.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/associated_executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/async_result.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/awaitable.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_datagram_socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_deadline_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_raw_socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_serial_port.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_signal_set.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_socket_acceptor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_stream_socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_streambuf.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/basic_waitable_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/bind_executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/buffer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/buffered_read_stream.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/buffered_stream.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/buffered_write_stream.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/buffers_iterator.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/co_spawn.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/completion_condition.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/compose.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/connect.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/coroutine.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/deadline_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/defer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/detached.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/dispatch.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/error.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/any_executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/blocking.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/blocking_adaptation.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/bulk_execute.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/bulk_guarantee.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/connect.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/context_as.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/execute.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/invocable_archetype.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/mapping.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/operation_state.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/outstanding_work.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/prefer_only.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/receiver.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/relationship.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/schedule.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/scheduler.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/sender.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/set_done.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/set_error.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/set_value.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/start.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution/submit.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/execution_context.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/executor_work_guard.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/basic_endpoint.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/datagram_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/raw_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/generic/stream_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/high_resolution_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/io_context.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/io_context_strand.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/address.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/basic_endpoint.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/basic_resolver.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/host_name.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/icmp.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/multicast.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/network_v4.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/network_v6.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/resolver_query_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/tcp.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/udp.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/unicast.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ip/v6_only.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/is_read_buffered.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/is_write_buffered.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/local/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/local/basic_endpoint.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/local/connect_pair.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/local/datagram_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/local/stream_protocol.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/packaged_task.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/placeholders.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/basic_descriptor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/descriptor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/descriptor_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/posix/stream_descriptor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/post.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/read.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/read_at.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/read_until.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/redirect_error.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/serial_port.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/serial_port_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/signal_set.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/socket_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/context.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/context_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/error.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/host_name_verification.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/stream.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ssl/stream_base.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/static_thread_pool.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/steady_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/strand.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/streambuf.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/system_context.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/system_executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/system_timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/this_coro.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/thread.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/thread_pool.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/time_traits.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/buffer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/internet.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/io_context.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/net.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/netfwd.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/socket.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/ts/timer.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/unit_test.hpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/use_awaitable.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/use_future.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/uses_executor.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/wait_traits.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/.gitignore delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/basic_object_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/object_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/overlapped_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/random_access_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/windows/stream_handle.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/write.cpp delete mode 100644 ui/external/fineftp-server/thirdparty/asio/asio/src/tests/unit/write_at.cpp delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/src/tools/handlerlive.pl delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/src/tools/handlertree.pl delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/src/tools/handlerviz.pl delete mode 100755 ui/external/fineftp-server/thirdparty/asio/asio/tsify.pl delete mode 100644 ui/external/fineftp-server/toolchain_mingw.cmake diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt index 42632ccd..f574a646 100644 --- a/ui/CMakeLists.txt +++ b/ui/CMakeLists.txt @@ -43,12 +43,6 @@ else () list(APPEND LDFLAGS minizip) endif () -if (OPTION_FTP_SERVER) - add_subdirectory(external/fineftp-server) - list(APPEND FLAGS -D__FTP_SERVER__) - list(APPEND LDFLAGS fineftp::server) -endif () - if (PLATFORM_LINUX OR PLATFORM_WINDOWS) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_package(Threads REQUIRED) diff --git a/ui/c2dui_config.cpp b/ui/c2dui_config.cpp index ea8f7bb9..35d042d5 100644 --- a/ui/c2dui_config.cpp +++ b/ui/c2dui_config.cpp @@ -48,9 +48,6 @@ Config::Config(c2d::Io *io, int ver, const std::string &defaultRomsPath) { append("FULLSCREEN", {"OFF", "ON"}, 0, Option::Id::GUI_FULLSCREEN, Option::Flags::BOOLEAN); get()->at(get()->size() - 1).setInfo("YOU NEED TO RESTART THE APPLICATION AFTER CHANGING THIS OPTION"); #endif -#ifdef __FTP_SERVER__ - append("FTP_SERVER", {"OFF", "ON"}, 0, Option::Id::GUI_FTP_SERVER, Option::Flags::BOOLEAN); -#endif // build skin list std::vector skins; diff --git a/ui/c2dui_option.h b/ui/c2dui_option.h index 7c93543b..c0a01eef 100644 --- a/ui/c2dui_option.h +++ b/ui/c2dui_option.h @@ -43,7 +43,6 @@ namespace c2dui { GUI_SCREEN_WIDTH, GUI_SCREEN_HEIGHT, GUI_FULLSCREEN, - GUI_FTP_SERVER, GUI_SKIN, GUI_VIDEO_SNAP_DELAY, MENU_ROM_OPTIONS, diff --git a/ui/c2dui_ui_main.cpp b/ui/c2dui_ui_main.cpp index 2a21bc6f..2e1e59c1 100644 --- a/ui/c2dui_ui_main.cpp +++ b/ui/c2dui_ui_main.cpp @@ -23,15 +23,6 @@ UiMain::UiMain(const Vector2f &size, c2d::Io *io, Config *cfg) : C2DRenderer(siz } } -UiMain::~UiMain() { -#ifdef __FTP_SERVER__ - delete (ftpServer); -#endif -#if 0 - delete (scrapper); -#endif -} - void UiMain::init(UIRomList *_uiRomList, UiMenu *_uiMenu, UiEmu *_uiEmu, UiStateMenu *_uiState) { uiRomList = _uiRomList; uiRomList->updateRomList(); @@ -72,17 +63,6 @@ void UiMain::init(UIRomList *_uiRomList, UiMenu *_uiMenu, UiEmu *_uiEmu, UiState updateInputMapping(false); getInput()->setRepeatDelay(INPUT_DELAY); - -#ifdef __FTP_SERVER__ - bool startFtp = config->get(Option::Id::GUI_FTP_SERVER)->getValueBool(); - if (startFtp) { - ftpServerStart(); - } -#endif - -#if 0 - scrapper = new Scrapper(this); -#endif } void UiMain::setSkin(Skin *s) { @@ -212,22 +192,3 @@ void UiMain::updateInputMapping(bool isRomConfig) { } } } - -#ifdef __FTP_SERVER__ - -void UiMain::ftpServerStart() { - if (!ftpServer) { - ftpServer = new fineftp::FtpServer(3333); - ftpServer->addUser("pemu", "pemu", getIo()->getDataPath(), fineftp::Permission::All); - ftpServer->start(2); - } -} - -void UiMain::ftpServerStop() { - if (ftpServer) { - delete (ftpServer); - ftpServer = nullptr; - } -} - -#endif \ No newline at end of file diff --git a/ui/c2dui_ui_main.h b/ui/c2dui_ui_main.h index b31ed3ff..3477fec0 100644 --- a/ui/c2dui_ui_main.h +++ b/ui/c2dui_ui_main.h @@ -5,39 +5,15 @@ #ifndef GUI_H #define GUI_H -#ifdef __FTP_SERVER__ - -#include "fineftp/server.h" - -#endif - -#define UI_KEY_FILTER_ROMS 100 -#define UI_KEY_SHOW_ROMLIST 101 -#define UI_KEY_SHOW_MEMU_UI 102 -#define UI_KEY_SHOW_MEMU_ROM 103 -#define UI_KEY_SHOW_MEMU_STATE 104 -#define UI_KEY_RUN_ROM 105 -#define UI_KEY_RESUME_ROM 106 -#define UI_KEY_STOP_ROM 107 - -#define UI_MARGIN 16 #define INPUT_DELAY 200 -#define COL_GREEN Color(153, 255, 51) -#define COL_YELLOW Color(255, 225, 51) -#define COL_ORANGE Color(255, 153, 51) -#define COL_RED Color(255, 51, 51) - namespace c2dui { class UiMain : public c2d::C2DRenderer { public: - explicit UiMain(const c2d::Vector2f &size, c2d::Io *io, Config *cfg); - ~UiMain() override; - void init(UIRomList *uiRomList, UiMenu *uiMenu, UiEmu *uiEmu, UiStateMenu *uiState); @@ -75,16 +51,7 @@ namespace c2dui { bool done = false; -#ifdef __FTP_SERVER__ - - void ftpServerStart(); - - void ftpServerStop(); - -#endif - private: - Config *config = nullptr; Skin *skin = nullptr; UIHighlight *uiHighlight = nullptr; @@ -97,9 +64,6 @@ namespace c2dui { UiStatusBox *uiStatusBox = nullptr; c2d::C2DClock timer; unsigned int oldKeys = 0; -#ifdef __FTP_SERVER__ - fineftp::FtpServer *ftpServer = nullptr; -#endif }; } diff --git a/ui/c2dui_ui_menu.cpp b/ui/c2dui_ui_menu.cpp index 82c3e766..a1e898b1 100644 --- a/ui/c2dui_ui_menu.cpp +++ b/ui/c2dui_ui_menu.cpp @@ -357,15 +357,7 @@ bool UiMenu::onInput(c2d::Input::Player *players) { case Option::Id::GUI_VIDEO_SNAP_DELAY: ui->getUiRomList()->setVideoSnapDelay(option.getValueInt()); break; -#ifdef __FTP_SERVER__ - case Option::Id::GUI_FTP_SERVER: - if (option.getValueBool()) { - ui->ftpServerStart(); - } else { - ui->ftpServerStop(); - } - break; -#endif + default: break; } diff --git a/ui/external/fineftp-server/.gitignore b/ui/external/fineftp-server/.gitignore deleted file mode 100644 index 49c4420b..00000000 --- a/ui/external/fineftp-server/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*Debug -ipch - -*.sdf -*.suo -*.aps -*.user -*.opendb -*.db -/_build -/_install -/.vs -/CMakeLists.txt.user - -# Common build directories in CMake projects -build* - -# Temporary Vim files -*.swp diff --git a/ui/external/fineftp-server/.gitmodules b/ui/external/fineftp-server/.gitmodules deleted file mode 100644 index eb2a67c6..00000000 --- a/ui/external/fineftp-server/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "thirdparty/asio"] - path = thirdparty/asio - url = https://github.com/chriskohlhoff/asio.git diff --git a/ui/external/fineftp-server/CMakeLists.txt b/ui/external/fineftp-server/CMakeLists.txt deleted file mode 100644 index 6b034a22..00000000 --- a/ui/external/fineftp-server/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -cmake_minimum_required(VERSION 3.5.1) - -set(CMAKE_CXX_STANDARD 14) - -# Normalize backslashes from Windows paths -file(TO_CMAKE_PATH "${CMAKE_MODULE_PATH}" CMAKE_MODULE_PATH) -file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH) -message(STATUS "Module Path: ${CMAKE_MODULE_PATH}") -message(STATUS "Prefix Path: ${CMAKE_PREFIX_PATH}") - -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) - -project(fineftp) - -set(as_subproject fineftp) - -string(COMPARE EQUAL "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}" _cmp) -if (_cmp) - macro(find_package) - if(NOT "${ARGV0}" IN_LIST as_subproject) - _find_package(${ARGV}) - endif() - endmacro() -endif() - -add_subdirectory(fineftp-server) -#add_subdirectory(example) diff --git a/ui/external/fineftp-server/CMakeWindows.bat b/ui/external/fineftp-server/CMakeWindows.bat deleted file mode 100644 index fa787f69..00000000 --- a/ui/external/fineftp-server/CMakeWindows.bat +++ /dev/null @@ -1,6 +0,0 @@ -mkdir _build -cd _build - -cmake .. -DCMAKE_INSTALL_PREFIX=_install -cd .. -pause diff --git a/ui/external/fineftp-server/LICENSE b/ui/external/fineftp-server/LICENSE deleted file mode 100644 index 6e5702d1..00000000 --- a/ui/external/fineftp-server/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Continental Corporation - -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 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/ui/external/fineftp-server/README.md b/ui/external/fineftp-server/README.md deleted file mode 100644 index 0b2809c7..00000000 --- a/ui/external/fineftp-server/README.md +++ /dev/null @@ -1,84 +0,0 @@ -[![Windows](https://github.com/continental/fineftp-server/actions/workflows/build-windows.yml/badge.svg)](https://github.com/continental/fineftp-server/actions/workflows/build-windows.yml) [![Ubuntu](https://github.com/continental/fineftp-server/actions/workflows/build-ubuntu.yml/badge.svg)](https://github.com/continental/fineftp-server/actions/workflows/build-ubuntu.yml) [![macOS](https://github.com/continental/fineftp-server/actions/workflows/build-macos.yml/badge.svg)](https://github.com/continental/fineftp-server/actions/workflows/build-macos.yml) - -# fineFTP Server - -FineFTP is a minimal FTP server library for Windows and Unix flavors. The project is CMake based and only depends on asio, which is integrated as git submodule. No boost is required. - -You can easily embed this library into your own project in order to create an embedded FTP Server. It was developed and tested on Windows 10 (Visual Studio 2015 / 2019, MinGW) and Ubuntu 16.04 - 21.10 (gcc 5.4.0 - 11.2.0). - -## Features - -- FTP Passive mode (the only mode you need nowadays) -- Listing directories -- Uploading and downloading files -- Creating and removing files and directories -- User authentication (and anonymous user without authentication) -- Individual local home path for each user -- Access control on a per-user-basis -- UTF8 support (On Windows MSVC only) - -*fineFTP does not support any kind of encryption. You should only use fineFTP in trusted networks.* - -## Example - -Using fineFTP in your application is simple. Just create an FtpServer object, add one or multiple users and start the server. - -```cpp -#include -#include - -int main() { - // Create an FTP Server on port 2121. We use 2121 instead of the default port - // 21, as your application would need root privileges to open port 21. - fineftp::FtpServer ftp_server(2121); - - // Add the well known anonymous user. Clients can log in using username - // "anonymous" or "ftp" with any password. The user will be able to access - // your C:\ drive and upload, download, create or delete files. On Linux just - // replace "C:\\" with any valid path. FineFTP is designed to be cross-platform. - ftp_server.addUserAnonymous("C:\\", fineftp::Permission::All); - - // Start the FTP Server with a thread-pool size of 4. - ftp_server.start(4); - - // Prevent the application from exiting immediately - for (;;) std::this_thread::sleep_for(std::chrono::milliseconds(100)); - return 0; -} -``` - -## How to checkout and build - -There is an example project provided that will create an FTP Server at `C:\` (Windows) or `/` (Unix). - -1. Install cmake and git / git-for-windows - -2. Checkout this repo and the asio submodule - ```console - git clone https://github.com/continental/fineftp-server.git - cd fineftp-server - git submodule init - git submodule update - ``` - -3. CMake the project *(Building as debug will add some debug output that is helpful so see if everything is working)* - ```console - mkdir _build - cd _build - cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=_install - ``` - -4. Build the project - - Linux: `make` - - Windows: Open `_build\fineftp.sln` with Visual Studio and build the example project - -5. Start `example` / `example.exe` and connect with your favorite FTP Client (e.g. FileZilla) on port 2121 *(This port is used so you don't need root privileges to start the FTP server)* - - -## Contribute - -Awesome, you want to contribute to FineFTP? Here is how you can do that! - -- Leave us a star ⭐️ (That's GitHub money!) -- Create an issue and write about a feature you would like or a bug you have found (maybe we will find some spare time to implement it 😉) -- Fork this repository, implement the feature yourself and create a pull request diff --git a/ui/external/fineftp-server/cmake/Findasio.cmake b/ui/external/fineftp-server/cmake/Findasio.cmake deleted file mode 100644 index f7a958c6..00000000 --- a/ui/external/fineftp-server/cmake/Findasio.cmake +++ /dev/null @@ -1,30 +0,0 @@ -find_path(asio_INCLUDE_DIR - NAMES asio.hpp - HINTS - "${CMAKE_CURRENT_LIST_DIR}/../thirdparty/asio/asio/include" - NO_DEFAULT_PATH - NO_CMAKE_FIND_ROOT_PATH -) - -if(asio_INCLUDE_DIR-NOTFOUND) - message(FATAL_ERROR "Could not find asio library") - set(asio_FOUND FALSE) -else() - set(asio_FOUND TRUE) - set(ASIO_INCLUDE_DIR ${asio_INCLUDE_DIR}) -endif() - -if(asio_FOUND) - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(asio - REQUIRED_VARS asio_INCLUDE_DIR) - - if(NOT TARGET asio::asio) - set(asio_INCLUDE_DIRS ${asio_INCLUDE_DIR}) - add_library(asio::asio INTERFACE IMPORTED) - set_target_properties(asio::asio PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${asio_INCLUDE_DIR} - INTERFACE_COMPILE_DEFINITIONS ASIO_STANDALONE) - mark_as_advanced(asio_INCLUDE_DIR) - endif() -endif() diff --git a/ui/external/fineftp-server/cmake/fineftpConfig.cmake.in b/ui/external/fineftp-server/cmake/fineftpConfig.cmake.in deleted file mode 100644 index b984ac8e..00000000 --- a/ui/external/fineftp-server/cmake/fineftpConfig.cmake.in +++ /dev/null @@ -1,4 +0,0 @@ -@PACKAGE_INIT@ - -INCLUDE("@PACKAGE_FINEFTP_INSTALL_CMAKE_DIR@/fineftpTargets.cmake") -find_package(Threads) diff --git a/ui/external/fineftp-server/example/CMakeLists.txt b/ui/external/fineftp-server/example/CMakeLists.txt deleted file mode 100644 index 37ca13bc..00000000 --- a/ui/external/fineftp-server/example/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -cmake_minimum_required(VERSION 3.5.1) - -project(example) - -set(CMAKE_CXX_STANDARD 14) - -find_package(fineftp REQUIRED CONFIG) - -set(sources - src/main.cpp -) - -add_executable (example - ${sources} -) - -target_link_libraries (example - fineftp::server -) diff --git a/ui/external/fineftp-server/example/src/main.cpp b/ui/external/fineftp-server/example/src/main.cpp deleted file mode 100644 index 94dbd0ef..00000000 --- a/ui/external/fineftp-server/example/src/main.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include - -#include -#include -#include - -int main() { - -#ifdef WIN32 - std::string local_root = "C:\\"; // The backslash at the end is necessary! -#else // WIN32 - std::string local_root = "/"; -#endif // WIN32 - - // Create an FTP Server on port 2121. We use 2121 instead of the default port - // 21, as your application would need root privileges to open port 21. - fineftp::FtpServer server(2121); - - // Add the well known anonymous user and some normal users. The anonymous user - // can log in with username "anonyous" or "ftp" and any password. The normal - // users have to provide their username and password. - server.addUserAnonymous(local_root, fineftp::Permission::All); - server.addUser ("MyUser", "MyPassword", local_root, fineftp::Permission::ReadOnly); - server.addUser ("Uploader", "123456", local_root, fineftp::Permission::DirList | fineftp::Permission::DirCreate | fineftp::Permission::FileWrite | fineftp::Permission::FileAppend); - - // Start the FTP server with 4 threads. More threads will increase the - // performance with multiple clients, but don't over-do it. - server.start(4); - - // Prevent the application from exiting immediatelly - for (;;) - { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - - return 0; -} diff --git a/ui/external/fineftp-server/fineftp-server/CMakeLists.txt b/ui/external/fineftp-server/fineftp-server/CMakeLists.txt deleted file mode 100644 index 6a0c9556..00000000 --- a/ui/external/fineftp-server/fineftp-server/CMakeLists.txt +++ /dev/null @@ -1,132 +0,0 @@ -cmake_minimum_required(VERSION 3.5.1) - -project(server VERSION 1.3.0) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -set(CMAKE_CXX_VISIBILITY_PRESET hidden) -set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) - -find_package(Threads REQUIRED) -find_package(asio REQUIRED) - -include(GenerateExportHeader) - -# Public API include directory -set (includes - include/fineftp/server.h - include/fineftp/permissions.h -) - -# Private source files -set(sources - src/filesystem.cpp - src/filesystem.h - src/ftp_message.h - src/ftp_session.cpp - src/ftp_session.h - src/ftp_user.h - src/server.cpp - src/server_impl.cpp - src/server_impl.h - src/user_database.cpp - src/win_str_convert.cpp - src/win_str_convert.h -) - - -add_library (${PROJECT_NAME} - ${includes} - ${sources} -) - -# Generate version defines -configure_file("fineftp_version.h.in" "${PROJECT_BINARY_DIR}/include/fineftp/fineftp_version.h" @ONLY) - -# Generate header with export macros -generate_export_header(${PROJECT_NAME} - EXPORT_FILE_NAME ${PROJECT_BINARY_DIR}/include/fineftp/fineftp_export.h - BASE_NAME FINEFTP -) - -add_library (fineftp::server ALIAS ${PROJECT_NAME}) - - -target_link_libraries(${PROJECT_NAME} - PRIVATE - Threads::Threads - $<$:ws2_32> - $<$:wsock32> -) - -# Link asio as described in this workaround: https://gitlab.kitware.com/cmake/cmake/-/issues/15415#note_633938 -target_link_libraries (${PROJECT_NAME} PRIVATE $) - -target_compile_definitions(${PROJECT_NAME} - PRIVATE - ASIO_STANDALONE - ASIO_DISABLE_VISIBILITY - __USE_FILE_OFFSET64=1 - _WIN32_WINNT=0x0601 -) - -target_compile_options(${PROJECT_NAME} PRIVATE - $<$,$,$>: - -Wall -Wextra> - $<$: - /W4>) - - -# Add own public include directory -target_include_directories(${PROJECT_NAME} - PUBLIC - $ - $ # To find the export file generated by generate_export_header - $ -) - -target_include_directories(${PROJECT_NAME} PRIVATE src) - -set_target_properties(${PROJECT_NAME} PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MAJOR} - OUTPUT_NAME fineftp-${PROJECT_NAME} -) - -################################## - -# Mirror the folder structure in an IDE -include(sourcetree.cmake) -create_source_tree(${includes} ${sources}) - -################################## - -set(FINEFTP_INSTALL_CMAKE_DIR "lib/cmake/fineftp") - -install( - TARGETS ${PROJECT_NAME} - EXPORT fineftpTargets - LIBRARY DESTINATION "lib" - ARCHIVE DESTINATION "lib" -) - -install(DIRECTORY "include/fineftp" DESTINATION "include" FILES_MATCHING PATTERN "*.h") -install(DIRECTORY "${PROJECT_BINARY_DIR}/include/fineftp" DESTINATION "include" FILES_MATCHING PATTERN "*.h") - -install( - EXPORT fineftpTargets - FILE fineftpTargets.cmake - DESTINATION ${FINEFTP_INSTALL_CMAKE_DIR} - NAMESPACE fineftp:: -) - -include(CMakePackageConfigHelpers) - -configure_package_config_file( - "../cmake/fineftpConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/fineftpConfig.cmake" - INSTALL_DESTINATION ${FINEFTP_INSTALL_CMAKE_DIR} - PATH_VARS FINEFTP_INSTALL_CMAKE_DIR -) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/fineftpConfig.cmake" DESTINATION ${FINEFTP_INSTALL_CMAKE_DIR}) - diff --git a/ui/external/fineftp-server/fineftp-server/Command return codes.txt b/ui/external/fineftp-server/fineftp-server/Command return codes.txt deleted file mode 100644 index 5ae88aa1..00000000 --- a/ui/external/fineftp-server/fineftp-server/Command return codes.txt +++ /dev/null @@ -1,148 +0,0 @@ - Connection Establishment - SERVICE_READY_IN_MINUTES - SERVICE_READY_FOR_NEW_USER - SERVICE_READY_FOR_NEW_USER - SERVICE_NOT_AVAILABLE - Login - USER - USER_LOGGED_IN - NOT_LOGGED_IN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, SERVICE_NOT_AVAILABLE - USER_NAME_OK, NEED_ACCOUNT_FOR_LOGIN - PASS - USER_LOGGED_IN - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS - NOT_LOGGED_IN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMANDS_BAD_SEQUENCE, SERVICE_NOT_AVAILABLE - NEED_ACCOUNT_FOR_LOGIN - ACCT - USER_LOGGED_IN - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS - NOT_LOGGED_IN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMANDS_BAD_SEQUENCE, SERVICE_NOT_AVAILABLE - CWD - FILE_ACTION_COMPLETED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN, ACTION_NOT_TAKEN - CDUP - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN, ACTION_NOT_TAKEN - SMNT - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS, FILE_ACTION_COMPLETED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN, ACTION_NOT_TAKEN - Logout - REIN - SERVICE_READY_IN_MINUTES - SERVICE_READY_FOR_NEW_USER - SERVICE_READY_FOR_NEW_USER - SERVICE_NOT_AVAILABLE - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, COMMAND_NOT_IMPLEMENTED - QUIT - SERVICE_CLOSING_CONTROL_CONNECTION - SYNTAX_ERROR_UNRECOGNIZED_COMMAND - Transfer parameters - PORT - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - PASV - ENTERING_PASSIVE_MODE - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - MODE - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - TYPE - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - STRU - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - File action commands - ALLO - COMMAND_OK - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - REST - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - FILE_ACTION_NEEDS_FURTHER_INFO - STOR - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - (REPLY_RESTART_MARKER) - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR, ACTION_ABORTED_PAGE_TYPE_UNKNOWN, FILE_ACTION_ABORTED - NEED_ACCOUNT_FOR_STORING_FILES, FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN_INSUFFICIENT_STORAGE_SPACE, ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - STOU - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - (REPLY_RESTART_MARKER) - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR, ACTION_ABORTED_PAGE_TYPE_UNKNOWN, FILE_ACTION_ABORTED - NEED_ACCOUNT_FOR_STORING_FILES, FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN_INSUFFICIENT_STORAGE_SPACE, ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - RETR - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - (REPLY_RESTART_MARKER) - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR - FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - LIST - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR - FILE_ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - NLST - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR - FILE_ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - APPE - DATA_CONNECTION_OPEN_TRANSFER_STARTING, FILE_STATUS_OK_OPENING_DATA_CONNECTION - (REPLY_RESTART_MARKER) - CLOSING_DATA_CONNECTION, FILE_ACTION_COMPLETED - ERROR_OPENING_DATA_CONNECTION, TRANSFER_ABORTED, ACTION_ABORTED_LOCAL_ERROR, ACTION_ABORTED_PAGE_TYPE_UNKNOWN, FILE_ACTION_ABORTED - NEED_ACCOUNT_FOR_STORING_FILES, FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN, ACTION_NOT_TAKEN_INSUFFICIENT_STORAGE_SPACE, ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - RNFR - FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - FILE_ACTION_NEEDS_FURTHER_INFO - RNTO - FILE_ACTION_COMPLETED - NEED_ACCOUNT_FOR_STORING_FILES, ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, COMMANDS_BAD_SEQUENCE, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - DELE - FILE_ACTION_COMPLETED - FILE_ACTION_NOT_TAKEN, ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - RMD - FILE_ACTION_COMPLETED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN, ACTION_NOT_TAKEN - MKD - PATHNAME_CREATED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN, ACTION_NOT_TAKEN - PWD - PATHNAME_CREATED - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, ACTION_NOT_TAKEN - ABOR - DATA_CONNECTION_OPEN_NO_TRANSFER, CLOSING_DATA_CONNECTION - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE - Informational commands - SYST - NAME_SYSTEM_TYPE - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE - STAT - REPLY_SYSTEM_STATUS, DIRECTORY_STATUS, FILE_STATUS - FILE_ACTION_NOT_TAKEN - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE, NOT_LOGGED_IN - HELP - REPLY_SYSTEM_STATUS, HELP_MESSAGE - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, COMMAND_NOT_IMPLEMENTED, SERVICE_NOT_AVAILABLE - Miscellaneous commands - SITE - COMMAND_OK - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS - SYNTAX_ERROR_UNRECOGNIZED_COMMAND, SYNTAX_ERROR_PARAMETERS, NOT_LOGGED_IN - NOOP - COMMAND_OK - SYNTAX_ERROR_UNRECOGNIZED_COMMAND SERVICE_NOT_AVAILABLE diff --git a/ui/external/fineftp-server/fineftp-server/fineftp_version.h.in b/ui/external/fineftp-server/fineftp-server/fineftp_version.h.in deleted file mode 100644 index 135b5222..00000000 --- a/ui/external/fineftp-server/fineftp-server/fineftp_version.h.in +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define FINEFTP_SERVER_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ -#define FINEFTP_SERVER_VERSION_MINOR @PROJECT_VERSION_MINOR@ -#define FINEFTP_SERVER_VERSION_PATCH @PROJECT_VERSION_PATCH@ diff --git a/ui/external/fineftp-server/fineftp-server/include/fineftp/permissions.h b/ui/external/fineftp-server/fineftp-server/include/fineftp/permissions.h deleted file mode 100644 index 496b2723..00000000 --- a/ui/external/fineftp-server/fineftp-server/include/fineftp/permissions.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -namespace fineftp -{ - enum class Permission : int - { - FileRead = (1 << 0), /**< Download files */ - FileWrite = (1 << 1), /**< Upload files as new files */ - FileAppend = (1 << 2), /**< Upload files that get appended to existing files */ - FileDelete = (1 << 3), /**< Delete existing files or overwrite an existing file */ - FileRename = (1 << 4), /**< Rename existing files */ - - DirList = (1 << 5), /**< Retrieve the content of directories */ - DirCreate = (1 << 6), /**< Create new directories */ - DirDelete = (1 << 7), /**< Delete existing directories */ - DirRename = (1 << 8), /**< Rename existing directories */ - - All = (FileRead | FileWrite | FileAppend | FileDelete | FileRename | DirList | DirCreate | DirDelete | DirRename), - ReadOnly = (FileRead | DirList), - None = 0 - }; - - inline Permission operator~ (Permission a) { return (Permission)~(int)a; } - inline Permission operator| (Permission a, Permission b) { return (Permission)((int)a | (int)b); } - inline Permission operator& (Permission a, Permission b) { return (Permission)((int)a & (int)b); } - inline Permission operator^ (Permission a, Permission b) { return (Permission)((int)a ^ (int)b); } - inline Permission& operator|= (Permission& a, Permission b) { return (Permission&)((int&)a |= (int)b); } - inline Permission& operator&= (Permission& a, Permission b) { return (Permission&)((int&)a &= (int)b); } - inline Permission& operator^= (Permission& a, Permission b) { return (Permission&)((int&)a ^= (int)b); } - -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/include/fineftp/server.h b/ui/external/fineftp-server/fineftp-server/include/fineftp/server.h deleted file mode 100644 index b305e3cf..00000000 --- a/ui/external/fineftp-server/fineftp-server/include/fineftp/server.h +++ /dev/null @@ -1,159 +0,0 @@ -#pragma once - -#include -#include - -#include - -#include -#include - -namespace fineftp -{ - - /** Private implementation */ - class FtpServerImpl; - - /** - * @brief The fineftp::FtpServer is a simple FTP server library. - * - * Using the FtpServer class is simple: - * 1. Create an instance - * 2. Add a user - * 3. Start the server - * - * Then your server is up and running. In code it will look like this: - * - * @code{.cpp} - * - * fineftp::FtpServer server(2121); - * server.addUserAnonymous("C:\\", fineftp::Permission::All); - * server.start(); - * - * @endcode - * - */ - class FtpServer - { - public: - /** - * @brief Creates an FTP Server instance that will listen on the the given control port and accept connections from the given network interface. - * - * If no port is provided, the default FTP Port 21 is used. If you want to - * use that port, make sure that your application runs as root. - * - * Instead of using a predefined port, the operating system can choose a - * free port port. Use port=0, if that behaviour is desired. The chosen port - * can be determined by with getPort(). - * - * @param port: The port to start the FTP server on. Defaults to 21. - * @param host: The host to accept incoming connections from. - */ - FINEFTP_EXPORT FtpServer(const std::string& address, uint16_t port = 21); - - /** - * @brief Creates an FTP Server instance that will listen on the the given control port. - * - * If no port is provided, the default FTP Port 21 is used. If you want to - * use that port, make sure that your application runs as root. - * - * Instead of using a predefined port, the operating system can choose a - * free port port. Use port=0, if that behaviour is desired. The chosen port - * can be determined by with getPort(). - * - * This constructor will create an FTP Server binding to IPv4 0.0.0.0 and - * Thus accepting connections from any IPv4 address. - * For security reasons it might be desirable to bind to a specific IP - * address. Use FtpServer(const std::string&, uint16_t) for that purpose. - * - * @param port: The port to start the FTP server on. Defaults to 21. - */ - FINEFTP_EXPORT FtpServer(uint16_t port = 21); - - FINEFTP_EXPORT ~FtpServer(); - - /** - * @brief Adds a new user - * - * Adds a new user with a given username, password, local root path and - * permissions. - * - * Note that the username "anonymous" and "ftp" are reserved, as those are - * well-known usernames usually used for accessing FTP servers without a - * password. If adding a user with any of those usernames, the password will - * be ignored, any user will be able to log in with any password! - * - * The Permissions are flags that are or-ed bit-wise and control what the - * user will be able to do. - * - * @param username: The username for login - * @param password: The user's password - * @param local_root_path: A path to any resource on the local filesystem that will be accessed by the user - * @param permissions: A bit-mask of what the user will be able to do. - * - * @return True if adding the user was successful (i.e. it didn't exit already). - */ - FINEFTP_EXPORT bool addUser(const std::string& username, const std::string& password, const std::string& local_root_path, const Permission permissions); - - /** - * @brief Adds the "anonymous" / "ftp" user that FTP clients use to access FTP servers without password - * - * @param local_root_path: A path to any resource on the local filesystem that will be accessed by the user - * @param permissions: A bit-mask of what the user will be able to do. - * - * @return True if adding the anonymous user was successful (i.e. it didn't exit already). - */ - FINEFTP_EXPORT bool addUserAnonymous(const std::string& local_root_path, const Permission permissions); - - /** - * @brief Starts the FTP Server - * - * @param thread_count: The size of the thread pool to use. Must not be 0. - * - * @return True if the Server has been started successfully. - */ - FINEFTP_EXPORT bool start(size_t thread_count = 1); - - /** - * @brief Stops the FTP Server - * - * All operations will be cancelled as fast as possible. The clients will - * not be informed about the shutdown. - */ - FINEFTP_EXPORT void stop(); - - /** - * @brief Returns the number of currently open connections - * - * @return the number of open connections - */ - FINEFTP_EXPORT int getOpenConnectionCount() const; - - /** - * @brief Get the control port that the FTP server is listening on - * - * When the server was created with a specific port (not 0), this port will - * be returned. - * If the server however was created with port 0, the operating system will - * choose a free port. This method will return that port. - * - * @return The control port the server is listening on - */ - FINEFTP_EXPORT uint16_t getPort() const; - - /** - * @brief Get the ip address that the FTP server is listening for. - * - * @return The ip address the FTP server is listening for. - */ - FINEFTP_EXPORT std::string getAddress() const; - - // Non-copyable - FINEFTP_EXPORT FtpServer(const FtpServer&) = delete; - FINEFTP_EXPORT FtpServer& operator=(const FtpServer&) = delete; - - private: - std::unique_ptr ftp_server_; /**< Implementation details */ - }; - -} diff --git a/ui/external/fineftp-server/fineftp-server/sourcetree.cmake b/ui/external/fineftp-server/fineftp-server/sourcetree.cmake deleted file mode 100644 index 04969f50..00000000 --- a/ui/external/fineftp-server/fineftp-server/sourcetree.cmake +++ /dev/null @@ -1,12 +0,0 @@ -function(create_source_tree) - foreach(_source IN ITEMS ${ARGN}) - if (IS_ABSOLUTE "${_source}") - file(RELATIVE_PATH _source_rel "${CMAKE_CURRENT_SOURCE_DIR}" "${_source}") - else() - set(_source_rel "${_source}") - endif() - get_filename_component(_source_path "${_source_rel}" PATH) - string(REPLACE "/" "\\" _source_path_msvc "${_source_path}") - source_group("${_source_path_msvc}" FILES "${_source}") - endforeach() -endfunction(create_source_tree) diff --git a/ui/external/fineftp-server/fineftp-server/src/filesystem.cpp b/ui/external/fineftp-server/fineftp-server/src/filesystem.cpp deleted file mode 100644 index 9f67cf9f..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/filesystem.cpp +++ /dev/null @@ -1,461 +0,0 @@ -#include "filesystem.h" - -#include -#include -#include -#include - -#ifdef WIN32 - -#define NOMINMAX -#define WIN32_LEAN_AND_MEAN -#include -#include - -#else // WIN32 - -#include - -#endif // WIN32 - -//////////////////////////////////////////////////////////////////////////////// -/// Filesystem -//////////////////////////////////////////////////////////////////////////////// - -namespace fineftp -{ -namespace Filesystem -{ - - FileStatus::FileStatus(const std::string& path) - : path_(path) - { -#ifdef WIN32 - std::wstring w_path_ = StrConvert::Utf8ToWide(path); - const int error_code = _wstat64(w_path_.c_str(), &file_status_); -#else // WIN32 - const int error_code = stat(path.c_str(), &file_status_); -#endif // WIN32 - is_ok_ = (error_code == 0); - } - - FileStatus::~FileStatus() {} - - bool FileStatus::isOk() const - { - return is_ok_; - } - - FileType FileStatus::type() const - { - if (!is_ok_) - return FileType::Unknown; - - switch (file_status_.st_mode & S_IFMT) { - case S_IFREG: return FileType::RegularFile; - case S_IFDIR: return FileType::Dir; - case S_IFCHR: return FileType::CharacterDevice; -#ifndef WIN32 - case S_IFBLK: return FileType::BlockDevice; - case S_IFIFO: return FileType::Fifo; - case S_IFLNK: return FileType::SymbolicLink; - case S_IFSOCK: return FileType::Socket; -#endif // !WIN32 - default: return FileType::Unknown; - } - - } - - int64_t FileStatus::fileSize() const - { - if (!is_ok_) - return 0; - - return file_status_.st_size; - } - -#ifdef WIN32 - bool FileStatus::permissionRootRead() const { return 0 != (file_status_.st_mode & S_IREAD); } - bool FileStatus::permissionRootWrite() const { return 0 != (file_status_.st_mode & S_IWRITE); } - bool FileStatus::permissionRootExecute() const { return 0 != (file_status_.st_mode & S_IEXEC); } - bool FileStatus::permissionGroupRead() const { return 0 != (file_status_.st_mode & S_IREAD); } - bool FileStatus::permissionGroupWrite() const { return 0 != (file_status_.st_mode & S_IWRITE); } - bool FileStatus::permissionGroupExecute() const { return 0 != (file_status_.st_mode & S_IEXEC); } - bool FileStatus::permissionOwnerRead() const { return 0 != (file_status_.st_mode & S_IREAD); } - bool FileStatus::permissionOwnerWrite() const { return 0 != (file_status_.st_mode & S_IWRITE); } - bool FileStatus::permissionOwnerExecute() const { return 0 != (file_status_.st_mode & S_IEXEC); } -#else // WIN32 - bool FileStatus::permissionRootRead() const { return 0 != (file_status_.st_mode & S_IRUSR); } - bool FileStatus::permissionRootWrite() const { return 0 != (file_status_.st_mode & S_IWUSR); } - bool FileStatus::permissionRootExecute() const { return 0 != (file_status_.st_mode & S_IXUSR); } - bool FileStatus::permissionGroupRead() const { return 0 != (file_status_.st_mode & S_IRGRP); } - bool FileStatus::permissionGroupWrite() const { return 0 != (file_status_.st_mode & S_IWGRP); } - bool FileStatus::permissionGroupExecute() const { return 0 != (file_status_.st_mode & S_IXGRP); } - bool FileStatus::permissionOwnerRead() const { return 0 != (file_status_.st_mode & S_IROTH); } - bool FileStatus::permissionOwnerWrite() const { return 0 != (file_status_.st_mode & S_IWOTH); } - bool FileStatus::permissionOwnerExecute() const { return 0 != (file_status_.st_mode & S_IXOTH); } -#endif // WIN32 - - - std::string FileStatus::permissionString() const - { - std::string permission_string(9, '-'); - - if (!is_ok_) - return permission_string; - -#ifdef WIN32 - // Root - permission_string[0] = (file_status_.st_mode & S_IREAD) ? 'r' : '-'; - permission_string[1] = (file_status_.st_mode & S_IWRITE) ? 'w' : '-'; - permission_string[2] = (file_status_.st_mode & S_IEXEC) ? 'x' : '-'; - // Group - permission_string[3] = (file_status_.st_mode & S_IREAD) ? 'r' : '-'; - permission_string[4] = (file_status_.st_mode & S_IWRITE) ? 'w' : '-'; - permission_string[5] = (file_status_.st_mode & S_IEXEC) ? 'x' : '-'; - // Owner - permission_string[6] = (file_status_.st_mode & S_IREAD) ? 'r' : '-'; - permission_string[7] = (file_status_.st_mode & S_IWRITE) ? 'w' : '-'; - permission_string[8] = (file_status_.st_mode & S_IEXEC) ? 'x' : '-'; -#else // WIN32 - // Root - permission_string[0] = (file_status_.st_mode & S_IRUSR) ? 'r' : '-'; - permission_string[1] = (file_status_.st_mode & S_IWUSR) ? 'w' : '-'; - permission_string[2] = (file_status_.st_mode & S_IXUSR) ? 'x' : '-'; - // Group - permission_string[3] = (file_status_.st_mode & S_IRGRP) ? 'r' : '-'; - permission_string[4] = (file_status_.st_mode & S_IWGRP) ? 'w' : '-'; - permission_string[5] = (file_status_.st_mode & S_IXGRP) ? 'x' : '-'; - // Owner - permission_string[6] = (file_status_.st_mode & S_IROTH) ? 'r' : '-'; - permission_string[7] = (file_status_.st_mode & S_IWOTH) ? 'w' : '-'; - permission_string[8] = (file_status_.st_mode & S_IXOTH) ? 'x' : '-'; -#endif // WIN32 - return permission_string; - } - - std::string FileStatus::ownerString() const - { - return "fineFTP"; - } - - std::string FileStatus::groupString() const - { - return "fineFTP"; - } - - std::string FileStatus::timeString() const - { - if (!is_ok_) - return "Jan 1 1970"; - - // The FTP Time format can be: - // - // MMM DD hh:mm - // OR - // MMM DD YYYY - // OR - // MMM DD YYYY - // - // This means, that we can only return the time for files with the same - // year as the current year. - // - // https://files.stairways.com/other/ftp-list-specs-info.txt - - auto now = std::chrono::system_clock::now(); - time_t now_time_t = std::chrono::system_clock::to_time_t(now); - //struct tm* now_timeinfo = localtime(&now_time_t); - //int current_year = now_timeinfo->tm_year; - - //struct tm* file_timeinfo = localtime(&file_status_.st_ctime); - //int file_year = file_timeinfo->tm_year; - - - - std::tm now_timeinfo {}; - std::tm file_timeinfo{}; - -#if defined(__unix__) - localtime_r(&now_time_t, &now_timeinfo); - localtime_r(&file_status_.st_ctime, &file_timeinfo); -#elif defined(_MSC_VER) - localtime_s(&now_timeinfo, &now_time_t); - localtime_s(&file_timeinfo, &file_status_.st_ctime); -#else - static std::mutex mtx; - { - std::lock_guard lock(mtx); - - now_timeinfo = *std::localtime(&now_time_t); - file_timeinfo = *std::localtime(&file_status_.st_ctime); - } -#endif - - int current_year = now_timeinfo.tm_year; - int file_year = file_timeinfo.tm_year; - - - // Hardcoded english month names, because returning a localized string by strftime here may break certain FTP clients - static std::string month_names[] = - { - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - }; - - std::stringstream date; - - if (file_year == current_year) - { - // We are allowed to return the time! - date << std::setw( 3 ) << file_timeinfo.tm_mday << " " - << std::setw( 2 ) << file_timeinfo.tm_hour << ":" - << std::setw( 2 ) << std::setfill( '0' ) << file_timeinfo.tm_min; - } - else - { - // We must not return the time, only the date :( - static constexpr auto tm_year_base_year = 1900; - date << std::setw( 3 ) << file_timeinfo.tm_mday - << " " << ( file_timeinfo.tm_year + tm_year_base_year ); - } - - return month_names[file_timeinfo.tm_mon] + date.str(); - } - - bool FileStatus::canOpenDir() const - { - if (!is_ok_) - return false; - - if (type() != FileType::Dir) - return false; - - bool can_open_dir(false); -#ifdef WIN32 - std::string find_file_path = path_ + "\\*"; - std::replace(find_file_path.begin(), find_file_path.end(), '/', '\\'); - - std::wstring w_find_file_path = StrConvert::Utf8ToWide(find_file_path); - - HANDLE hFind; - WIN32_FIND_DATAW ffd; - hFind = FindFirstFileW(w_find_file_path.c_str(), &ffd); - if (hFind != INVALID_HANDLE_VALUE) - { - can_open_dir = true; - } - FindClose(hFind); -#else // WIN32 - DIR *dp; - if ((dp = opendir(path_.c_str())) != NULL) - { - can_open_dir = true; - } - closedir(dp); -#endif // WIN32 - - return can_open_dir; - } - - std::map dirContent(const std::string& path) - { - std::map content; -#ifdef WIN32 - std::string find_file_path = path + "\\*"; - std::replace(find_file_path.begin(), find_file_path.end(), '/', '\\'); - - std::wstring w_find_file_path = StrConvert::Utf8ToWide(find_file_path); - - HANDLE hFind; - WIN32_FIND_DATAW ffd; - hFind = FindFirstFileW(w_find_file_path.c_str(), &ffd); - if (hFind == INVALID_HANDLE_VALUE) - { - std::cerr << "FindFirstFile Error" << std::endl; - return content; - } - - do - { - std::string file_name = StrConvert::WideToUtf8(std::wstring(ffd.cFileName)); - content.emplace(file_name, FileStatus(path + "\\" + file_name)); - } while (FindNextFileW(hFind, &ffd) != 0); - FindClose(hFind); -#else // WIN32 - DIR *dp; - struct dirent *dirp; - if((dp = opendir(path.c_str())) == NULL) - { - std::cerr << "Error opening directory: " << strerror(errno) << std::endl; - return content; - } - - while ((dirp = readdir(dp)) != NULL) - { - content.emplace(std::string(dirp->d_name), FileStatus(path + "/" + std::string(dirp->d_name))); - } - closedir(dp); - -#endif // WIN32 - return content; - } - - std::string cleanPath(const std::string& path, bool windows_path, const char output_separator) - { - if (path.empty()) - { - return "."; - } - - // Find the root for absolute paths - - std::string absolute_root; - - if (windows_path) - { - /* On Windows, a root folder can be: - * C:\ - * //Host - * \\Host - */ - - std::regex win_local_drive("^[a-zA-Z]\\:"); // Local drive - std::regex win_network_drive("^[/\\\\]{2}[^/\\\\]+"); // Network path starting with two slashes or backslashes followed by a hostname - - if (std::regex_search(path, win_local_drive)) - { - // Windows local drive, consisting of drive-letter and colon - absolute_root = path.substr(0, 2); - } - else if (std::regex_search(path, win_network_drive)) - { - // Window network drive, consisting of \\ and hostname - size_t sep_pos = path.find_first_of("/\\", 2); - absolute_root = path.substr(0, sep_pos); // If no seperator was found, this will return the entire string - } - } - else - { - // On Unix there is only one root and it is '/' - if (path[0] == '/') - { - absolute_root = '/'; - } - } - - // Split the path - std::list components; - - if (path.size() >= (absolute_root.size() + 1)) - { - size_t start, end; - - if (absolute_root.empty()) - start = 0; - else - start = absolute_root.size(); - - do - { - if (windows_path) - end = path.find_first_of("/\\", start); - else - end = path.find_first_of("/", start); - - std::string this_component; - if (end == std::string::npos) - this_component = path.substr(start); - else - this_component = path.substr(start, end - start); - - // The components-stack that will increase and shrink depending on the folders and .. elements in the splitted path - if (this_component.empty() || (this_component == ".")) - { - } - else if (this_component == "..") - { - if (!absolute_root.empty()) - { - if (!components.empty()) - { - // Move one folder up if we are not already at the root - components.pop_back(); - } - } - else - { - if (!components.empty() && (components.back() != "..")) - { - // Move one folder up by removing it. We must not remove ".." elements that we were not able to resolve previously. - components.pop_back(); - } - else - { - components.push_back(".."); - } - } - } - else - { - components.push_back(this_component); - } - - if (end == std::string::npos) - break; - else - start = end + 1; - - } while (start < path.size()); - - // Join the components again - if (components.size() == 0 && absolute_root.empty()) - { - return "."; - } - } - - std::stringstream path_ss; - path_ss << absolute_root; - - if (windows_path && !absolute_root.empty()) - { - path_ss << output_separator; // The windows drive must be followed by a separator. When referencing a network drive. - } - - auto comp_it = components.begin(); - while (comp_it != components.end()) - { - if (comp_it != components.begin()) - path_ss << output_separator; - - path_ss << *comp_it; - - comp_it++; - } - - return path_ss.str(); - } - - std::string cleanPathNative(const std::string& path) - { -#ifdef WIN32 - bool windows_path = true; - char separator = '\\'; -#else // WIN32 - bool windows_path = false; - char separator = '/'; -#endif // WIN32 - return cleanPath(path, windows_path, separator); - } -} -} diff --git a/ui/external/fineftp-server/fineftp-server/src/filesystem.h b/ui/external/fineftp-server/fineftp-server/src/filesystem.h deleted file mode 100644 index bc8d5844..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/filesystem.h +++ /dev/null @@ -1,93 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include - -//////////////////////////////////////////////////////////////////////////////// -/// Filesystem -//////////////////////////////////////////////////////////////////////////////// - -namespace fineftp -{ - namespace Filesystem - { - enum class FileType - { - Unknown, - RegularFile, - Dir, - CharacterDevice, - BlockDevice, - Fifo, - SymbolicLink, - Socket - }; - - class FileStatus - { - public: - FileStatus(const std::string& path); - - ~FileStatus(); - - bool isOk() const; - FileType type() const; - - int64_t fileSize() const; - - #ifdef WIN32 - bool permissionRootRead() const; - bool permissionRootWrite() const; - bool permissionRootExecute() const; - bool permissionGroupRead() const; - bool permissionGroupWrite() const; - bool permissionGroupExecute() const; - bool permissionOwnerRead() const; - bool permissionOwnerWrite() const; - bool permissionOwnerExecute() const; - #else // WIN32 - bool permissionRootRead() const; - bool permissionRootWrite() const; - bool permissionRootExecute() const; - bool permissionGroupRead() const; - bool permissionGroupWrite() const; - bool permissionGroupExecute() const; - bool permissionOwnerRead() const; - bool permissionOwnerWrite() const; - bool permissionOwnerExecute() const; - #endif // WIN32 - - - std::string permissionString() const; - - std::string ownerString() const; - - std::string groupString() const; - - std::string timeString() const; - - bool canOpenDir() const; - - - - private: - std::string path_; - bool is_ok_; - #ifdef WIN32 - struct __stat64 file_status_; - #else // WIN32 - struct stat file_status_; - #endif - }; - - std::map dirContent(const std::string& path); - - std::string cleanPath(const std::string& path, bool windows_path, const char output_separator); - - std::string cleanPathNative(const std::string& path); - } -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/ftp_message.h b/ui/external/fineftp-server/fineftp-server/src/ftp_message.h deleted file mode 100644 index af0737dc..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/ftp_message.h +++ /dev/null @@ -1,86 +0,0 @@ -#pragma once - -#include - -namespace fineftp -{ - enum class FtpReplyCode : int - { - // Reply codes from RFC 959 (plain FTP) - // https://tools.ietf.org/html/rfc959 - - COMMAND_OK = 200, - SYNTAX_ERROR_UNRECOGNIZED_COMMAND = 500, - SYNTAX_ERROR_PARAMETERS = 501, - COMMAND_NOT_IMPLEMENTED_SUPERFLOUS = 202, - COMMAND_NOT_IMPLEMENTED = 502, - COMMANDS_BAD_SEQUENCE = 503, - COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER = 504, - - REPLY_RESTART_MARKER = 110, - REPLY_SYSTEM_STATUS = 211, - DIRECTORY_STATUS = 212, - FILE_STATUS = 213, - HELP_MESSAGE = 214, - NAME_SYSTEM_TYPE = 215, - - SERVICE_READY_IN_MINUTES = 120, - SERVICE_READY_FOR_NEW_USER = 220, - SERVICE_CLOSING_CONTROL_CONNECTION = 221, - SERVICE_NOT_AVAILABLE = 421, - DATA_CONNECTION_OPEN_TRANSFER_STARTING = 125, - DATA_CONNECTION_OPEN_NO_TRANSFER = 225, - ERROR_OPENING_DATA_CONNECTION = 425, - CLOSING_DATA_CONNECTION = 226, - TRANSFER_ABORTED = 426, - ENTERING_PASSIVE_MODE = 227, - - USER_LOGGED_IN = 230, - NOT_LOGGED_IN = 530, - USER_NAME_OK = 331, - NEED_ACCOUNT_FOR_LOGIN = 332, - NEED_ACCOUNT_FOR_STORING_FILES = 532, - FILE_STATUS_OK_OPENING_DATA_CONNECTION = 150, - FILE_ACTION_COMPLETED = 250, - PATHNAME_CREATED = 257, - FILE_ACTION_NEEDS_FURTHER_INFO = 350, - FILE_ACTION_NOT_TAKEN = 450, - ACTION_NOT_TAKEN = 550, - ACTION_ABORTED_LOCAL_ERROR = 451, - ACTION_ABORTED_PAGE_TYPE_UNKNOWN = 551, - ACTION_NOT_TAKEN_INSUFFICIENT_STORAGE_SPACE = 452, - FILE_ACTION_ABORTED = 552, - ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED = 553, - }; - - class FtpMessage - { - public: - FtpMessage(FtpReplyCode code, const std::string& message) - : code_(code) - , message_(message) - {} - - ~FtpMessage() - {} - - inline FtpReplyCode replyCode() const - { - return code_; - } - - inline std::string message() const - { - return message_; - } - - inline std::string str() const - { - return std::to_string(static_cast(code_)) + " " + message_ + "\r\n"; - } - - private: - FtpReplyCode code_; - std::string message_; - }; -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/ftp_session.cpp b/ui/external/fineftp-server/fineftp-server/src/ftp_session.cpp deleted file mode 100755 index 8f59091f..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/ftp_session.cpp +++ /dev/null @@ -1,1523 +0,0 @@ -#include "ftp_session.h" - -#include -#include -#include -#include -#include -#include - - -#include "filesystem.h" - -#ifdef WIN32 -#include -#include "win_str_convert.h" -#endif // WIN32 - - -namespace fineftp -{ - - FtpSession::FtpSession(asio::io_service& io_service, const UserDatabase& user_database, const std::function& completion_handler) - : completion_handler_ (completion_handler) - , user_database_ (user_database) - , io_service_ (io_service) - , command_socket_ (io_service) - , command_write_strand_ (io_service) - , data_type_binary_ (false) - , data_acceptor_ (io_service) - , data_buffer_strand_ (io_service) - , file_rw_strand_ (io_service) - , ftp_working_directory_("/") - { - } - - FtpSession::~FtpSession() - { -#ifndef NDEBUG - std::cout << "Ftp Session shutting down" << std::endl; -#endif // !NDEBUG - completion_handler_(); - } - - void FtpSession::start() - { - asio::error_code ec; - command_socket_.set_option(asio::ip::tcp::no_delay(true), ec); - if (ec) std::cerr << "Unable to set socket option tcp::no_delay: " << ec.message() << std::endl; - - sendFtpMessage(FtpMessage(FtpReplyCode::SERVICE_READY_FOR_NEW_USER, "Welcome to fineFTP Server")); - readFtpCommand(); - } - - asio::ip::tcp::socket& FtpSession::getSocket() - { - return command_socket_; - } - - void FtpSession::sendFtpMessage(const FtpMessage& message) - { - sendRawFtpMessage(message.str()); - } - void FtpSession::sendFtpMessage(FtpReplyCode code, const std::string& message) - { - sendFtpMessage(FtpMessage(code, message)); - } - - void FtpSession::sendRawFtpMessage(const std::string& raw_message) - { - command_write_strand_.post([me = shared_from_this(), raw_message]() - { - bool write_in_progress = !me->command_output_queue_.empty(); - me->command_output_queue_.push_back(raw_message); - if (!write_in_progress) - { - me->startSendingMessages(); - } - }); - } - - void FtpSession::startSendingMessages() - { -#ifndef NDEBUG - std::cout << "FTP >> " << command_output_queue_.front() << std::endl; -#endif - - asio::async_write(command_socket_ - , asio::buffer(command_output_queue_.front()) - , command_write_strand_.wrap( - [me = shared_from_this()](asio::error_code ec, std::size_t /*bytes_to_transfer*/) - { - if (!ec) - { - me->command_output_queue_.pop_front(); - - if (!me->command_output_queue_.empty()) - { - me->startSendingMessages(); - } - } - else - { - std::cerr << "Command write error: " << ec.message() << std::endl; - } - } - )); - } - - void FtpSession::readFtpCommand() - { - asio::async_read_until(command_socket_, command_input_stream_, "\r\n", - [me = shared_from_this()](asio::error_code ec, std::size_t length) - { - if (ec) - { - if (ec != asio::error::eof) - { - std::cerr << "read_until error: " << ec.message() << std::endl; - } -#ifndef NDEBUG - else - { - std::cout << "Control connection closed by client." << std::endl; - } -#endif // !NDEBUG - return; - } - - std::istream stream (&(me->command_input_stream_)); - std::string packet_string(length - 2, ' '); - stream.read(&packet_string[0], length - 2); - - stream.ignore(2); // Remove the "\r\n" -#ifndef NDEBUG - std::cout << "FTP << " << packet_string << std::endl; -#endif - - me->handleFtpCommand(packet_string); - }); - } - - void FtpSession::handleFtpCommand(const std::string& command) - { - std::string ftp_command; - std::string parameters; - - size_t space_index = command.find_first_of(' '); - - ftp_command = command.substr(0, space_index); - std::transform(ftp_command.begin(), ftp_command.end(), ftp_command.begin(), [](char c) { return static_cast(std::toupper(static_cast(c))); }); - - if (space_index != std::string::npos) - { - parameters = command.substr(space_index + 1, std::string::npos); - } - - - const std::map> command_map { - // Access control commands - { "USER", std::bind(&FtpSession::handleFtpCommandUSER, this, std::placeholders::_1) }, - { "PASS", std::bind(&FtpSession::handleFtpCommandPASS, this, std::placeholders::_1) }, - { "ACCT", std::bind(&FtpSession::handleFtpCommandACCT, this, std::placeholders::_1) }, - { "CWD", std::bind(&FtpSession::handleFtpCommandCWD, this, std::placeholders::_1) }, - { "CDUP", std::bind(&FtpSession::handleFtpCommandCDUP, this, std::placeholders::_1) }, - { "REIN", std::bind(&FtpSession::handleFtpCommandREIN, this, std::placeholders::_1) }, - { "QUIT", std::bind(&FtpSession::handleFtpCommandQUIT, this, std::placeholders::_1) }, - - // Transfer parameter commands - { "PORT", std::bind(&FtpSession::handleFtpCommandPORT, this, std::placeholders::_1) }, - { "PASV", std::bind(&FtpSession::handleFtpCommandPASV, this, std::placeholders::_1) }, - { "TYPE", std::bind(&FtpSession::handleFtpCommandTYPE, this, std::placeholders::_1) }, - { "STRU", std::bind(&FtpSession::handleFtpCommandSTRU, this, std::placeholders::_1) }, - { "MODE", std::bind(&FtpSession::handleFtpCommandMODE, this, std::placeholders::_1) }, - - // Ftp service commands - { "RETR", std::bind(&FtpSession::handleFtpCommandRETR, this, std::placeholders::_1) }, - { "STOR", std::bind(&FtpSession::handleFtpCommandSTOR, this, std::placeholders::_1) }, - { "STOU", std::bind(&FtpSession::handleFtpCommandSTOU, this, std::placeholders::_1) }, - { "APPE", std::bind(&FtpSession::handleFtpCommandAPPE, this, std::placeholders::_1) }, - { "ALLO", std::bind(&FtpSession::handleFtpCommandALLO, this, std::placeholders::_1) }, - { "REST", std::bind(&FtpSession::handleFtpCommandREST, this, std::placeholders::_1) }, - { "RNFR", std::bind(&FtpSession::handleFtpCommandRNFR, this, std::placeholders::_1) }, - { "RNTO", std::bind(&FtpSession::handleFtpCommandRNTO, this, std::placeholders::_1) }, - { "ABOR", std::bind(&FtpSession::handleFtpCommandABOR, this, std::placeholders::_1) }, - { "DELE", std::bind(&FtpSession::handleFtpCommandDELE, this, std::placeholders::_1) }, - { "RMD", std::bind(&FtpSession::handleFtpCommandRMD, this, std::placeholders::_1) }, - { "MKD", std::bind(&FtpSession::handleFtpCommandMKD, this, std::placeholders::_1) }, - { "PWD", std::bind(&FtpSession::handleFtpCommandPWD, this, std::placeholders::_1) }, - { "LIST", std::bind(&FtpSession::handleFtpCommandLIST, this, std::placeholders::_1) }, - { "NLST", std::bind(&FtpSession::handleFtpCommandNLST, this, std::placeholders::_1) }, - { "SITE", std::bind(&FtpSession::handleFtpCommandSITE, this, std::placeholders::_1) }, - { "SYST", std::bind(&FtpSession::handleFtpCommandSYST, this, std::placeholders::_1) }, - { "STAT", std::bind(&FtpSession::handleFtpCommandSTAT, this, std::placeholders::_1) }, - { "HELP", std::bind(&FtpSession::handleFtpCommandHELP, this, std::placeholders::_1) }, - { "NOOP", std::bind(&FtpSession::handleFtpCommandNOOP, this, std::placeholders::_1) }, - - // Modern FTP Commands - { "FEAT", std::bind(&FtpSession::handleFtpCommandFEAT, this, std::placeholders::_1) }, - { "OPTS", std::bind(&FtpSession::handleFtpCommandOPTS, this, std::placeholders::_1) }, - { "SIZE", std::bind(&FtpSession::handleFtpCommandSIZE, this, std::placeholders::_1) }, - }; - - auto command_it = command_map.find(ftp_command); - if (command_it != command_map.end()) - { - command_it->second(parameters); - last_command_ = ftp_command; - } - else - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Unrecognized command"); - } - - if (last_command_ == "QUIT") - { - // Close command socket - command_write_strand_.wrap([me = shared_from_this()]() { me->command_socket_.close(); }); - } - else - { - // Wait for next command - readFtpCommand(); - } - } - - //////////////////////////////////////////////////////// - // FTP Commands - //////////////////////////////////////////////////////// - - - // Access control commands - - void FtpSession::handleFtpCommandUSER(const std::string& param) - { - logged_in_user_ = nullptr; - username_for_login_ = param; - ftp_working_directory_ = "/"; - - if (param.empty()) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_PARAMETERS, "Please provide username"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::USER_NAME_OK, "Please enter password"); - return; - } - } - - void FtpSession::handleFtpCommandPASS(const std::string& param) - { - if (last_command_ != "USER") - { - sendFtpMessage(FtpReplyCode::COMMANDS_BAD_SEQUENCE, "Please specify username first"); - return; - } - else - { - auto user = user_database_.getUser(username_for_login_, param); - if (user) - { - logged_in_user_ = user; - sendFtpMessage(FtpReplyCode::USER_LOGGED_IN, "Login successful"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Failed to log in"); - return; - } - } - } - - void FtpSession::handleFtpCommandACCT(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Unsupported command"); - return; - } - - void FtpSession::handleFtpCommandCWD(const std::string& param) - { - sendFtpMessage(executeCWD(param)); - return; - } - - void FtpSession::handleFtpCommandCDUP(const std::string& /*param*/) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::DirList) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - if (ftp_working_directory_ != "/") - { - // Only CDUP when we are not already at the root directory - auto cwd_reply = executeCWD(".."); - if (cwd_reply.replyCode() == FtpReplyCode::FILE_ACTION_COMPLETED) - { - // The CWD returns FILE_ACTION_COMPLETED on success, while CDUP returns COMMAND_OK on success. - sendFtpMessage(FtpReplyCode::COMMAND_OK, cwd_reply.message()); - return; - } - else - { - sendFtpMessage(cwd_reply); - return; - } - } - else - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Already at root directory"); - return; - } - } - - void FtpSession::handleFtpCommandREIN(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED, "Unsupported command"); - return; - } - - void FtpSession::handleFtpCommandQUIT(const std::string& /*param*/) - { - logged_in_user_ = nullptr; - sendFtpMessage(FtpReplyCode::SERVICE_CLOSING_CONTROL_CONNECTION, "Connection shutting down"); - return; - } - - // Transfer parameter commands - - void FtpSession::handleFtpCommandPORT(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "FTP active mode is not supported by this server"); - return; - } - - void FtpSession::handleFtpCommandPASV(const std::string& /*param*/) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - if (data_acceptor_.is_open()) - { - asio::error_code ec; - data_acceptor_.close(ec); - if (ec) - { - std::cerr << "Error closing data acceptor: " << ec.message() << std::endl; - } - } - - asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 0); - - { - asio::error_code ec; - data_acceptor_.open(endpoint.protocol(), ec); - if (ec) - { - std::cerr << "Error opening data acceptor: " << ec.message() << std::endl; - sendFtpMessage(FtpReplyCode::SERVICE_NOT_AVAILABLE, "Failed to enter passive mode."); - return; - } - } - { - asio::error_code ec; - data_acceptor_.bind(endpoint); - if (ec) - { - std::cerr << "Error binding data acceptor: " << ec.message() << std::endl; - sendFtpMessage(FtpReplyCode::SERVICE_NOT_AVAILABLE, "Failed to enter passive mode."); - return; - } - } - { - asio::error_code ec; - data_acceptor_.listen(asio::socket_base::max_connections, ec); - if (ec) - { - std::cerr << "Error listening on data acceptor: " << ec.message() << std::endl; - sendFtpMessage(FtpReplyCode::SERVICE_NOT_AVAILABLE, "Failed to enter passive mode."); - return; - } - } - - // Split address and port into bytes and get the port the OS chose for us - auto ip_bytes = command_socket_.local_endpoint().address().to_v4().to_bytes(); - auto port = data_acceptor_.local_endpoint().port(); - - // Form reply string - std::stringstream stream; - stream << "("; - for (size_t i = 0; i < 4; i++) - { - stream << static_cast(ip_bytes[i]) << ","; - } - stream << ((port >> 8) & 0xff) << "," << (port & 0xff) << ")"; - - sendFtpMessage(FtpReplyCode::ENTERING_PASSIVE_MODE, "Entering passive mode " + stream.str()); - return; - } - - void FtpSession::handleFtpCommandTYPE(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - if (param == "A") - { - data_type_binary_ = false; - // TODO: The ASCII mode currently does not work as RFC 959 demands it. It - // should perform line ending conversion, which it doesn't. But as we are - // living in the 21st centry, nobody should use ASCII mode anyways. - sendFtpMessage(FtpReplyCode::COMMAND_OK, "Switching to ASCII mode"); - return; - } - else if (param == "I") - { - data_type_binary_ = true; - sendFtpMessage(FtpReplyCode::COMMAND_OK, "Switching to binary mode"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, "Unknown or unsupported type"); - return; - } - } - - void FtpSession::handleFtpCommandSTRU(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Unsupported command"); - return; - } - - void FtpSession::handleFtpCommandMODE(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Unsupported command"); - return; - } - - // Ftp service commands - void FtpSession::handleFtpCommandRETR(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::FileRead) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - if (!data_acceptor_.is_open()) - { - sendFtpMessage(FtpReplyCode::ERROR_OPENING_DATA_CONNECTION, "Error opening data connection"); - return; - } - - std::string local_path = toLocalPath(param); - - std::ios::openmode open_mode = (data_type_binary_ ? (std::ios::in | std::ios::binary) : (std::ios::in)); - std::shared_ptr file = std::make_shared(local_path, open_mode); - - if (!file->file_stream_.good()) - { - sendFtpMessage(FtpReplyCode::ACTION_ABORTED_LOCAL_ERROR, "Error opening file for transfer"); - return; - } - - sendFtpMessage(FtpReplyCode::FILE_STATUS_OK_OPENING_DATA_CONNECTION, "Sending file"); - sendFile(file); - return; - } - - void FtpSession::handleFtpCommandSIZE(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::FileRead) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - std::string local_path = toLocalPath(param); - - std::ios::openmode open_mode = - std::ios::ate | (data_type_binary_ ? (std::ios::in | std::ios::binary) : (std::ios::in)); -#if defined(WIN32) && !defined(__GNUG__) - std::ifstream file(StrConvert::Utf8ToWide(local_path), open_mode); -#else - std::ifstream file(local_path, open_mode); -#endif - - if (!file.good()) - { - sendFtpMessage(FtpReplyCode::ACTION_ABORTED_LOCAL_ERROR, "Error opening file for size retrieval"); - return; - } - - // RFC 3659 actually states that the returned size should depend on the STRU, MODE, and TYPE and that - // the returned size should be exact. We don't comply with this here. The size returned is the - // size for TYPE=I. - auto file_size = file.tellg(); - if (std::fstream::pos_type(-1) == file_size) - { - sendFtpMessage(FtpReplyCode::ACTION_ABORTED_LOCAL_ERROR, "Error getting file size"); - return; - } - - // Form reply string - std::stringstream rep; - rep << file_size; - - sendFtpMessage(FtpReplyCode::FILE_STATUS, rep.str()); - } - - void FtpSession::handleFtpCommandSTOR(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - // TODO: the ACTION_NOT_TAKEN reply is not RCF 959 conform. Apparently in - // 1985 nobody anticipated that you might not want anybody uploading files - // to your server. We use the return code anyways, as the popular FileZilla - // Server also returns that code as "Permission denied" - if (static_cast(logged_in_user_->permissions_ & Permission::FileWrite) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - if (!data_acceptor_.is_open()) - { - sendFtpMessage(FtpReplyCode::ERROR_OPENING_DATA_CONNECTION, "Error opening data connection"); - return; - } - - std::string local_path = toLocalPath(param); - - auto existing_file_filestatus = Filesystem::FileStatus(local_path); - if (existing_file_filestatus.isOk()) - { - if ((existing_file_filestatus.type() == Filesystem::FileType::RegularFile) - && (static_cast(logged_in_user_->permissions_ & Permission::FileDelete) == 0)) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED, "File already exists. Permission denied to overwrite file."); - return; - } - else if (existing_file_filestatus.type() == Filesystem::FileType::Dir) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN_FILENAME_NOT_ALLOWED, "Cannot create file. A directory with that name already exists."); - return; - } - } - - std::ios::openmode open_mode = (data_type_binary_ ? (std::ios::out | std::ios::binary) : (std::ios::out)); - std::shared_ptr file = std::make_shared(local_path, open_mode); - - if (!file->file_stream_.good()) - { - sendFtpMessage(FtpReplyCode::ACTION_ABORTED_LOCAL_ERROR, "Error opening file for transfer"); - return; - } - - sendFtpMessage(FtpReplyCode::FILE_STATUS_OK_OPENING_DATA_CONNECTION, "Receiving file"); - receiveFile(file); - return; - } - - void FtpSession::handleFtpCommandSTOU(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Command not implemented"); - return; - } - - void FtpSession::handleFtpCommandAPPE(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::FileAppend) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - if (!data_acceptor_.is_open()) - { - sendFtpMessage(FtpReplyCode::ERROR_OPENING_DATA_CONNECTION, "Error opening data connection"); - return; - } - - std::string local_path = toLocalPath(param); - - auto existing_file_filestatus = Filesystem::FileStatus(local_path); - if (!existing_file_filestatus.isOk() - || (existing_file_filestatus.type() != Filesystem::FileType::RegularFile)) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "File does not exist."); - return; - } - - std::ios::openmode open_mode = (data_type_binary_ ? (std::ios::out | std::ios::app | std::ios::binary) : (std::ios::out | std::ios::app)); - std::shared_ptr file = std::make_shared(local_path, open_mode); - - if (!file->file_stream_.good()) - { - sendFtpMessage(FtpReplyCode::ACTION_ABORTED_LOCAL_ERROR, "Error opening file for transfer"); - return; - } - - sendFtpMessage(FtpReplyCode::FILE_STATUS_OK_OPENING_DATA_CONNECTION, "Receiving file"); - receiveFile(file); - return; - } - - void FtpSession::handleFtpCommandALLO(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Command not implemented"); - return; - } - - void FtpSession::handleFtpCommandREST(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED, "Command not implemented"); - return; - } - - void FtpSession::handleFtpCommandRNFR(const std::string& param) - { - rename_from_path_.clear(); - - auto is_renamable_error = checkIfPathIsRenamable(param); - - if (is_renamable_error.replyCode() == FtpReplyCode::COMMAND_OK) - { - rename_from_path_ = param; - sendFtpMessage(FtpReplyCode::FILE_ACTION_NEEDS_FURTHER_INFO, "Enter target name"); - return; - } - else - { - sendFtpMessage(is_renamable_error); - return; - } - } - - void FtpSession::handleFtpCommandRNTO(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - if (last_command_ != "RNFR" || rename_from_path_.empty()) - { - sendFtpMessage(FtpReplyCode::COMMANDS_BAD_SEQUENCE, "Please specify target file first"); - return; - } - - if (param.empty()) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_PARAMETERS, "No target name given"); - return; - } - - // TODO: returning neiher FILE_ACTION_NOT_TAKEN nor ACTION_NOT_TAKEN are - // RFC 959 conform. Aoarently back in 1985 it was assumed that the RNTO - //command will always succeed, as long as you enter a valid target file - // name. Thus we use the two return codes anyways, the popular FileZilla - // FTP Server uses those as well. - auto is_renamable_error = checkIfPathIsRenamable(rename_from_path_); - - if (is_renamable_error.replyCode() == FtpReplyCode::COMMAND_OK) - { - std::string local_from_path = toLocalPath(rename_from_path_); - std::string local_to_path = toLocalPath(param); - - // Check if the source file exists already. We simple disallow overwriting a - // file be renaming (the bahavior of the native rename command on Windows - // and Linux differs; Windows will not overwrite files, Linux will). - if (Filesystem::FileStatus(local_to_path).isOk()) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Target path exists already."); - return; - } - -#ifdef WIN32 - - if (MoveFileW(StrConvert::Utf8ToWide(local_from_path).c_str(), StrConvert::Utf8ToWide(local_to_path).c_str()) != 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "OK"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Error renaming file: " + GetLastErrorStr()); - return; - } -#else // WIN32 - if (rename(local_from_path.c_str(), local_to_path.c_str()) == 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "OK"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Error renaming file"); - return; - } -#endif // WIN32 - } - else - { - sendFtpMessage(is_renamable_error); - return; - } - } - - void FtpSession::handleFtpCommandABOR(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED, "Command not implemented"); - return; - } - - void FtpSession::handleFtpCommandDELE(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - std::string local_path = toLocalPath(param); - - auto file_status = Filesystem::FileStatus(local_path); - - if (!file_status.isOk()) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Resource does not exist"); - return; - } - else if (file_status.type() != Filesystem::FileType::RegularFile) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Resource is not a file"); - return; - } - else - { - if (static_cast(logged_in_user_->permissions_ & Permission::FileDelete) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - else - { -#ifdef WIN32 - if (DeleteFileW(StrConvert::Utf8ToWide(local_path).c_str()) != 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "Successfully deleted file"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Unable to delete file: " + GetLastErrorStr()); - return; - } -#else - if (unlink(local_path.c_str()) == 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "Successfully deleted file"); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Unable to delete file"); - return; - } -#endif - } - } - } - - void FtpSession::handleFtpCommandRMD(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::DirDelete) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - std::string local_path = toLocalPath(param); - -#ifdef WIN32 - if (RemoveDirectoryW(StrConvert::Utf8ToWide(local_path).c_str()) != 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "Successfully removed directory"); - return; - } - else - { - // If would be a good idea to return a 4xx error code here (-> temp error) - // (e.g. FILE_ACTION_NOT_TAKEN), but RFC 959 assumes that all directory - // errors are permanent. - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Unable to remove directory: " + GetLastErrorStr()); - return; - } -#else - if (rmdir(local_path.c_str()) == 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "Successfully removed directory"); - return; - } - else - { - // If would be a good idea to return a 4xx error code here (-> temp error) - // (e.g. FILE_ACTION_NOT_TAKEN), but RFC 959 assumes that all directory - // errors are permanent. - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Unable to remove directory"); - return; - } -#endif - - } - - void FtpSession::handleFtpCommandMKD(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - if (static_cast(logged_in_user_->permissions_ & Permission::DirCreate) == 0) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - auto local_path = toLocalPath(param); - -#ifdef WIN32 - LPSECURITY_ATTRIBUTES security_attributes = NULL; // => Default security attributes - if (CreateDirectoryW(StrConvert::Utf8ToWide(local_path).c_str(), security_attributes) != 0) - { - sendFtpMessage(FtpReplyCode::PATHNAME_CREATED, createQuotedFtpPath(toAbsoluteFtpPath(param)) + " Successfully created"); - return; - } - else - { - // If would be a good idea to return a 4xx error code here (-> temp error) - // (e.g. FILE_ACTION_NOT_TAKEN), but RFC 959 assumes that all directory - // errors are permanent. - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Unable to create directory: " + GetLastErrorStr()); - return; - } -#else - mode_t mode = 0755; - if (mkdir(local_path.c_str(), mode) == 0) - { - sendFtpMessage(FtpReplyCode::PATHNAME_CREATED, createQuotedFtpPath(toAbsoluteFtpPath(param)) + " Successfully created"); - return; - } - else - { - // If would be a good idea to return a 4xx error code here (-> temp error) - // (e.g. FILE_ACTION_NOT_TAKEN), but RFC 959 assumes that all directory - // errors are permanent. - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Unable to create directory"); - return; - } -#endif - } - - void FtpSession::handleFtpCommandPWD(const std::string& /*param*/) - { - // RFC 959 does not allow returning NOT_LOGGED_IN here, so we abuse ACTION_NOT_TAKEN for that. - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Not logged in"); - return; - } - - sendFtpMessage(FtpReplyCode::PATHNAME_CREATED, createQuotedFtpPath(ftp_working_directory_)); - return; - } - - void FtpSession::handleFtpCommandLIST(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - // RFC 959 does not allow ACTION_NOT_TAKEN (-> permanent error), so we return a temporary error (FILE_ACTION_NOT_TAKEN). - if (static_cast(logged_in_user_->permissions_ & Permission::DirList) == 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - // Deal with some unusual commands like "LIST -a", "LIST -a dirname". - // Some FTP clients send those commands, as if they would call ls on unix. - // - // We try to support those parameters (or rather ignore them), even though - // this techniqually breaks listing directories that actually use "-a" etc. - // as directory name. As most clients however first CWD into a directory and - // call LIST without parameter afterwards and starting a directory name with - // "-a " / "-l " / "-al " / "-la " is not that common, the compatibility - // benefit should outperform te potential problems by a lot. - // - // The RFC-violating LIST command now shall be: - // - // LIST [ ] [ ] - // - // with: - // - // ::= -a - // | -l - // | -al - // | -la - // - - std::string path2dst; - if ((param == "-a") || (param == "-l") || (param == "-al") || (param == "-la")) - { - path2dst = ""; - } - else if ((param.substr(0, 3)=="-a "|| param.substr(0, 3)=="-l ") && (param.size() > 3)) - { - path2dst = param.substr(3); - } - else if ((param.substr(0, 4) == "-al " || param.substr(0, 4) == "-la ") && (param.size() > 4)) - { - path2dst = param.substr(4); - } - else - { - path2dst = param; - } - - std::string local_path = toLocalPath(path2dst); - auto dir_status = Filesystem::FileStatus(local_path); - - if (dir_status.isOk()) - { - if (dir_status.type() == Filesystem::FileType::Dir) - { - if (dir_status.canOpenDir()) - { - sendFtpMessage(FtpReplyCode::FILE_STATUS_OK_OPENING_DATA_CONNECTION, "Sending directory listing"); - sendDirectoryListing(Filesystem::dirContent(local_path)); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Permission denied"); - return; - } - } - else - { - // TODO: RFC959: If the pathname specifies a file then the server should send current information on the file. - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Path is not a directory"); - return; - } - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Path does not exist"); - return; - } - } - - void FtpSession::handleFtpCommandNLST(const std::string& param) - { - if (!logged_in_user_) - { - sendFtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - return; - } - - // RFC 959 does not allow ACTION_NOT_TAKEN (-> permanent error), so we return a temporary error (FILE_ACTION_NOT_TAKEN). - if (static_cast(logged_in_user_->permissions_ & Permission::DirList) == 0) - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Permission denied"); - return; - } - - std::string local_path = toLocalPath(param); - auto dir_status = Filesystem::FileStatus(local_path); - - if (dir_status.isOk()) - { - if (dir_status.type() == Filesystem::FileType::Dir) - { - if (dir_status.canOpenDir()) - { - sendFtpMessage(FtpReplyCode::FILE_STATUS_OK_OPENING_DATA_CONNECTION, "Sending name list"); - sendNameList(Filesystem::dirContent(local_path)); - return; - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Permission denied"); - return; - } - } - else - { - // TODO: RFC959: If the pathname specifies a file then the server should send current information on the file. - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Path is not a directory"); - return; - } - } - else - { - sendFtpMessage(FtpReplyCode::FILE_ACTION_NOT_TAKEN, "Path does not exist"); - return; - } - } - - void FtpSession::handleFtpCommandSITE(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::SYNTAX_ERROR_UNRECOGNIZED_COMMAND, "Command not implemented"); - } - - void FtpSession::handleFtpCommandSYST(const std::string& /*param*/) - { - // Always returning "UNIX" when being asked for the operating system. - // Some clients (Mozilla Firefox for example) may disconnect, when we - // return an unknown operating system here. As depending on the Server's - // operating system is a horrible feature anyways, we simply fake it. - // - // Unix should be the best compatible value here, as we emulate Unix-like - // outputs for other commands (-> LIST) on all operating systems. - sendFtpMessage(FtpReplyCode::NAME_SYSTEM_TYPE, "UNIX"); - } - - void FtpSession::handleFtpCommandSTAT(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED, "Command not implemented"); - } - - void FtpSession::handleFtpCommandHELP(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED, "Command not implemented"); - } - - void FtpSession::handleFtpCommandNOOP(const std::string& /*param*/) - { - sendFtpMessage(FtpReplyCode::COMMAND_OK, "OK"); - } - - // Modern FTP Commands - void FtpSession::handleFtpCommandFEAT(const std::string& /*param*/) - { - std::stringstream ss; - ss << "211- Feature List:\r\n"; - ss << " UTF8\r\n"; - ss << " SIZE\r\n"; - ss << " LANG EN\r\n"; - ss << "211 END\r\n"; - - sendRawFtpMessage(ss.str()); - } - - void FtpSession::handleFtpCommandOPTS(const std::string& param) - { - std::string param_upper = param; - std::transform(param_upper.begin(), param_upper.end(), param_upper.begin(), [](char c) { return static_cast(std::toupper(static_cast(c))); }); - - if (param_upper == "UTF8 ON") - { - sendFtpMessage(FtpReplyCode::COMMAND_OK, "OK"); - return; - } - - sendFtpMessage(FtpReplyCode::COMMAND_NOT_IMPLEMENTED_FOR_PARAMETER, "Unrecognized parameter"); - } - - //////////////////////////////////////////////////////// - // FTP data-socket send - //////////////////////////////////////////////////////// - - void FtpSession::sendDirectoryListing(const std::map& directory_content) - { - auto data_socket = std::make_shared(io_service_); - - data_acceptor_.async_accept(*data_socket - , [data_socket, directory_content, me = shared_from_this()](auto ec) - { - if (ec) - { - me->sendFtpMessage(FtpReplyCode::TRANSFER_ABORTED, "Data transfer aborted"); - return; - } - // TODO: close acceptor after connect? - // Create a Unix-like file list - std::stringstream stream; - for (const auto& entry : directory_content) - { - const std::string& filename(entry.first); - const fineftp::Filesystem::FileStatus& file_status(entry.second); - - stream << ((file_status.type() == fineftp::Filesystem::FileType::Dir) ? 'd' : '-') << file_status.permissionString() << " 1 "; - stream << std::setw(10) << file_status.ownerString() << " " << std::setw(10) << file_status.groupString() << " "; - stream << std::setw(10) << file_status.fileSize() << " "; - stream << file_status.timeString() << " "; - stream << filename; - stream << "\r\n"; - } - - // Copy the file list into a raw char vector - std::string dir_listing_string = stream.str(); - std::shared_ptr> dir_listing_rawdata = std::make_shared>(); - dir_listing_rawdata->reserve(dir_listing_string.size()); - std::copy(dir_listing_string.begin(), dir_listing_string.end(), std::back_inserter(*dir_listing_rawdata)); - - // Send the string out - me->addDataToBufferAndSend(dir_listing_rawdata, data_socket); - me->addDataToBufferAndSend(std::shared_ptr>(), data_socket);// Nullpointer indicates end of transmission - }); - } - - void FtpSession::sendNameList(const std::map& directory_content) - { - auto data_socket = std::make_shared(io_service_); - - data_acceptor_.async_accept(*data_socket - , [data_socket, directory_content, me = shared_from_this()](auto ec) - { - if (ec) - { - me->sendFtpMessage(FtpReplyCode::TRANSFER_ABORTED, "Data transfer aborted"); - return; - } - - // Create a file list - std::stringstream stream; - for (const auto& entry : directory_content) - { - stream << entry.first; - stream << "\r\n"; - } - - // Copy the file list into a raw char vector - std::string dir_listing_string = stream.str(); - std::shared_ptr> dir_listing_rawdata = std::make_shared>(); - dir_listing_rawdata->reserve(dir_listing_string.size()); - std::copy(dir_listing_string.begin(), dir_listing_string.end(), std::back_inserter(*dir_listing_rawdata)); - - // Send the string out - me->addDataToBufferAndSend(dir_listing_rawdata, data_socket); - me->addDataToBufferAndSend(std::shared_ptr>(), data_socket);// Nullpointer indicates end of transmission - }); - } - - void FtpSession::sendFile(std::shared_ptr file) - { - auto data_socket = std::make_shared(io_service_); - - data_acceptor_.async_accept(*data_socket - , [data_socket, file, me = shared_from_this()](auto ec) - { - if (ec) - { - me->sendFtpMessage(FtpReplyCode::TRANSFER_ABORTED, "Data transfer aborted"); - return; - } - - // Start sending multiple buffers at once - me->readDataFromFileAndSend(file, data_socket); - me->readDataFromFileAndSend(file, data_socket); - me->readDataFromFileAndSend(file, data_socket); - }); - - } - - void FtpSession::readDataFromFileAndSend(std::shared_ptr file, std::shared_ptr data_socket) - { - file_rw_strand_.post([me = shared_from_this(), file, data_socket]() - { - if(file->file_stream_.eof()) return; - - std::shared_ptr>buffer = std::make_shared>(1024 * 1024 * 1); - file->file_stream_.read(buffer->data(), static_cast(buffer->size())); - auto bytes_read = file->file_stream_.gcount(); - buffer->resize(static_cast(bytes_read)); - - if (!file->file_stream_.eof()) - { - me->addDataToBufferAndSend(buffer, data_socket, [me, file, data_socket]() {me->readDataFromFileAndSend(file, data_socket); }); - } - else - { - me->addDataToBufferAndSend(buffer, data_socket); - me->addDataToBufferAndSend(std::shared_ptr>(nullptr), data_socket); - } - }); - } - - void FtpSession::addDataToBufferAndSend(std::shared_ptr> data, std::shared_ptr data_socket, std::function fetch_more) - { - data_buffer_strand_.post([me = shared_from_this(), data, data_socket, fetch_more]() - { - bool write_in_progress = (!me->data_buffer_.empty()); - - me->data_buffer_.push_back(data); - - if (!write_in_progress) - { - me->writeDataToSocket(data_socket, fetch_more); - } - }); - } - - void FtpSession::writeDataToSocket(std::shared_ptr data_socket, std::function fetch_more) - { - data_buffer_strand_.post( - [me = shared_from_this(), data_socket, fetch_more]() - { - auto data = me->data_buffer_.front(); - - if (data) - { - // Send out the buffer - asio::async_write(*data_socket - , asio::buffer(*data) - , me->data_buffer_strand_.wrap([me, data_socket, data, fetch_more](asio::error_code ec, std::size_t /*bytes_to_transfer*/) - { - me->data_buffer_.pop_front(); - - if (ec) - { - std::cerr << "Data write error: " << ec.message() << std::endl; - return; - } - - fetch_more(); - - if (!me->data_buffer_.empty()) - { - me->writeDataToSocket(data_socket, fetch_more); - } - } - )); - } - else - { - // we got to the end of transmission - me->data_buffer_.pop_front(); - me->sendFtpMessage(FtpReplyCode::CLOSING_DATA_CONNECTION, "Done"); - } - } - ); - } - - //////////////////////////////////////////////////////// - // FTP data-socket receive - //////////////////////////////////////////////////////// - - void FtpSession::receiveFile(std::shared_ptr file) - { - auto data_socket = std::make_shared(io_service_); - - data_acceptor_.async_accept(*data_socket - , [data_socket, file, me = shared_from_this()](auto ec) - { - if (ec) - { - me->sendFtpMessage(FtpReplyCode::TRANSFER_ABORTED, "Data transfer aborted"); - return; - } - - me->receiveDataFromSocketAndWriteToFile(file, data_socket); - }); - } - - void FtpSession::receiveDataFromSocketAndWriteToFile(std::shared_ptr file, std::shared_ptr data_socket) - { - std::shared_ptr> buffer = std::make_shared>(1024 * 1024 * 1); - - asio::async_read(*data_socket - , asio::buffer(*buffer) - , asio::transfer_at_least(buffer->size()) - , [me = shared_from_this(), file, data_socket, buffer](asio::error_code ec, std::size_t length) - { - buffer->resize(length); - if (ec) - { - if (length > 0) - { - me->writeDataToFile(buffer, file); - } - me->endDataReceiving(file); - return; - } - else if (length > 0) - { - me->writeDataToFile(buffer, file, [me, file, data_socket]() { me->receiveDataFromSocketAndWriteToFile(file, data_socket); }); - } - }); - } - - - void FtpSession::writeDataToFile(std::shared_ptr> data, std::shared_ptr file, std::function fetch_more) - { - file_rw_strand_.post([me = shared_from_this(), data, file, fetch_more] - { - fetch_more(); - file->file_stream_.write(data->data(), static_cast(data->size())); - }); - } - - void FtpSession::endDataReceiving(std::shared_ptr file) - { - file_rw_strand_.post([me = shared_from_this(), file] - { - file->file_stream_.flush(); - file->file_stream_.close(); - me->sendFtpMessage(FtpReplyCode::CLOSING_DATA_CONNECTION, "Done"); - }); - } - - //////////////////////////////////////////////////////// - // Helpers - //////////////////////////////////////////////////////// - - std::string FtpSession::toAbsoluteFtpPath(const std::string& rel_or_abs_ftp_path) const - { - std::string absolute_ftp_path; - - if (!rel_or_abs_ftp_path.empty() && (rel_or_abs_ftp_path[0] == '/')) - { - absolute_ftp_path = rel_or_abs_ftp_path; - } - else - { - absolute_ftp_path = fineftp::Filesystem::cleanPath(ftp_working_directory_ + "/" + rel_or_abs_ftp_path, false, '/'); - } - - return absolute_ftp_path; - } - - std::string FtpSession::toLocalPath(const std::string& ftp_path) const - { - assert(logged_in_user_); - - // First make the ftp path absolute if it isn't already - std::string absolute_ftp_path = toAbsoluteFtpPath(ftp_path); - - // Now map it to the local filesystem - return fineftp::Filesystem::cleanPathNative(logged_in_user_->local_root_path_ + "/" + absolute_ftp_path); - } - - std::string FtpSession::createQuotedFtpPath(const std::string& unquoted_ftp_path) const - { - std::string output; - output.reserve(unquoted_ftp_path.size() * 2 + 2); - output.push_back('\"'); - - for (char c : unquoted_ftp_path) - { - output.push_back(c); - if (c == '\"') // Escape quote by double-quote - output.push_back(c); - } - - output.push_back('\"'); - - return output; - } - - FtpMessage FtpSession::checkIfPathIsRenamable(const std::string& ftp_path) const - { - if (!logged_in_user_) return FtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - - if (!ftp_path.empty()) - { - // Is the given path a file or a directory? - auto file_status = Filesystem::FileStatus(toLocalPath(ftp_path)); - - if (file_status.isOk()) - { - // Calculate required permissions to rename the given resource - Permission required_permissions; - if (file_status.type() == Filesystem::FileType::Dir) - { - required_permissions = Permission::DirRename; - } - else - { - required_permissions = Permission::FileRename; - } - - // Send error if the permisions are insufficient - if ((logged_in_user_->permissions_ & required_permissions) != required_permissions) - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - } - - return FtpMessage(FtpReplyCode::COMMAND_OK, ""); - } - else - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "File does not exist"); - } - } - else - { - return FtpMessage(FtpReplyCode::SYNTAX_ERROR_PARAMETERS, "Empty path"); - } - } - - FtpMessage FtpSession::executeCWD(const std::string& param) - { - if (!logged_in_user_) - { - return FtpMessage(FtpReplyCode::NOT_LOGGED_IN, "Not logged in"); - } - if (static_cast(logged_in_user_->permissions_ & Permission::DirList) == 0) - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Permission denied"); - } - - - if (param.empty()) - { - return FtpMessage(FtpReplyCode::SYNTAX_ERROR_PARAMETERS, "No path given"); - } - - std::string absolute_new_working_dir; - - if (param[0] == '/') - { - // Absolute path given - absolute_new_working_dir = fineftp::Filesystem::cleanPath(param, false, '/'); - } - else - { - // Make the path abolute - absolute_new_working_dir = fineftp::Filesystem::cleanPath(ftp_working_directory_ + "/" + param, false, '/'); - } - - auto local_path = toLocalPath(absolute_new_working_dir); - Filesystem::FileStatus file_status(local_path); - - if (!file_status.isOk()) - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Failed ot change directory: The given resource does not exist or permission denied."); - } - if (file_status.type() != Filesystem::FileType::Dir) - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Failed ot change directory: The given resource is not a directory."); - } - if (!file_status.canOpenDir()) - { - return FtpMessage(FtpReplyCode::ACTION_NOT_TAKEN, "Failed ot change directory: Permission denied."); - } - ftp_working_directory_ = absolute_new_working_dir; - return FtpMessage(FtpReplyCode::FILE_ACTION_COMPLETED, "Working directory changed to " + ftp_working_directory_); - } - -#ifdef WIN32 - std::string FtpSession::GetLastErrorStr() const - { - DWORD error = GetLastError(); - if (error) - { - LPVOID lp_msg_buf; - DWORD buf_len = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - error, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lp_msg_buf, - 0, NULL ); - if (buf_len) - { - LPCSTR lp_msg_str = (LPCSTR)lp_msg_buf; - std::string result(lp_msg_str, lp_msg_str + buf_len); - result.erase(std::remove_if(result.begin(), - result.end(), - [](unsigned char x) {return std::iscntrl(x); }), - result.end()); //remove CRLF - LocalFree(lp_msg_buf); - - return result; - } - } - - return ""; - } -#endif //WIN32 -} diff --git a/ui/external/fineftp-server/fineftp-server/src/ftp_session.h b/ui/external/fineftp-server/fineftp-server/src/ftp_session.h deleted file mode 100755 index 66b880fa..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/ftp_session.h +++ /dev/null @@ -1,217 +0,0 @@ -#pragma once - -#include - -#include -#include - -#include "ftp_message.h" - -#include "filesystem.h" -#include "user_database.h" -#include "ftp_user.h" - -#include "win_str_convert.h" - -namespace fineftp -{ - class FtpSession - : public std::enable_shared_from_this - { - private: - struct IoFile - { - IoFile(const std::string& filename, std::ios::openmode mode) -#if defined(WIN32) && !defined(__GNUG__) - : file_stream_(StrConvert::Utf8ToWide(filename), mode) -#else - : file_stream_(filename, mode) -#endif - , stream_buffer_(1024 * 1024) - { - file_stream_.rdbuf()->pubsetbuf(stream_buffer_.data(), static_cast(stream_buffer_.size())); - } - - ~IoFile() - { - file_stream_.flush(); - file_stream_.close(); - } - - std::fstream file_stream_; - std::vector stream_buffer_; - }; - - //////////////////////////////////////////////////////// - // Public API - //////////////////////////////////////////////////////// - public: - FtpSession(asio::io_service& io_service, const UserDatabase& user_database, const std::function& completion_handler); - - ~FtpSession(); - - void start(); - - asio::ip::tcp::socket& getSocket(); - - //////////////////////////////////////////////////////// - // FTP command-socket - //////////////////////////////////////////////////////// - private: - void sendFtpMessage(const FtpMessage& message); - void sendFtpMessage(FtpReplyCode code, const std::string& message); - void sendRawFtpMessage(const std::string& raw_message); - void startSendingMessages(); - void readFtpCommand(); - - void handleFtpCommand(const std::string& command); - - //////////////////////////////////////////////////////// - // FTP Commands - //////////////////////////////////////////////////////// - private: - // Access control commands - void handleFtpCommandUSER(const std::string& param); - void handleFtpCommandPASS(const std::string& param); - void handleFtpCommandACCT(const std::string& param); - void handleFtpCommandCWD(const std::string& param); - void handleFtpCommandCDUP(const std::string& param); - void handleFtpCommandREIN(const std::string& param); - void handleFtpCommandQUIT(const std::string& param); - - // Transfer parameter commands - void handleFtpCommandPORT(const std::string& param); - void handleFtpCommandPASV(const std::string& param); - void handleFtpCommandTYPE(const std::string& param); - void handleFtpCommandSTRU(const std::string& param); - void handleFtpCommandMODE(const std::string& param); - - // Ftp service commands - void handleFtpCommandRETR(const std::string& param); - void handleFtpCommandSIZE(const std::string& param); - void handleFtpCommandSTOR(const std::string& param); - void handleFtpCommandSTOU(const std::string& param); - void handleFtpCommandAPPE(const std::string& param); - void handleFtpCommandALLO(const std::string& param); - void handleFtpCommandREST(const std::string& param); - void handleFtpCommandRNFR(const std::string& param); - void handleFtpCommandRNTO(const std::string& param); - void handleFtpCommandABOR(const std::string& param); - void handleFtpCommandDELE(const std::string& param); - void handleFtpCommandRMD(const std::string& param); - void handleFtpCommandMKD(const std::string& param); - void handleFtpCommandPWD(const std::string& param); - void handleFtpCommandLIST(const std::string& param); - void handleFtpCommandNLST(const std::string& param); - void handleFtpCommandSITE(const std::string& param); - void handleFtpCommandSYST(const std::string& param); - void handleFtpCommandSTAT(const std::string& param); - void handleFtpCommandHELP(const std::string& param); - void handleFtpCommandNOOP(const std::string& param); - - // Modern FTP Commands - void handleFtpCommandFEAT(const std::string& param); - - void handleFtpCommandOPTS(const std::string& param); - - //////////////////////////////////////////////////////// - // FTP data-socket send - //////////////////////////////////////////////////////// - private: - - void sendDirectoryListing (const std::map& directory_content); - void sendNameList (const std::map& directory_content); - - void sendFile (std::shared_ptr file); - - void readDataFromFileAndSend(std::shared_ptr file - , std::shared_ptr data_socket); - - void addDataToBufferAndSend (std::shared_ptr> data - , std::shared_ptr data_socket - , std::function fetch_more = []() {return; }); - - void writeDataToSocket (std::shared_ptr data_socket - , std::function fetch_more); - - //////////////////////////////////////////////////////// - // FTP data-socket receive - //////////////////////////////////////////////////////// - private: - void receiveFile(std::shared_ptr file); - - void receiveDataFromSocketAndWriteToFile(std::shared_ptr file - , std::shared_ptr data_socket); - - void writeDataToFile(std::shared_ptr> data - , std::shared_ptr file - , std::function fetch_more = []() {return; }); - - void endDataReceiving(std::shared_ptr file); - - //////////////////////////////////////////////////////// - // Helpers - //////////////////////////////////////////////////////// - private: - std::string toAbsoluteFtpPath(const std::string& rel_or_abs_ftp_path) const; - std::string toLocalPath(const std::string& ftp_path) const; - std::string createQuotedFtpPath(const std::string& unquoted_ftp_path) const; - - /** @brief Checks if a path is renamable - * - * Checks if the current user can rename the given path. A path is renameable - * if it exists, a user is logged in and the user has sufficient permissions - * (file / dir / both) to rename it. - * - * @param ftp_path: The source path - * - * @return (COMMAND_OK, "") if the path can be renamed or any other meaningfull error message if not. - */ - FtpMessage checkIfPathIsRenamable(const std::string& ftp_path) const; - - FtpMessage executeCWD(const std::string& param); - -#ifdef WIN32 - /** - * @brief Returns Windows' GetLastError() as human readable string - * @return The message of the last error - */ - std::string GetLastErrorStr() const; -#endif // WIN32 - - //////////////////////////////////////////////////////// - // Member variables - //////////////////////////////////////////////////////// - private: - // Completion handler - const std::function completion_handler_; - - // User management - const UserDatabase& user_database_; - std::shared_ptr logged_in_user_; - - // "Global" io service - asio::io_service& io_service_; - - // Command Socket - asio::ip::tcp::socket command_socket_; - asio::io_service::strand command_write_strand_; - asio::streambuf command_input_stream_; - std::deque command_output_queue_; - - std::string last_command_; - std::string rename_from_path_; - std::string username_for_login_; - - // Data Socket (=> passive mode) - bool data_type_binary_; - asio::ip::tcp::acceptor data_acceptor_; - std::weak_ptr data_socket_weakptr_; // TODO: use - std::deque>> data_buffer_; // TODO: close data port when the control port closes - asio::io_service::strand data_buffer_strand_; - asio::io_service::strand file_rw_strand_; - - // Current state - std::string ftp_working_directory_; - }; -} diff --git a/ui/external/fineftp-server/fineftp-server/src/ftp_user.h b/ui/external/fineftp-server/fineftp-server/src/ftp_user.h deleted file mode 100644 index dea4e5c6..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/ftp_user.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include -#include - -namespace fineftp -{ - struct FtpUser - { - FtpUser(const std::string& password, const std::string& local_root_path, const Permission permissions) - : password_ (password) - , local_root_path_(local_root_path) - , permissions_ (permissions) - {} - - const std::string password_; - const std::string local_root_path_; - const Permission permissions_; - }; -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/server.cpp b/ui/external/fineftp-server/fineftp-server/src/server.cpp deleted file mode 100644 index 0773ddf2..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/server.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include - -#include "server_impl.h" -#include - -namespace fineftp -{ - FtpServer::FtpServer(const std::string& address, uint16_t port) - : ftp_server_(std::make_unique(address, port)) - {} - - FtpServer::FtpServer(uint16_t port) - : FtpServer(std::string("0.0.0.0"), port) - {} - - FtpServer::~FtpServer() - {} - - bool FtpServer::addUser(const std::string& username, const std::string& password, const std::string& local_root_path, const Permission permissions) - { - return ftp_server_->addUser(username, password, local_root_path, permissions); - } - - bool FtpServer::addUserAnonymous(const std::string& local_root_path, const Permission permissions) - { - return ftp_server_->addUserAnonymous(local_root_path, permissions); - } - - bool FtpServer::start(size_t thread_count) - { - assert(thread_count > 0); - return ftp_server_->start(thread_count); - } - - void FtpServer::stop() - { - ftp_server_->stop(); - } - - int FtpServer::getOpenConnectionCount() const - { - return ftp_server_->getOpenConnectionCount(); - } - - uint16_t FtpServer::getPort() const - { - return ftp_server_->getPort(); - } - - std::string FtpServer::getAddress() const - { - return ftp_server_->getAddress(); - } -} diff --git a/ui/external/fineftp-server/fineftp-server/src/server_impl.cpp b/ui/external/fineftp-server/fineftp-server/src/server_impl.cpp deleted file mode 100644 index e3695ec7..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/server_impl.cpp +++ /dev/null @@ -1,156 +0,0 @@ -#include "server_impl.h" - -#include "ftp_session.h" - -#include -#include - -namespace fineftp -{ - - FtpServerImpl::FtpServerImpl(const std::string& address, uint16_t port) - : port_ (port) - , address_ (address) - , acceptor_ (io_service_) - , open_connection_count_(0) - {} - - FtpServerImpl::~FtpServerImpl() - { - stop(); - } - - bool FtpServerImpl::addUser(const std::string& username, const std::string& password, const std::string& local_root_path, const Permission permissions) - { - return ftp_users_.addUser(username, password, local_root_path, permissions); - } - - bool FtpServerImpl::addUserAnonymous(const std::string& local_root_path, const Permission permissions) - { - return ftp_users_.addUser("anonymous", "", local_root_path, permissions); - } - - bool FtpServerImpl::start(size_t thread_count) - { - auto ftp_session = std::make_shared(io_service_, ftp_users_, [this]() { open_connection_count_--; }); - - // set up the acceptor to listen on the tcp port - asio::error_code make_address_ec; - asio::ip::tcp::endpoint endpoint(asio::ip::make_address(address_, make_address_ec), port_); - if (make_address_ec) - { - std::cerr << "Error creating address from string \"" << address_<< "\": " << make_address_ec.message() << std::endl; - return false; - } - - { - asio::error_code ec; - acceptor_.open(endpoint.protocol(), ec); - if (ec) - { - std::cerr << "Error opening acceptor: " << ec.message() << std::endl; - return false; - } - } - - { - asio::error_code ec; - acceptor_.set_option(asio::ip::tcp::acceptor::reuse_address(true), ec); - if (ec) - { - std::cerr << "Error setting reuse_address option: " << ec.message() << std::endl; - return false; - } - } - - { - asio::error_code ec; - acceptor_.bind(endpoint, ec); - if (ec) - { - std::cerr << "Error binding acceptor: " << ec.message() << std::endl; - return false; - } - } - - { - asio::error_code ec; - acceptor_.listen(asio::socket_base::max_listen_connections, ec); - if (ec) - { - std::cerr << "Error listening on acceptor: " << ec.message() << std::endl; - return false; - } - } - -#ifndef NDEBUG - std::cout << "FTP Server created." << std::endl << "Listening at address " << acceptor_.local_endpoint().address() << " on port " << acceptor_.local_endpoint().port() << ":" << std::endl; -#endif // NDEBUG - - acceptor_.async_accept(ftp_session->getSocket() - , [=](auto ec) - { - open_connection_count_++; - - this->acceptFtpSession(ftp_session, ec); - }); - - for (size_t i = 0; i < thread_count; i++) - { - thread_pool_.emplace_back([=] {io_service_.run(); }); - } - - return true; - } - - void FtpServerImpl::stop() - { - io_service_.stop(); - for (std::thread& thread : thread_pool_) - { - thread.join(); - } - thread_pool_.clear(); - } - - void FtpServerImpl::acceptFtpSession(std::shared_ptr ftp_session, asio::error_code const& error) - { - if (error) - { -#ifndef NDEBUG - std::cerr << "Error handling connection: " << error.message() << std::endl; -#endif - return; - } - -#ifndef NDEBUG - std::cout << "FTP Client connected: " << ftp_session->getSocket().remote_endpoint().address().to_string() << ":" << ftp_session->getSocket().remote_endpoint().port() << std::endl; -#endif - - ftp_session->start(); - - auto new_session = std::make_shared(io_service_, ftp_users_, [this]() { open_connection_count_--; }); - - acceptor_.async_accept(new_session->getSocket() - , [=](auto ec) - { - open_connection_count_++; - this->acceptFtpSession(new_session, ec); - }); - } - - int FtpServerImpl::getOpenConnectionCount() - { - return open_connection_count_; - } - - uint16_t FtpServerImpl::getPort() - { - return acceptor_.local_endpoint().port(); - } - - std::string FtpServerImpl::getAddress() - { - return acceptor_.local_endpoint().address().to_string(); - } -} diff --git a/ui/external/fineftp-server/fineftp-server/src/server_impl.h b/ui/external/fineftp-server/fineftp-server/src/server_impl.h deleted file mode 100644 index bc26772b..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/server_impl.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include - -#include - -#include -#include - -namespace fineftp -{ - class FtpServerImpl - { - public: - FtpServerImpl(const std::string& address, uint16_t port); - - ~FtpServerImpl(); - - bool addUser(const std::string& username, const std::string& password, const std::string& local_root_path, const Permission permissions); - bool addUserAnonymous(const std::string& local_root_path, const Permission permissions); - - bool start(size_t thread_count = 1); - - void stop(); - - int getOpenConnectionCount(); - - uint16_t getPort(); - - std::string getAddress(); - - private: - void acceptFtpSession(std::shared_ptr ftp_session, asio::error_code const& error); - - private: - UserDatabase ftp_users_; - - const uint16_t port_; - const std::string address_; - - std::vector thread_pool_; - asio::io_service io_service_; - asio::ip::tcp::acceptor acceptor_; - - std::atomic open_connection_count_; - }; -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/user_database.cpp b/ui/external/fineftp-server/fineftp-server/src/user_database.cpp deleted file mode 100644 index 7b370eca..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/user_database.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "user_database.h" - -#include - - -namespace fineftp -{ - UserDatabase::UserDatabase() - {} - - UserDatabase::~UserDatabase() - {} - - bool UserDatabase::addUser(const std::string& username, const std::string& password, const std::string& local_root_path, Permission permissions) - { - std::lock_guard database_lock(database_mutex_); - - if (isUsernameAnonymousUser(username)) - { - if (anonymous_user_) - { - std::cerr << "Error adding user with username \"" << username << "\". The username denotes the anonymous user, which is already present." << std::endl; - return false; - } - else - { - anonymous_user_ = std::shared_ptr(new FtpUser(password, local_root_path, permissions)); -#ifndef NDEBUG - std::cout << "Successfully added anonymous user." << std::endl; -#endif // !NDEBUG - return true; - } - } - else - { - auto user_it = database_.find(username); - if (user_it == database_.end()) - { - database_.emplace(username, std::shared_ptr(new FtpUser(password, local_root_path, permissions))); -#ifndef NDEBUG - std::cout << "Successfully added user \"" << username << "\"." << std::endl; -#endif // !NDEBUG - return true; - } - else - { - std::cerr << "Error adding user with username \"" << username << "\". The user already exists." << std::endl; - return false; - } - } - } - - std::shared_ptr UserDatabase::getUser(const std::string& username, const std::string& password) const - { - std::lock_guard database_lock(database_mutex_); - - if (isUsernameAnonymousUser(username)) - { - return anonymous_user_; - } - else - { - auto user_it = database_.find(username); - if (user_it == database_.end()) - { - return nullptr; - } - else - { - if (user_it->second->password_ == password) - return user_it->second; - else - return nullptr; - } - } - } - - bool UserDatabase::isUsernameAnonymousUser(const std::string& username) const - { - return (username.empty() - || username == "ftp" - || username == "anonymous"); - } - -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/user_database.h b/ui/external/fineftp-server/fineftp-server/src/user_database.h deleted file mode 100644 index b7d561f3..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/user_database.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "ftp_user.h" - -namespace fineftp -{ - class UserDatabase - { - public: - UserDatabase(); - ~UserDatabase(); - - bool addUser(const std::string& username, const std::string& password, const std::string& local_root_path, Permission permissions); - - std::shared_ptr getUser(const std::string& username, const std::string& password) const; - - private: - bool isUsernameAnonymousUser(const std::string& username) const; - - mutable std::mutex database_mutex_; - std::map> database_; - std::shared_ptr anonymous_user_; - }; -} \ No newline at end of file diff --git a/ui/external/fineftp-server/fineftp-server/src/win_str_convert.cpp b/ui/external/fineftp-server/fineftp-server/src/win_str_convert.cpp deleted file mode 100644 index b6923c31..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/win_str_convert.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "win_str_convert.h" - -#ifdef WIN32 - #define WIN32_LEAN_AND_MEAN - #define NOMINMAX - #include -#endif // WIN32 - -#include - -namespace fineftp -{ - namespace StrConvert - { -#ifdef WIN32 - std::string WideToAnsi(const std::wstring& wstr) - { - int count = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), static_cast(wstr.length()), NULL, 0, NULL, NULL); - std::string str(count, 0); - WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, &str[0], count, NULL, NULL); - return str; - } - - std::wstring AnsiToWide(const std::string& str) - { - int count = MultiByteToWideChar(CP_ACP, 0, str.c_str(), static_cast(str.length()), NULL, 0); - std::wstring wstr(count, 0); - MultiByteToWideChar(CP_ACP, 0, str.c_str(), static_cast(str.length()), &wstr[0], count); - return wstr; - } - - std::string WideToUtf8(const std::wstring& wstr) - { - int count = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), static_cast(wstr.length()), NULL, 0, NULL, NULL); - std::string str(count, 0); - WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, &str[0], count, NULL, NULL); - return str; - } - - std::wstring Utf8ToWide(const std::string& str) - { - int count = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), static_cast(str.length()), NULL, 0); - std::wstring wstr(count, 0); - MultiByteToWideChar(CP_UTF8, 0, str.c_str(), static_cast(str.length()), &wstr[0], count); - return wstr; - } - - std::string AnsiToUtf8(const std::string& str) - { - return WideToUtf8(AnsiToWide(str)); - } - - std::string Utf8ToAnsi(const std::string& str) - { - return WideToAnsi(Utf8ToWide(str)); - } -#endif - } -} diff --git a/ui/external/fineftp-server/fineftp-server/src/win_str_convert.h b/ui/external/fineftp-server/fineftp-server/src/win_str_convert.h deleted file mode 100644 index eb2755f1..00000000 --- a/ui/external/fineftp-server/fineftp-server/src/win_str_convert.h +++ /dev/null @@ -1,21 +0,0 @@ -#include - -namespace fineftp -{ - namespace StrConvert - { -#ifdef WIN32 - std::string WideToAnsi(const std::wstring& wstr); - - std::wstring AnsiToWide(const std::string& str); - - std::string WideToUtf8(const std::wstring& wstr); - - std::wstring Utf8ToWide(const std::string& str); - - std::string AnsiToUtf8(const std::string& str); - - std::string Utf8ToAnsi(const std::string& str); -#endif // WIN32 - } -} \ No newline at end of file diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/.gitignore b/ui/external/fineftp-server/thirdparty/asio/asio/.gitignore deleted file mode 100644 index 55db1187..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -compile -config.guess -config.log -config.status -config.sub -configure -depcomp -install-sh -missing -test-driver -/doc -/lib -/boostified -/tsified -*.gz -*.bz2 -*.zip -/*.cpp -/*.hpp diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/COPYING b/ui/external/fineftp-server/thirdparty/asio/asio/COPYING deleted file mode 100644 index 2bb5eb20..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/COPYING +++ /dev/null @@ -1,4 +0,0 @@ -Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) - -Distributed under the Boost Software License, Version 1.0. (See accompanying -file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/INSTALL b/ui/external/fineftp-server/thirdparty/asio/asio/INSTALL deleted file mode 100644 index 1dd78db1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/INSTALL +++ /dev/null @@ -1,5 +0,0 @@ -See doc/index.html for information on: - - External dependencies - - Using, building, and configuring Asio - - Supported platforms - - How to build the tests and examples diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/LICENSE_1_0.txt b/ui/external/fineftp-server/thirdparty/asio/asio/LICENSE_1_0.txt deleted file mode 100644 index 36b7cd93..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/LICENSE_1_0.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/Makefile.am b/ui/external/fineftp-server/thirdparty/asio/asio/Makefile.am deleted file mode 100644 index 0acdc02d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip - -SUBDIRS = include src - -MAINTAINERCLEANFILES = \ - $(srcdir)/aclocal.m4 \ - $(srcdir)/configure \ - $(srcdir)/config.guess \ - $(srcdir)/config.sub \ - $(srcdir)/depcomp \ - $(srcdir)/install-sh \ - $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ - $(srcdir)/Makefile.in \ - asio-*.tar.gz - -EXTRA_DIST = \ - LICENSE_1_0.txt \ - doc diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/README b/ui/external/fineftp-server/thirdparty/asio/asio/README deleted file mode 100644 index 1b3b0a24..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/README +++ /dev/null @@ -1,4 +0,0 @@ -asio version 1.18.1 -Released Saturday, 26 December 2020. - -See doc/index.html for API documentation and a tutorial. diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/asio.manifest b/ui/external/fineftp-server/thirdparty/asio/asio/asio.manifest deleted file mode 100644 index 9288cfb3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/asio.manifest +++ /dev/null @@ -1,5678 +0,0 @@ -/ -/aclocal.m4 -/compile -/config.guess -/config.sub -/configure -/configure.ac -/COPYING -/depcomp -/doc/ -/doc/asio/ -/doc/asio/examples/ -/doc/asio/examples/cpp03_examples.html -/doc/asio/examples/cpp11_examples.html -/doc/asio/examples/cpp14_examples.html -/doc/asio/examples/cpp17_examples.html -/doc/asio/examples.html -/doc/asio/history.html -/doc/asio/index.html -/doc/asio/net_ts.html -/doc/asio/overview/ -/doc/asio/overview/core/ -/doc/asio/overview/core/allocation.html -/doc/asio/overview/core/async.html -/doc/asio/overview/core/basics.html -/doc/asio/overview/core/buffers.html -/doc/asio/overview/core/concurrency_hint.html -/doc/asio/overview/core/coroutine.html -/doc/asio/overview/core/coroutines_ts.html -/doc/asio/overview/core/handler_tracking.html -/doc/asio/overview/core.html -/doc/asio/overview/core/line_based.html -/doc/asio/overview/core/reactor.html -/doc/asio/overview/core/spawn.html -/doc/asio/overview/core/strands.html -/doc/asio/overview/core/streams.html -/doc/asio/overview/core/threads.html -/doc/asio/overview/cpp2011/ -/doc/asio/overview/cpp2011/array.html -/doc/asio/overview/cpp2011/atomic.html -/doc/asio/overview/cpp2011/chrono.html -/doc/asio/overview/cpp2011/futures.html -/doc/asio/overview/cpp2011.html -/doc/asio/overview/cpp2011/move_handlers.html -/doc/asio/overview/cpp2011/move_objects.html -/doc/asio/overview/cpp2011/shared_ptr.html -/doc/asio/overview/cpp2011/system_error.html -/doc/asio/overview/cpp2011/variadic.html -/doc/asio/overview.html -/doc/asio/overview/implementation.html -/doc/asio/overview/networking/ -/doc/asio/overview/networking/bsd_sockets.html -/doc/asio/overview/networking.html -/doc/asio/overview/networking/iostreams.html -/doc/asio/overview/networking/other_protocols.html -/doc/asio/overview/networking/protocols.html -/doc/asio/overview/posix/ -/doc/asio/overview/posix/fork.html -/doc/asio/overview/posix.html -/doc/asio/overview/posix/local.html -/doc/asio/overview/posix/stream_descriptor.html -/doc/asio/overview/rationale.html -/doc/asio/overview/serial_ports.html -/doc/asio/overview/signals.html -/doc/asio/overview/ssl.html -/doc/asio/overview/timers.html -/doc/asio/overview/windows/ -/doc/asio/overview/windows.html -/doc/asio/overview/windows/object_handle.html -/doc/asio/overview/windows/random_access_handle.html -/doc/asio/overview/windows/stream_handle.html -/doc/asio.png -/doc/asio/reference/ -/doc/asio/reference/AcceptableProtocol.html -/doc/asio/reference/AcceptHandler.html -/doc/asio/reference/any_io_executor.html -/doc/asio/reference/asio_handler_allocate.html -/doc/asio/reference/asio_handler_deallocate.html -/doc/asio/reference/asio_handler_invoke/ -/doc/asio/reference/asio_handler_invoke.html -/doc/asio/reference/asio_handler_invoke/overload1.html -/doc/asio/reference/asio_handler_invoke/overload2.html -/doc/asio/reference/asio_handler_is_continuation.html -/doc/asio/reference/associated_allocator/ -/doc/asio/reference/associated_allocator/get.html -/doc/asio/reference/associated_allocator.html -/doc/asio/reference/associated_allocator/type.html -/doc/asio/reference/associated_executor/ -/doc/asio/reference/associated_executor/get.html -/doc/asio/reference/associated_executor.html -/doc/asio/reference/associated_executor/type.html -/doc/asio/reference/async_completion/ -/doc/asio/reference/async_completion/async_completion.html -/doc/asio/reference/async_completion/completion_handler.html -/doc/asio/reference/async_completion/completion_handler_type.html -/doc/asio/reference/async_completion.html -/doc/asio/reference/async_completion/result.html -/doc/asio/reference/async_compose.html -/doc/asio/reference/async_connect/ -/doc/asio/reference/async_connect.html -/doc/asio/reference/async_connect/overload1.html -/doc/asio/reference/async_connect/overload2.html -/doc/asio/reference/async_connect/overload3.html -/doc/asio/reference/async_connect/overload4.html -/doc/asio/reference/async_connect/overload5.html -/doc/asio/reference/async_connect/overload6.html -/doc/asio/reference/asynchronous_operations.html -/doc/asio/reference/asynchronous_socket_operations.html -/doc/asio/reference/async_initiate.html -/doc/asio/reference/AsyncRandomAccessReadDevice.html -/doc/asio/reference/AsyncRandomAccessWriteDevice.html -/doc/asio/reference/async_read/ -/doc/asio/reference/async_read_at/ -/doc/asio/reference/async_read_at.html -/doc/asio/reference/async_read_at/overload1.html -/doc/asio/reference/async_read_at/overload2.html -/doc/asio/reference/async_read_at/overload3.html -/doc/asio/reference/async_read_at/overload4.html -/doc/asio/reference/async_read.html -/doc/asio/reference/async_read/overload1.html -/doc/asio/reference/async_read/overload2.html -/doc/asio/reference/async_read/overload3.html -/doc/asio/reference/async_read/overload4.html -/doc/asio/reference/async_read/overload5.html -/doc/asio/reference/async_read/overload6.html -/doc/asio/reference/async_read/overload7.html -/doc/asio/reference/async_read/overload8.html -/doc/asio/reference/AsyncReadStream.html -/doc/asio/reference/async_read_until/ -/doc/asio/reference/async_read_until.html -/doc/asio/reference/async_read_until/overload10.html -/doc/asio/reference/async_read_until/overload11.html -/doc/asio/reference/async_read_until/overload12.html -/doc/asio/reference/async_read_until/overload1.html -/doc/asio/reference/async_read_until/overload2.html -/doc/asio/reference/async_read_until/overload3.html -/doc/asio/reference/async_read_until/overload4.html -/doc/asio/reference/async_read_until/overload5.html -/doc/asio/reference/async_read_until/overload6.html -/doc/asio/reference/async_read_until/overload7.html -/doc/asio/reference/async_read_until/overload8.html -/doc/asio/reference/async_read_until/overload9.html -/doc/asio/reference/async_result/ -/doc/asio/reference/async_result/async_result.html -/doc/asio/reference/async_result/completion_handler_type.html -/doc/asio/reference/async_result/get.html -/doc/asio/reference/async_result.html -/doc/asio/reference/async_result/initiate.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/get.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/return_type.html -/doc/asio/reference/async_result/return_type.html -/doc/asio/reference/async_write/ -/doc/asio/reference/async_write_at/ -/doc/asio/reference/async_write_at.html -/doc/asio/reference/async_write_at/overload1.html -/doc/asio/reference/async_write_at/overload2.html -/doc/asio/reference/async_write_at/overload3.html -/doc/asio/reference/async_write_at/overload4.html -/doc/asio/reference/async_write.html -/doc/asio/reference/async_write/overload1.html -/doc/asio/reference/async_write/overload2.html -/doc/asio/reference/async_write/overload3.html -/doc/asio/reference/async_write/overload4.html -/doc/asio/reference/async_write/overload5.html -/doc/asio/reference/async_write/overload6.html -/doc/asio/reference/async_write/overload7.html -/doc/asio/reference/async_write/overload8.html -/doc/asio/reference/AsyncWriteStream.html -/doc/asio/reference/awaitable/ -/doc/asio/reference/awaitable/awaitable/ -/doc/asio/reference/awaitable/_awaitable.html -/doc/asio/reference/awaitable/awaitable.html -/doc/asio/reference/awaitable/awaitable/overload1.html -/doc/asio/reference/awaitable/awaitable/overload2.html -/doc/asio/reference/awaitable/executor_type.html -/doc/asio/reference/awaitable.html -/doc/asio/reference/awaitable/valid.html -/doc/asio/reference/awaitable/value_type.html -/doc/asio/reference/bad_executor/ -/doc/asio/reference/bad_executor/bad_executor.html -/doc/asio/reference/bad_executor.html -/doc/asio/reference/bad_executor/what.html -/doc/asio/reference/basic_datagram_socket/ -/doc/asio/reference/basic_datagram_socket/assign/ -/doc/asio/reference/basic_datagram_socket/assign.html -/doc/asio/reference/basic_datagram_socket/assign/overload1.html -/doc/asio/reference/basic_datagram_socket/assign/overload2.html -/doc/asio/reference/basic_datagram_socket/async_connect.html -/doc/asio/reference/basic_datagram_socket/async_receive/ -/doc/asio/reference/basic_datagram_socket/async_receive_from/ -/doc/asio/reference/basic_datagram_socket/async_receive_from.html -/doc/asio/reference/basic_datagram_socket/async_receive_from/overload1.html -/doc/asio/reference/basic_datagram_socket/async_receive_from/overload2.html -/doc/asio/reference/basic_datagram_socket/async_receive.html -/doc/asio/reference/basic_datagram_socket/async_receive/overload1.html -/doc/asio/reference/basic_datagram_socket/async_receive/overload2.html -/doc/asio/reference/basic_datagram_socket/async_send/ -/doc/asio/reference/basic_datagram_socket/async_send.html -/doc/asio/reference/basic_datagram_socket/async_send/overload1.html -/doc/asio/reference/basic_datagram_socket/async_send/overload2.html -/doc/asio/reference/basic_datagram_socket/async_send_to/ -/doc/asio/reference/basic_datagram_socket/async_send_to.html -/doc/asio/reference/basic_datagram_socket/async_send_to/overload1.html -/doc/asio/reference/basic_datagram_socket/async_send_to/overload2.html -/doc/asio/reference/basic_datagram_socket/async_wait.html -/doc/asio/reference/basic_datagram_socket/at_mark/ -/doc/asio/reference/basic_datagram_socket/at_mark.html -/doc/asio/reference/basic_datagram_socket/at_mark/overload1.html -/doc/asio/reference/basic_datagram_socket/at_mark/overload2.html -/doc/asio/reference/basic_datagram_socket/available/ -/doc/asio/reference/basic_datagram_socket/available.html -/doc/asio/reference/basic_datagram_socket/available/overload1.html -/doc/asio/reference/basic_datagram_socket/available/overload2.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/ -/doc/asio/reference/basic_datagram_socket/_basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload10.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload1.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload2.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload3.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload4.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload5.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload6.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload7.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload8.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload9.html -/doc/asio/reference/basic_datagram_socket/bind/ -/doc/asio/reference/basic_datagram_socket/bind.html -/doc/asio/reference/basic_datagram_socket/bind/overload1.html -/doc/asio/reference/basic_datagram_socket/bind/overload2.html -/doc/asio/reference/basic_datagram_socket/broadcast.html -/doc/asio/reference/basic_datagram_socket/bytes_readable.html -/doc/asio/reference/basic_datagram_socket/cancel/ -/doc/asio/reference/basic_datagram_socket/cancel.html -/doc/asio/reference/basic_datagram_socket/cancel/overload1.html -/doc/asio/reference/basic_datagram_socket/cancel/overload2.html -/doc/asio/reference/basic_datagram_socket/close/ -/doc/asio/reference/basic_datagram_socket/close.html -/doc/asio/reference/basic_datagram_socket/close/overload1.html -/doc/asio/reference/basic_datagram_socket/close/overload2.html -/doc/asio/reference/basic_datagram_socket/connect/ -/doc/asio/reference/basic_datagram_socket/connect.html -/doc/asio/reference/basic_datagram_socket/connect/overload1.html -/doc/asio/reference/basic_datagram_socket/connect/overload2.html -/doc/asio/reference/basic_datagram_socket/debug.html -/doc/asio/reference/basic_datagram_socket/do_not_route.html -/doc/asio/reference/basic_datagram_socket/enable_connection_aborted.html -/doc/asio/reference/basic_datagram_socket/endpoint_type.html -/doc/asio/reference/basic_datagram_socket/executor_type.html -/doc/asio/reference/basic_datagram_socket/get_executor.html -/doc/asio/reference/basic_datagram_socket/get_option/ -/doc/asio/reference/basic_datagram_socket/get_option.html -/doc/asio/reference/basic_datagram_socket/get_option/overload1.html -/doc/asio/reference/basic_datagram_socket/get_option/overload2.html -/doc/asio/reference/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/io_control/ -/doc/asio/reference/basic_datagram_socket/io_control.html -/doc/asio/reference/basic_datagram_socket/io_control/overload1.html -/doc/asio/reference/basic_datagram_socket/io_control/overload2.html -/doc/asio/reference/basic_datagram_socket/is_open.html -/doc/asio/reference/basic_datagram_socket/keep_alive.html -/doc/asio/reference/basic_datagram_socket/linger.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/ -/doc/asio/reference/basic_datagram_socket/local_endpoint.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/ -/doc/asio/reference/basic_datagram_socket/lowest_layer.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_datagram_socket/lowest_layer_type.html -/doc/asio/reference/basic_datagram_socket/max_connections.html -/doc/asio/reference/basic_datagram_socket/max_listen_connections.html -/doc/asio/reference/basic_datagram_socket/message_do_not_route.html -/doc/asio/reference/basic_datagram_socket/message_end_of_record.html -/doc/asio/reference/basic_datagram_socket/message_flags.html -/doc/asio/reference/basic_datagram_socket/message_out_of_band.html -/doc/asio/reference/basic_datagram_socket/message_peek.html -/doc/asio/reference/basic_datagram_socket/native_handle.html -/doc/asio/reference/basic_datagram_socket/native_handle_type.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/ -/doc/asio/reference/basic_datagram_socket/native_non_blocking.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_datagram_socket/non_blocking/ -/doc/asio/reference/basic_datagram_socket/non_blocking.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload1.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload2.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload3.html -/doc/asio/reference/basic_datagram_socket/open/ -/doc/asio/reference/basic_datagram_socket/open.html -/doc/asio/reference/basic_datagram_socket/open/overload1.html -/doc/asio/reference/basic_datagram_socket/open/overload2.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/ -/doc/asio/reference/basic_datagram_socket/operator_eq_.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_datagram_socket/out_of_band_inline.html -/doc/asio/reference/basic_datagram_socket/protocol_type.html -/doc/asio/reference/basic_datagram_socket__rebind_executor/ -/doc/asio/reference/basic_datagram_socket__rebind_executor.html -/doc/asio/reference/basic_datagram_socket__rebind_executor/other.html -/doc/asio/reference/basic_datagram_socket/receive/ -/doc/asio/reference/basic_datagram_socket/receive_buffer_size.html -/doc/asio/reference/basic_datagram_socket/receive_from/ -/doc/asio/reference/basic_datagram_socket/receive_from.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload1.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload2.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload3.html -/doc/asio/reference/basic_datagram_socket/receive.html -/doc/asio/reference/basic_datagram_socket/receive_low_watermark.html -/doc/asio/reference/basic_datagram_socket/receive/overload1.html -/doc/asio/reference/basic_datagram_socket/receive/overload2.html -/doc/asio/reference/basic_datagram_socket/receive/overload3.html -/doc/asio/reference/basic_datagram_socket/release/ -/doc/asio/reference/basic_datagram_socket/release.html -/doc/asio/reference/basic_datagram_socket/release/overload1.html -/doc/asio/reference/basic_datagram_socket/release/overload2.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/ -/doc/asio/reference/basic_datagram_socket/remote_endpoint.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_datagram_socket/reuse_address.html -/doc/asio/reference/basic_datagram_socket/send/ -/doc/asio/reference/basic_datagram_socket/send_buffer_size.html -/doc/asio/reference/basic_datagram_socket/send.html -/doc/asio/reference/basic_datagram_socket/send_low_watermark.html -/doc/asio/reference/basic_datagram_socket/send/overload1.html -/doc/asio/reference/basic_datagram_socket/send/overload2.html -/doc/asio/reference/basic_datagram_socket/send/overload3.html -/doc/asio/reference/basic_datagram_socket/send_to/ -/doc/asio/reference/basic_datagram_socket/send_to.html -/doc/asio/reference/basic_datagram_socket/send_to/overload1.html -/doc/asio/reference/basic_datagram_socket/send_to/overload2.html -/doc/asio/reference/basic_datagram_socket/send_to/overload3.html -/doc/asio/reference/basic_datagram_socket/set_option/ -/doc/asio/reference/basic_datagram_socket/set_option.html -/doc/asio/reference/basic_datagram_socket/set_option/overload1.html -/doc/asio/reference/basic_datagram_socket/set_option/overload2.html -/doc/asio/reference/basic_datagram_socket/shutdown/ -/doc/asio/reference/basic_datagram_socket/shutdown.html -/doc/asio/reference/basic_datagram_socket/shutdown/overload1.html -/doc/asio/reference/basic_datagram_socket/shutdown/overload2.html -/doc/asio/reference/basic_datagram_socket/shutdown_type.html -/doc/asio/reference/basic_datagram_socket/wait/ -/doc/asio/reference/basic_datagram_socket/wait.html -/doc/asio/reference/basic_datagram_socket/wait/overload1.html -/doc/asio/reference/basic_datagram_socket/wait/overload2.html -/doc/asio/reference/basic_datagram_socket/wait_type.html -/doc/asio/reference/basic_deadline_timer/ -/doc/asio/reference/basic_deadline_timer/async_wait.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/ -/doc/asio/reference/basic_deadline_timer/_basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload1.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload2.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload3.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload4.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload5.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload6.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload7.html -/doc/asio/reference/basic_deadline_timer/cancel/ -/doc/asio/reference/basic_deadline_timer/cancel.html -/doc/asio/reference/basic_deadline_timer/cancel_one/ -/doc/asio/reference/basic_deadline_timer/cancel_one.html -/doc/asio/reference/basic_deadline_timer/cancel_one/overload1.html -/doc/asio/reference/basic_deadline_timer/cancel_one/overload2.html -/doc/asio/reference/basic_deadline_timer/cancel/overload1.html -/doc/asio/reference/basic_deadline_timer/cancel/overload2.html -/doc/asio/reference/basic_deadline_timer/duration_type.html -/doc/asio/reference/basic_deadline_timer/executor_type.html -/doc/asio/reference/basic_deadline_timer/expires_at/ -/doc/asio/reference/basic_deadline_timer/expires_at.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload1.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload2.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload3.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/ -/doc/asio/reference/basic_deadline_timer/expires_from_now.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload1.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload2.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload3.html -/doc/asio/reference/basic_deadline_timer/get_executor.html -/doc/asio/reference/basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/operator_eq_.html -/doc/asio/reference/basic_deadline_timer__rebind_executor/ -/doc/asio/reference/basic_deadline_timer__rebind_executor.html -/doc/asio/reference/basic_deadline_timer__rebind_executor/other.html -/doc/asio/reference/basic_deadline_timer/time_type.html -/doc/asio/reference/basic_deadline_timer/traits_type.html -/doc/asio/reference/basic_deadline_timer/wait/ -/doc/asio/reference/basic_deadline_timer/wait.html -/doc/asio/reference/basic_deadline_timer/wait/overload1.html -/doc/asio/reference/basic_deadline_timer/wait/overload2.html -/doc/asio/reference/basic_io_object/ -/doc/asio/reference/basic_io_object/basic_io_object/ -/doc/asio/reference/basic_io_object/_basic_io_object.html -/doc/asio/reference/basic_io_object/basic_io_object.html -/doc/asio/reference/basic_io_object/basic_io_object/overload1.html -/doc/asio/reference/basic_io_object/basic_io_object/overload2.html -/doc/asio/reference/basic_io_object/basic_io_object/overload3.html -/doc/asio/reference/basic_io_object/executor_type.html -/doc/asio/reference/basic_io_object/get_executor.html -/doc/asio/reference/basic_io_object/get_implementation/ -/doc/asio/reference/basic_io_object/get_implementation.html -/doc/asio/reference/basic_io_object/get_implementation/overload1.html -/doc/asio/reference/basic_io_object/get_implementation/overload2.html -/doc/asio/reference/basic_io_object/get_io_context.html -/doc/asio/reference/basic_io_object/get_io_service.html -/doc/asio/reference/basic_io_object/get_service/ -/doc/asio/reference/basic_io_object/get_service.html -/doc/asio/reference/basic_io_object/get_service/overload1.html -/doc/asio/reference/basic_io_object/get_service/overload2.html -/doc/asio/reference/basic_io_object.html -/doc/asio/reference/basic_io_object/implementation_type.html -/doc/asio/reference/basic_io_object/operator_eq_.html -/doc/asio/reference/basic_io_object/service_type.html -/doc/asio/reference/basic_raw_socket/ -/doc/asio/reference/basic_raw_socket/assign/ -/doc/asio/reference/basic_raw_socket/assign.html -/doc/asio/reference/basic_raw_socket/assign/overload1.html -/doc/asio/reference/basic_raw_socket/assign/overload2.html -/doc/asio/reference/basic_raw_socket/async_connect.html -/doc/asio/reference/basic_raw_socket/async_receive/ -/doc/asio/reference/basic_raw_socket/async_receive_from/ -/doc/asio/reference/basic_raw_socket/async_receive_from.html -/doc/asio/reference/basic_raw_socket/async_receive_from/overload1.html -/doc/asio/reference/basic_raw_socket/async_receive_from/overload2.html -/doc/asio/reference/basic_raw_socket/async_receive.html -/doc/asio/reference/basic_raw_socket/async_receive/overload1.html -/doc/asio/reference/basic_raw_socket/async_receive/overload2.html -/doc/asio/reference/basic_raw_socket/async_send/ -/doc/asio/reference/basic_raw_socket/async_send.html -/doc/asio/reference/basic_raw_socket/async_send/overload1.html -/doc/asio/reference/basic_raw_socket/async_send/overload2.html -/doc/asio/reference/basic_raw_socket/async_send_to/ -/doc/asio/reference/basic_raw_socket/async_send_to.html -/doc/asio/reference/basic_raw_socket/async_send_to/overload1.html -/doc/asio/reference/basic_raw_socket/async_send_to/overload2.html -/doc/asio/reference/basic_raw_socket/async_wait.html -/doc/asio/reference/basic_raw_socket/at_mark/ -/doc/asio/reference/basic_raw_socket/at_mark.html -/doc/asio/reference/basic_raw_socket/at_mark/overload1.html -/doc/asio/reference/basic_raw_socket/at_mark/overload2.html -/doc/asio/reference/basic_raw_socket/available/ -/doc/asio/reference/basic_raw_socket/available.html -/doc/asio/reference/basic_raw_socket/available/overload1.html -/doc/asio/reference/basic_raw_socket/available/overload2.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/ -/doc/asio/reference/basic_raw_socket/_basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload10.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload1.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload2.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload3.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload4.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload5.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload6.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload7.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload8.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload9.html -/doc/asio/reference/basic_raw_socket/bind/ -/doc/asio/reference/basic_raw_socket/bind.html -/doc/asio/reference/basic_raw_socket/bind/overload1.html -/doc/asio/reference/basic_raw_socket/bind/overload2.html -/doc/asio/reference/basic_raw_socket/broadcast.html -/doc/asio/reference/basic_raw_socket/bytes_readable.html -/doc/asio/reference/basic_raw_socket/cancel/ -/doc/asio/reference/basic_raw_socket/cancel.html -/doc/asio/reference/basic_raw_socket/cancel/overload1.html -/doc/asio/reference/basic_raw_socket/cancel/overload2.html -/doc/asio/reference/basic_raw_socket/close/ -/doc/asio/reference/basic_raw_socket/close.html -/doc/asio/reference/basic_raw_socket/close/overload1.html -/doc/asio/reference/basic_raw_socket/close/overload2.html -/doc/asio/reference/basic_raw_socket/connect/ -/doc/asio/reference/basic_raw_socket/connect.html -/doc/asio/reference/basic_raw_socket/connect/overload1.html -/doc/asio/reference/basic_raw_socket/connect/overload2.html -/doc/asio/reference/basic_raw_socket/debug.html -/doc/asio/reference/basic_raw_socket/do_not_route.html -/doc/asio/reference/basic_raw_socket/enable_connection_aborted.html -/doc/asio/reference/basic_raw_socket/endpoint_type.html -/doc/asio/reference/basic_raw_socket/executor_type.html -/doc/asio/reference/basic_raw_socket/get_executor.html -/doc/asio/reference/basic_raw_socket/get_option/ -/doc/asio/reference/basic_raw_socket/get_option.html -/doc/asio/reference/basic_raw_socket/get_option/overload1.html -/doc/asio/reference/basic_raw_socket/get_option/overload2.html -/doc/asio/reference/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/io_control/ -/doc/asio/reference/basic_raw_socket/io_control.html -/doc/asio/reference/basic_raw_socket/io_control/overload1.html -/doc/asio/reference/basic_raw_socket/io_control/overload2.html -/doc/asio/reference/basic_raw_socket/is_open.html -/doc/asio/reference/basic_raw_socket/keep_alive.html -/doc/asio/reference/basic_raw_socket/linger.html -/doc/asio/reference/basic_raw_socket/local_endpoint/ -/doc/asio/reference/basic_raw_socket/local_endpoint.html -/doc/asio/reference/basic_raw_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_raw_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_raw_socket/lowest_layer/ -/doc/asio/reference/basic_raw_socket/lowest_layer.html -/doc/asio/reference/basic_raw_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_raw_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_raw_socket/lowest_layer_type.html -/doc/asio/reference/basic_raw_socket/max_connections.html -/doc/asio/reference/basic_raw_socket/max_listen_connections.html -/doc/asio/reference/basic_raw_socket/message_do_not_route.html -/doc/asio/reference/basic_raw_socket/message_end_of_record.html -/doc/asio/reference/basic_raw_socket/message_flags.html -/doc/asio/reference/basic_raw_socket/message_out_of_band.html -/doc/asio/reference/basic_raw_socket/message_peek.html -/doc/asio/reference/basic_raw_socket/native_handle.html -/doc/asio/reference/basic_raw_socket/native_handle_type.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/ -/doc/asio/reference/basic_raw_socket/native_non_blocking.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_raw_socket/non_blocking/ -/doc/asio/reference/basic_raw_socket/non_blocking.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload1.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload2.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload3.html -/doc/asio/reference/basic_raw_socket/open/ -/doc/asio/reference/basic_raw_socket/open.html -/doc/asio/reference/basic_raw_socket/open/overload1.html -/doc/asio/reference/basic_raw_socket/open/overload2.html -/doc/asio/reference/basic_raw_socket/operator_eq_/ -/doc/asio/reference/basic_raw_socket/operator_eq_.html -/doc/asio/reference/basic_raw_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_raw_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_raw_socket/out_of_band_inline.html -/doc/asio/reference/basic_raw_socket/protocol_type.html -/doc/asio/reference/basic_raw_socket__rebind_executor/ -/doc/asio/reference/basic_raw_socket__rebind_executor.html -/doc/asio/reference/basic_raw_socket__rebind_executor/other.html -/doc/asio/reference/basic_raw_socket/receive/ -/doc/asio/reference/basic_raw_socket/receive_buffer_size.html -/doc/asio/reference/basic_raw_socket/receive_from/ -/doc/asio/reference/basic_raw_socket/receive_from.html -/doc/asio/reference/basic_raw_socket/receive_from/overload1.html -/doc/asio/reference/basic_raw_socket/receive_from/overload2.html -/doc/asio/reference/basic_raw_socket/receive_from/overload3.html -/doc/asio/reference/basic_raw_socket/receive.html -/doc/asio/reference/basic_raw_socket/receive_low_watermark.html -/doc/asio/reference/basic_raw_socket/receive/overload1.html -/doc/asio/reference/basic_raw_socket/receive/overload2.html -/doc/asio/reference/basic_raw_socket/receive/overload3.html -/doc/asio/reference/basic_raw_socket/release/ -/doc/asio/reference/basic_raw_socket/release.html -/doc/asio/reference/basic_raw_socket/release/overload1.html -/doc/asio/reference/basic_raw_socket/release/overload2.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/ -/doc/asio/reference/basic_raw_socket/remote_endpoint.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_raw_socket/reuse_address.html -/doc/asio/reference/basic_raw_socket/send/ -/doc/asio/reference/basic_raw_socket/send_buffer_size.html -/doc/asio/reference/basic_raw_socket/send.html -/doc/asio/reference/basic_raw_socket/send_low_watermark.html -/doc/asio/reference/basic_raw_socket/send/overload1.html -/doc/asio/reference/basic_raw_socket/send/overload2.html -/doc/asio/reference/basic_raw_socket/send/overload3.html -/doc/asio/reference/basic_raw_socket/send_to/ -/doc/asio/reference/basic_raw_socket/send_to.html -/doc/asio/reference/basic_raw_socket/send_to/overload1.html -/doc/asio/reference/basic_raw_socket/send_to/overload2.html -/doc/asio/reference/basic_raw_socket/send_to/overload3.html -/doc/asio/reference/basic_raw_socket/set_option/ -/doc/asio/reference/basic_raw_socket/set_option.html -/doc/asio/reference/basic_raw_socket/set_option/overload1.html -/doc/asio/reference/basic_raw_socket/set_option/overload2.html -/doc/asio/reference/basic_raw_socket/shutdown/ -/doc/asio/reference/basic_raw_socket/shutdown.html -/doc/asio/reference/basic_raw_socket/shutdown/overload1.html -/doc/asio/reference/basic_raw_socket/shutdown/overload2.html -/doc/asio/reference/basic_raw_socket/shutdown_type.html -/doc/asio/reference/basic_raw_socket/wait/ -/doc/asio/reference/basic_raw_socket/wait.html -/doc/asio/reference/basic_raw_socket/wait/overload1.html -/doc/asio/reference/basic_raw_socket/wait/overload2.html -/doc/asio/reference/basic_raw_socket/wait_type.html -/doc/asio/reference/basic_seq_packet_socket/ -/doc/asio/reference/basic_seq_packet_socket/assign/ -/doc/asio/reference/basic_seq_packet_socket/assign.html -/doc/asio/reference/basic_seq_packet_socket/assign/overload1.html -/doc/asio/reference/basic_seq_packet_socket/assign/overload2.html -/doc/asio/reference/basic_seq_packet_socket/async_connect.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/ -/doc/asio/reference/basic_seq_packet_socket/async_receive.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/overload1.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/overload2.html -/doc/asio/reference/basic_seq_packet_socket/async_send.html -/doc/asio/reference/basic_seq_packet_socket/async_wait.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/ -/doc/asio/reference/basic_seq_packet_socket/at_mark.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/overload1.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/overload2.html -/doc/asio/reference/basic_seq_packet_socket/available/ -/doc/asio/reference/basic_seq_packet_socket/available.html -/doc/asio/reference/basic_seq_packet_socket/available/overload1.html -/doc/asio/reference/basic_seq_packet_socket/available/overload2.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/ -/doc/asio/reference/basic_seq_packet_socket/_basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload10.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload1.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload2.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload3.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload4.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload5.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload6.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload7.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload8.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload9.html -/doc/asio/reference/basic_seq_packet_socket/bind/ -/doc/asio/reference/basic_seq_packet_socket/bind.html -/doc/asio/reference/basic_seq_packet_socket/bind/overload1.html -/doc/asio/reference/basic_seq_packet_socket/bind/overload2.html -/doc/asio/reference/basic_seq_packet_socket/broadcast.html -/doc/asio/reference/basic_seq_packet_socket/bytes_readable.html -/doc/asio/reference/basic_seq_packet_socket/cancel/ -/doc/asio/reference/basic_seq_packet_socket/cancel.html -/doc/asio/reference/basic_seq_packet_socket/cancel/overload1.html -/doc/asio/reference/basic_seq_packet_socket/cancel/overload2.html -/doc/asio/reference/basic_seq_packet_socket/close/ -/doc/asio/reference/basic_seq_packet_socket/close.html -/doc/asio/reference/basic_seq_packet_socket/close/overload1.html -/doc/asio/reference/basic_seq_packet_socket/close/overload2.html -/doc/asio/reference/basic_seq_packet_socket/connect/ -/doc/asio/reference/basic_seq_packet_socket/connect.html -/doc/asio/reference/basic_seq_packet_socket/connect/overload1.html -/doc/asio/reference/basic_seq_packet_socket/connect/overload2.html -/doc/asio/reference/basic_seq_packet_socket/debug.html -/doc/asio/reference/basic_seq_packet_socket/do_not_route.html -/doc/asio/reference/basic_seq_packet_socket/enable_connection_aborted.html -/doc/asio/reference/basic_seq_packet_socket/endpoint_type.html -/doc/asio/reference/basic_seq_packet_socket/executor_type.html -/doc/asio/reference/basic_seq_packet_socket/get_executor.html -/doc/asio/reference/basic_seq_packet_socket/get_option/ -/doc/asio/reference/basic_seq_packet_socket/get_option.html -/doc/asio/reference/basic_seq_packet_socket/get_option/overload1.html -/doc/asio/reference/basic_seq_packet_socket/get_option/overload2.html -/doc/asio/reference/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/io_control/ -/doc/asio/reference/basic_seq_packet_socket/io_control.html -/doc/asio/reference/basic_seq_packet_socket/io_control/overload1.html -/doc/asio/reference/basic_seq_packet_socket/io_control/overload2.html -/doc/asio/reference/basic_seq_packet_socket/is_open.html -/doc/asio/reference/basic_seq_packet_socket/keep_alive.html -/doc/asio/reference/basic_seq_packet_socket/linger.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/ -/doc/asio/reference/basic_seq_packet_socket/local_endpoint.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/ -/doc/asio/reference/basic_seq_packet_socket/lowest_layer.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer_type.html -/doc/asio/reference/basic_seq_packet_socket/max_connections.html -/doc/asio/reference/basic_seq_packet_socket/max_listen_connections.html -/doc/asio/reference/basic_seq_packet_socket/message_do_not_route.html -/doc/asio/reference/basic_seq_packet_socket/message_end_of_record.html -/doc/asio/reference/basic_seq_packet_socket/message_flags.html -/doc/asio/reference/basic_seq_packet_socket/message_out_of_band.html -/doc/asio/reference/basic_seq_packet_socket/message_peek.html -/doc/asio/reference/basic_seq_packet_socket/native_handle.html -/doc/asio/reference/basic_seq_packet_socket/native_handle_type.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/ -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/ -/doc/asio/reference/basic_seq_packet_socket/non_blocking.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload1.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload2.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload3.html -/doc/asio/reference/basic_seq_packet_socket/open/ -/doc/asio/reference/basic_seq_packet_socket/open.html -/doc/asio/reference/basic_seq_packet_socket/open/overload1.html -/doc/asio/reference/basic_seq_packet_socket/open/overload2.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/ -/doc/asio/reference/basic_seq_packet_socket/operator_eq_.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_seq_packet_socket/out_of_band_inline.html -/doc/asio/reference/basic_seq_packet_socket/protocol_type.html -/doc/asio/reference/basic_seq_packet_socket__rebind_executor/ -/doc/asio/reference/basic_seq_packet_socket__rebind_executor.html -/doc/asio/reference/basic_seq_packet_socket__rebind_executor/other.html -/doc/asio/reference/basic_seq_packet_socket/receive/ -/doc/asio/reference/basic_seq_packet_socket/receive_buffer_size.html -/doc/asio/reference/basic_seq_packet_socket/receive.html -/doc/asio/reference/basic_seq_packet_socket/receive_low_watermark.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload1.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload2.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload3.html -/doc/asio/reference/basic_seq_packet_socket/release/ -/doc/asio/reference/basic_seq_packet_socket/release.html -/doc/asio/reference/basic_seq_packet_socket/release/overload1.html -/doc/asio/reference/basic_seq_packet_socket/release/overload2.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/ -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_seq_packet_socket/reuse_address.html -/doc/asio/reference/basic_seq_packet_socket/send/ -/doc/asio/reference/basic_seq_packet_socket/send_buffer_size.html -/doc/asio/reference/basic_seq_packet_socket/send.html -/doc/asio/reference/basic_seq_packet_socket/send_low_watermark.html -/doc/asio/reference/basic_seq_packet_socket/send/overload1.html -/doc/asio/reference/basic_seq_packet_socket/send/overload2.html -/doc/asio/reference/basic_seq_packet_socket/set_option/ -/doc/asio/reference/basic_seq_packet_socket/set_option.html -/doc/asio/reference/basic_seq_packet_socket/set_option/overload1.html -/doc/asio/reference/basic_seq_packet_socket/set_option/overload2.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/ -/doc/asio/reference/basic_seq_packet_socket/shutdown.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/overload1.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/overload2.html -/doc/asio/reference/basic_seq_packet_socket/shutdown_type.html -/doc/asio/reference/basic_seq_packet_socket/wait/ -/doc/asio/reference/basic_seq_packet_socket/wait.html -/doc/asio/reference/basic_seq_packet_socket/wait/overload1.html -/doc/asio/reference/basic_seq_packet_socket/wait/overload2.html -/doc/asio/reference/basic_seq_packet_socket/wait_type.html -/doc/asio/reference/basic_serial_port/ -/doc/asio/reference/basic_serial_port/assign/ -/doc/asio/reference/basic_serial_port/assign.html -/doc/asio/reference/basic_serial_port/assign/overload1.html -/doc/asio/reference/basic_serial_port/assign/overload2.html -/doc/asio/reference/basic_serial_port/async_read_some.html -/doc/asio/reference/basic_serial_port/async_write_some.html -/doc/asio/reference/basic_serial_port/basic_serial_port/ -/doc/asio/reference/basic_serial_port/_basic_serial_port.html -/doc/asio/reference/basic_serial_port/basic_serial_port.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload1.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload2.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload3.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload4.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload5.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload6.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload7.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload8.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload9.html -/doc/asio/reference/basic_serial_port/cancel/ -/doc/asio/reference/basic_serial_port/cancel.html -/doc/asio/reference/basic_serial_port/cancel/overload1.html -/doc/asio/reference/basic_serial_port/cancel/overload2.html -/doc/asio/reference/basic_serial_port/close/ -/doc/asio/reference/basic_serial_port/close.html -/doc/asio/reference/basic_serial_port/close/overload1.html -/doc/asio/reference/basic_serial_port/close/overload2.html -/doc/asio/reference/basic_serial_port/executor_type.html -/doc/asio/reference/basic_serial_port/get_executor.html -/doc/asio/reference/basic_serial_port/get_option/ -/doc/asio/reference/basic_serial_port/get_option.html -/doc/asio/reference/basic_serial_port/get_option/overload1.html -/doc/asio/reference/basic_serial_port/get_option/overload2.html -/doc/asio/reference/basic_serial_port.html -/doc/asio/reference/basic_serial_port/is_open.html -/doc/asio/reference/basic_serial_port/lowest_layer/ -/doc/asio/reference/basic_serial_port/lowest_layer.html -/doc/asio/reference/basic_serial_port/lowest_layer/overload1.html -/doc/asio/reference/basic_serial_port/lowest_layer/overload2.html -/doc/asio/reference/basic_serial_port/lowest_layer_type.html -/doc/asio/reference/basic_serial_port/native_handle.html -/doc/asio/reference/basic_serial_port/native_handle_type.html -/doc/asio/reference/basic_serial_port/open/ -/doc/asio/reference/basic_serial_port/open.html -/doc/asio/reference/basic_serial_port/open/overload1.html -/doc/asio/reference/basic_serial_port/open/overload2.html -/doc/asio/reference/basic_serial_port/operator_eq_.html -/doc/asio/reference/basic_serial_port/read_some/ -/doc/asio/reference/basic_serial_port/read_some.html -/doc/asio/reference/basic_serial_port/read_some/overload1.html -/doc/asio/reference/basic_serial_port/read_some/overload2.html -/doc/asio/reference/basic_serial_port__rebind_executor/ -/doc/asio/reference/basic_serial_port__rebind_executor.html -/doc/asio/reference/basic_serial_port__rebind_executor/other.html -/doc/asio/reference/basic_serial_port/send_break/ -/doc/asio/reference/basic_serial_port/send_break.html -/doc/asio/reference/basic_serial_port/send_break/overload1.html -/doc/asio/reference/basic_serial_port/send_break/overload2.html -/doc/asio/reference/basic_serial_port/set_option/ -/doc/asio/reference/basic_serial_port/set_option.html -/doc/asio/reference/basic_serial_port/set_option/overload1.html -/doc/asio/reference/basic_serial_port/set_option/overload2.html -/doc/asio/reference/basic_serial_port/write_some/ -/doc/asio/reference/basic_serial_port/write_some.html -/doc/asio/reference/basic_serial_port/write_some/overload1.html -/doc/asio/reference/basic_serial_port/write_some/overload2.html -/doc/asio/reference/basic_signal_set/ -/doc/asio/reference/basic_signal_set/add/ -/doc/asio/reference/basic_signal_set/add.html -/doc/asio/reference/basic_signal_set/add/overload1.html -/doc/asio/reference/basic_signal_set/add/overload2.html -/doc/asio/reference/basic_signal_set/async_wait.html -/doc/asio/reference/basic_signal_set/basic_signal_set/ -/doc/asio/reference/basic_signal_set/_basic_signal_set.html -/doc/asio/reference/basic_signal_set/basic_signal_set.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload1.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload2.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload3.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload4.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload5.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload6.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload7.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload8.html -/doc/asio/reference/basic_signal_set/cancel/ -/doc/asio/reference/basic_signal_set/cancel.html -/doc/asio/reference/basic_signal_set/cancel/overload1.html -/doc/asio/reference/basic_signal_set/cancel/overload2.html -/doc/asio/reference/basic_signal_set/clear/ -/doc/asio/reference/basic_signal_set/clear.html -/doc/asio/reference/basic_signal_set/clear/overload1.html -/doc/asio/reference/basic_signal_set/clear/overload2.html -/doc/asio/reference/basic_signal_set/executor_type.html -/doc/asio/reference/basic_signal_set/get_executor.html -/doc/asio/reference/basic_signal_set.html -/doc/asio/reference/basic_signal_set__rebind_executor/ -/doc/asio/reference/basic_signal_set__rebind_executor.html -/doc/asio/reference/basic_signal_set__rebind_executor/other.html -/doc/asio/reference/basic_signal_set/remove/ -/doc/asio/reference/basic_signal_set/remove.html -/doc/asio/reference/basic_signal_set/remove/overload1.html -/doc/asio/reference/basic_signal_set/remove/overload2.html -/doc/asio/reference/basic_socket/ -/doc/asio/reference/basic_socket_acceptor/ -/doc/asio/reference/basic_socket_acceptor/accept/ -/doc/asio/reference/basic_socket_acceptor/accept.html -/doc/asio/reference/basic_socket_acceptor/accept/overload10.html -/doc/asio/reference/basic_socket_acceptor/accept/overload11.html -/doc/asio/reference/basic_socket_acceptor/accept/overload12.html -/doc/asio/reference/basic_socket_acceptor/accept/overload13.html -/doc/asio/reference/basic_socket_acceptor/accept/overload14.html -/doc/asio/reference/basic_socket_acceptor/accept/overload15.html -/doc/asio/reference/basic_socket_acceptor/accept/overload16.html -/doc/asio/reference/basic_socket_acceptor/accept/overload1.html -/doc/asio/reference/basic_socket_acceptor/accept/overload2.html -/doc/asio/reference/basic_socket_acceptor/accept/overload3.html -/doc/asio/reference/basic_socket_acceptor/accept/overload4.html -/doc/asio/reference/basic_socket_acceptor/accept/overload5.html -/doc/asio/reference/basic_socket_acceptor/accept/overload6.html -/doc/asio/reference/basic_socket_acceptor/accept/overload7.html -/doc/asio/reference/basic_socket_acceptor/accept/overload8.html -/doc/asio/reference/basic_socket_acceptor/accept/overload9.html -/doc/asio/reference/basic_socket_acceptor/assign/ -/doc/asio/reference/basic_socket_acceptor/assign.html -/doc/asio/reference/basic_socket_acceptor/assign/overload1.html -/doc/asio/reference/basic_socket_acceptor/assign/overload2.html -/doc/asio/reference/basic_socket_acceptor/async_accept/ -/doc/asio/reference/basic_socket_acceptor/async_accept.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload1.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload2.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload3.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload4.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload5.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload6.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload7.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload8.html -/doc/asio/reference/basic_socket_acceptor/async_wait.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/ -/doc/asio/reference/basic_socket_acceptor/_basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload10.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload1.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload2.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload3.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload4.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload5.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload6.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload7.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload8.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload9.html -/doc/asio/reference/basic_socket_acceptor/bind/ -/doc/asio/reference/basic_socket_acceptor/bind.html -/doc/asio/reference/basic_socket_acceptor/bind/overload1.html -/doc/asio/reference/basic_socket_acceptor/bind/overload2.html -/doc/asio/reference/basic_socket_acceptor/broadcast.html -/doc/asio/reference/basic_socket_acceptor/bytes_readable.html -/doc/asio/reference/basic_socket_acceptor/cancel/ -/doc/asio/reference/basic_socket_acceptor/cancel.html -/doc/asio/reference/basic_socket_acceptor/cancel/overload1.html -/doc/asio/reference/basic_socket_acceptor/cancel/overload2.html -/doc/asio/reference/basic_socket_acceptor/close/ -/doc/asio/reference/basic_socket_acceptor/close.html -/doc/asio/reference/basic_socket_acceptor/close/overload1.html -/doc/asio/reference/basic_socket_acceptor/close/overload2.html -/doc/asio/reference/basic_socket_acceptor/debug.html -/doc/asio/reference/basic_socket_acceptor/do_not_route.html -/doc/asio/reference/basic_socket_acceptor/enable_connection_aborted.html -/doc/asio/reference/basic_socket_acceptor/endpoint_type.html -/doc/asio/reference/basic_socket_acceptor/executor_type.html -/doc/asio/reference/basic_socket_acceptor/get_executor.html -/doc/asio/reference/basic_socket_acceptor/get_option/ -/doc/asio/reference/basic_socket_acceptor/get_option.html -/doc/asio/reference/basic_socket_acceptor/get_option/overload1.html -/doc/asio/reference/basic_socket_acceptor/get_option/overload2.html -/doc/asio/reference/basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/io_control/ -/doc/asio/reference/basic_socket_acceptor/io_control.html -/doc/asio/reference/basic_socket_acceptor/io_control/overload1.html -/doc/asio/reference/basic_socket_acceptor/io_control/overload2.html -/doc/asio/reference/basic_socket_acceptor/is_open.html -/doc/asio/reference/basic_socket_acceptor/keep_alive.html -/doc/asio/reference/basic_socket_acceptor/linger.html -/doc/asio/reference/basic_socket_acceptor/listen/ -/doc/asio/reference/basic_socket_acceptor/listen.html -/doc/asio/reference/basic_socket_acceptor/listen/overload1.html -/doc/asio/reference/basic_socket_acceptor/listen/overload2.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/ -/doc/asio/reference/basic_socket_acceptor/local_endpoint.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/overload1.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/overload2.html -/doc/asio/reference/basic_socket_acceptor/max_connections.html -/doc/asio/reference/basic_socket_acceptor/max_listen_connections.html -/doc/asio/reference/basic_socket_acceptor/message_do_not_route.html -/doc/asio/reference/basic_socket_acceptor/message_end_of_record.html -/doc/asio/reference/basic_socket_acceptor/message_flags.html -/doc/asio/reference/basic_socket_acceptor/message_out_of_band.html -/doc/asio/reference/basic_socket_acceptor/message_peek.html -/doc/asio/reference/basic_socket_acceptor/native_handle.html -/doc/asio/reference/basic_socket_acceptor/native_handle_type.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/ -/doc/asio/reference/basic_socket_acceptor/native_non_blocking.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload1.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload2.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload3.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/ -/doc/asio/reference/basic_socket_acceptor/non_blocking.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload1.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload2.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload3.html -/doc/asio/reference/basic_socket_acceptor/open/ -/doc/asio/reference/basic_socket_acceptor/open.html -/doc/asio/reference/basic_socket_acceptor/open/overload1.html -/doc/asio/reference/basic_socket_acceptor/open/overload2.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/ -/doc/asio/reference/basic_socket_acceptor/operator_eq_.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/overload1.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/overload2.html -/doc/asio/reference/basic_socket_acceptor/out_of_band_inline.html -/doc/asio/reference/basic_socket_acceptor/protocol_type.html -/doc/asio/reference/basic_socket_acceptor__rebind_executor/ -/doc/asio/reference/basic_socket_acceptor__rebind_executor.html -/doc/asio/reference/basic_socket_acceptor__rebind_executor/other.html -/doc/asio/reference/basic_socket_acceptor/receive_buffer_size.html -/doc/asio/reference/basic_socket_acceptor/receive_low_watermark.html -/doc/asio/reference/basic_socket_acceptor/release/ -/doc/asio/reference/basic_socket_acceptor/release.html -/doc/asio/reference/basic_socket_acceptor/release/overload1.html -/doc/asio/reference/basic_socket_acceptor/release/overload2.html -/doc/asio/reference/basic_socket_acceptor/reuse_address.html -/doc/asio/reference/basic_socket_acceptor/send_buffer_size.html -/doc/asio/reference/basic_socket_acceptor/send_low_watermark.html -/doc/asio/reference/basic_socket_acceptor/set_option/ -/doc/asio/reference/basic_socket_acceptor/set_option.html -/doc/asio/reference/basic_socket_acceptor/set_option/overload1.html -/doc/asio/reference/basic_socket_acceptor/set_option/overload2.html -/doc/asio/reference/basic_socket_acceptor/shutdown_type.html -/doc/asio/reference/basic_socket_acceptor/wait/ -/doc/asio/reference/basic_socket_acceptor/wait.html -/doc/asio/reference/basic_socket_acceptor/wait/overload1.html -/doc/asio/reference/basic_socket_acceptor/wait/overload2.html -/doc/asio/reference/basic_socket_acceptor/wait_type.html -/doc/asio/reference/basic_socket/assign/ -/doc/asio/reference/basic_socket/assign.html -/doc/asio/reference/basic_socket/assign/overload1.html -/doc/asio/reference/basic_socket/assign/overload2.html -/doc/asio/reference/basic_socket/async_connect.html -/doc/asio/reference/basic_socket/async_wait.html -/doc/asio/reference/basic_socket/at_mark/ -/doc/asio/reference/basic_socket/at_mark.html -/doc/asio/reference/basic_socket/at_mark/overload1.html -/doc/asio/reference/basic_socket/at_mark/overload2.html -/doc/asio/reference/basic_socket/available/ -/doc/asio/reference/basic_socket/available.html -/doc/asio/reference/basic_socket/available/overload1.html -/doc/asio/reference/basic_socket/available/overload2.html -/doc/asio/reference/basic_socket/basic_socket/ -/doc/asio/reference/basic_socket/_basic_socket.html -/doc/asio/reference/basic_socket/basic_socket.html -/doc/asio/reference/basic_socket/basic_socket/overload10.html -/doc/asio/reference/basic_socket/basic_socket/overload1.html -/doc/asio/reference/basic_socket/basic_socket/overload2.html -/doc/asio/reference/basic_socket/basic_socket/overload3.html -/doc/asio/reference/basic_socket/basic_socket/overload4.html -/doc/asio/reference/basic_socket/basic_socket/overload5.html -/doc/asio/reference/basic_socket/basic_socket/overload6.html -/doc/asio/reference/basic_socket/basic_socket/overload7.html -/doc/asio/reference/basic_socket/basic_socket/overload8.html -/doc/asio/reference/basic_socket/basic_socket/overload9.html -/doc/asio/reference/basic_socket/bind/ -/doc/asio/reference/basic_socket/bind.html -/doc/asio/reference/basic_socket/bind/overload1.html -/doc/asio/reference/basic_socket/bind/overload2.html -/doc/asio/reference/basic_socket/broadcast.html -/doc/asio/reference/basic_socket/bytes_readable.html -/doc/asio/reference/basic_socket/cancel/ -/doc/asio/reference/basic_socket/cancel.html -/doc/asio/reference/basic_socket/cancel/overload1.html -/doc/asio/reference/basic_socket/cancel/overload2.html -/doc/asio/reference/basic_socket/close/ -/doc/asio/reference/basic_socket/close.html -/doc/asio/reference/basic_socket/close/overload1.html -/doc/asio/reference/basic_socket/close/overload2.html -/doc/asio/reference/basic_socket/connect/ -/doc/asio/reference/basic_socket/connect.html -/doc/asio/reference/basic_socket/connect/overload1.html -/doc/asio/reference/basic_socket/connect/overload2.html -/doc/asio/reference/basic_socket/debug.html -/doc/asio/reference/basic_socket/do_not_route.html -/doc/asio/reference/basic_socket/enable_connection_aborted.html -/doc/asio/reference/basic_socket/endpoint_type.html -/doc/asio/reference/basic_socket/executor_type.html -/doc/asio/reference/basic_socket/get_executor.html -/doc/asio/reference/basic_socket/get_option/ -/doc/asio/reference/basic_socket/get_option.html -/doc/asio/reference/basic_socket/get_option/overload1.html -/doc/asio/reference/basic_socket/get_option/overload2.html -/doc/asio/reference/basic_socket.html -/doc/asio/reference/basic_socket/io_control/ -/doc/asio/reference/basic_socket/io_control.html -/doc/asio/reference/basic_socket/io_control/overload1.html -/doc/asio/reference/basic_socket/io_control/overload2.html -/doc/asio/reference/basic_socket_iostream/ -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/ -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload1.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload2.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload3.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload4.html -/doc/asio/reference/basic_socket_iostream/clock_type.html -/doc/asio/reference/basic_socket_iostream/close.html -/doc/asio/reference/basic_socket_iostream/connect.html -/doc/asio/reference/basic_socket_iostream/duration.html -/doc/asio/reference/basic_socket_iostream/duration_type.html -/doc/asio/reference/basic_socket_iostream/endpoint_type.html -/doc/asio/reference/basic_socket_iostream/error.html -/doc/asio/reference/basic_socket_iostream/expires_after.html -/doc/asio/reference/basic_socket_iostream/expires_at/ -/doc/asio/reference/basic_socket_iostream/expires_at.html -/doc/asio/reference/basic_socket_iostream/expires_at/overload1.html -/doc/asio/reference/basic_socket_iostream/expires_at/overload2.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/ -/doc/asio/reference/basic_socket_iostream/expires_from_now.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/overload1.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/overload2.html -/doc/asio/reference/basic_socket_iostream/expiry.html -/doc/asio/reference/basic_socket_iostream.html -/doc/asio/reference/basic_socket_iostream/operator_eq_.html -/doc/asio/reference/basic_socket_iostream/protocol_type.html -/doc/asio/reference/basic_socket_iostream/rdbuf.html -/doc/asio/reference/basic_socket_iostream/socket.html -/doc/asio/reference/basic_socket_iostream/time_point.html -/doc/asio/reference/basic_socket_iostream/time_type.html -/doc/asio/reference/basic_socket/is_open.html -/doc/asio/reference/basic_socket/keep_alive.html -/doc/asio/reference/basic_socket/linger.html -/doc/asio/reference/basic_socket/local_endpoint/ -/doc/asio/reference/basic_socket/local_endpoint.html -/doc/asio/reference/basic_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_socket/lowest_layer/ -/doc/asio/reference/basic_socket/lowest_layer.html -/doc/asio/reference/basic_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_socket/lowest_layer_type.html -/doc/asio/reference/basic_socket/max_connections.html -/doc/asio/reference/basic_socket/max_listen_connections.html -/doc/asio/reference/basic_socket/message_do_not_route.html -/doc/asio/reference/basic_socket/message_end_of_record.html -/doc/asio/reference/basic_socket/message_flags.html -/doc/asio/reference/basic_socket/message_out_of_band.html -/doc/asio/reference/basic_socket/message_peek.html -/doc/asio/reference/basic_socket/native_handle.html -/doc/asio/reference/basic_socket/native_handle_type.html -/doc/asio/reference/basic_socket/native_non_blocking/ -/doc/asio/reference/basic_socket/native_non_blocking.html -/doc/asio/reference/basic_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_socket/non_blocking/ -/doc/asio/reference/basic_socket/non_blocking.html -/doc/asio/reference/basic_socket/non_blocking/overload1.html -/doc/asio/reference/basic_socket/non_blocking/overload2.html -/doc/asio/reference/basic_socket/non_blocking/overload3.html -/doc/asio/reference/basic_socket/open/ -/doc/asio/reference/basic_socket/open.html -/doc/asio/reference/basic_socket/open/overload1.html -/doc/asio/reference/basic_socket/open/overload2.html -/doc/asio/reference/basic_socket/operator_eq_/ -/doc/asio/reference/basic_socket/operator_eq_.html -/doc/asio/reference/basic_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_socket/out_of_band_inline.html -/doc/asio/reference/basic_socket/protocol_type.html -/doc/asio/reference/basic_socket__rebind_executor/ -/doc/asio/reference/basic_socket__rebind_executor.html -/doc/asio/reference/basic_socket__rebind_executor/other.html -/doc/asio/reference/basic_socket/receive_buffer_size.html -/doc/asio/reference/basic_socket/receive_low_watermark.html -/doc/asio/reference/basic_socket/release/ -/doc/asio/reference/basic_socket/release.html -/doc/asio/reference/basic_socket/release/overload1.html -/doc/asio/reference/basic_socket/release/overload2.html -/doc/asio/reference/basic_socket/remote_endpoint/ -/doc/asio/reference/basic_socket/remote_endpoint.html -/doc/asio/reference/basic_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_socket/reuse_address.html -/doc/asio/reference/basic_socket/send_buffer_size.html -/doc/asio/reference/basic_socket/send_low_watermark.html -/doc/asio/reference/basic_socket/set_option/ -/doc/asio/reference/basic_socket/set_option.html -/doc/asio/reference/basic_socket/set_option/overload1.html -/doc/asio/reference/basic_socket/set_option/overload2.html -/doc/asio/reference/basic_socket/shutdown/ -/doc/asio/reference/basic_socket/shutdown.html -/doc/asio/reference/basic_socket/shutdown/overload1.html -/doc/asio/reference/basic_socket/shutdown/overload2.html -/doc/asio/reference/basic_socket/shutdown_type.html -/doc/asio/reference/basic_socket_streambuf/ -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/ -/doc/asio/reference/basic_socket_streambuf/_basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload1.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload2.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload3.html -/doc/asio/reference/basic_socket_streambuf/clock_type.html -/doc/asio/reference/basic_socket_streambuf/close.html -/doc/asio/reference/basic_socket_streambuf/connect/ -/doc/asio/reference/basic_socket_streambuf/connect.html -/doc/asio/reference/basic_socket_streambuf/connect/overload1.html -/doc/asio/reference/basic_socket_streambuf/connect/overload2.html -/doc/asio/reference/basic_socket_streambuf/duration.html -/doc/asio/reference/basic_socket_streambuf/duration_type.html -/doc/asio/reference/basic_socket_streambuf/endpoint_type.html -/doc/asio/reference/basic_socket_streambuf/error.html -/doc/asio/reference/basic_socket_streambuf/expires_after.html -/doc/asio/reference/basic_socket_streambuf/expires_at/ -/doc/asio/reference/basic_socket_streambuf/expires_at.html -/doc/asio/reference/basic_socket_streambuf/expires_at/overload1.html -/doc/asio/reference/basic_socket_streambuf/expires_at/overload2.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/ -/doc/asio/reference/basic_socket_streambuf/expires_from_now.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/overload1.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/overload2.html -/doc/asio/reference/basic_socket_streambuf/expiry.html -/doc/asio/reference/basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/operator_eq_.html -/doc/asio/reference/basic_socket_streambuf/overflow.html -/doc/asio/reference/basic_socket_streambuf/protocol_type.html -/doc/asio/reference/basic_socket_streambuf/puberror.html -/doc/asio/reference/basic_socket_streambuf/setbuf.html -/doc/asio/reference/basic_socket_streambuf/socket.html -/doc/asio/reference/basic_socket_streambuf/sync.html -/doc/asio/reference/basic_socket_streambuf/time_point.html -/doc/asio/reference/basic_socket_streambuf/time_type.html -/doc/asio/reference/basic_socket_streambuf/underflow.html -/doc/asio/reference/basic_socket/wait/ -/doc/asio/reference/basic_socket/wait.html -/doc/asio/reference/basic_socket/wait/overload1.html -/doc/asio/reference/basic_socket/wait/overload2.html -/doc/asio/reference/basic_socket/wait_type.html -/doc/asio/reference/basic_streambuf/ -/doc/asio/reference/basic_streambuf/basic_streambuf.html -/doc/asio/reference/basic_streambuf/capacity.html -/doc/asio/reference/basic_streambuf/commit.html -/doc/asio/reference/basic_streambuf/const_buffers_type.html -/doc/asio/reference/basic_streambuf/consume.html -/doc/asio/reference/basic_streambuf/data.html -/doc/asio/reference/basic_streambuf.html -/doc/asio/reference/basic_streambuf/max_size.html -/doc/asio/reference/basic_streambuf/mutable_buffers_type.html -/doc/asio/reference/basic_streambuf/overflow.html -/doc/asio/reference/basic_streambuf/prepare.html -/doc/asio/reference/basic_streambuf_ref/ -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/ -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload1.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload2.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload3.html -/doc/asio/reference/basic_streambuf_ref/capacity.html -/doc/asio/reference/basic_streambuf_ref/commit.html -/doc/asio/reference/basic_streambuf_ref/const_buffers_type.html -/doc/asio/reference/basic_streambuf_ref/consume.html -/doc/asio/reference/basic_streambuf_ref/data.html -/doc/asio/reference/basic_streambuf_ref.html -/doc/asio/reference/basic_streambuf_ref/max_size.html -/doc/asio/reference/basic_streambuf_ref/mutable_buffers_type.html -/doc/asio/reference/basic_streambuf_ref/prepare.html -/doc/asio/reference/basic_streambuf_ref/size.html -/doc/asio/reference/basic_streambuf/reserve.html -/doc/asio/reference/basic_streambuf/size.html -/doc/asio/reference/basic_streambuf/underflow.html -/doc/asio/reference/basic_stream_socket/ -/doc/asio/reference/basic_stream_socket/assign/ -/doc/asio/reference/basic_stream_socket/assign.html -/doc/asio/reference/basic_stream_socket/assign/overload1.html -/doc/asio/reference/basic_stream_socket/assign/overload2.html -/doc/asio/reference/basic_stream_socket/async_connect.html -/doc/asio/reference/basic_stream_socket/async_read_some.html -/doc/asio/reference/basic_stream_socket/async_receive/ -/doc/asio/reference/basic_stream_socket/async_receive.html -/doc/asio/reference/basic_stream_socket/async_receive/overload1.html -/doc/asio/reference/basic_stream_socket/async_receive/overload2.html -/doc/asio/reference/basic_stream_socket/async_send/ -/doc/asio/reference/basic_stream_socket/async_send.html -/doc/asio/reference/basic_stream_socket/async_send/overload1.html -/doc/asio/reference/basic_stream_socket/async_send/overload2.html -/doc/asio/reference/basic_stream_socket/async_wait.html -/doc/asio/reference/basic_stream_socket/async_write_some.html -/doc/asio/reference/basic_stream_socket/at_mark/ -/doc/asio/reference/basic_stream_socket/at_mark.html -/doc/asio/reference/basic_stream_socket/at_mark/overload1.html -/doc/asio/reference/basic_stream_socket/at_mark/overload2.html -/doc/asio/reference/basic_stream_socket/available/ -/doc/asio/reference/basic_stream_socket/available.html -/doc/asio/reference/basic_stream_socket/available/overload1.html -/doc/asio/reference/basic_stream_socket/available/overload2.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/ -/doc/asio/reference/basic_stream_socket/_basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload10.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload1.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload2.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload3.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload4.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload5.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload6.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload7.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload8.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload9.html -/doc/asio/reference/basic_stream_socket/bind/ -/doc/asio/reference/basic_stream_socket/bind.html -/doc/asio/reference/basic_stream_socket/bind/overload1.html -/doc/asio/reference/basic_stream_socket/bind/overload2.html -/doc/asio/reference/basic_stream_socket/broadcast.html -/doc/asio/reference/basic_stream_socket/bytes_readable.html -/doc/asio/reference/basic_stream_socket/cancel/ -/doc/asio/reference/basic_stream_socket/cancel.html -/doc/asio/reference/basic_stream_socket/cancel/overload1.html -/doc/asio/reference/basic_stream_socket/cancel/overload2.html -/doc/asio/reference/basic_stream_socket/close/ -/doc/asio/reference/basic_stream_socket/close.html -/doc/asio/reference/basic_stream_socket/close/overload1.html -/doc/asio/reference/basic_stream_socket/close/overload2.html -/doc/asio/reference/basic_stream_socket/connect/ -/doc/asio/reference/basic_stream_socket/connect.html -/doc/asio/reference/basic_stream_socket/connect/overload1.html -/doc/asio/reference/basic_stream_socket/connect/overload2.html -/doc/asio/reference/basic_stream_socket/debug.html -/doc/asio/reference/basic_stream_socket/do_not_route.html -/doc/asio/reference/basic_stream_socket/enable_connection_aborted.html -/doc/asio/reference/basic_stream_socket/endpoint_type.html -/doc/asio/reference/basic_stream_socket/executor_type.html -/doc/asio/reference/basic_stream_socket/get_executor.html -/doc/asio/reference/basic_stream_socket/get_option/ -/doc/asio/reference/basic_stream_socket/get_option.html -/doc/asio/reference/basic_stream_socket/get_option/overload1.html -/doc/asio/reference/basic_stream_socket/get_option/overload2.html -/doc/asio/reference/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/io_control/ -/doc/asio/reference/basic_stream_socket/io_control.html -/doc/asio/reference/basic_stream_socket/io_control/overload1.html -/doc/asio/reference/basic_stream_socket/io_control/overload2.html -/doc/asio/reference/basic_stream_socket/is_open.html -/doc/asio/reference/basic_stream_socket/keep_alive.html -/doc/asio/reference/basic_stream_socket/linger.html -/doc/asio/reference/basic_stream_socket/local_endpoint/ -/doc/asio/reference/basic_stream_socket/local_endpoint.html -/doc/asio/reference/basic_stream_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_stream_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_stream_socket/lowest_layer/ -/doc/asio/reference/basic_stream_socket/lowest_layer.html -/doc/asio/reference/basic_stream_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_stream_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_stream_socket/lowest_layer_type.html -/doc/asio/reference/basic_stream_socket/max_connections.html -/doc/asio/reference/basic_stream_socket/max_listen_connections.html -/doc/asio/reference/basic_stream_socket/message_do_not_route.html -/doc/asio/reference/basic_stream_socket/message_end_of_record.html -/doc/asio/reference/basic_stream_socket/message_flags.html -/doc/asio/reference/basic_stream_socket/message_out_of_band.html -/doc/asio/reference/basic_stream_socket/message_peek.html -/doc/asio/reference/basic_stream_socket/native_handle.html -/doc/asio/reference/basic_stream_socket/native_handle_type.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/ -/doc/asio/reference/basic_stream_socket/native_non_blocking.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_stream_socket/non_blocking/ -/doc/asio/reference/basic_stream_socket/non_blocking.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload1.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload2.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload3.html -/doc/asio/reference/basic_stream_socket/open/ -/doc/asio/reference/basic_stream_socket/open.html -/doc/asio/reference/basic_stream_socket/open/overload1.html -/doc/asio/reference/basic_stream_socket/open/overload2.html -/doc/asio/reference/basic_stream_socket/operator_eq_/ -/doc/asio/reference/basic_stream_socket/operator_eq_.html -/doc/asio/reference/basic_stream_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_stream_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_stream_socket/out_of_band_inline.html -/doc/asio/reference/basic_stream_socket/protocol_type.html -/doc/asio/reference/basic_stream_socket/read_some/ -/doc/asio/reference/basic_stream_socket/read_some.html -/doc/asio/reference/basic_stream_socket/read_some/overload1.html -/doc/asio/reference/basic_stream_socket/read_some/overload2.html -/doc/asio/reference/basic_stream_socket__rebind_executor/ -/doc/asio/reference/basic_stream_socket__rebind_executor.html -/doc/asio/reference/basic_stream_socket__rebind_executor/other.html -/doc/asio/reference/basic_stream_socket/receive/ -/doc/asio/reference/basic_stream_socket/receive_buffer_size.html -/doc/asio/reference/basic_stream_socket/receive.html -/doc/asio/reference/basic_stream_socket/receive_low_watermark.html -/doc/asio/reference/basic_stream_socket/receive/overload1.html -/doc/asio/reference/basic_stream_socket/receive/overload2.html -/doc/asio/reference/basic_stream_socket/receive/overload3.html -/doc/asio/reference/basic_stream_socket/release/ -/doc/asio/reference/basic_stream_socket/release.html -/doc/asio/reference/basic_stream_socket/release/overload1.html -/doc/asio/reference/basic_stream_socket/release/overload2.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/ -/doc/asio/reference/basic_stream_socket/remote_endpoint.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_stream_socket/reuse_address.html -/doc/asio/reference/basic_stream_socket/send/ -/doc/asio/reference/basic_stream_socket/send_buffer_size.html -/doc/asio/reference/basic_stream_socket/send.html -/doc/asio/reference/basic_stream_socket/send_low_watermark.html -/doc/asio/reference/basic_stream_socket/send/overload1.html -/doc/asio/reference/basic_stream_socket/send/overload2.html -/doc/asio/reference/basic_stream_socket/send/overload3.html -/doc/asio/reference/basic_stream_socket/set_option/ -/doc/asio/reference/basic_stream_socket/set_option.html -/doc/asio/reference/basic_stream_socket/set_option/overload1.html -/doc/asio/reference/basic_stream_socket/set_option/overload2.html -/doc/asio/reference/basic_stream_socket/shutdown/ -/doc/asio/reference/basic_stream_socket/shutdown.html -/doc/asio/reference/basic_stream_socket/shutdown/overload1.html -/doc/asio/reference/basic_stream_socket/shutdown/overload2.html -/doc/asio/reference/basic_stream_socket/shutdown_type.html -/doc/asio/reference/basic_stream_socket/wait/ -/doc/asio/reference/basic_stream_socket/wait.html -/doc/asio/reference/basic_stream_socket/wait/overload1.html -/doc/asio/reference/basic_stream_socket/wait/overload2.html -/doc/asio/reference/basic_stream_socket/wait_type.html -/doc/asio/reference/basic_stream_socket/write_some/ -/doc/asio/reference/basic_stream_socket/write_some.html -/doc/asio/reference/basic_stream_socket/write_some/overload1.html -/doc/asio/reference/basic_stream_socket/write_some/overload2.html -/doc/asio/reference/basic_system_executor/ -/doc/asio/reference/basic_system_executor/basic_system_executor.html -/doc/asio/reference/basic_system_executor/context.html -/doc/asio/reference/basic_system_executor/defer.html -/doc/asio/reference/basic_system_executor/dispatch.html -/doc/asio/reference/basic_system_executor/execute.html -/doc/asio/reference/basic_system_executor.html -/doc/asio/reference/basic_system_executor/on_work_finished.html -/doc/asio/reference/basic_system_executor/on_work_started.html -/doc/asio/reference/basic_system_executor/operator_eq__eq_.html -/doc/asio/reference/basic_system_executor/operator_not__eq_.html -/doc/asio/reference/basic_system_executor/post.html -/doc/asio/reference/basic_system_executor/query/ -/doc/asio/reference/basic_system_executor/query.html -/doc/asio/reference/basic_system_executor/query/overload1.html -/doc/asio/reference/basic_system_executor/query/overload2.html -/doc/asio/reference/basic_system_executor/query/overload3.html -/doc/asio/reference/basic_system_executor/query__static/ -/doc/asio/reference/basic_system_executor/query__static.html -/doc/asio/reference/basic_system_executor/query__static/overload1.html -/doc/asio/reference/basic_system_executor/query__static/overload2.html -/doc/asio/reference/basic_system_executor/query__static/overload3.html -/doc/asio/reference/basic_system_executor/query__static/overload4.html -/doc/asio/reference/basic_system_executor/require/ -/doc/asio/reference/basic_system_executor/require.html -/doc/asio/reference/basic_system_executor/require/overload1.html -/doc/asio/reference/basic_system_executor/require/overload2.html -/doc/asio/reference/basic_system_executor/require/overload3.html -/doc/asio/reference/basic_system_executor/require/overload4.html -/doc/asio/reference/basic_system_executor/require/overload5.html -/doc/asio/reference/basic_system_executor/require/overload6.html -/doc/asio/reference/basic_system_executor/require/overload7.html -/doc/asio/reference/basic_waitable_timer/ -/doc/asio/reference/basic_waitable_timer/async_wait.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/ -/doc/asio/reference/basic_waitable_timer/_basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload1.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload2.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload3.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload4.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload5.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload6.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload7.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload8.html -/doc/asio/reference/basic_waitable_timer/cancel/ -/doc/asio/reference/basic_waitable_timer/cancel.html -/doc/asio/reference/basic_waitable_timer/cancel_one/ -/doc/asio/reference/basic_waitable_timer/cancel_one.html -/doc/asio/reference/basic_waitable_timer/cancel_one/overload1.html -/doc/asio/reference/basic_waitable_timer/cancel_one/overload2.html -/doc/asio/reference/basic_waitable_timer/cancel/overload1.html -/doc/asio/reference/basic_waitable_timer/cancel/overload2.html -/doc/asio/reference/basic_waitable_timer/clock_type.html -/doc/asio/reference/basic_waitable_timer/duration.html -/doc/asio/reference/basic_waitable_timer/executor_type.html -/doc/asio/reference/basic_waitable_timer/expires_after.html -/doc/asio/reference/basic_waitable_timer/expires_at/ -/doc/asio/reference/basic_waitable_timer/expires_at.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload1.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload2.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload3.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/ -/doc/asio/reference/basic_waitable_timer/expires_from_now.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload1.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload2.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload3.html -/doc/asio/reference/basic_waitable_timer/expiry.html -/doc/asio/reference/basic_waitable_timer/get_executor.html -/doc/asio/reference/basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/ -/doc/asio/reference/basic_waitable_timer/operator_eq_.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/overload1.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/overload2.html -/doc/asio/reference/basic_waitable_timer__rebind_executor/ -/doc/asio/reference/basic_waitable_timer__rebind_executor.html -/doc/asio/reference/basic_waitable_timer__rebind_executor/other.html -/doc/asio/reference/basic_waitable_timer/time_point.html -/doc/asio/reference/basic_waitable_timer/traits_type.html -/doc/asio/reference/basic_waitable_timer/wait/ -/doc/asio/reference/basic_waitable_timer/wait.html -/doc/asio/reference/basic_waitable_timer/wait/overload1.html -/doc/asio/reference/basic_waitable_timer/wait/overload2.html -/doc/asio/reference/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/asio/reference/basic_yield_context/callee_type.html -/doc/asio/reference/basic_yield_context/caller_type.html -/doc/asio/reference/basic_yield_context.html -/doc/asio/reference/basic_yield_context/operator_lb__rb_.html -/doc/asio/reference/bind_executor/ -/doc/asio/reference/bind_executor.html -/doc/asio/reference/bind_executor/overload1.html -/doc/asio/reference/bind_executor/overload2.html -/doc/asio/reference/buffer/ -/doc/asio/reference/buffer_cast/ -/doc/asio/reference/buffer_cast.html -/doc/asio/reference/buffer_cast/overload1.html -/doc/asio/reference/buffer_cast/overload2.html -/doc/asio/reference/buffer_copy/ -/doc/asio/reference/buffer_copy.html -/doc/asio/reference/buffer_copy/overload1.html -/doc/asio/reference/buffer_copy/overload2.html -/doc/asio/reference/BufferedHandshakeHandler.html -/doc/asio/reference/buffered_read_stream/ -/doc/asio/reference/buffered_read_stream/async_fill.html -/doc/asio/reference/buffered_read_stream/async_read_some.html -/doc/asio/reference/buffered_read_stream/async_write_some.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/ -/doc/asio/reference/buffered_read_stream/buffered_read_stream.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/overload1.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/overload2.html -/doc/asio/reference/buffered_read_stream/close/ -/doc/asio/reference/buffered_read_stream/close.html -/doc/asio/reference/buffered_read_stream/close/overload1.html -/doc/asio/reference/buffered_read_stream/close/overload2.html -/doc/asio/reference/buffered_read_stream/default_buffer_size.html -/doc/asio/reference/buffered_read_stream/executor_type.html -/doc/asio/reference/buffered_read_stream/fill/ -/doc/asio/reference/buffered_read_stream/fill.html -/doc/asio/reference/buffered_read_stream/fill/overload1.html -/doc/asio/reference/buffered_read_stream/fill/overload2.html -/doc/asio/reference/buffered_read_stream/get_executor.html -/doc/asio/reference/buffered_read_stream.html -/doc/asio/reference/buffered_read_stream/in_avail/ -/doc/asio/reference/buffered_read_stream/in_avail.html -/doc/asio/reference/buffered_read_stream/in_avail/overload1.html -/doc/asio/reference/buffered_read_stream/in_avail/overload2.html -/doc/asio/reference/buffered_read_stream/lowest_layer/ -/doc/asio/reference/buffered_read_stream/lowest_layer.html -/doc/asio/reference/buffered_read_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_read_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_read_stream/lowest_layer_type.html -/doc/asio/reference/buffered_read_stream/next_layer.html -/doc/asio/reference/buffered_read_stream/next_layer_type.html -/doc/asio/reference/buffered_read_stream/peek/ -/doc/asio/reference/buffered_read_stream/peek.html -/doc/asio/reference/buffered_read_stream/peek/overload1.html -/doc/asio/reference/buffered_read_stream/peek/overload2.html -/doc/asio/reference/buffered_read_stream/read_some/ -/doc/asio/reference/buffered_read_stream/read_some.html -/doc/asio/reference/buffered_read_stream/read_some/overload1.html -/doc/asio/reference/buffered_read_stream/read_some/overload2.html -/doc/asio/reference/buffered_read_stream/write_some/ -/doc/asio/reference/buffered_read_stream/write_some.html -/doc/asio/reference/buffered_read_stream/write_some/overload1.html -/doc/asio/reference/buffered_read_stream/write_some/overload2.html -/doc/asio/reference/buffered_stream/ -/doc/asio/reference/buffered_stream/async_fill.html -/doc/asio/reference/buffered_stream/async_flush.html -/doc/asio/reference/buffered_stream/async_read_some.html -/doc/asio/reference/buffered_stream/async_write_some.html -/doc/asio/reference/buffered_stream/buffered_stream/ -/doc/asio/reference/buffered_stream/buffered_stream.html -/doc/asio/reference/buffered_stream/buffered_stream/overload1.html -/doc/asio/reference/buffered_stream/buffered_stream/overload2.html -/doc/asio/reference/buffered_stream/close/ -/doc/asio/reference/buffered_stream/close.html -/doc/asio/reference/buffered_stream/close/overload1.html -/doc/asio/reference/buffered_stream/close/overload2.html -/doc/asio/reference/buffered_stream/executor_type.html -/doc/asio/reference/buffered_stream/fill/ -/doc/asio/reference/buffered_stream/fill.html -/doc/asio/reference/buffered_stream/fill/overload1.html -/doc/asio/reference/buffered_stream/fill/overload2.html -/doc/asio/reference/buffered_stream/flush/ -/doc/asio/reference/buffered_stream/flush.html -/doc/asio/reference/buffered_stream/flush/overload1.html -/doc/asio/reference/buffered_stream/flush/overload2.html -/doc/asio/reference/buffered_stream/get_executor.html -/doc/asio/reference/buffered_stream.html -/doc/asio/reference/buffered_stream/in_avail/ -/doc/asio/reference/buffered_stream/in_avail.html -/doc/asio/reference/buffered_stream/in_avail/overload1.html -/doc/asio/reference/buffered_stream/in_avail/overload2.html -/doc/asio/reference/buffered_stream/lowest_layer/ -/doc/asio/reference/buffered_stream/lowest_layer.html -/doc/asio/reference/buffered_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_stream/lowest_layer_type.html -/doc/asio/reference/buffered_stream/next_layer.html -/doc/asio/reference/buffered_stream/next_layer_type.html -/doc/asio/reference/buffered_stream/peek/ -/doc/asio/reference/buffered_stream/peek.html -/doc/asio/reference/buffered_stream/peek/overload1.html -/doc/asio/reference/buffered_stream/peek/overload2.html -/doc/asio/reference/buffered_stream/read_some/ -/doc/asio/reference/buffered_stream/read_some.html -/doc/asio/reference/buffered_stream/read_some/overload1.html -/doc/asio/reference/buffered_stream/read_some/overload2.html -/doc/asio/reference/buffered_stream/write_some/ -/doc/asio/reference/buffered_stream/write_some.html -/doc/asio/reference/buffered_stream/write_some/overload1.html -/doc/asio/reference/buffered_stream/write_some/overload2.html -/doc/asio/reference/buffered_write_stream/ -/doc/asio/reference/buffered_write_stream/async_flush.html -/doc/asio/reference/buffered_write_stream/async_read_some.html -/doc/asio/reference/buffered_write_stream/async_write_some.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/ -/doc/asio/reference/buffered_write_stream/buffered_write_stream.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/overload1.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/overload2.html -/doc/asio/reference/buffered_write_stream/close/ -/doc/asio/reference/buffered_write_stream/close.html -/doc/asio/reference/buffered_write_stream/close/overload1.html -/doc/asio/reference/buffered_write_stream/close/overload2.html -/doc/asio/reference/buffered_write_stream/default_buffer_size.html -/doc/asio/reference/buffered_write_stream/executor_type.html -/doc/asio/reference/buffered_write_stream/flush/ -/doc/asio/reference/buffered_write_stream/flush.html -/doc/asio/reference/buffered_write_stream/flush/overload1.html -/doc/asio/reference/buffered_write_stream/flush/overload2.html -/doc/asio/reference/buffered_write_stream/get_executor.html -/doc/asio/reference/buffered_write_stream.html -/doc/asio/reference/buffered_write_stream/in_avail/ -/doc/asio/reference/buffered_write_stream/in_avail.html -/doc/asio/reference/buffered_write_stream/in_avail/overload1.html -/doc/asio/reference/buffered_write_stream/in_avail/overload2.html -/doc/asio/reference/buffered_write_stream/lowest_layer/ -/doc/asio/reference/buffered_write_stream/lowest_layer.html -/doc/asio/reference/buffered_write_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_write_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_write_stream/lowest_layer_type.html -/doc/asio/reference/buffered_write_stream/next_layer.html -/doc/asio/reference/buffered_write_stream/next_layer_type.html -/doc/asio/reference/buffered_write_stream/peek/ -/doc/asio/reference/buffered_write_stream/peek.html -/doc/asio/reference/buffered_write_stream/peek/overload1.html -/doc/asio/reference/buffered_write_stream/peek/overload2.html -/doc/asio/reference/buffered_write_stream/read_some/ -/doc/asio/reference/buffered_write_stream/read_some.html -/doc/asio/reference/buffered_write_stream/read_some/overload1.html -/doc/asio/reference/buffered_write_stream/read_some/overload2.html -/doc/asio/reference/buffered_write_stream/write_some/ -/doc/asio/reference/buffered_write_stream/write_some.html -/doc/asio/reference/buffered_write_stream/write_some/overload1.html -/doc/asio/reference/buffered_write_stream/write_some/overload2.html -/doc/asio/reference/buffer.html -/doc/asio/reference/buffer/overload10.html -/doc/asio/reference/buffer/overload11.html -/doc/asio/reference/buffer/overload12.html -/doc/asio/reference/buffer/overload13.html -/doc/asio/reference/buffer/overload14.html -/doc/asio/reference/buffer/overload15.html -/doc/asio/reference/buffer/overload16.html -/doc/asio/reference/buffer/overload17.html -/doc/asio/reference/buffer/overload18.html -/doc/asio/reference/buffer/overload19.html -/doc/asio/reference/buffer/overload1.html -/doc/asio/reference/buffer/overload20.html -/doc/asio/reference/buffer/overload21.html -/doc/asio/reference/buffer/overload22.html -/doc/asio/reference/buffer/overload23.html -/doc/asio/reference/buffer/overload24.html -/doc/asio/reference/buffer/overload25.html -/doc/asio/reference/buffer/overload26.html -/doc/asio/reference/buffer/overload27.html -/doc/asio/reference/buffer/overload28.html -/doc/asio/reference/buffer/overload29.html -/doc/asio/reference/buffer/overload2.html -/doc/asio/reference/buffer/overload30.html -/doc/asio/reference/buffer/overload31.html -/doc/asio/reference/buffer/overload32.html -/doc/asio/reference/buffer/overload3.html -/doc/asio/reference/buffer/overload4.html -/doc/asio/reference/buffer/overload5.html -/doc/asio/reference/buffer/overload6.html -/doc/asio/reference/buffer/overload7.html -/doc/asio/reference/buffer/overload8.html -/doc/asio/reference/buffer/overload9.html -/doc/asio/reference/buffers_begin.html -/doc/asio/reference/buffers_end.html -/doc/asio/reference/buffer_sequence_begin/ -/doc/asio/reference/buffer_sequence_begin.html -/doc/asio/reference/buffer_sequence_begin/overload1.html -/doc/asio/reference/buffer_sequence_begin/overload2.html -/doc/asio/reference/buffer_sequence_begin/overload3.html -/doc/asio/reference/buffer_sequence_begin/overload4.html -/doc/asio/reference/buffer_sequence_end/ -/doc/asio/reference/buffer_sequence_end.html -/doc/asio/reference/buffer_sequence_end/overload1.html -/doc/asio/reference/buffer_sequence_end/overload2.html -/doc/asio/reference/buffer_sequence_end/overload3.html -/doc/asio/reference/buffer_sequence_end/overload4.html -/doc/asio/reference/buffers_iterator/ -/doc/asio/reference/buffers_iterator/begin.html -/doc/asio/reference/buffers_iterator/buffers_iterator.html -/doc/asio/reference/buffers_iterator/difference_type.html -/doc/asio/reference/buffers_iterator/end.html -/doc/asio/reference/buffers_iterator.html -/doc/asio/reference/buffers_iterator/iterator_category.html -/doc/asio/reference/buffers_iterator/operator_arrow_.html -/doc/asio/reference/buffers_iterator/operator_eq__eq_.html -/doc/asio/reference/buffers_iterator/operator_gt__eq_.html -/doc/asio/reference/buffers_iterator/operator_gt_.html -/doc/asio/reference/buffers_iterator/operator_lb__rb_.html -/doc/asio/reference/buffers_iterator/operator_lt__eq_.html -/doc/asio/reference/buffers_iterator/operator_lt_.html -/doc/asio/reference/buffers_iterator/operator_minus_/ -/doc/asio/reference/buffers_iterator/operator_minus__eq_.html -/doc/asio/reference/buffers_iterator/operator_minus_.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/ -/doc/asio/reference/buffers_iterator/operator_minus__minus_.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_minus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_minus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_not__eq_.html -/doc/asio/reference/buffers_iterator/operator_plus_/ -/doc/asio/reference/buffers_iterator/operator_plus__eq_.html -/doc/asio/reference/buffers_iterator/operator_plus_.html -/doc/asio/reference/buffers_iterator/operator_plus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_plus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/ -/doc/asio/reference/buffers_iterator/operator_plus__plus_.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/overload2.html -/doc/asio/reference/buffers_iterator/operator__star_.html -/doc/asio/reference/buffers_iterator/pointer.html -/doc/asio/reference/buffers_iterator/reference.html -/doc/asio/reference/buffers_iterator/value_type.html -/doc/asio/reference/buffer_size.html -/doc/asio/reference/can_prefer.html -/doc/asio/reference/can_query.html -/doc/asio/reference/can_require_concept.html -/doc/asio/reference/can_require.html -/doc/asio/reference/CompletionCondition.html -/doc/asio/reference/CompletionHandler.html -/doc/asio/reference/connect/ -/doc/asio/reference/ConnectCondition.html -/doc/asio/reference/ConnectHandler.html -/doc/asio/reference/connect.html -/doc/asio/reference/connect/overload10.html -/doc/asio/reference/connect/overload11.html -/doc/asio/reference/connect/overload12.html -/doc/asio/reference/connect/overload1.html -/doc/asio/reference/connect/overload2.html -/doc/asio/reference/connect/overload3.html -/doc/asio/reference/connect/overload4.html -/doc/asio/reference/connect/overload5.html -/doc/asio/reference/connect/overload6.html -/doc/asio/reference/connect/overload7.html -/doc/asio/reference/connect/overload8.html -/doc/asio/reference/connect/overload9.html -/doc/asio/reference/const_buffer/ -/doc/asio/reference/const_buffer/const_buffer/ -/doc/asio/reference/const_buffer/const_buffer.html -/doc/asio/reference/const_buffer/const_buffer/overload1.html -/doc/asio/reference/const_buffer/const_buffer/overload2.html -/doc/asio/reference/const_buffer/const_buffer/overload3.html -/doc/asio/reference/const_buffer/data.html -/doc/asio/reference/const_buffer.html -/doc/asio/reference/const_buffer/operator_plus_/ -/doc/asio/reference/const_buffer/operator_plus__eq_.html -/doc/asio/reference/const_buffer/operator_plus_.html -/doc/asio/reference/const_buffer/operator_plus_/overload1.html -/doc/asio/reference/const_buffer/operator_plus_/overload2.html -/doc/asio/reference/const_buffers_1/ -/doc/asio/reference/const_buffers_1/begin.html -/doc/asio/reference/const_buffers_1/const_buffers_1/ -/doc/asio/reference/const_buffers_1/const_buffers_1.html -/doc/asio/reference/const_buffers_1/const_buffers_1/overload1.html -/doc/asio/reference/const_buffers_1/const_buffers_1/overload2.html -/doc/asio/reference/const_buffers_1/const_iterator.html -/doc/asio/reference/const_buffers_1/data.html -/doc/asio/reference/const_buffers_1/end.html -/doc/asio/reference/const_buffers_1.html -/doc/asio/reference/const_buffers_1/operator_plus_/ -/doc/asio/reference/const_buffers_1/operator_plus__eq_.html -/doc/asio/reference/const_buffers_1/operator_plus_.html -/doc/asio/reference/const_buffers_1/operator_plus_/overload1.html -/doc/asio/reference/const_buffers_1/operator_plus_/overload2.html -/doc/asio/reference/const_buffers_1/size.html -/doc/asio/reference/const_buffers_1/value_type.html -/doc/asio/reference/ConstBufferSequence.html -/doc/asio/reference/const_buffer/size.html -/doc/asio/reference/coroutine/ -/doc/asio/reference/coroutine/coroutine.html -/doc/asio/reference/coroutine.html -/doc/asio/reference/coroutine/is_child.html -/doc/asio/reference/coroutine/is_complete.html -/doc/asio/reference/coroutine/is_parent.html -/doc/asio/reference/co_spawn/ -/doc/asio/reference/co_spawn.html -/doc/asio/reference/co_spawn/overload1.html -/doc/asio/reference/co_spawn/overload2.html -/doc/asio/reference/co_spawn/overload3.html -/doc/asio/reference/co_spawn/overload4.html -/doc/asio/reference/co_spawn/overload5.html -/doc/asio/reference/co_spawn/overload6.html -/doc/asio/reference/deadline_timer.html -/doc/asio/reference/default_completion_token/ -/doc/asio/reference/default_completion_token.html -/doc/asio/reference/default_completion_token/type.html -/doc/asio/reference/defer/ -/doc/asio/reference/defer.html -/doc/asio/reference/defer/overload1.html -/doc/asio/reference/defer/overload2.html -/doc/asio/reference/defer/overload3.html -/doc/asio/reference/detached.html -/doc/asio/reference/detached_t/ -/doc/asio/reference/detached_t/as_default_on.html -/doc/asio/reference/detached_t/detached_t.html -/doc/asio/reference/detached_t__executor_with_default/ -/doc/asio/reference/detached_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/ -/doc/asio/reference/detached_t__executor_with_default/executor_with_default.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html -/doc/asio/reference/detached_t__executor_with_default.html -/doc/asio/reference/detached_t.html -/doc/asio/reference/dispatch/ -/doc/asio/reference/dispatch.html -/doc/asio/reference/dispatch/overload1.html -/doc/asio/reference/dispatch/overload2.html -/doc/asio/reference/dispatch/overload3.html -/doc/asio/reference/dynamic_buffer/ -/doc/asio/reference/DynamicBuffer.html -/doc/asio/reference/dynamic_buffer.html -/doc/asio/reference/dynamic_buffer/overload1.html -/doc/asio/reference/dynamic_buffer/overload2.html -/doc/asio/reference/dynamic_buffer/overload3.html -/doc/asio/reference/dynamic_buffer/overload4.html -/doc/asio/reference/DynamicBuffer_v1.html -/doc/asio/reference/DynamicBuffer_v2.html -/doc/asio/reference/dynamic_string_buffer/ -/doc/asio/reference/dynamic_string_buffer/capacity.html -/doc/asio/reference/dynamic_string_buffer/commit.html -/doc/asio/reference/dynamic_string_buffer/const_buffers_type.html -/doc/asio/reference/dynamic_string_buffer/consume.html -/doc/asio/reference/dynamic_string_buffer/data/ -/doc/asio/reference/dynamic_string_buffer/data.html -/doc/asio/reference/dynamic_string_buffer/data/overload1.html -/doc/asio/reference/dynamic_string_buffer/data/overload2.html -/doc/asio/reference/dynamic_string_buffer/data/overload3.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/ -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload1.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload2.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload3.html -/doc/asio/reference/dynamic_string_buffer/grow.html -/doc/asio/reference/dynamic_string_buffer.html -/doc/asio/reference/dynamic_string_buffer/max_size.html -/doc/asio/reference/dynamic_string_buffer/mutable_buffers_type.html -/doc/asio/reference/dynamic_string_buffer/prepare.html -/doc/asio/reference/dynamic_string_buffer/shrink.html -/doc/asio/reference/dynamic_string_buffer/size.html -/doc/asio/reference/dynamic_vector_buffer/ -/doc/asio/reference/dynamic_vector_buffer/capacity.html -/doc/asio/reference/dynamic_vector_buffer/commit.html -/doc/asio/reference/dynamic_vector_buffer/const_buffers_type.html -/doc/asio/reference/dynamic_vector_buffer/consume.html -/doc/asio/reference/dynamic_vector_buffer/data/ -/doc/asio/reference/dynamic_vector_buffer/data.html -/doc/asio/reference/dynamic_vector_buffer/data/overload1.html -/doc/asio/reference/dynamic_vector_buffer/data/overload2.html -/doc/asio/reference/dynamic_vector_buffer/data/overload3.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/ -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload1.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload2.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload3.html -/doc/asio/reference/dynamic_vector_buffer/grow.html -/doc/asio/reference/dynamic_vector_buffer.html -/doc/asio/reference/dynamic_vector_buffer/max_size.html -/doc/asio/reference/dynamic_vector_buffer/mutable_buffers_type.html -/doc/asio/reference/dynamic_vector_buffer/prepare.html -/doc/asio/reference/dynamic_vector_buffer/shrink.html -/doc/asio/reference/dynamic_vector_buffer/size.html -/doc/asio/reference/Endpoint.html -/doc/asio/reference/EndpointSequence.html -/doc/asio/reference/error__addrinfo_category.html -/doc/asio/reference/error__addrinfo_errors.html -/doc/asio/reference/error__basic_errors.html -/doc/asio/reference/error_category/ -/doc/asio/reference/error_category/_error_category.html -/doc/asio/reference/error_category.html -/doc/asio/reference/error_category/message.html -/doc/asio/reference/error_category/name.html -/doc/asio/reference/error_category/operator_eq__eq_.html -/doc/asio/reference/error_category/operator_not__eq_.html -/doc/asio/reference/error_code/ -/doc/asio/reference/error_code/assign.html -/doc/asio/reference/error_code/category.html -/doc/asio/reference/error_code/clear.html -/doc/asio/reference/error_code/error_code/ -/doc/asio/reference/error_code/error_code.html -/doc/asio/reference/error_code/error_code/overload1.html -/doc/asio/reference/error_code/error_code/overload2.html -/doc/asio/reference/error_code/error_code/overload3.html -/doc/asio/reference/error_code.html -/doc/asio/reference/error_code/message.html -/doc/asio/reference/error_code/operator_eq__eq_.html -/doc/asio/reference/error_code/operator_not__eq_.html -/doc/asio/reference/error_code/operator_not_.html -/doc/asio/reference/error_code/operator_unspecified_bool_type.html -/doc/asio/reference/error_code/unspecified_bool_true.html -/doc/asio/reference/error_code/unspecified_bool_type.html -/doc/asio/reference/error_code__unspecified_bool_type_t.html -/doc/asio/reference/error_code/value.html -/doc/asio/reference/error__get_addrinfo_category.html -/doc/asio/reference/error__get_misc_category.html -/doc/asio/reference/error__get_netdb_category.html -/doc/asio/reference/error__get_ssl_category.html -/doc/asio/reference/error__get_system_category.html -/doc/asio/reference/error__make_error_code/ -/doc/asio/reference/error__make_error_code.html -/doc/asio/reference/error__make_error_code/overload1.html -/doc/asio/reference/error__make_error_code/overload2.html -/doc/asio/reference/error__make_error_code/overload3.html -/doc/asio/reference/error__make_error_code/overload4.html -/doc/asio/reference/error__make_error_code/overload5.html -/doc/asio/reference/error__misc_category.html -/doc/asio/reference/error__misc_errors.html -/doc/asio/reference/error__netdb_category.html -/doc/asio/reference/error__netdb_errors.html -/doc/asio/reference/error__ssl_category.html -/doc/asio/reference/error__ssl_errors.html -/doc/asio/reference/error__system_category.html -/doc/asio/reference/execution__allocator.html -/doc/asio/reference/execution__allocator_t/ -/doc/asio/reference/execution__allocator_t/allocator_t.html -/doc/asio/reference/execution__allocator_t.html -/doc/asio/reference/execution__allocator_t/is_applicable_property_v.html -/doc/asio/reference/execution__allocator_t/is_preferable.html -/doc/asio/reference/execution__allocator_t/is_requirable.html -/doc/asio/reference/execution__allocator_t/value.html -/doc/asio/reference/execution__any_executor/ -/doc/asio/reference/execution__any_executor/any_executor/ -/doc/asio/reference/execution__any_executor/_any_executor.html -/doc/asio/reference/execution__any_executor/any_executor.html -/doc/asio/reference/execution__any_executor/any_executor/overload1.html -/doc/asio/reference/execution__any_executor/any_executor/overload2.html -/doc/asio/reference/execution__any_executor/any_executor/overload3.html -/doc/asio/reference/execution__any_executor/any_executor/overload4.html -/doc/asio/reference/execution__any_executor/any_executor/overload5.html -/doc/asio/reference/execution__any_executor/any_executor/overload6.html -/doc/asio/reference/execution__any_executor/context.html -/doc/asio/reference/execution__any_executor/execute.html -/doc/asio/reference/execution__any_executor.html -/doc/asio/reference/execution__any_executor/operator_bool.html -/doc/asio/reference/execution__any_executor/operator_eq_/ -/doc/asio/reference/execution__any_executor/operator_eq__eq_/ -/doc/asio/reference/execution__any_executor/operator_eq__eq_.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload3.html -/doc/asio/reference/execution__any_executor/operator_eq_.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload3.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload4.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/ -/doc/asio/reference/execution__any_executor/operator_not__eq_.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload3.html -/doc/asio/reference/execution__any_executor/prefer.html -/doc/asio/reference/execution__any_executor/query.html -/doc/asio/reference/execution__any_executor/require.html -/doc/asio/reference/execution__any_executor/swap.html -/doc/asio/reference/execution__any_executor/target/ -/doc/asio/reference/execution__any_executor/target.html -/doc/asio/reference/execution__any_executor/target/overload1.html -/doc/asio/reference/execution__any_executor/target/overload2.html -/doc/asio/reference/execution__any_executor/target_type.html -/doc/asio/reference/execution__bad_executor/ -/doc/asio/reference/execution__bad_executor/bad_executor.html -/doc/asio/reference/execution__bad_executor.html -/doc/asio/reference/execution__bad_executor/what.html -/doc/asio/reference/execution__blocking_adaptation.html -/doc/asio/reference/execution__blocking_adaptation_t/ -/doc/asio/reference/execution__blocking_adaptation_t/allowed.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/ -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/allowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/value.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/ -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload1.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload2.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload3.html -/doc/asio/reference/execution__blocking_adaptation_t/disallowed.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/ -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/disallowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/value.html -/doc/asio/reference/execution__blocking_adaptation_t.html -/doc/asio/reference/execution__blocking_adaptation_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t/operator_eq__eq_.html -/doc/asio/reference/execution__blocking_adaptation_t/operator_not__eq_.html -/doc/asio/reference/execution__blocking_adaptation_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking.html -/doc/asio/reference/execution__blocking_t/ -/doc/asio/reference/execution__blocking_t/always.html -/doc/asio/reference/execution__blocking_t__always_t/ -/doc/asio/reference/execution__blocking_t__always_t/always_t.html -/doc/asio/reference/execution__blocking_t__always_t.html -/doc/asio/reference/execution__blocking_t__always_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__always_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__always_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__always_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__always_t/value.html -/doc/asio/reference/execution__blocking_t/blocking_t/ -/doc/asio/reference/execution__blocking_t/blocking_t.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload1.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload2.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload3.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload4.html -/doc/asio/reference/execution__blocking_t.html -/doc/asio/reference/execution__blocking_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t/is_preferable.html -/doc/asio/reference/execution__blocking_t/is_requirable.html -/doc/asio/reference/execution__blocking_t/never.html -/doc/asio/reference/execution__blocking_t__never_t/ -/doc/asio/reference/execution__blocking_t__never_t.html -/doc/asio/reference/execution__blocking_t__never_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__never_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__never_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__never_t/never_t.html -/doc/asio/reference/execution__blocking_t__never_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__never_t/value.html -/doc/asio/reference/execution__blocking_t/operator_eq__eq_.html -/doc/asio/reference/execution__blocking_t/operator_not__eq_.html -/doc/asio/reference/execution__blocking_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t/possibly.html -/doc/asio/reference/execution__blocking_t__possibly_t/ -/doc/asio/reference/execution__blocking_t__possibly_t.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__possibly_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__possibly_t/possibly_t.html -/doc/asio/reference/execution__blocking_t__possibly_t/value.html -/doc/asio/reference/execution__bulk_execute.html -/doc/asio/reference/execution__bulk_guarantee.html -/doc/asio/reference/execution__bulk_guarantee_t/ -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/ -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload1.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload2.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload3.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload4.html -/doc/asio/reference/execution__bulk_guarantee_t.html -/doc/asio/reference/execution__bulk_guarantee_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t/operator_eq__eq_.html -/doc/asio/reference/execution__bulk_guarantee_t/operator_not__eq_.html -/doc/asio/reference/execution__bulk_guarantee_t/parallel.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/ -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/parallel_t.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/value.html -/doc/asio/reference/execution__bulk_guarantee_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t/sequenced.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/ -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/sequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/value.html -/doc/asio/reference/execution__bulk_guarantee_t/unsequenced.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/ -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/unsequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/value.html -/doc/asio/reference/execution__can_bulk_execute.html -/doc/asio/reference/execution__can_connect.html -/doc/asio/reference/execution__can_execute.html -/doc/asio/reference/execution__can_schedule.html -/doc/asio/reference/execution__can_set_done.html -/doc/asio/reference/execution__can_set_error.html -/doc/asio/reference/execution__can_set_value.html -/doc/asio/reference/execution__can_start.html -/doc/asio/reference/execution__can_submit.html -/doc/asio/reference/execution__connect.html -/doc/asio/reference/execution__connect_result/ -/doc/asio/reference/execution__connect_result.html -/doc/asio/reference/execution__connect_result/type.html -/doc/asio/reference/execution_context/ -/doc/asio/reference/execution_context/add_service.html -/doc/asio/reference/execution__context_as.html -/doc/asio/reference/execution__context_as_t/ -/doc/asio/reference/execution__context_as_t.html -/doc/asio/reference/execution__context_as_t/is_applicable_property_v.html -/doc/asio/reference/execution__context_as_t/is_preferable.html -/doc/asio/reference/execution__context_as_t/is_requirable.html -/doc/asio/reference/execution__context_as_t/polymorphic_query_result_type.html -/doc/asio/reference/execution_context/destroy.html -/doc/asio/reference/execution_context/_execution_context.html -/doc/asio/reference/execution_context/execution_context.html -/doc/asio/reference/execution_context/fork_event.html -/doc/asio/reference/execution_context/has_service.html -/doc/asio/reference/ExecutionContext.html -/doc/asio/reference/execution__context.html -/doc/asio/reference/execution_context.html -/doc/asio/reference/execution_context__id/ -/doc/asio/reference/execution_context__id.html -/doc/asio/reference/execution_context__id/id.html -/doc/asio/reference/execution_context/make_service.html -/doc/asio/reference/execution_context/notify_fork.html -/doc/asio/reference/execution_context__service/ -/doc/asio/reference/execution_context__service/context.html -/doc/asio/reference/execution_context__service.html -/doc/asio/reference/execution_context__service/notify_fork.html -/doc/asio/reference/execution_context__service/_service.html -/doc/asio/reference/execution_context__service/service.html -/doc/asio/reference/execution_context__service/shutdown.html -/doc/asio/reference/execution_context/shutdown.html -/doc/asio/reference/execution__context_t/ -/doc/asio/reference/execution__context_t.html -/doc/asio/reference/execution__context_t/is_applicable_property_v.html -/doc/asio/reference/execution__context_t/is_preferable.html -/doc/asio/reference/execution__context_t/is_requirable.html -/doc/asio/reference/execution__context_t/polymorphic_query_result_type.html -/doc/asio/reference/execution_context/use_service/ -/doc/asio/reference/execution_context/use_service.html -/doc/asio/reference/execution_context/use_service/overload1.html -/doc/asio/reference/execution_context/use_service/overload2.html -/doc/asio/reference/execution__execute.html -/doc/asio/reference/execution__executor_index/ -/doc/asio/reference/execution__executor_index.html -/doc/asio/reference/execution__executor_index/type.html -/doc/asio/reference/execution__executor_shape/ -/doc/asio/reference/execution__executor_shape.html -/doc/asio/reference/execution__executor_shape/type.html -/doc/asio/reference/execution__invocable_archetype/ -/doc/asio/reference/execution__invocable_archetype.html -/doc/asio/reference/execution__invocable_archetype/operator_lp__rp_.html -/doc/asio/reference/execution__is_executor.html -/doc/asio/reference/execution__is_executor_of.html -/doc/asio/reference/execution__is_nothrow_receiver_of.html -/doc/asio/reference/execution__is_operation_state.html -/doc/asio/reference/execution__is_receiver.html -/doc/asio/reference/execution__is_receiver_of.html -/doc/asio/reference/execution__is_scheduler.html -/doc/asio/reference/execution__is_sender.html -/doc/asio/reference/execution__is_sender_to.html -/doc/asio/reference/execution__is_typed_sender.html -/doc/asio/reference/execution__mapping.html -/doc/asio/reference/execution__mapping_t/ -/doc/asio/reference/execution__mapping_t.html -/doc/asio/reference/execution__mapping_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t/is_preferable.html -/doc/asio/reference/execution__mapping_t/is_requirable.html -/doc/asio/reference/execution__mapping_t/mapping_t/ -/doc/asio/reference/execution__mapping_t/mapping_t.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload1.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload2.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload3.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload4.html -/doc/asio/reference/execution__mapping_t/new_thread.html -/doc/asio/reference/execution__mapping_t__new_thread_t/ -/doc/asio/reference/execution__mapping_t__new_thread_t.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__new_thread_t/new_thread_t.html -/doc/asio/reference/execution__mapping_t__new_thread_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__new_thread_t/value.html -/doc/asio/reference/execution__mapping_t/operator_eq__eq_.html -/doc/asio/reference/execution__mapping_t/operator_not__eq_.html -/doc/asio/reference/execution__mapping_t/other.html -/doc/asio/reference/execution__mapping_t__other_t/ -/doc/asio/reference/execution__mapping_t__other_t.html -/doc/asio/reference/execution__mapping_t__other_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__other_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__other_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__other_t/other_t.html -/doc/asio/reference/execution__mapping_t__other_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__other_t/value.html -/doc/asio/reference/execution__mapping_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t/thread.html -/doc/asio/reference/execution__mapping_t__thread_t/ -/doc/asio/reference/execution__mapping_t__thread_t.html -/doc/asio/reference/execution__mapping_t__thread_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__thread_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__thread_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__thread_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__thread_t/thread_t.html -/doc/asio/reference/execution__mapping_t__thread_t/value.html -/doc/asio/reference/execution__occupancy.html -/doc/asio/reference/execution__occupancy_t/ -/doc/asio/reference/execution__occupancy_t.html -/doc/asio/reference/execution__occupancy_t/is_applicable_property_v.html -/doc/asio/reference/execution__occupancy_t/is_preferable.html -/doc/asio/reference/execution__occupancy_t/is_requirable.html -/doc/asio/reference/execution__occupancy_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work.html -/doc/asio/reference/execution__outstanding_work_t/ -/doc/asio/reference/execution__outstanding_work_t.html -/doc/asio/reference/execution__outstanding_work_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t/operator_eq__eq_.html -/doc/asio/reference/execution__outstanding_work_t/operator_not__eq_.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/ -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload1.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload2.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload3.html -/doc/asio/reference/execution__outstanding_work_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t/tracked.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/ -/doc/asio/reference/execution__outstanding_work_t__tracked_t.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/tracked_t.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/value.html -/doc/asio/reference/execution__outstanding_work_t/untracked.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/ -/doc/asio/reference/execution__outstanding_work_t__untracked_t.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/untracked_t.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/value.html -/doc/asio/reference/execution__prefer_only/ -/doc/asio/reference/execution__prefer_only.html -/doc/asio/reference/execution__prefer_only/is_applicable_property_v.html -/doc/asio/reference/execution__prefer_only/is_preferable.html -/doc/asio/reference/execution__prefer_only/is_requirable.html -/doc/asio/reference/execution__prefer_only/polymorphic_query_result_type.html -/doc/asio/reference/execution__receiver_invocation_error/ -/doc/asio/reference/execution__receiver_invocation_error.html -/doc/asio/reference/execution__receiver_invocation_error/receiver_invocation_error.html -/doc/asio/reference/execution__relationship.html -/doc/asio/reference/execution__relationship_t/ -/doc/asio/reference/execution__relationship_t/continuation.html -/doc/asio/reference/execution__relationship_t__continuation_t/ -/doc/asio/reference/execution__relationship_t__continuation_t/continuation_t.html -/doc/asio/reference/execution__relationship_t__continuation_t.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_preferable.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_requirable.html -/doc/asio/reference/execution__relationship_t__continuation_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t__continuation_t/value.html -/doc/asio/reference/execution__relationship_t/fork.html -/doc/asio/reference/execution__relationship_t__fork_t/ -/doc/asio/reference/execution__relationship_t__fork_t/fork_t.html -/doc/asio/reference/execution__relationship_t__fork_t.html -/doc/asio/reference/execution__relationship_t__fork_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t__fork_t/is_preferable.html -/doc/asio/reference/execution__relationship_t__fork_t/is_requirable.html -/doc/asio/reference/execution__relationship_t__fork_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t__fork_t/value.html -/doc/asio/reference/execution__relationship_t.html -/doc/asio/reference/execution__relationship_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t/is_preferable.html -/doc/asio/reference/execution__relationship_t/is_requirable.html -/doc/asio/reference/execution__relationship_t/operator_eq__eq_.html -/doc/asio/reference/execution__relationship_t/operator_not__eq_.html -/doc/asio/reference/execution__relationship_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t/relationship_t/ -/doc/asio/reference/execution__relationship_t/relationship_t.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload1.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload2.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload3.html -/doc/asio/reference/execution__schedule.html -/doc/asio/reference/execution__sender_base.html -/doc/asio/reference/execution__sender_traits.html -/doc/asio/reference/execution__set_done.html -/doc/asio/reference/execution__set_error.html -/doc/asio/reference/execution__set_value.html -/doc/asio/reference/execution__start.html -/doc/asio/reference/execution__submit.html -/doc/asio/reference/executor/ -/doc/asio/reference/Executor1.html -/doc/asio/reference/executor_arg.html -/doc/asio/reference/executor_arg_t/ -/doc/asio/reference/executor_arg_t/executor_arg_t.html -/doc/asio/reference/executor_arg_t.html -/doc/asio/reference/executor_binder/ -/doc/asio/reference/executor_binder/argument_type.html -/doc/asio/reference/executor_binder/executor_binder/ -/doc/asio/reference/executor_binder/_executor_binder.html -/doc/asio/reference/executor_binder/executor_binder.html -/doc/asio/reference/executor_binder/executor_binder/overload1.html -/doc/asio/reference/executor_binder/executor_binder/overload2.html -/doc/asio/reference/executor_binder/executor_binder/overload3.html -/doc/asio/reference/executor_binder/executor_binder/overload4.html -/doc/asio/reference/executor_binder/executor_binder/overload5.html -/doc/asio/reference/executor_binder/executor_binder/overload6.html -/doc/asio/reference/executor_binder/executor_binder/overload7.html -/doc/asio/reference/executor_binder/executor_binder/overload8.html -/doc/asio/reference/executor_binder/executor_binder/overload9.html -/doc/asio/reference/executor_binder/executor_type.html -/doc/asio/reference/executor_binder/first_argument_type.html -/doc/asio/reference/executor_binder/get/ -/doc/asio/reference/executor_binder/get_executor.html -/doc/asio/reference/executor_binder/get.html -/doc/asio/reference/executor_binder/get/overload1.html -/doc/asio/reference/executor_binder/get/overload2.html -/doc/asio/reference/executor_binder.html -/doc/asio/reference/executor_binder/operator_lp__rp_/ -/doc/asio/reference/executor_binder/operator_lp__rp_.html -/doc/asio/reference/executor_binder/operator_lp__rp_/overload1.html -/doc/asio/reference/executor_binder/operator_lp__rp_/overload2.html -/doc/asio/reference/executor_binder/result_type.html -/doc/asio/reference/executor_binder/second_argument_type.html -/doc/asio/reference/executor_binder/target_type.html -/doc/asio/reference/executor/context.html -/doc/asio/reference/executor/defer.html -/doc/asio/reference/executor/dispatch.html -/doc/asio/reference/executor/executor/ -/doc/asio/reference/executor/_executor.html -/doc/asio/reference/executor/executor.html -/doc/asio/reference/executor/executor/overload1.html -/doc/asio/reference/executor/executor/overload2.html -/doc/asio/reference/executor/executor/overload3.html -/doc/asio/reference/executor/executor/overload4.html -/doc/asio/reference/executor/executor/overload5.html -/doc/asio/reference/executor/executor/overload6.html -/doc/asio/reference/executor.html -/doc/asio/reference/executor/on_work_finished.html -/doc/asio/reference/executor/on_work_started.html -/doc/asio/reference/executor/operator_eq_/ -/doc/asio/reference/executor/operator_eq__eq_.html -/doc/asio/reference/executor/operator_eq_.html -/doc/asio/reference/executor/operator_eq_/overload1.html -/doc/asio/reference/executor/operator_eq_/overload2.html -/doc/asio/reference/executor/operator_eq_/overload3.html -/doc/asio/reference/executor/operator_eq_/overload4.html -/doc/asio/reference/executor/operator_not__eq_.html -/doc/asio/reference/executor/operator_unspecified_bool_type.html -/doc/asio/reference/executor/post.html -/doc/asio/reference/executor/target/ -/doc/asio/reference/executor/target.html -/doc/asio/reference/executor/target/overload1.html -/doc/asio/reference/executor/target/overload2.html -/doc/asio/reference/executor/target_type.html -/doc/asio/reference/executor/unspecified_bool_true.html -/doc/asio/reference/executor/unspecified_bool_type.html -/doc/asio/reference/executor__unspecified_bool_type_t.html -/doc/asio/reference/executor_work_guard/ -/doc/asio/reference/executor_work_guard/executor_type.html -/doc/asio/reference/executor_work_guard/executor_work_guard/ -/doc/asio/reference/executor_work_guard/_executor_work_guard.html -/doc/asio/reference/executor_work_guard/executor_work_guard.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload1.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload2.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload3.html -/doc/asio/reference/executor_work_guard/get_executor.html -/doc/asio/reference/executor_work_guard.html -/doc/asio/reference/executor_work_guard/owns_work.html -/doc/asio/reference/executor_work_guard/reset.html -/doc/asio/reference/experimental__as_single.html -/doc/asio/reference/experimental__as_single_t/ -/doc/asio/reference/experimental__as_single_t/as_default_on.html -/doc/asio/reference/experimental__as_single_t/as_single_t/ -/doc/asio/reference/experimental__as_single_t/as_single_t.html -/doc/asio/reference/experimental__as_single_t/as_single_t/overload1.html -/doc/asio/reference/experimental__as_single_t/as_single_t/overload2.html -/doc/asio/reference/experimental__as_single_t__default_constructor_tag.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/ -/doc/asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html -/doc/asio/reference/experimental__as_single_t__executor_with_default.html -/doc/asio/reference/experimental__as_single_t.html -/doc/asio/reference/experimental__as_single_t/token_.html -/doc/asio/reference/generic__basic_endpoint/ -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/ -/doc/asio/reference/generic__basic_endpoint/basic_endpoint.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/generic__basic_endpoint/capacity.html -/doc/asio/reference/generic__basic_endpoint/data/ -/doc/asio/reference/generic__basic_endpoint/data.html -/doc/asio/reference/generic__basic_endpoint/data/overload1.html -/doc/asio/reference/generic__basic_endpoint/data/overload2.html -/doc/asio/reference/generic__basic_endpoint/data_type.html -/doc/asio/reference/generic__basic_endpoint.html -/doc/asio/reference/generic__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_gt_.html -/doc/asio/reference/generic__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_lt_.html -/doc/asio/reference/generic__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/generic__basic_endpoint/protocol.html -/doc/asio/reference/generic__basic_endpoint/protocol_type.html -/doc/asio/reference/generic__basic_endpoint/resize.html -/doc/asio/reference/generic__basic_endpoint/size.html -/doc/asio/reference/generic__datagram_protocol/ -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/ -/doc/asio/reference/generic__datagram_protocol/datagram_protocol.html -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/overload1.html -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/overload2.html -/doc/asio/reference/generic__datagram_protocol/endpoint.html -/doc/asio/reference/generic__datagram_protocol/family.html -/doc/asio/reference/generic__datagram_protocol.html -/doc/asio/reference/generic__datagram_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__datagram_protocol/operator_not__eq_.html -/doc/asio/reference/generic__datagram_protocol/protocol.html -/doc/asio/reference/generic__datagram_protocol/socket.html -/doc/asio/reference/generic__datagram_protocol/type.html -/doc/asio/reference/generic__raw_protocol/ -/doc/asio/reference/generic__raw_protocol/endpoint.html -/doc/asio/reference/generic__raw_protocol/family.html -/doc/asio/reference/generic__raw_protocol.html -/doc/asio/reference/generic__raw_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__raw_protocol/operator_not__eq_.html -/doc/asio/reference/generic__raw_protocol/protocol.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/ -/doc/asio/reference/generic__raw_protocol/raw_protocol.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/overload1.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/overload2.html -/doc/asio/reference/generic__raw_protocol/socket.html -/doc/asio/reference/generic__raw_protocol/type.html -/doc/asio/reference/generic__seq_packet_protocol/ -/doc/asio/reference/generic__seq_packet_protocol/endpoint.html -/doc/asio/reference/generic__seq_packet_protocol/family.html -/doc/asio/reference/generic__seq_packet_protocol.html -/doc/asio/reference/generic__seq_packet_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__seq_packet_protocol/operator_not__eq_.html -/doc/asio/reference/generic__seq_packet_protocol/protocol.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/ -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload1.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload2.html -/doc/asio/reference/generic__seq_packet_protocol/socket.html -/doc/asio/reference/generic__seq_packet_protocol/type.html -/doc/asio/reference/generic__stream_protocol/ -/doc/asio/reference/generic__stream_protocol/endpoint.html -/doc/asio/reference/generic__stream_protocol/family.html -/doc/asio/reference/generic__stream_protocol.html -/doc/asio/reference/generic__stream_protocol/iostream.html -/doc/asio/reference/generic__stream_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__stream_protocol/operator_not__eq_.html -/doc/asio/reference/generic__stream_protocol/protocol.html -/doc/asio/reference/generic__stream_protocol/socket.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/ -/doc/asio/reference/generic__stream_protocol/stream_protocol.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/overload1.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/overload2.html -/doc/asio/reference/generic__stream_protocol/type.html -/doc/asio/reference/get_associated_allocator/ -/doc/asio/reference/get_associated_allocator.html -/doc/asio/reference/get_associated_allocator/overload1.html -/doc/asio/reference/get_associated_allocator/overload2.html -/doc/asio/reference/get_associated_executor/ -/doc/asio/reference/get_associated_executor.html -/doc/asio/reference/get_associated_executor/overload1.html -/doc/asio/reference/get_associated_executor/overload2.html -/doc/asio/reference/get_associated_executor/overload3.html -/doc/asio/reference/GettableSerialPortOption.html -/doc/asio/reference/GettableSocketOption.html -/doc/asio/reference/Handler.html -/doc/asio/reference/HandshakeHandler.html -/doc/asio/reference/high_resolution_timer.html -/doc/asio/reference.html -/doc/asio/reference/InternetProtocol.html -/doc/asio/reference/invalid_service_owner/ -/doc/asio/reference/invalid_service_owner.html -/doc/asio/reference/invalid_service_owner/invalid_service_owner.html -/doc/asio/reference/io_context/ -/doc/asio/reference/io_context/add_service.html -/doc/asio/reference/io_context__basic_executor_type/ -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/ -/doc/asio/reference/io_context__basic_executor_type/_basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/overload1.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/overload2.html -/doc/asio/reference/io_context__basic_executor_type/context.html -/doc/asio/reference/io_context__basic_executor_type/defer.html -/doc/asio/reference/io_context__basic_executor_type/dispatch.html -/doc/asio/reference/io_context__basic_executor_type/execute.html -/doc/asio/reference/io_context__basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/on_work_finished.html -/doc/asio/reference/io_context__basic_executor_type/on_work_started.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/ -/doc/asio/reference/io_context__basic_executor_type/operator_eq__eq_.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/overload1.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/overload2.html -/doc/asio/reference/io_context__basic_executor_type/operator_not__eq_.html -/doc/asio/reference/io_context__basic_executor_type/post.html -/doc/asio/reference/io_context__basic_executor_type/query/ -/doc/asio/reference/io_context__basic_executor_type/query.html -/doc/asio/reference/io_context__basic_executor_type/query/overload1.html -/doc/asio/reference/io_context__basic_executor_type/query/overload2.html -/doc/asio/reference/io_context__basic_executor_type/query/overload3.html -/doc/asio/reference/io_context__basic_executor_type/query/overload4.html -/doc/asio/reference/io_context__basic_executor_type/query/overload5.html -/doc/asio/reference/io_context__basic_executor_type/query__static/ -/doc/asio/reference/io_context__basic_executor_type/query__static.html -/doc/asio/reference/io_context__basic_executor_type/query__static/overload1.html -/doc/asio/reference/io_context__basic_executor_type/query__static/overload2.html -/doc/asio/reference/io_context__basic_executor_type/require/ -/doc/asio/reference/io_context__basic_executor_type/require.html -/doc/asio/reference/io_context__basic_executor_type/require/overload1.html -/doc/asio/reference/io_context__basic_executor_type/require/overload2.html -/doc/asio/reference/io_context__basic_executor_type/require/overload3.html -/doc/asio/reference/io_context__basic_executor_type/require/overload4.html -/doc/asio/reference/io_context__basic_executor_type/require/overload5.html -/doc/asio/reference/io_context__basic_executor_type/require/overload6.html -/doc/asio/reference/io_context__basic_executor_type/require/overload7.html -/doc/asio/reference/io_context__basic_executor_type/require/overload8.html -/doc/asio/reference/io_context__basic_executor_type/running_in_this_thread.html -/doc/asio/reference/io_context/count_type.html -/doc/asio/reference/io_context/destroy.html -/doc/asio/reference/io_context/dispatch.html -/doc/asio/reference/io_context/executor_type.html -/doc/asio/reference/io_context/fork_event.html -/doc/asio/reference/io_context/get_executor.html -/doc/asio/reference/io_context/has_service.html -/doc/asio/reference/io_context.html -/doc/asio/reference/io_context/io_context/ -/doc/asio/reference/io_context/_io_context.html -/doc/asio/reference/io_context/io_context.html -/doc/asio/reference/io_context/io_context/overload1.html -/doc/asio/reference/io_context/io_context/overload2.html -/doc/asio/reference/io_context/make_service.html -/doc/asio/reference/io_context/notify_fork.html -/doc/asio/reference/io_context/poll/ -/doc/asio/reference/io_context/poll.html -/doc/asio/reference/io_context/poll_one/ -/doc/asio/reference/io_context/poll_one.html -/doc/asio/reference/io_context/poll_one/overload1.html -/doc/asio/reference/io_context/poll_one/overload2.html -/doc/asio/reference/io_context/poll/overload1.html -/doc/asio/reference/io_context/poll/overload2.html -/doc/asio/reference/io_context/post.html -/doc/asio/reference/io_context/reset.html -/doc/asio/reference/io_context/restart.html -/doc/asio/reference/io_context/run/ -/doc/asio/reference/io_context/run_for.html -/doc/asio/reference/io_context/run.html -/doc/asio/reference/io_context/run_one/ -/doc/asio/reference/io_context/run_one_for.html -/doc/asio/reference/io_context/run_one.html -/doc/asio/reference/io_context/run_one/overload1.html -/doc/asio/reference/io_context/run_one/overload2.html -/doc/asio/reference/io_context/run_one_until.html -/doc/asio/reference/io_context/run/overload1.html -/doc/asio/reference/io_context/run/overload2.html -/doc/asio/reference/io_context/run_until.html -/doc/asio/reference/io_context__service/ -/doc/asio/reference/io_context__service/get_io_context.html -/doc/asio/reference/io_context__service.html -/doc/asio/reference/io_context__service/_service.html -/doc/asio/reference/io_context__service/service.html -/doc/asio/reference/io_context/shutdown.html -/doc/asio/reference/io_context/stop.html -/doc/asio/reference/io_context/stopped.html -/doc/asio/reference/io_context__strand/ -/doc/asio/reference/io_context__strand/context.html -/doc/asio/reference/io_context__strand/defer.html -/doc/asio/reference/io_context__strand/dispatch/ -/doc/asio/reference/io_context__strand/dispatch.html -/doc/asio/reference/io_context__strand/dispatch/overload1.html -/doc/asio/reference/io_context__strand/dispatch/overload2.html -/doc/asio/reference/io_context__strand.html -/doc/asio/reference/io_context__strand/on_work_finished.html -/doc/asio/reference/io_context__strand/on_work_started.html -/doc/asio/reference/io_context__strand/operator_eq__eq_.html -/doc/asio/reference/io_context__strand/operator_not__eq_.html -/doc/asio/reference/io_context__strand/post/ -/doc/asio/reference/io_context__strand/post.html -/doc/asio/reference/io_context__strand/post/overload1.html -/doc/asio/reference/io_context__strand/post/overload2.html -/doc/asio/reference/io_context__strand/running_in_this_thread.html -/doc/asio/reference/io_context__strand/_strand.html -/doc/asio/reference/io_context__strand/strand.html -/doc/asio/reference/io_context__strand/wrap.html -/doc/asio/reference/io_context/use_service/ -/doc/asio/reference/io_context/use_service.html -/doc/asio/reference/io_context/use_service/overload1.html -/doc/asio/reference/io_context/use_service/overload2.html -/doc/asio/reference/io_context__work/ -/doc/asio/reference/io_context__work/get_io_context.html -/doc/asio/reference/io_context__work.html -/doc/asio/reference/io_context__work/work/ -/doc/asio/reference/io_context__work/_work.html -/doc/asio/reference/io_context__work/work.html -/doc/asio/reference/io_context__work/work/overload1.html -/doc/asio/reference/io_context__work/work/overload2.html -/doc/asio/reference/io_context/wrap.html -/doc/asio/reference/IoControlCommand.html -/doc/asio/reference/IoObjectService.html -/doc/asio/reference/io_service.html -/doc/asio/reference/ip__address/ -/doc/asio/reference/ip__address/address/ -/doc/asio/reference/ip__address/address.html -/doc/asio/reference/ip__address/address/overload1.html -/doc/asio/reference/ip__address/address/overload2.html -/doc/asio/reference/ip__address/address/overload3.html -/doc/asio/reference/ip__address/address/overload4.html -/doc/asio/reference/ip__address/from_string/ -/doc/asio/reference/ip__address/from_string.html -/doc/asio/reference/ip__address/from_string/overload1.html -/doc/asio/reference/ip__address/from_string/overload2.html -/doc/asio/reference/ip__address/from_string/overload3.html -/doc/asio/reference/ip__address/from_string/overload4.html -/doc/asio/reference/ip__address.html -/doc/asio/reference/ip__address/is_loopback.html -/doc/asio/reference/ip__address/is_multicast.html -/doc/asio/reference/ip__address/is_unspecified.html -/doc/asio/reference/ip__address/is_v4.html -/doc/asio/reference/ip__address/is_v6.html -/doc/asio/reference/ip__address/make_address/ -/doc/asio/reference/ip__address/make_address.html -/doc/asio/reference/ip__address/make_address/overload1.html -/doc/asio/reference/ip__address/make_address/overload2.html -/doc/asio/reference/ip__address/make_address/overload3.html -/doc/asio/reference/ip__address/make_address/overload4.html -/doc/asio/reference/ip__address/make_address/overload5.html -/doc/asio/reference/ip__address/make_address/overload6.html -/doc/asio/reference/ip__address/operator_eq_/ -/doc/asio/reference/ip__address/operator_eq__eq_.html -/doc/asio/reference/ip__address/operator_eq_.html -/doc/asio/reference/ip__address/operator_eq_/overload1.html -/doc/asio/reference/ip__address/operator_eq_/overload2.html -/doc/asio/reference/ip__address/operator_eq_/overload3.html -/doc/asio/reference/ip__address/operator_gt__eq_.html -/doc/asio/reference/ip__address/operator_gt_.html -/doc/asio/reference/ip__address/operator_lt__eq_.html -/doc/asio/reference/ip__address/operator_lt_.html -/doc/asio/reference/ip__address/operator_lt__lt_.html -/doc/asio/reference/ip__address/operator_not__eq_.html -/doc/asio/reference/ip__address/to_string/ -/doc/asio/reference/ip__address/to_string.html -/doc/asio/reference/ip__address/to_string/overload1.html -/doc/asio/reference/ip__address/to_string/overload2.html -/doc/asio/reference/ip__address/to_v4.html -/doc/asio/reference/ip__address/to_v6.html -/doc/asio/reference/ip__address_v4/ -/doc/asio/reference/ip__address_v4/address_v4/ -/doc/asio/reference/ip__address_v4/address_v4.html -/doc/asio/reference/ip__address_v4/address_v4/overload1.html -/doc/asio/reference/ip__address_v4/address_v4/overload2.html -/doc/asio/reference/ip__address_v4/address_v4/overload3.html -/doc/asio/reference/ip__address_v4/address_v4/overload4.html -/doc/asio/reference/ip__address_v4/any.html -/doc/asio/reference/ip__address_v4/broadcast/ -/doc/asio/reference/ip__address_v4/broadcast.html -/doc/asio/reference/ip__address_v4/broadcast/overload1.html -/doc/asio/reference/ip__address_v4/broadcast/overload2.html -/doc/asio/reference/ip__address_v4/bytes_type.html -/doc/asio/reference/ip__address_v4/from_string/ -/doc/asio/reference/ip__address_v4/from_string.html -/doc/asio/reference/ip__address_v4/from_string/overload1.html -/doc/asio/reference/ip__address_v4/from_string/overload2.html -/doc/asio/reference/ip__address_v4/from_string/overload3.html -/doc/asio/reference/ip__address_v4/from_string/overload4.html -/doc/asio/reference/ip__address_v4.html -/doc/asio/reference/ip__address_v4/is_class_a.html -/doc/asio/reference/ip__address_v4/is_class_b.html -/doc/asio/reference/ip__address_v4/is_class_c.html -/doc/asio/reference/ip__address_v4/is_loopback.html -/doc/asio/reference/ip__address_v4/is_multicast.html -/doc/asio/reference/ip__address_v4/is_unspecified.html -/doc/asio/reference/ip__address_v4_iterator.html -/doc/asio/reference/ip__address_v4/loopback.html -/doc/asio/reference/ip__address_v4/make_address_v4/ -/doc/asio/reference/ip__address_v4/make_address_v4.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload1.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload2.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload3.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload4.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload5.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload6.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload7.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload8.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload9.html -/doc/asio/reference/ip__address_v4/make_network_v4/ -/doc/asio/reference/ip__address_v4/make_network_v4.html -/doc/asio/reference/ip__address_v4/make_network_v4/overload1.html -/doc/asio/reference/ip__address_v4/make_network_v4/overload2.html -/doc/asio/reference/ip__address_v4/netmask.html -/doc/asio/reference/ip__address_v4/operator_eq__eq_.html -/doc/asio/reference/ip__address_v4/operator_eq_.html -/doc/asio/reference/ip__address_v4/operator_gt__eq_.html -/doc/asio/reference/ip__address_v4/operator_gt_.html -/doc/asio/reference/ip__address_v4/operator_lt__eq_.html -/doc/asio/reference/ip__address_v4/operator_lt_.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/ -/doc/asio/reference/ip__address_v4/operator_lt__lt_.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/overload1.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/overload2.html -/doc/asio/reference/ip__address_v4/operator_not__eq_.html -/doc/asio/reference/ip__address_v4_range.html -/doc/asio/reference/ip__address_v4/to_bytes.html -/doc/asio/reference/ip__address_v4/to_string/ -/doc/asio/reference/ip__address_v4/to_string.html -/doc/asio/reference/ip__address_v4/to_string/overload1.html -/doc/asio/reference/ip__address_v4/to_string/overload2.html -/doc/asio/reference/ip__address_v4/to_uint.html -/doc/asio/reference/ip__address_v4/to_ulong.html -/doc/asio/reference/ip__address_v4/uint_type.html -/doc/asio/reference/ip__address_v6/ -/doc/asio/reference/ip__address_v6/address_v6/ -/doc/asio/reference/ip__address_v6/address_v6.html -/doc/asio/reference/ip__address_v6/address_v6/overload1.html -/doc/asio/reference/ip__address_v6/address_v6/overload2.html -/doc/asio/reference/ip__address_v6/address_v6/overload3.html -/doc/asio/reference/ip__address_v6/any.html -/doc/asio/reference/ip__address_v6/bytes_type.html -/doc/asio/reference/ip__address_v6/from_string/ -/doc/asio/reference/ip__address_v6/from_string.html -/doc/asio/reference/ip__address_v6/from_string/overload1.html -/doc/asio/reference/ip__address_v6/from_string/overload2.html -/doc/asio/reference/ip__address_v6/from_string/overload3.html -/doc/asio/reference/ip__address_v6/from_string/overload4.html -/doc/asio/reference/ip__address_v6.html -/doc/asio/reference/ip__address_v6/is_link_local.html -/doc/asio/reference/ip__address_v6/is_loopback.html -/doc/asio/reference/ip__address_v6/is_multicast_global.html -/doc/asio/reference/ip__address_v6/is_multicast.html -/doc/asio/reference/ip__address_v6/is_multicast_link_local.html -/doc/asio/reference/ip__address_v6/is_multicast_node_local.html -/doc/asio/reference/ip__address_v6/is_multicast_org_local.html -/doc/asio/reference/ip__address_v6/is_multicast_site_local.html -/doc/asio/reference/ip__address_v6/is_site_local.html -/doc/asio/reference/ip__address_v6/is_unspecified.html -/doc/asio/reference/ip__address_v6/is_v4_compatible.html -/doc/asio/reference/ip__address_v6/is_v4_mapped.html -/doc/asio/reference/ip__address_v6_iterator.html -/doc/asio/reference/ip__address_v6/loopback.html -/doc/asio/reference/ip__address_v6/make_address_v6/ -/doc/asio/reference/ip__address_v6/make_address_v6.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload1.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload2.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload3.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload4.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload5.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload6.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload7.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload8.html -/doc/asio/reference/ip__address_v6/make_network_v6.html -/doc/asio/reference/ip__address_v6/operator_eq__eq_.html -/doc/asio/reference/ip__address_v6/operator_eq_.html -/doc/asio/reference/ip__address_v6/operator_gt__eq_.html -/doc/asio/reference/ip__address_v6/operator_gt_.html -/doc/asio/reference/ip__address_v6/operator_lt__eq_.html -/doc/asio/reference/ip__address_v6/operator_lt_.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/ -/doc/asio/reference/ip__address_v6/operator_lt__lt_.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/overload1.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/overload2.html -/doc/asio/reference/ip__address_v6/operator_not__eq_.html -/doc/asio/reference/ip__address_v6_range.html -/doc/asio/reference/ip__address_v6/scope_id/ -/doc/asio/reference/ip__address_v6/scope_id.html -/doc/asio/reference/ip__address_v6/scope_id/overload1.html -/doc/asio/reference/ip__address_v6/scope_id/overload2.html -/doc/asio/reference/ip__address_v6/to_bytes.html -/doc/asio/reference/ip__address_v6/to_string/ -/doc/asio/reference/ip__address_v6/to_string.html -/doc/asio/reference/ip__address_v6/to_string/overload1.html -/doc/asio/reference/ip__address_v6/to_string/overload2.html -/doc/asio/reference/ip__address_v6/to_v4.html -/doc/asio/reference/ip__address_v6/v4_compatible.html -/doc/asio/reference/ip__address_v6/v4_mapped.html -/doc/asio/reference/ip__bad_address_cast/ -/doc/asio/reference/ip__bad_address_cast/_bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast/bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast/what.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/difference_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/iterator_category.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_arrow_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_not__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator__star_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/pointer.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/reference.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/value_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/difference_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/iterator_category.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_arrow_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_not__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator__star_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/pointer.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/reference.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/value_type.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/ -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/ -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload1.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload2.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload3.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/begin.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/empty.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/end.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/find.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/iterator.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/size.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/ -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/ -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload1.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload2.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload3.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/begin.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/empty.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/end.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/find.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/iterator.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_endpoint/ -/doc/asio/reference/ip__basic_endpoint/address/ -/doc/asio/reference/ip__basic_endpoint/address.html -/doc/asio/reference/ip__basic_endpoint/address/overload1.html -/doc/asio/reference/ip__basic_endpoint/address/overload2.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/ -/doc/asio/reference/ip__basic_endpoint/basic_endpoint.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload5.html -/doc/asio/reference/ip__basic_endpoint/capacity.html -/doc/asio/reference/ip__basic_endpoint/data/ -/doc/asio/reference/ip__basic_endpoint/data.html -/doc/asio/reference/ip__basic_endpoint/data/overload1.html -/doc/asio/reference/ip__basic_endpoint/data/overload2.html -/doc/asio/reference/ip__basic_endpoint/data_type.html -/doc/asio/reference/ip__basic_endpoint.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/ -/doc/asio/reference/ip__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_gt_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt__lt_.html -/doc/asio/reference/ip__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/ip__basic_endpoint/port/ -/doc/asio/reference/ip__basic_endpoint/port.html -/doc/asio/reference/ip__basic_endpoint/port/overload1.html -/doc/asio/reference/ip__basic_endpoint/port/overload2.html -/doc/asio/reference/ip__basic_endpoint/protocol.html -/doc/asio/reference/ip__basic_endpoint/protocol_type.html -/doc/asio/reference/ip__basic_endpoint/resize.html -/doc/asio/reference/ip__basic_endpoint/size.html -/doc/asio/reference/ip__basic_resolver/ -/doc/asio/reference/ip__basic_resolver/address_configured.html -/doc/asio/reference/ip__basic_resolver/all_matching.html -/doc/asio/reference/ip__basic_resolver/async_resolve/ -/doc/asio/reference/ip__basic_resolver/async_resolve.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload1.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload2.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload3.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload4.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload5.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload6.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/ -/doc/asio/reference/ip__basic_resolver/_basic_resolver.html -/doc/asio/reference/ip__basic_resolver/basic_resolver.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload1.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload2.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload3.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload4.html -/doc/asio/reference/ip__basic_resolver/cancel.html -/doc/asio/reference/ip__basic_resolver/canonical_name.html -/doc/asio/reference/ip__basic_resolver/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/ -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/ -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry.html -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload2.html -/doc/asio/reference/ip__basic_resolver_entry/endpoint.html -/doc/asio/reference/ip__basic_resolver_entry/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/ -/doc/asio/reference/ip__basic_resolver_entry/host_name.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/overload2.html -/doc/asio/reference/ip__basic_resolver_entry.html -/doc/asio/reference/ip__basic_resolver_entry/operator_endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/protocol_type.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/ -/doc/asio/reference/ip__basic_resolver_entry/service_name.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/overload2.html -/doc/asio/reference/ip__basic_resolver/executor_type.html -/doc/asio/reference/ip__basic_resolver/flags.html -/doc/asio/reference/ip__basic_resolver/get_executor.html -/doc/asio/reference/ip__basic_resolver.html -/doc/asio/reference/ip__basic_resolver_iterator/ -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/ -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload3.html -/doc/asio/reference/ip__basic_resolver_iterator/dereference.html -/doc/asio/reference/ip__basic_resolver_iterator/difference_type.html -/doc/asio/reference/ip__basic_resolver_iterator/equal.html -/doc/asio/reference/ip__basic_resolver/iterator.html -/doc/asio/reference/ip__basic_resolver_iterator.html -/doc/asio/reference/ip__basic_resolver_iterator/increment.html -/doc/asio/reference/ip__basic_resolver_iterator/index_.html -/doc/asio/reference/ip__basic_resolver_iterator/iterator_category.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_arrow_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/ -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq__eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_not__eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/ -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/operator__star_.html -/doc/asio/reference/ip__basic_resolver_iterator/pointer.html -/doc/asio/reference/ip__basic_resolver_iterator/reference.html -/doc/asio/reference/ip__basic_resolver_iterator/values_.html -/doc/asio/reference/ip__basic_resolver_iterator/value_type.html -/doc/asio/reference/ip__basic_resolver/numeric_host.html -/doc/asio/reference/ip__basic_resolver/numeric_service.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/ -/doc/asio/reference/ip__basic_resolver/operator_eq_.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver/passive.html -/doc/asio/reference/ip__basic_resolver/protocol_type.html -/doc/asio/reference/ip__basic_resolver_query/ -/doc/asio/reference/ip__basic_resolver_query/address_configured.html -/doc/asio/reference/ip__basic_resolver_query/all_matching.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/ -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload1.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload2.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload3.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html -/doc/asio/reference/ip__basic_resolver_query/canonical_name.html -/doc/asio/reference/ip__basic_resolver_query/flags.html -/doc/asio/reference/ip__basic_resolver_query/hints.html -/doc/asio/reference/ip__basic_resolver_query/host_name.html -/doc/asio/reference/ip__basic_resolver/query.html -/doc/asio/reference/ip__basic_resolver_query.html -/doc/asio/reference/ip__basic_resolver_query/numeric_host.html -/doc/asio/reference/ip__basic_resolver_query/numeric_service.html -/doc/asio/reference/ip__basic_resolver_query/passive.html -/doc/asio/reference/ip__basic_resolver_query/protocol_type.html -/doc/asio/reference/ip__basic_resolver_query/service_name.html -/doc/asio/reference/ip__basic_resolver_query/v4_mapped.html -/doc/asio/reference/ip__basic_resolver__rebind_executor/ -/doc/asio/reference/ip__basic_resolver__rebind_executor.html -/doc/asio/reference/ip__basic_resolver__rebind_executor/other.html -/doc/asio/reference/ip__basic_resolver/resolve/ -/doc/asio/reference/ip__basic_resolver/resolve.html -/doc/asio/reference/ip__basic_resolver/resolve/overload10.html -/doc/asio/reference/ip__basic_resolver/resolve/overload11.html -/doc/asio/reference/ip__basic_resolver/resolve/overload12.html -/doc/asio/reference/ip__basic_resolver/resolve/overload1.html -/doc/asio/reference/ip__basic_resolver/resolve/overload2.html -/doc/asio/reference/ip__basic_resolver/resolve/overload3.html -/doc/asio/reference/ip__basic_resolver/resolve/overload4.html -/doc/asio/reference/ip__basic_resolver/resolve/overload5.html -/doc/asio/reference/ip__basic_resolver/resolve/overload6.html -/doc/asio/reference/ip__basic_resolver/resolve/overload7.html -/doc/asio/reference/ip__basic_resolver/resolve/overload8.html -/doc/asio/reference/ip__basic_resolver/resolve/overload9.html -/doc/asio/reference/ip__basic_resolver_results/ -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/ -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload1.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload2.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload3.html -/doc/asio/reference/ip__basic_resolver_results/begin.html -/doc/asio/reference/ip__basic_resolver_results/cbegin.html -/doc/asio/reference/ip__basic_resolver_results/cend.html -/doc/asio/reference/ip__basic_resolver_results/const_iterator.html -/doc/asio/reference/ip__basic_resolver_results/const_reference.html -/doc/asio/reference/ip__basic_resolver_results/dereference.html -/doc/asio/reference/ip__basic_resolver_results/difference_type.html -/doc/asio/reference/ip__basic_resolver_results/empty.html -/doc/asio/reference/ip__basic_resolver_results/end.html -/doc/asio/reference/ip__basic_resolver_results/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_results/equal.html -/doc/asio/reference/ip__basic_resolver_results.html -/doc/asio/reference/ip__basic_resolver_results/increment.html -/doc/asio/reference/ip__basic_resolver_results/index_.html -/doc/asio/reference/ip__basic_resolver_results/iterator_category.html -/doc/asio/reference/ip__basic_resolver_results/iterator.html -/doc/asio/reference/ip__basic_resolver_results/max_size.html -/doc/asio/reference/ip__basic_resolver_results/operator_arrow_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/ -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator__star_.html -/doc/asio/reference/ip__basic_resolver_results/pointer.html -/doc/asio/reference/ip__basic_resolver_results/protocol_type.html -/doc/asio/reference/ip__basic_resolver_results/reference.html -/doc/asio/reference/ip__basic_resolver_results/size.html -/doc/asio/reference/ip__basic_resolver_results/size_type.html -/doc/asio/reference/ip__basic_resolver_results/swap.html -/doc/asio/reference/ip__basic_resolver/results_type.html -/doc/asio/reference/ip__basic_resolver_results/values_.html -/doc/asio/reference/ip__basic_resolver_results/value_type.html -/doc/asio/reference/ip__basic_resolver/v4_mapped.html -/doc/asio/reference/ip__host_name/ -/doc/asio/reference/ip__host_name.html -/doc/asio/reference/ip__host_name/overload1.html -/doc/asio/reference/ip__host_name/overload2.html -/doc/asio/reference/ip__icmp/ -/doc/asio/reference/ip__icmp/endpoint.html -/doc/asio/reference/ip__icmp/family.html -/doc/asio/reference/ip__icmp.html -/doc/asio/reference/ip__icmp/operator_eq__eq_.html -/doc/asio/reference/ip__icmp/operator_not__eq_.html -/doc/asio/reference/ip__icmp/protocol.html -/doc/asio/reference/ip__icmp/resolver.html -/doc/asio/reference/ip__icmp/socket.html -/doc/asio/reference/ip__icmp/type.html -/doc/asio/reference/ip__icmp/v4.html -/doc/asio/reference/ip__icmp/v6.html -/doc/asio/reference/ip__multicast__enable_loopback.html -/doc/asio/reference/ip__multicast__hops.html -/doc/asio/reference/ip__multicast__join_group.html -/doc/asio/reference/ip__multicast__leave_group.html -/doc/asio/reference/ip__multicast__outbound_interface.html -/doc/asio/reference/ip__network_v4/ -/doc/asio/reference/ip__network_v4/address.html -/doc/asio/reference/ip__network_v4/broadcast.html -/doc/asio/reference/ip__network_v4/canonical.html -/doc/asio/reference/ip__network_v4/hosts.html -/doc/asio/reference/ip__network_v4.html -/doc/asio/reference/ip__network_v4/is_host.html -/doc/asio/reference/ip__network_v4/is_subnet_of.html -/doc/asio/reference/ip__network_v4/make_network_v4/ -/doc/asio/reference/ip__network_v4/make_network_v4.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload1.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload2.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload3.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload4.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload5.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload6.html -/doc/asio/reference/ip__network_v4/netmask.html -/doc/asio/reference/ip__network_v4/network.html -/doc/asio/reference/ip__network_v4/network_v4/ -/doc/asio/reference/ip__network_v4/network_v4.html -/doc/asio/reference/ip__network_v4/network_v4/overload1.html -/doc/asio/reference/ip__network_v4/network_v4/overload2.html -/doc/asio/reference/ip__network_v4/network_v4/overload3.html -/doc/asio/reference/ip__network_v4/network_v4/overload4.html -/doc/asio/reference/ip__network_v4/operator_eq__eq_.html -/doc/asio/reference/ip__network_v4/operator_eq_.html -/doc/asio/reference/ip__network_v4/operator_not__eq_.html -/doc/asio/reference/ip__network_v4/prefix_length.html -/doc/asio/reference/ip__network_v4/to_string/ -/doc/asio/reference/ip__network_v4/to_string.html -/doc/asio/reference/ip__network_v4/to_string/overload1.html -/doc/asio/reference/ip__network_v4/to_string/overload2.html -/doc/asio/reference/ip__network_v6/ -/doc/asio/reference/ip__network_v6/address.html -/doc/asio/reference/ip__network_v6/canonical.html -/doc/asio/reference/ip__network_v6/hosts.html -/doc/asio/reference/ip__network_v6.html -/doc/asio/reference/ip__network_v6/is_host.html -/doc/asio/reference/ip__network_v6/is_subnet_of.html -/doc/asio/reference/ip__network_v6/make_network_v6/ -/doc/asio/reference/ip__network_v6/make_network_v6.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload1.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload2.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload3.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload4.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload5.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload6.html -/doc/asio/reference/ip__network_v6/network.html -/doc/asio/reference/ip__network_v6/network_v6/ -/doc/asio/reference/ip__network_v6/network_v6.html -/doc/asio/reference/ip__network_v6/network_v6/overload1.html -/doc/asio/reference/ip__network_v6/network_v6/overload2.html -/doc/asio/reference/ip__network_v6/network_v6/overload3.html -/doc/asio/reference/ip__network_v6/operator_eq__eq_.html -/doc/asio/reference/ip__network_v6/operator_eq_.html -/doc/asio/reference/ip__network_v6/operator_not__eq_.html -/doc/asio/reference/ip__network_v6/prefix_length.html -/doc/asio/reference/ip__network_v6/to_string/ -/doc/asio/reference/ip__network_v6/to_string.html -/doc/asio/reference/ip__network_v6/to_string/overload1.html -/doc/asio/reference/ip__network_v6/to_string/overload2.html -/doc/asio/reference/ip__resolver_base/ -/doc/asio/reference/ip__resolver_base/address_configured.html -/doc/asio/reference/ip__resolver_base/all_matching.html -/doc/asio/reference/ip__resolver_base/canonical_name.html -/doc/asio/reference/ip__resolver_base/flags.html -/doc/asio/reference/ip__resolver_base.html -/doc/asio/reference/ip__resolver_base/numeric_host.html -/doc/asio/reference/ip__resolver_base/numeric_service.html -/doc/asio/reference/ip__resolver_base/passive.html -/doc/asio/reference/ip__resolver_base/_resolver_base.html -/doc/asio/reference/ip__resolver_base/v4_mapped.html -/doc/asio/reference/ip__resolver_query_base/ -/doc/asio/reference/ip__resolver_query_base/address_configured.html -/doc/asio/reference/ip__resolver_query_base/all_matching.html -/doc/asio/reference/ip__resolver_query_base/canonical_name.html -/doc/asio/reference/ip__resolver_query_base/flags.html -/doc/asio/reference/ip__resolver_query_base.html -/doc/asio/reference/ip__resolver_query_base/numeric_host.html -/doc/asio/reference/ip__resolver_query_base/numeric_service.html -/doc/asio/reference/ip__resolver_query_base/passive.html -/doc/asio/reference/ip__resolver_query_base/_resolver_query_base.html -/doc/asio/reference/ip__resolver_query_base/v4_mapped.html -/doc/asio/reference/ip__tcp/ -/doc/asio/reference/ip__tcp/acceptor.html -/doc/asio/reference/ip__tcp/endpoint.html -/doc/asio/reference/ip__tcp/family.html -/doc/asio/reference/ip__tcp.html -/doc/asio/reference/ip__tcp/iostream.html -/doc/asio/reference/ip__tcp/no_delay.html -/doc/asio/reference/ip__tcp/operator_eq__eq_.html -/doc/asio/reference/ip__tcp/operator_not__eq_.html -/doc/asio/reference/ip__tcp/protocol.html -/doc/asio/reference/ip__tcp/resolver.html -/doc/asio/reference/ip__tcp/socket.html -/doc/asio/reference/ip__tcp/type.html -/doc/asio/reference/ip__tcp/v4.html -/doc/asio/reference/ip__tcp/v6.html -/doc/asio/reference/ip__udp/ -/doc/asio/reference/ip__udp/endpoint.html -/doc/asio/reference/ip__udp/family.html -/doc/asio/reference/ip__udp.html -/doc/asio/reference/ip__udp/operator_eq__eq_.html -/doc/asio/reference/ip__udp/operator_not__eq_.html -/doc/asio/reference/ip__udp/protocol.html -/doc/asio/reference/ip__udp/resolver.html -/doc/asio/reference/ip__udp/socket.html -/doc/asio/reference/ip__udp/type.html -/doc/asio/reference/ip__udp/v4.html -/doc/asio/reference/ip__udp/v6.html -/doc/asio/reference/ip__unicast__hops.html -/doc/asio/reference/ip__v4_mapped_t.html -/doc/asio/reference/ip__v6_only.html -/doc/asio/reference/is_applicable_property.html -/doc/asio/reference/is_const_buffer_sequence.html -/doc/asio/reference/is_dynamic_buffer.html -/doc/asio/reference/is_dynamic_buffer_v1.html -/doc/asio/reference/is_dynamic_buffer_v2.html -/doc/asio/reference/is_endpoint_sequence/ -/doc/asio/reference/is_endpoint_sequence.html -/doc/asio/reference/is_endpoint_sequence/value.html -/doc/asio/reference/is_executor.html -/doc/asio/reference/is_match_condition/ -/doc/asio/reference/is_match_condition.html -/doc/asio/reference/is_match_condition/value.html -/doc/asio/reference/is_mutable_buffer_sequence.html -/doc/asio/reference/is_nothrow_prefer.html -/doc/asio/reference/is_nothrow_query.html -/doc/asio/reference/is_nothrow_require_concept.html -/doc/asio/reference/is_nothrow_require.html -/doc/asio/reference/is_read_buffered/ -/doc/asio/reference/is_read_buffered.html -/doc/asio/reference/is_read_buffered/value.html -/doc/asio/reference/is_write_buffered/ -/doc/asio/reference/is_write_buffered.html -/doc/asio/reference/is_write_buffered/value.html -/doc/asio/reference/IteratorConnectHandler.html -/doc/asio/reference/LegacyCompletionHandler.html -/doc/asio/reference/local__basic_endpoint/ -/doc/asio/reference/local__basic_endpoint/basic_endpoint/ -/doc/asio/reference/local__basic_endpoint/basic_endpoint.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/local__basic_endpoint/capacity.html -/doc/asio/reference/local__basic_endpoint/data/ -/doc/asio/reference/local__basic_endpoint/data.html -/doc/asio/reference/local__basic_endpoint/data/overload1.html -/doc/asio/reference/local__basic_endpoint/data/overload2.html -/doc/asio/reference/local__basic_endpoint/data_type.html -/doc/asio/reference/local__basic_endpoint.html -/doc/asio/reference/local__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_eq_.html -/doc/asio/reference/local__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_gt_.html -/doc/asio/reference/local__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_lt_.html -/doc/asio/reference/local__basic_endpoint/operator_lt__lt_.html -/doc/asio/reference/local__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/local__basic_endpoint/path/ -/doc/asio/reference/local__basic_endpoint/path.html -/doc/asio/reference/local__basic_endpoint/path/overload1.html -/doc/asio/reference/local__basic_endpoint/path/overload2.html -/doc/asio/reference/local__basic_endpoint/path/overload3.html -/doc/asio/reference/local__basic_endpoint/protocol.html -/doc/asio/reference/local__basic_endpoint/protocol_type.html -/doc/asio/reference/local__basic_endpoint/resize.html -/doc/asio/reference/local__basic_endpoint/size.html -/doc/asio/reference/local__connect_pair/ -/doc/asio/reference/local__connect_pair.html -/doc/asio/reference/local__connect_pair/overload1.html -/doc/asio/reference/local__connect_pair/overload2.html -/doc/asio/reference/local__datagram_protocol/ -/doc/asio/reference/local__datagram_protocol/endpoint.html -/doc/asio/reference/local__datagram_protocol/family.html -/doc/asio/reference/local__datagram_protocol.html -/doc/asio/reference/local__datagram_protocol/protocol.html -/doc/asio/reference/local__datagram_protocol/socket.html -/doc/asio/reference/local__datagram_protocol/type.html -/doc/asio/reference/local__stream_protocol/ -/doc/asio/reference/local__stream_protocol/acceptor.html -/doc/asio/reference/local__stream_protocol/endpoint.html -/doc/asio/reference/local__stream_protocol/family.html -/doc/asio/reference/local__stream_protocol.html -/doc/asio/reference/local__stream_protocol/iostream.html -/doc/asio/reference/local__stream_protocol/protocol.html -/doc/asio/reference/local__stream_protocol/socket.html -/doc/asio/reference/local__stream_protocol/type.html -/doc/asio/reference/make_strand/ -/doc/asio/reference/make_strand.html -/doc/asio/reference/make_strand/overload1.html -/doc/asio/reference/make_strand/overload2.html -/doc/asio/reference/make_work_guard/ -/doc/asio/reference/make_work_guard.html -/doc/asio/reference/make_work_guard/overload1.html -/doc/asio/reference/make_work_guard/overload2.html -/doc/asio/reference/make_work_guard/overload3.html -/doc/asio/reference/make_work_guard/overload4.html -/doc/asio/reference/make_work_guard/overload5.html -/doc/asio/reference/MoveAcceptHandler.html -/doc/asio/reference/multiple_exceptions/ -/doc/asio/reference/multiple_exceptions/first_exception.html -/doc/asio/reference/multiple_exceptions.html -/doc/asio/reference/multiple_exceptions/multiple_exceptions.html -/doc/asio/reference/multiple_exceptions/what.html -/doc/asio/reference/mutable_buffer/ -/doc/asio/reference/mutable_buffer/data.html -/doc/asio/reference/mutable_buffer.html -/doc/asio/reference/mutable_buffer/mutable_buffer/ -/doc/asio/reference/mutable_buffer/mutable_buffer.html -/doc/asio/reference/mutable_buffer/mutable_buffer/overload1.html -/doc/asio/reference/mutable_buffer/mutable_buffer/overload2.html -/doc/asio/reference/mutable_buffer/operator_plus_/ -/doc/asio/reference/mutable_buffer/operator_plus__eq_.html -/doc/asio/reference/mutable_buffer/operator_plus_.html -/doc/asio/reference/mutable_buffer/operator_plus_/overload1.html -/doc/asio/reference/mutable_buffer/operator_plus_/overload2.html -/doc/asio/reference/mutable_buffers_1/ -/doc/asio/reference/mutable_buffers_1/begin.html -/doc/asio/reference/mutable_buffers_1/const_iterator.html -/doc/asio/reference/mutable_buffers_1/data.html -/doc/asio/reference/mutable_buffers_1/end.html -/doc/asio/reference/mutable_buffers_1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/ -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/overload1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/overload2.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/ -/doc/asio/reference/mutable_buffers_1/operator_plus__eq_.html -/doc/asio/reference/mutable_buffers_1/operator_plus_.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/overload1.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/overload2.html -/doc/asio/reference/mutable_buffers_1/size.html -/doc/asio/reference/mutable_buffers_1/value_type.html -/doc/asio/reference/MutableBufferSequence.html -/doc/asio/reference/mutable_buffer/size.html -/doc/asio/reference/null_buffers/ -/doc/asio/reference/null_buffers/begin.html -/doc/asio/reference/null_buffers/const_iterator.html -/doc/asio/reference/null_buffers/end.html -/doc/asio/reference/null_buffers.html -/doc/asio/reference/null_buffers/value_type.html -/doc/asio/reference/OperationState.html -/doc/asio/reference/operator_lt__lt_.html -/doc/asio/reference/placeholders__bytes_transferred.html -/doc/asio/reference/placeholders__endpoint.html -/doc/asio/reference/placeholders__error.html -/doc/asio/reference/placeholders__iterator.html -/doc/asio/reference/placeholders__results.html -/doc/asio/reference/placeholders__signal_number.html -/doc/asio/reference/posix__basic_descriptor/ -/doc/asio/reference/posix__basic_descriptor/assign/ -/doc/asio/reference/posix__basic_descriptor/assign.html -/doc/asio/reference/posix__basic_descriptor/assign/overload1.html -/doc/asio/reference/posix__basic_descriptor/assign/overload2.html -/doc/asio/reference/posix__basic_descriptor/async_wait.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/ -/doc/asio/reference/posix__basic_descriptor/_basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload1.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload2.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html -/doc/asio/reference/posix__basic_descriptor/bytes_readable.html -/doc/asio/reference/posix__basic_descriptor/cancel/ -/doc/asio/reference/posix__basic_descriptor/cancel.html -/doc/asio/reference/posix__basic_descriptor/cancel/overload1.html -/doc/asio/reference/posix__basic_descriptor/cancel/overload2.html -/doc/asio/reference/posix__basic_descriptor/close/ -/doc/asio/reference/posix__basic_descriptor/close.html -/doc/asio/reference/posix__basic_descriptor/close/overload1.html -/doc/asio/reference/posix__basic_descriptor/close/overload2.html -/doc/asio/reference/posix__basic_descriptor/executor_type.html -/doc/asio/reference/posix__basic_descriptor/get_executor.html -/doc/asio/reference/posix__basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/io_control/ -/doc/asio/reference/posix__basic_descriptor/io_control.html -/doc/asio/reference/posix__basic_descriptor/io_control/overload1.html -/doc/asio/reference/posix__basic_descriptor/io_control/overload2.html -/doc/asio/reference/posix__basic_descriptor/is_open.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/ -/doc/asio/reference/posix__basic_descriptor/lowest_layer.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/overload1.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/overload2.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer_type.html -/doc/asio/reference/posix__basic_descriptor/native_handle.html -/doc/asio/reference/posix__basic_descriptor/native_handle_type.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/ -/doc/asio/reference/posix__basic_descriptor/native_non_blocking.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload1.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload2.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload3.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/ -/doc/asio/reference/posix__basic_descriptor/non_blocking.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload1.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload2.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload3.html -/doc/asio/reference/posix__basic_descriptor/operator_eq_.html -/doc/asio/reference/posix__basic_descriptor__rebind_executor/ -/doc/asio/reference/posix__basic_descriptor__rebind_executor.html -/doc/asio/reference/posix__basic_descriptor__rebind_executor/other.html -/doc/asio/reference/posix__basic_descriptor/release.html -/doc/asio/reference/posix__basic_descriptor/wait/ -/doc/asio/reference/posix__basic_descriptor/wait.html -/doc/asio/reference/posix__basic_descriptor/wait/overload1.html -/doc/asio/reference/posix__basic_descriptor/wait/overload2.html -/doc/asio/reference/posix__basic_descriptor/wait_type.html -/doc/asio/reference/posix__basic_stream_descriptor/ -/doc/asio/reference/posix__basic_stream_descriptor/assign/ -/doc/asio/reference/posix__basic_stream_descriptor/assign.html -/doc/asio/reference/posix__basic_stream_descriptor/assign/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/assign/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/async_read_some.html -/doc/asio/reference/posix__basic_stream_descriptor/async_wait.html -/doc/asio/reference/posix__basic_stream_descriptor/async_write_some.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/ -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html -/doc/asio/reference/posix__basic_stream_descriptor/bytes_readable.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/ -/doc/asio/reference/posix__basic_stream_descriptor/cancel.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/close/ -/doc/asio/reference/posix__basic_stream_descriptor/close.html -/doc/asio/reference/posix__basic_stream_descriptor/close/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/close/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/executor_type.html -/doc/asio/reference/posix__basic_stream_descriptor/get_executor.html -/doc/asio/reference/posix__basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/ -/doc/asio/reference/posix__basic_stream_descriptor/io_control.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/is_open.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/ -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer_type.html -/doc/asio/reference/posix__basic_stream_descriptor/native_handle.html -/doc/asio/reference/posix__basic_stream_descriptor/native_handle_type.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/ -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/ -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/ -/doc/asio/reference/posix__basic_stream_descriptor/read_some.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor/ -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor.html -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor/other.html -/doc/asio/reference/posix__basic_stream_descriptor/release.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/ -/doc/asio/reference/posix__basic_stream_descriptor/wait.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/wait_type.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/ -/doc/asio/reference/posix__basic_stream_descriptor/write_some.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/overload2.html -/doc/asio/reference/posix__descriptor_base/ -/doc/asio/reference/posix__descriptor_base/bytes_readable.html -/doc/asio/reference/posix__descriptor_base/_descriptor_base.html -/doc/asio/reference/posix__descriptor_base.html -/doc/asio/reference/posix__descriptor_base/wait_type.html -/doc/asio/reference/posix__descriptor.html -/doc/asio/reference/posix__stream_descriptor.html -/doc/asio/reference/post/ -/doc/asio/reference/post.html -/doc/asio/reference/post/overload1.html -/doc/asio/reference/post/overload2.html -/doc/asio/reference/post/overload3.html -/doc/asio/reference/prefer.html -/doc/asio/reference/prefer_result/ -/doc/asio/reference/prefer_result.html -/doc/asio/reference/prefer_result/type.html -/doc/asio/reference/ProtoAllocator.html -/doc/asio/reference/Protocol.html -/doc/asio/reference/query.html -/doc/asio/reference/query_result/ -/doc/asio/reference/query_result.html -/doc/asio/reference/query_result/type.html -/doc/asio/reference/RangeConnectHandler.html -/doc/asio/reference/read/ -/doc/asio/reference/read_at/ -/doc/asio/reference/read_at.html -/doc/asio/reference/read_at/overload1.html -/doc/asio/reference/read_at/overload2.html -/doc/asio/reference/read_at/overload3.html -/doc/asio/reference/read_at/overload4.html -/doc/asio/reference/read_at/overload5.html -/doc/asio/reference/read_at/overload6.html -/doc/asio/reference/read_at/overload7.html -/doc/asio/reference/read_at/overload8.html -/doc/asio/reference/ReadHandler.html -/doc/asio/reference/read.html -/doc/asio/reference/read/overload10.html -/doc/asio/reference/read/overload11.html -/doc/asio/reference/read/overload12.html -/doc/asio/reference/read/overload13.html -/doc/asio/reference/read/overload14.html -/doc/asio/reference/read/overload15.html -/doc/asio/reference/read/overload16.html -/doc/asio/reference/read/overload1.html -/doc/asio/reference/read/overload2.html -/doc/asio/reference/read/overload3.html -/doc/asio/reference/read/overload4.html -/doc/asio/reference/read/overload5.html -/doc/asio/reference/read/overload6.html -/doc/asio/reference/read/overload7.html -/doc/asio/reference/read/overload8.html -/doc/asio/reference/read/overload9.html -/doc/asio/reference/read_until/ -/doc/asio/reference/read_until.html -/doc/asio/reference/read_until/overload10.html -/doc/asio/reference/read_until/overload11.html -/doc/asio/reference/read_until/overload12.html -/doc/asio/reference/read_until/overload13.html -/doc/asio/reference/read_until/overload14.html -/doc/asio/reference/read_until/overload15.html -/doc/asio/reference/read_until/overload16.html -/doc/asio/reference/read_until/overload17.html -/doc/asio/reference/read_until/overload18.html -/doc/asio/reference/read_until/overload19.html -/doc/asio/reference/read_until/overload1.html -/doc/asio/reference/read_until/overload20.html -/doc/asio/reference/read_until/overload21.html -/doc/asio/reference/read_until/overload22.html -/doc/asio/reference/read_until/overload23.html -/doc/asio/reference/read_until/overload24.html -/doc/asio/reference/read_until/overload2.html -/doc/asio/reference/read_until/overload3.html -/doc/asio/reference/read_until/overload4.html -/doc/asio/reference/read_until/overload5.html -/doc/asio/reference/read_until/overload6.html -/doc/asio/reference/read_until/overload7.html -/doc/asio/reference/read_until/overload8.html -/doc/asio/reference/read_until/overload9.html -/doc/asio/reference/read_write_operations.html -/doc/asio/reference/Receiver.html -/doc/asio/reference/redirect_error.html -/doc/asio/reference/redirect_error_t/ -/doc/asio/reference/redirect_error_t/ec_.html -/doc/asio/reference/redirect_error_t.html -/doc/asio/reference/redirect_error_t/redirect_error_t.html -/doc/asio/reference/redirect_error_t/token_.html -/doc/asio/reference/require_concept.html -/doc/asio/reference/require_concept_result/ -/doc/asio/reference/require_concept_result.html -/doc/asio/reference/require_concept_result/type.html -/doc/asio/reference/require.html -/doc/asio/reference/require_result/ -/doc/asio/reference/require_result.html -/doc/asio/reference/require_result/type.html -/doc/asio/reference/ResolveHandler.html -/doc/asio/reference/resolver_errc__try_again.html -/doc/asio/reference/Scheduler.html -/doc/asio/reference/Sender.html -/doc/asio/reference/serial_port_base/ -/doc/asio/reference/serial_port_base__baud_rate/ -/doc/asio/reference/serial_port_base__baud_rate/baud_rate.html -/doc/asio/reference/serial_port_base__baud_rate.html -/doc/asio/reference/serial_port_base__baud_rate/load.html -/doc/asio/reference/serial_port_base__baud_rate/store.html -/doc/asio/reference/serial_port_base__baud_rate/value.html -/doc/asio/reference/serial_port_base__character_size/ -/doc/asio/reference/serial_port_base__character_size/character_size.html -/doc/asio/reference/serial_port_base__character_size.html -/doc/asio/reference/serial_port_base__character_size/load.html -/doc/asio/reference/serial_port_base__character_size/store.html -/doc/asio/reference/serial_port_base__character_size/value.html -/doc/asio/reference/serial_port_base__flow_control/ -/doc/asio/reference/serial_port_base__flow_control/flow_control.html -/doc/asio/reference/serial_port_base__flow_control.html -/doc/asio/reference/serial_port_base__flow_control/load.html -/doc/asio/reference/serial_port_base__flow_control/store.html -/doc/asio/reference/serial_port_base__flow_control/type.html -/doc/asio/reference/serial_port_base__flow_control/value.html -/doc/asio/reference/serial_port_base.html -/doc/asio/reference/serial_port_base__parity/ -/doc/asio/reference/serial_port_base__parity.html -/doc/asio/reference/serial_port_base__parity/load.html -/doc/asio/reference/serial_port_base__parity/parity.html -/doc/asio/reference/serial_port_base__parity/store.html -/doc/asio/reference/serial_port_base__parity/type.html -/doc/asio/reference/serial_port_base__parity/value.html -/doc/asio/reference/serial_port_base/_serial_port_base.html -/doc/asio/reference/serial_port_base__stop_bits/ -/doc/asio/reference/serial_port_base__stop_bits.html -/doc/asio/reference/serial_port_base__stop_bits/load.html -/doc/asio/reference/serial_port_base__stop_bits/stop_bits.html -/doc/asio/reference/serial_port_base__stop_bits/store.html -/doc/asio/reference/serial_port_base__stop_bits/type.html -/doc/asio/reference/serial_port_base__stop_bits/value.html -/doc/asio/reference/serial_port.html -/doc/asio/reference/service_already_exists/ -/doc/asio/reference/service_already_exists.html -/doc/asio/reference/service_already_exists/service_already_exists.html -/doc/asio/reference/Service.html -/doc/asio/reference/SettableSerialPortOption.html -/doc/asio/reference/SettableSocketOption.html -/doc/asio/reference/ShutdownHandler.html -/doc/asio/reference/SignalHandler.html -/doc/asio/reference/signal_set.html -/doc/asio/reference/socket_base/ -/doc/asio/reference/socket_base/broadcast.html -/doc/asio/reference/socket_base/bytes_readable.html -/doc/asio/reference/socket_base/debug.html -/doc/asio/reference/socket_base/do_not_route.html -/doc/asio/reference/socket_base/enable_connection_aborted.html -/doc/asio/reference/socket_base.html -/doc/asio/reference/socket_base/keep_alive.html -/doc/asio/reference/socket_base/linger.html -/doc/asio/reference/socket_base/max_connections.html -/doc/asio/reference/socket_base/max_listen_connections.html -/doc/asio/reference/socket_base/message_do_not_route.html -/doc/asio/reference/socket_base/message_end_of_record.html -/doc/asio/reference/socket_base/message_flags.html -/doc/asio/reference/socket_base/message_out_of_band.html -/doc/asio/reference/socket_base/message_peek.html -/doc/asio/reference/socket_base/out_of_band_inline.html -/doc/asio/reference/socket_base/receive_buffer_size.html -/doc/asio/reference/socket_base/receive_low_watermark.html -/doc/asio/reference/socket_base/reuse_address.html -/doc/asio/reference/socket_base/send_buffer_size.html -/doc/asio/reference/socket_base/send_low_watermark.html -/doc/asio/reference/socket_base/shutdown_type.html -/doc/asio/reference/socket_base/_socket_base.html -/doc/asio/reference/socket_base/wait_type.html -/doc/asio/reference/spawn/ -/doc/asio/reference/spawn.html -/doc/asio/reference/spawn/overload1.html -/doc/asio/reference/spawn/overload2.html -/doc/asio/reference/spawn/overload3.html -/doc/asio/reference/spawn/overload4.html -/doc/asio/reference/spawn/overload5.html -/doc/asio/reference/spawn/overload6.html -/doc/asio/reference/spawn/overload7.html -/doc/asio/reference/ssl__context/ -/doc/asio/reference/ssl__context/add_certificate_authority/ -/doc/asio/reference/ssl__context/add_certificate_authority.html -/doc/asio/reference/ssl__context/add_certificate_authority/overload1.html -/doc/asio/reference/ssl__context/add_certificate_authority/overload2.html -/doc/asio/reference/ssl__context/add_verify_path/ -/doc/asio/reference/ssl__context/add_verify_path.html -/doc/asio/reference/ssl__context/add_verify_path/overload1.html -/doc/asio/reference/ssl__context/add_verify_path/overload2.html -/doc/asio/reference/ssl__context_base/ -/doc/asio/reference/ssl__context_base/_context_base.html -/doc/asio/reference/ssl__context_base/default_workarounds.html -/doc/asio/reference/ssl__context_base/file_format.html -/doc/asio/reference/ssl__context_base.html -/doc/asio/reference/ssl__context_base/method.html -/doc/asio/reference/ssl__context_base/no_compression.html -/doc/asio/reference/ssl__context_base/no_sslv2.html -/doc/asio/reference/ssl__context_base/no_sslv3.html -/doc/asio/reference/ssl__context_base/no_tlsv1_1.html -/doc/asio/reference/ssl__context_base/no_tlsv1_2.html -/doc/asio/reference/ssl__context_base/no_tlsv1_3.html -/doc/asio/reference/ssl__context_base/no_tlsv1.html -/doc/asio/reference/ssl__context_base/options.html -/doc/asio/reference/ssl__context_base/password_purpose.html -/doc/asio/reference/ssl__context_base/single_dh_use.html -/doc/asio/reference/ssl__context/clear_options/ -/doc/asio/reference/ssl__context/clear_options.html -/doc/asio/reference/ssl__context/clear_options/overload1.html -/doc/asio/reference/ssl__context/clear_options/overload2.html -/doc/asio/reference/ssl__context/context/ -/doc/asio/reference/ssl__context/_context.html -/doc/asio/reference/ssl__context/context.html -/doc/asio/reference/ssl__context/context/overload1.html -/doc/asio/reference/ssl__context/context/overload2.html -/doc/asio/reference/ssl__context/context/overload3.html -/doc/asio/reference/ssl__context/default_workarounds.html -/doc/asio/reference/ssl__context/file_format.html -/doc/asio/reference/ssl__context.html -/doc/asio/reference/ssl__context/load_verify_file/ -/doc/asio/reference/ssl__context/load_verify_file.html -/doc/asio/reference/ssl__context/load_verify_file/overload1.html -/doc/asio/reference/ssl__context/load_verify_file/overload2.html -/doc/asio/reference/ssl__context/method.html -/doc/asio/reference/ssl__context/native_handle.html -/doc/asio/reference/ssl__context/native_handle_type.html -/doc/asio/reference/ssl__context/no_compression.html -/doc/asio/reference/ssl__context/no_sslv2.html -/doc/asio/reference/ssl__context/no_sslv3.html -/doc/asio/reference/ssl__context/no_tlsv1_1.html -/doc/asio/reference/ssl__context/no_tlsv1_2.html -/doc/asio/reference/ssl__context/no_tlsv1_3.html -/doc/asio/reference/ssl__context/no_tlsv1.html -/doc/asio/reference/ssl__context/operator_eq_.html -/doc/asio/reference/ssl__context/options.html -/doc/asio/reference/ssl__context/password_purpose.html -/doc/asio/reference/ssl__context/set_default_verify_paths/ -/doc/asio/reference/ssl__context/set_default_verify_paths.html -/doc/asio/reference/ssl__context/set_default_verify_paths/overload1.html -/doc/asio/reference/ssl__context/set_default_verify_paths/overload2.html -/doc/asio/reference/ssl__context/set_options/ -/doc/asio/reference/ssl__context/set_options.html -/doc/asio/reference/ssl__context/set_options/overload1.html -/doc/asio/reference/ssl__context/set_options/overload2.html -/doc/asio/reference/ssl__context/set_password_callback/ -/doc/asio/reference/ssl__context/set_password_callback.html -/doc/asio/reference/ssl__context/set_password_callback/overload1.html -/doc/asio/reference/ssl__context/set_password_callback/overload2.html -/doc/asio/reference/ssl__context/set_verify_callback/ -/doc/asio/reference/ssl__context/set_verify_callback.html -/doc/asio/reference/ssl__context/set_verify_callback/overload1.html -/doc/asio/reference/ssl__context/set_verify_callback/overload2.html -/doc/asio/reference/ssl__context/set_verify_depth/ -/doc/asio/reference/ssl__context/set_verify_depth.html -/doc/asio/reference/ssl__context/set_verify_depth/overload1.html -/doc/asio/reference/ssl__context/set_verify_depth/overload2.html -/doc/asio/reference/ssl__context/set_verify_mode/ -/doc/asio/reference/ssl__context/set_verify_mode.html -/doc/asio/reference/ssl__context/set_verify_mode/overload1.html -/doc/asio/reference/ssl__context/set_verify_mode/overload2.html -/doc/asio/reference/ssl__context/single_dh_use.html -/doc/asio/reference/ssl__context/use_certificate/ -/doc/asio/reference/ssl__context/use_certificate_chain/ -/doc/asio/reference/ssl__context/use_certificate_chain_file/ -/doc/asio/reference/ssl__context/use_certificate_chain_file.html -/doc/asio/reference/ssl__context/use_certificate_chain_file/overload1.html -/doc/asio/reference/ssl__context/use_certificate_chain_file/overload2.html -/doc/asio/reference/ssl__context/use_certificate_chain.html -/doc/asio/reference/ssl__context/use_certificate_chain/overload1.html -/doc/asio/reference/ssl__context/use_certificate_chain/overload2.html -/doc/asio/reference/ssl__context/use_certificate_file/ -/doc/asio/reference/ssl__context/use_certificate_file.html -/doc/asio/reference/ssl__context/use_certificate_file/overload1.html -/doc/asio/reference/ssl__context/use_certificate_file/overload2.html -/doc/asio/reference/ssl__context/use_certificate.html -/doc/asio/reference/ssl__context/use_certificate/overload1.html -/doc/asio/reference/ssl__context/use_certificate/overload2.html -/doc/asio/reference/ssl__context/use_private_key/ -/doc/asio/reference/ssl__context/use_private_key_file/ -/doc/asio/reference/ssl__context/use_private_key_file.html -/doc/asio/reference/ssl__context/use_private_key_file/overload1.html -/doc/asio/reference/ssl__context/use_private_key_file/overload2.html -/doc/asio/reference/ssl__context/use_private_key.html -/doc/asio/reference/ssl__context/use_private_key/overload1.html -/doc/asio/reference/ssl__context/use_private_key/overload2.html -/doc/asio/reference/ssl__context/use_rsa_private_key/ -/doc/asio/reference/ssl__context/use_rsa_private_key_file/ -/doc/asio/reference/ssl__context/use_rsa_private_key_file.html -/doc/asio/reference/ssl__context/use_rsa_private_key_file/overload1.html -/doc/asio/reference/ssl__context/use_rsa_private_key_file/overload2.html -/doc/asio/reference/ssl__context/use_rsa_private_key.html -/doc/asio/reference/ssl__context/use_rsa_private_key/overload1.html -/doc/asio/reference/ssl__context/use_rsa_private_key/overload2.html -/doc/asio/reference/ssl__context/use_tmp_dh/ -/doc/asio/reference/ssl__context/use_tmp_dh_file/ -/doc/asio/reference/ssl__context/use_tmp_dh_file.html -/doc/asio/reference/ssl__context/use_tmp_dh_file/overload1.html -/doc/asio/reference/ssl__context/use_tmp_dh_file/overload2.html -/doc/asio/reference/ssl__context/use_tmp_dh.html -/doc/asio/reference/ssl__context/use_tmp_dh/overload1.html -/doc/asio/reference/ssl__context/use_tmp_dh/overload2.html -/doc/asio/reference/ssl__error__get_stream_category.html -/doc/asio/reference/ssl__error__make_error_code.html -/doc/asio/reference/ssl__error__stream_category.html -/doc/asio/reference/ssl__error__stream_errors.html -/doc/asio/reference/ssl__host_name_verification/ -/doc/asio/reference/ssl__host_name_verification/host_name_verification.html -/doc/asio/reference/ssl__host_name_verification.html -/doc/asio/reference/ssl__host_name_verification/operator_lp__rp_.html -/doc/asio/reference/ssl__host_name_verification/result_type.html -/doc/asio/reference/ssl__rfc2818_verification/ -/doc/asio/reference/ssl__rfc2818_verification.html -/doc/asio/reference/ssl__rfc2818_verification/operator_lp__rp_.html -/doc/asio/reference/ssl__rfc2818_verification/result_type.html -/doc/asio/reference/ssl__rfc2818_verification/rfc2818_verification.html -/doc/asio/reference/ssl__stream/ -/doc/asio/reference/ssl__stream/async_handshake/ -/doc/asio/reference/ssl__stream/async_handshake.html -/doc/asio/reference/ssl__stream/async_handshake/overload1.html -/doc/asio/reference/ssl__stream/async_handshake/overload2.html -/doc/asio/reference/ssl__stream/async_read_some.html -/doc/asio/reference/ssl__stream/async_shutdown.html -/doc/asio/reference/ssl__stream/async_write_some.html -/doc/asio/reference/ssl__stream_base/ -/doc/asio/reference/ssl__stream_base/handshake_type.html -/doc/asio/reference/ssl__stream_base.html -/doc/asio/reference/ssl__stream_base/_stream_base.html -/doc/asio/reference/ssl__stream/executor_type.html -/doc/asio/reference/ssl__stream/get_executor.html -/doc/asio/reference/ssl__stream/handshake/ -/doc/asio/reference/ssl__stream/handshake.html -/doc/asio/reference/ssl__stream/handshake/overload1.html -/doc/asio/reference/ssl__stream/handshake/overload2.html -/doc/asio/reference/ssl__stream/handshake/overload3.html -/doc/asio/reference/ssl__stream/handshake/overload4.html -/doc/asio/reference/ssl__stream/handshake_type.html -/doc/asio/reference/ssl__stream.html -/doc/asio/reference/ssl__stream__impl_struct/ -/doc/asio/reference/ssl__stream__impl_struct.html -/doc/asio/reference/ssl__stream__impl_struct/ssl.html -/doc/asio/reference/ssl__stream/lowest_layer/ -/doc/asio/reference/ssl__stream/lowest_layer.html -/doc/asio/reference/ssl__stream/lowest_layer/overload1.html -/doc/asio/reference/ssl__stream/lowest_layer/overload2.html -/doc/asio/reference/ssl__stream/lowest_layer_type.html -/doc/asio/reference/ssl__stream/native_handle.html -/doc/asio/reference/ssl__stream/native_handle_type.html -/doc/asio/reference/ssl__stream/next_layer/ -/doc/asio/reference/ssl__stream/next_layer.html -/doc/asio/reference/ssl__stream/next_layer/overload1.html -/doc/asio/reference/ssl__stream/next_layer/overload2.html -/doc/asio/reference/ssl__stream/next_layer_type.html -/doc/asio/reference/ssl__stream/read_some/ -/doc/asio/reference/ssl__stream/read_some.html -/doc/asio/reference/ssl__stream/read_some/overload1.html -/doc/asio/reference/ssl__stream/read_some/overload2.html -/doc/asio/reference/ssl__stream/set_verify_callback/ -/doc/asio/reference/ssl__stream/set_verify_callback.html -/doc/asio/reference/ssl__stream/set_verify_callback/overload1.html -/doc/asio/reference/ssl__stream/set_verify_callback/overload2.html -/doc/asio/reference/ssl__stream/set_verify_depth/ -/doc/asio/reference/ssl__stream/set_verify_depth.html -/doc/asio/reference/ssl__stream/set_verify_depth/overload1.html -/doc/asio/reference/ssl__stream/set_verify_depth/overload2.html -/doc/asio/reference/ssl__stream/set_verify_mode/ -/doc/asio/reference/ssl__stream/set_verify_mode.html -/doc/asio/reference/ssl__stream/set_verify_mode/overload1.html -/doc/asio/reference/ssl__stream/set_verify_mode/overload2.html -/doc/asio/reference/ssl__stream/shutdown/ -/doc/asio/reference/ssl__stream/shutdown.html -/doc/asio/reference/ssl__stream/shutdown/overload1.html -/doc/asio/reference/ssl__stream/shutdown/overload2.html -/doc/asio/reference/ssl__stream/stream/ -/doc/asio/reference/ssl__stream/_stream.html -/doc/asio/reference/ssl__stream/stream.html -/doc/asio/reference/ssl__stream/stream/overload1.html -/doc/asio/reference/ssl__stream/stream/overload2.html -/doc/asio/reference/ssl__stream/write_some/ -/doc/asio/reference/ssl__stream/write_some.html -/doc/asio/reference/ssl__stream/write_some/overload1.html -/doc/asio/reference/ssl__stream/write_some/overload2.html -/doc/asio/reference/ssl__verify_client_once.html -/doc/asio/reference/ssl__verify_context/ -/doc/asio/reference/ssl__verify_context.html -/doc/asio/reference/ssl__verify_context/native_handle.html -/doc/asio/reference/ssl__verify_context/native_handle_type.html -/doc/asio/reference/ssl__verify_context/verify_context.html -/doc/asio/reference/ssl__verify_fail_if_no_peer_cert.html -/doc/asio/reference/ssl__verify_mode.html -/doc/asio/reference/ssl__verify_none.html -/doc/asio/reference/ssl__verify_peer.html -/doc/asio/reference/static_thread_pool.html -/doc/asio/reference/steady_timer.html -/doc/asio/reference/strand/ -/doc/asio/reference/strand/defer.html -/doc/asio/reference/strand/dispatch.html -/doc/asio/reference/strand/execute.html -/doc/asio/reference/strand/get_inner_executor.html -/doc/asio/reference/strand.html -/doc/asio/reference/strand/inner_executor_type.html -/doc/asio/reference/strand/operator_eq_/ -/doc/asio/reference/strand/operator_eq__eq_.html -/doc/asio/reference/strand/operator_eq_.html -/doc/asio/reference/strand/operator_eq_/overload1.html -/doc/asio/reference/strand/operator_eq_/overload2.html -/doc/asio/reference/strand/operator_eq_/overload3.html -/doc/asio/reference/strand/operator_eq_/overload4.html -/doc/asio/reference/strand/operator_not__eq_.html -/doc/asio/reference/strand/post.html -/doc/asio/reference/strand/prefer.html -/doc/asio/reference/strand/query.html -/doc/asio/reference/strand/require.html -/doc/asio/reference/strand/running_in_this_thread.html -/doc/asio/reference/strand/strand/ -/doc/asio/reference/strand/_strand.html -/doc/asio/reference/strand/strand.html -/doc/asio/reference/strand/strand/overload1.html -/doc/asio/reference/strand/strand/overload2.html -/doc/asio/reference/strand/strand/overload3.html -/doc/asio/reference/strand/strand/overload4.html -/doc/asio/reference/strand/strand/overload5.html -/doc/asio/reference/strand/strand/overload6.html -/doc/asio/reference/streambuf.html -/doc/asio/reference/synchronous_socket_operations.html -/doc/asio/reference/SyncRandomAccessReadDevice.html -/doc/asio/reference/SyncRandomAccessWriteDevice.html -/doc/asio/reference/SyncReadStream.html -/doc/asio/reference/SyncWriteStream.html -/doc/asio/reference/system_category.html -/doc/asio/reference/system_context/ -/doc/asio/reference/system_context/add_service.html -/doc/asio/reference/system_context/destroy.html -/doc/asio/reference/system_context/executor_type.html -/doc/asio/reference/system_context/fork_event.html -/doc/asio/reference/system_context/get_executor.html -/doc/asio/reference/system_context/has_service.html -/doc/asio/reference/system_context.html -/doc/asio/reference/system_context/join.html -/doc/asio/reference/system_context/make_service.html -/doc/asio/reference/system_context/notify_fork.html -/doc/asio/reference/system_context/shutdown.html -/doc/asio/reference/system_context/stop.html -/doc/asio/reference/system_context/stopped.html -/doc/asio/reference/system_context/_system_context.html -/doc/asio/reference/system_context/use_service/ -/doc/asio/reference/system_context/use_service.html -/doc/asio/reference/system_context/use_service/overload1.html -/doc/asio/reference/system_context/use_service/overload2.html -/doc/asio/reference/system_error/ -/doc/asio/reference/system_error/code.html -/doc/asio/reference/system_error.html -/doc/asio/reference/system_error/operator_eq_.html -/doc/asio/reference/system_error/system_error/ -/doc/asio/reference/system_error/_system_error.html -/doc/asio/reference/system_error/system_error.html -/doc/asio/reference/system_error/system_error/overload1.html -/doc/asio/reference/system_error/system_error/overload2.html -/doc/asio/reference/system_error/system_error/overload3.html -/doc/asio/reference/system_error/what.html -/doc/asio/reference/system_executor.html -/doc/asio/reference/system_timer.html -/doc/asio/reference/this_coro__executor.html -/doc/asio/reference/this_coro__executor_t/ -/doc/asio/reference/this_coro__executor_t/executor_t.html -/doc/asio/reference/this_coro__executor_t.html -/doc/asio/reference/thread/ -/doc/asio/reference/thread.html -/doc/asio/reference/thread/join.html -/doc/asio/reference/thread_pool/ -/doc/asio/reference/thread_pool/add_service.html -/doc/asio/reference/thread_pool/attach.html -/doc/asio/reference/thread_pool__basic_executor_type/ -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/ -/doc/asio/reference/thread_pool__basic_executor_type/_basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/bulk_execute.html -/doc/asio/reference/thread_pool__basic_executor_type/connect.html -/doc/asio/reference/thread_pool__basic_executor_type/context.html -/doc/asio/reference/thread_pool__basic_executor_type/defer.html -/doc/asio/reference/thread_pool__basic_executor_type/dispatch.html -/doc/asio/reference/thread_pool__basic_executor_type/execute.html -/doc/asio/reference/thread_pool__basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/index_type.html -/doc/asio/reference/thread_pool__basic_executor_type/on_work_finished.html -/doc/asio/reference/thread_pool__basic_executor_type/on_work_started.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/ -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq__eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_not__eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/post.html -/doc/asio/reference/thread_pool__basic_executor_type/query/ -/doc/asio/reference/thread_pool__basic_executor_type/query.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload4.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload5.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload6.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/ -/doc/asio/reference/thread_pool__basic_executor_type/query__static.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/require/ -/doc/asio/reference/thread_pool__basic_executor_type/require.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload4.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload5.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload6.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload7.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload8.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload9.html -/doc/asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html -/doc/asio/reference/thread_pool__basic_executor_type/schedule.html -/doc/asio/reference/thread_pool__basic_executor_type/sender_type.html -/doc/asio/reference/thread_pool__basic_executor_type/shape_type.html -/doc/asio/reference/thread_pool/destroy.html -/doc/asio/reference/thread_pool/executor.html -/doc/asio/reference/thread_pool/executor_type.html -/doc/asio/reference/thread_pool/fork_event.html -/doc/asio/reference/thread_pool/get_executor.html -/doc/asio/reference/thread_pool/has_service.html -/doc/asio/reference/thread_pool.html -/doc/asio/reference/thread_pool/join.html -/doc/asio/reference/thread_pool/make_service.html -/doc/asio/reference/thread_pool/notify_fork.html -/doc/asio/reference/thread_pool/scheduler.html -/doc/asio/reference/thread_pool/scheduler_type.html -/doc/asio/reference/thread_pool/shutdown.html -/doc/asio/reference/thread_pool/stop.html -/doc/asio/reference/thread_pool/thread_pool/ -/doc/asio/reference/thread_pool/_thread_pool.html -/doc/asio/reference/thread_pool/thread_pool.html -/doc/asio/reference/thread_pool/thread_pool/overload1.html -/doc/asio/reference/thread_pool/thread_pool/overload2.html -/doc/asio/reference/thread_pool/use_service/ -/doc/asio/reference/thread_pool/use_service.html -/doc/asio/reference/thread_pool/use_service/overload1.html -/doc/asio/reference/thread_pool/use_service/overload2.html -/doc/asio/reference/thread_pool/wait.html -/doc/asio/reference/thread/_thread.html -/doc/asio/reference/thread/thread.html -/doc/asio/reference/TimeTraits.html -/doc/asio/reference/time_traits_lt__ptime__gt_/ -/doc/asio/reference/time_traits_lt__ptime__gt_/add.html -/doc/asio/reference/time_traits_lt__ptime__gt_/duration_type.html -/doc/asio/reference/time_traits_lt__ptime__gt_.html -/doc/asio/reference/time_traits_lt__ptime__gt_/less_than.html -/doc/asio/reference/time_traits_lt__ptime__gt_/now.html -/doc/asio/reference/time_traits_lt__ptime__gt_/subtract.html -/doc/asio/reference/time_traits_lt__ptime__gt_/time_type.html -/doc/asio/reference/time_traits_lt__ptime__gt_/to_posix_duration.html -/doc/asio/reference/transfer_all.html -/doc/asio/reference/transfer_at_least.html -/doc/asio/reference/transfer_exactly.html -/doc/asio/reference/use_awaitable.html -/doc/asio/reference/use_awaitable_t/ -/doc/asio/reference/use_awaitable_t/as_default_on.html -/doc/asio/reference/use_awaitable_t__executor_with_default/ -/doc/asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html -/doc/asio/reference/use_awaitable_t__executor_with_default.html -/doc/asio/reference/use_awaitable_t.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/ -/doc/asio/reference/use_awaitable_t/use_awaitable_t.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/overload1.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/overload2.html -/doc/asio/reference/use_future.html -/doc/asio/reference/use_future_t/ -/doc/asio/reference/use_future_t/allocator_type.html -/doc/asio/reference/use_future_t/get_allocator.html -/doc/asio/reference/use_future_t.html -/doc/asio/reference/use_future_t/operator_lb__rb_.html -/doc/asio/reference/use_future_t/operator_lp__rp_.html -/doc/asio/reference/use_future_t/rebind.html -/doc/asio/reference/use_future_t/use_future_t/ -/doc/asio/reference/use_future_t/use_future_t.html -/doc/asio/reference/use_future_t/use_future_t/overload1.html -/doc/asio/reference/use_future_t/use_future_t/overload2.html -/doc/asio/reference/uses_executor.html -/doc/asio/reference/WaitHandler.html -/doc/asio/reference/wait_traits/ -/doc/asio/reference/WaitTraits.html -/doc/asio/reference/wait_traits.html -/doc/asio/reference/wait_traits/to_wait_duration/ -/doc/asio/reference/wait_traits/to_wait_duration.html -/doc/asio/reference/wait_traits/to_wait_duration/overload1.html -/doc/asio/reference/wait_traits/to_wait_duration/overload2.html -/doc/asio/reference/windows__basic_object_handle/ -/doc/asio/reference/windows__basic_object_handle/assign/ -/doc/asio/reference/windows__basic_object_handle/assign.html -/doc/asio/reference/windows__basic_object_handle/assign/overload1.html -/doc/asio/reference/windows__basic_object_handle/assign/overload2.html -/doc/asio/reference/windows__basic_object_handle/async_wait.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/ -/doc/asio/reference/windows__basic_object_handle/basic_object_handle.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload1.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload2.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html -/doc/asio/reference/windows__basic_object_handle/cancel/ -/doc/asio/reference/windows__basic_object_handle/cancel.html -/doc/asio/reference/windows__basic_object_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_object_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_object_handle/close/ -/doc/asio/reference/windows__basic_object_handle/close.html -/doc/asio/reference/windows__basic_object_handle/close/overload1.html -/doc/asio/reference/windows__basic_object_handle/close/overload2.html -/doc/asio/reference/windows__basic_object_handle/executor_type.html -/doc/asio/reference/windows__basic_object_handle/get_executor.html -/doc/asio/reference/windows__basic_object_handle.html -/doc/asio/reference/windows__basic_object_handle/is_open.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/ -/doc/asio/reference/windows__basic_object_handle/lowest_layer.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_object_handle/native_handle.html -/doc/asio/reference/windows__basic_object_handle/native_handle_type.html -/doc/asio/reference/windows__basic_object_handle/operator_eq_.html -/doc/asio/reference/windows__basic_object_handle__rebind_executor/ -/doc/asio/reference/windows__basic_object_handle__rebind_executor.html -/doc/asio/reference/windows__basic_object_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_object_handle/wait/ -/doc/asio/reference/windows__basic_object_handle/wait.html -/doc/asio/reference/windows__basic_object_handle/wait/overload1.html -/doc/asio/reference/windows__basic_object_handle/wait/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/ -/doc/asio/reference/windows__basic_overlapped_handle/assign/ -/doc/asio/reference/windows__basic_overlapped_handle/assign.html -/doc/asio/reference/windows__basic_overlapped_handle/assign/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/assign/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/ -/doc/asio/reference/windows__basic_overlapped_handle/_basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/ -/doc/asio/reference/windows__basic_overlapped_handle/cancel.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/close/ -/doc/asio/reference/windows__basic_overlapped_handle/close.html -/doc/asio/reference/windows__basic_overlapped_handle/close/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/close/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/executor_type.html -/doc/asio/reference/windows__basic_overlapped_handle/get_executor.html -/doc/asio/reference/windows__basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/is_open.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/ -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_overlapped_handle/native_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/native_handle_type.html -/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_.html -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/ -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor.html -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_random_access_handle/ -/doc/asio/reference/windows__basic_random_access_handle/assign/ -/doc/asio/reference/windows__basic_random_access_handle/assign.html -/doc/asio/reference/windows__basic_random_access_handle/assign/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/assign/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/async_read_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/async_write_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/ -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/ -/doc/asio/reference/windows__basic_random_access_handle/cancel.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/close/ -/doc/asio/reference/windows__basic_random_access_handle/close.html -/doc/asio/reference/windows__basic_random_access_handle/close/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/close/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/executor_type.html -/doc/asio/reference/windows__basic_random_access_handle/get_executor.html -/doc/asio/reference/windows__basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/is_open.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/ -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_random_access_handle/native_handle.html -/doc/asio/reference/windows__basic_random_access_handle/native_handle_type.html -/doc/asio/reference/windows__basic_random_access_handle/operator_eq_.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/ -/doc/asio/reference/windows__basic_random_access_handle/read_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload2.html -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor/ -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor.html -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/ -/doc/asio/reference/windows__basic_random_access_handle/write_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload2.html -/doc/asio/reference/windows__basic_stream_handle/ -/doc/asio/reference/windows__basic_stream_handle/assign/ -/doc/asio/reference/windows__basic_stream_handle/assign.html -/doc/asio/reference/windows__basic_stream_handle/assign/overload1.html -/doc/asio/reference/windows__basic_stream_handle/assign/overload2.html -/doc/asio/reference/windows__basic_stream_handle/async_read_some.html -/doc/asio/reference/windows__basic_stream_handle/async_write_some.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/ -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload1.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload2.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html -/doc/asio/reference/windows__basic_stream_handle/cancel/ -/doc/asio/reference/windows__basic_stream_handle/cancel.html -/doc/asio/reference/windows__basic_stream_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_stream_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_stream_handle/close/ -/doc/asio/reference/windows__basic_stream_handle/close.html -/doc/asio/reference/windows__basic_stream_handle/close/overload1.html -/doc/asio/reference/windows__basic_stream_handle/close/overload2.html -/doc/asio/reference/windows__basic_stream_handle/executor_type.html -/doc/asio/reference/windows__basic_stream_handle/get_executor.html -/doc/asio/reference/windows__basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/is_open.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/ -/doc/asio/reference/windows__basic_stream_handle/lowest_layer.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_stream_handle/native_handle.html -/doc/asio/reference/windows__basic_stream_handle/native_handle_type.html -/doc/asio/reference/windows__basic_stream_handle/operator_eq_.html -/doc/asio/reference/windows__basic_stream_handle/read_some/ -/doc/asio/reference/windows__basic_stream_handle/read_some.html -/doc/asio/reference/windows__basic_stream_handle/read_some/overload1.html -/doc/asio/reference/windows__basic_stream_handle/read_some/overload2.html -/doc/asio/reference/windows__basic_stream_handle__rebind_executor/ -/doc/asio/reference/windows__basic_stream_handle__rebind_executor.html -/doc/asio/reference/windows__basic_stream_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_stream_handle/write_some/ -/doc/asio/reference/windows__basic_stream_handle/write_some.html -/doc/asio/reference/windows__basic_stream_handle/write_some/overload1.html -/doc/asio/reference/windows__basic_stream_handle/write_some/overload2.html -/doc/asio/reference/windows__object_handle.html -/doc/asio/reference/windows__overlapped_handle.html -/doc/asio/reference/windows__overlapped_ptr/ -/doc/asio/reference/windows__overlapped_ptr/complete.html -/doc/asio/reference/windows__overlapped_ptr/get/ -/doc/asio/reference/windows__overlapped_ptr/get.html -/doc/asio/reference/windows__overlapped_ptr/get/overload1.html -/doc/asio/reference/windows__overlapped_ptr/get/overload2.html -/doc/asio/reference/windows__overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/ -/doc/asio/reference/windows__overlapped_ptr/_overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload1.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload2.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload3.html -/doc/asio/reference/windows__overlapped_ptr/release.html -/doc/asio/reference/windows__overlapped_ptr/reset/ -/doc/asio/reference/windows__overlapped_ptr/reset.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload1.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload2.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload3.html -/doc/asio/reference/windows__random_access_handle.html -/doc/asio/reference/windows__stream_handle.html -/doc/asio/reference/write/ -/doc/asio/reference/write_at/ -/doc/asio/reference/write_at.html -/doc/asio/reference/write_at/overload1.html -/doc/asio/reference/write_at/overload2.html -/doc/asio/reference/write_at/overload3.html -/doc/asio/reference/write_at/overload4.html -/doc/asio/reference/write_at/overload5.html -/doc/asio/reference/write_at/overload6.html -/doc/asio/reference/write_at/overload7.html -/doc/asio/reference/write_at/overload8.html -/doc/asio/reference/WriteHandler.html -/doc/asio/reference/write.html -/doc/asio/reference/write/overload10.html -/doc/asio/reference/write/overload11.html -/doc/asio/reference/write/overload12.html -/doc/asio/reference/write/overload13.html -/doc/asio/reference/write/overload14.html -/doc/asio/reference/write/overload15.html -/doc/asio/reference/write/overload16.html -/doc/asio/reference/write/overload1.html -/doc/asio/reference/write/overload2.html -/doc/asio/reference/write/overload3.html -/doc/asio/reference/write/overload4.html -/doc/asio/reference/write/overload5.html -/doc/asio/reference/write/overload6.html -/doc/asio/reference/write/overload7.html -/doc/asio/reference/write/overload8.html -/doc/asio/reference/write/overload9.html -/doc/asio/reference/yield_context.html -/doc/asio/std_executors.html -/doc/asio/tutorial/ -/doc/asio/tutorial/boost_bind.html -/doc/asio/tutorial.html -/doc/asio/tutorial/tutdaytime1/ -/doc/asio/tutorial/tutdaytime1.html -/doc/asio/tutorial/tutdaytime1/src.html -/doc/asio/tutorial/tutdaytime2/ -/doc/asio/tutorial/tutdaytime2.html -/doc/asio/tutorial/tutdaytime2/src.html -/doc/asio/tutorial/tutdaytime3/ -/doc/asio/tutorial/tutdaytime3.html -/doc/asio/tutorial/tutdaytime3/src.html -/doc/asio/tutorial/tutdaytime4/ -/doc/asio/tutorial/tutdaytime4.html -/doc/asio/tutorial/tutdaytime4/src.html -/doc/asio/tutorial/tutdaytime5/ -/doc/asio/tutorial/tutdaytime5.html -/doc/asio/tutorial/tutdaytime5/src.html -/doc/asio/tutorial/tutdaytime6/ -/doc/asio/tutorial/tutdaytime6.html -/doc/asio/tutorial/tutdaytime6/src.html -/doc/asio/tutorial/tutdaytime7/ -/doc/asio/tutorial/tutdaytime7.html -/doc/asio/tutorial/tutdaytime7/src.html -/doc/asio/tutorial/tuttimer1/ -/doc/asio/tutorial/tuttimer1.html -/doc/asio/tutorial/tuttimer1/src.html -/doc/asio/tutorial/tuttimer2/ -/doc/asio/tutorial/tuttimer2.html -/doc/asio/tutorial/tuttimer2/src.html -/doc/asio/tutorial/tuttimer3/ -/doc/asio/tutorial/tuttimer3.html -/doc/asio/tutorial/tuttimer3/src.html -/doc/asio/tutorial/tuttimer4/ -/doc/asio/tutorial/tuttimer4.html -/doc/asio/tutorial/tuttimer4/src.html -/doc/asio/tutorial/tuttimer5/ -/doc/asio/tutorial/tuttimer5.html -/doc/asio/tutorial/tuttimer5/src.html -/doc/asio/using.html -/doc/async_op1.png -/doc/async_op2.png -/doc/blank.png -/doc/boostbook.css -/doc/caution.png -/doc/draft.png -/doc/examples/ -/doc/examples/diffs/ -/doc/examples/diffs/allocation/ -/doc/examples/diffs/allocation/server.cpp.html -/doc/examples/diffs/buffers/ -/doc/examples/diffs/buffers/reference_counted.cpp.html -/doc/examples/diffs/chat/ -/doc/examples/diffs/chat/chat_client.cpp.html -/doc/examples/diffs/chat/chat_message.hpp.html -/doc/examples/diffs/chat/chat_server.cpp.html -/doc/examples/diffs/echo/ -/doc/examples/diffs/echo/async_tcp_echo_server.cpp.html -/doc/examples/diffs/echo/async_udp_echo_server.cpp.html -/doc/examples/diffs/echo/blocking_tcp_echo_client.cpp.html -/doc/examples/diffs/echo/blocking_tcp_echo_server.cpp.html -/doc/examples/diffs/echo/blocking_udp_echo_client.cpp.html -/doc/examples/diffs/echo/blocking_udp_echo_server.cpp.html -/doc/examples/diffs/executors/ -/doc/examples/diffs/executors/actor.cpp.html -/doc/examples/diffs/executors/bank_account_1.cpp.html -/doc/examples/diffs/executors/bank_account_2.cpp.html -/doc/examples/diffs/executors/fork_join.cpp.html -/doc/examples/diffs/executors/pipeline.cpp.html -/doc/examples/diffs/executors/priority_scheduler.cpp.html -/doc/examples/diffs/fork/ -/doc/examples/diffs/fork/daemon.cpp.html -/doc/examples/diffs/fork/process_per_connection.cpp.html -/doc/examples/diffs/futures/ -/doc/examples/diffs/futures/daytime_client.cpp.html -/doc/examples/diffs/handler_tracking/ -/doc/examples/diffs/handler_tracking/async_tcp_echo_server.cpp.html -/doc/examples/diffs/handler_tracking/custom_tracking.hpp.html -/doc/examples/diffs/http/ -/doc/examples/diffs/http/server/ -/doc/examples/diffs/http/server/connection.cpp.html -/doc/examples/diffs/http/server/connection.hpp.html -/doc/examples/diffs/http/server/connection_manager.cpp.html -/doc/examples/diffs/http/server/connection_manager.hpp.html -/doc/examples/diffs/http/server/header.hpp.html -/doc/examples/diffs/http/server/main.cpp.html -/doc/examples/diffs/http/server/mime_types.cpp.html -/doc/examples/diffs/http/server/mime_types.hpp.html -/doc/examples/diffs/http/server/reply.cpp.html -/doc/examples/diffs/http/server/reply.hpp.html -/doc/examples/diffs/http/server/request_handler.cpp.html -/doc/examples/diffs/http/server/request_handler.hpp.html -/doc/examples/diffs/http/server/request.hpp.html -/doc/examples/diffs/http/server/request_parser.cpp.html -/doc/examples/diffs/http/server/request_parser.hpp.html -/doc/examples/diffs/http/server/server.cpp.html -/doc/examples/diffs/http/server/server.hpp.html -/doc/examples/diffs/invocation/ -/doc/examples/diffs/invocation/prioritised_handlers.cpp.html -/doc/examples/diffs/iostreams/ -/doc/examples/diffs/iostreams/http_client.cpp.html -/doc/examples/diffs/local/ -/doc/examples/diffs/local/connect_pair.cpp.html -/doc/examples/diffs/local/iostream_client.cpp.html -/doc/examples/diffs/local/stream_client.cpp.html -/doc/examples/diffs/local/stream_server.cpp.html -/doc/examples/diffs/multicast/ -/doc/examples/diffs/multicast/receiver.cpp.html -/doc/examples/diffs/multicast/sender.cpp.html -/doc/examples/diffs/nonblocking/ -/doc/examples/diffs/nonblocking/third_party_lib.cpp.html -/doc/examples/diffs/operations/ -/doc/examples/diffs/operations/composed_1.cpp.html -/doc/examples/diffs/operations/composed_2.cpp.html -/doc/examples/diffs/operations/composed_3.cpp.html -/doc/examples/diffs/operations/composed_4.cpp.html -/doc/examples/diffs/operations/composed_5.cpp.html -/doc/examples/diffs/operations/composed_6.cpp.html -/doc/examples/diffs/operations/composed_7.cpp.html -/doc/examples/diffs/operations/composed_8.cpp.html -/doc/examples/diffs/socks4/ -/doc/examples/diffs/socks4/socks4.hpp.html -/doc/examples/diffs/socks4/sync_client.cpp.html -/doc/examples/diffs/spawn/ -/doc/examples/diffs/spawn/echo_server.cpp.html -/doc/examples/diffs/spawn/parallel_grep.cpp.html -/doc/examples/diffs/ssl/ -/doc/examples/diffs/ssl/client.cpp.html -/doc/examples/diffs/ssl/server.cpp.html -/doc/examples/diffs/timeouts/ -/doc/examples/diffs/timeouts/async_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_token_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_udp_client.cpp.html -/doc/examples/diffs/timeouts/server.cpp.html -/doc/examples/diffs/timers/ -/doc/examples/diffs/timers/time_t_timer.cpp.html -/doc/home.png -/doc/important.png -/doc/index.html -/doc/next_disabled.png -/doc/next.png -/doc/note.png -/doc/prev_disabled.png -/doc/prev.png -/doc/proactor.png -/doc/standalone_HTML.manifest -/doc/sync_op.png -/doc/tip.png -/doc/up_disabled.png -/doc/up.png -/doc/warning.png -/include/ -/include/asio/ -/include/asio/any_io_executor.hpp -/include/asio/associated_allocator.hpp -/include/asio/associated_executor.hpp -/include/asio/async_result.hpp -/include/asio/awaitable.hpp -/include/asio/basic_datagram_socket.hpp -/include/asio/basic_deadline_timer.hpp -/include/asio/basic_io_object.hpp -/include/asio/basic_raw_socket.hpp -/include/asio/basic_seq_packet_socket.hpp -/include/asio/basic_serial_port.hpp -/include/asio/basic_signal_set.hpp -/include/asio/basic_socket_acceptor.hpp -/include/asio/basic_socket.hpp -/include/asio/basic_socket_iostream.hpp -/include/asio/basic_socket_streambuf.hpp -/include/asio/basic_streambuf_fwd.hpp -/include/asio/basic_streambuf.hpp -/include/asio/basic_stream_socket.hpp -/include/asio/basic_waitable_timer.hpp -/include/asio/bind_executor.hpp -/include/asio/buffered_read_stream_fwd.hpp -/include/asio/buffered_read_stream.hpp -/include/asio/buffered_stream_fwd.hpp -/include/asio/buffered_stream.hpp -/include/asio/buffered_write_stream_fwd.hpp -/include/asio/buffered_write_stream.hpp -/include/asio/buffer.hpp -/include/asio/buffers_iterator.hpp -/include/asio/completion_condition.hpp -/include/asio/compose.hpp -/include/asio/connect.hpp -/include/asio/coroutine.hpp -/include/asio/co_spawn.hpp -/include/asio/deadline_timer.hpp -/include/asio/defer.hpp -/include/asio/detached.hpp -/include/asio/detail/ -/include/asio/detail/array_fwd.hpp -/include/asio/detail/array.hpp -/include/asio/detail/assert.hpp -/include/asio/detail/atomic_count.hpp -/include/asio/detail/base_from_completion_cond.hpp -/include/asio/detail/bind_handler.hpp -/include/asio/detail/blocking_executor_op.hpp -/include/asio/detail/buffered_stream_storage.hpp -/include/asio/detail/buffer_resize_guard.hpp -/include/asio/detail/buffer_sequence_adapter.hpp -/include/asio/detail/bulk_executor_op.hpp -/include/asio/detail/call_stack.hpp -/include/asio/detail/chrono.hpp -/include/asio/detail/chrono_time_traits.hpp -/include/asio/detail/completion_handler.hpp -/include/asio/detail/concurrency_hint.hpp -/include/asio/detail/conditionally_enabled_event.hpp -/include/asio/detail/conditionally_enabled_mutex.hpp -/include/asio/detail/config.hpp -/include/asio/detail/consuming_buffers.hpp -/include/asio/detail/cstddef.hpp -/include/asio/detail/cstdint.hpp -/include/asio/detail/date_time_fwd.hpp -/include/asio/detail/deadline_timer_service.hpp -/include/asio/detail/dependent_type.hpp -/include/asio/detail/descriptor_ops.hpp -/include/asio/detail/descriptor_read_op.hpp -/include/asio/detail/descriptor_write_op.hpp -/include/asio/detail/dev_poll_reactor.hpp -/include/asio/detail/epoll_reactor.hpp -/include/asio/detail/eventfd_select_interrupter.hpp -/include/asio/detail/event.hpp -/include/asio/detail/executor_function.hpp -/include/asio/detail/executor_op.hpp -/include/asio/detail/fd_set_adapter.hpp -/include/asio/detail/fenced_block.hpp -/include/asio/detail/functional.hpp -/include/asio/detail/future.hpp -/include/asio/detail/gcc_arm_fenced_block.hpp -/include/asio/detail/gcc_hppa_fenced_block.hpp -/include/asio/detail/gcc_sync_fenced_block.hpp -/include/asio/detail/gcc_x86_fenced_block.hpp -/include/asio/detail/global.hpp -/include/asio/detail/handler_alloc_helpers.hpp -/include/asio/detail/handler_cont_helpers.hpp -/include/asio/detail/handler_invoke_helpers.hpp -/include/asio/detail/handler_tracking.hpp -/include/asio/detail/handler_type_requirements.hpp -/include/asio/detail/handler_work.hpp -/include/asio/detail/hash_map.hpp -/include/asio/detail/impl/ -/include/asio/detail/impl/buffer_sequence_adapter.ipp -/include/asio/detail/impl/descriptor_ops.ipp -/include/asio/detail/impl/dev_poll_reactor.hpp -/include/asio/detail/impl/dev_poll_reactor.ipp -/include/asio/detail/impl/epoll_reactor.hpp -/include/asio/detail/impl/epoll_reactor.ipp -/include/asio/detail/impl/eventfd_select_interrupter.ipp -/include/asio/detail/impl/handler_tracking.ipp -/include/asio/detail/impl/kqueue_reactor.hpp -/include/asio/detail/impl/kqueue_reactor.ipp -/include/asio/detail/impl/null_event.ipp -/include/asio/detail/impl/pipe_select_interrupter.ipp -/include/asio/detail/impl/posix_event.ipp -/include/asio/detail/impl/posix_mutex.ipp -/include/asio/detail/impl/posix_thread.ipp -/include/asio/detail/impl/posix_tss_ptr.ipp -/include/asio/detail/impl/reactive_descriptor_service.ipp -/include/asio/detail/impl/reactive_serial_port_service.ipp -/include/asio/detail/impl/reactive_socket_service_base.ipp -/include/asio/detail/impl/resolver_service_base.ipp -/include/asio/detail/impl/scheduler.ipp -/include/asio/detail/impl/select_reactor.hpp -/include/asio/detail/impl/select_reactor.ipp -/include/asio/detail/impl/service_registry.hpp -/include/asio/detail/impl/service_registry.ipp -/include/asio/detail/impl/signal_set_service.ipp -/include/asio/detail/impl/socket_ops.ipp -/include/asio/detail/impl/socket_select_interrupter.ipp -/include/asio/detail/impl/strand_executor_service.hpp -/include/asio/detail/impl/strand_executor_service.ipp -/include/asio/detail/impl/strand_service.hpp -/include/asio/detail/impl/strand_service.ipp -/include/asio/detail/impl/throw_error.ipp -/include/asio/detail/impl/timer_queue_ptime.ipp -/include/asio/detail/impl/timer_queue_set.ipp -/include/asio/detail/impl/win_event.ipp -/include/asio/detail/impl/win_iocp_handle_service.ipp -/include/asio/detail/impl/win_iocp_io_context.hpp -/include/asio/detail/impl/win_iocp_io_context.ipp -/include/asio/detail/impl/win_iocp_serial_port_service.ipp -/include/asio/detail/impl/win_iocp_socket_service_base.ipp -/include/asio/detail/impl/win_mutex.ipp -/include/asio/detail/impl/win_object_handle_service.ipp -/include/asio/detail/impl/winrt_ssocket_service_base.ipp -/include/asio/detail/impl/winrt_timer_scheduler.hpp -/include/asio/detail/impl/winrt_timer_scheduler.ipp -/include/asio/detail/impl/winsock_init.ipp -/include/asio/detail/impl/win_static_mutex.ipp -/include/asio/detail/impl/win_thread.ipp -/include/asio/detail/impl/win_tss_ptr.ipp -/include/asio/detail/io_control.hpp -/include/asio/detail/io_object_impl.hpp -/include/asio/detail/is_buffer_sequence.hpp -/include/asio/detail/is_executor.hpp -/include/asio/detail/keyword_tss_ptr.hpp -/include/asio/detail/kqueue_reactor.hpp -/include/asio/detail/limits.hpp -/include/asio/detail/local_free_on_block_exit.hpp -/include/asio/detail/macos_fenced_block.hpp -/include/asio/detail/memory.hpp -/include/asio/detail/mutex.hpp -/include/asio/detail/non_const_lvalue.hpp -/include/asio/detail/noncopyable.hpp -/include/asio/detail/null_event.hpp -/include/asio/detail/null_fenced_block.hpp -/include/asio/detail/null_global.hpp -/include/asio/detail/null_mutex.hpp -/include/asio/detail/null_reactor.hpp -/include/asio/detail/null_signal_blocker.hpp -/include/asio/detail/null_socket_service.hpp -/include/asio/detail/null_static_mutex.hpp -/include/asio/detail/null_thread.hpp -/include/asio/detail/null_tss_ptr.hpp -/include/asio/detail/object_pool.hpp -/include/asio/detail/old_win_sdk_compat.hpp -/include/asio/detail/operation.hpp -/include/asio/detail/op_queue.hpp -/include/asio/detail/pipe_select_interrupter.hpp -/include/asio/detail/pop_options.hpp -/include/asio/detail/posix_event.hpp -/include/asio/detail/posix_fd_set_adapter.hpp -/include/asio/detail/posix_global.hpp -/include/asio/detail/posix_mutex.hpp -/include/asio/detail/posix_signal_blocker.hpp -/include/asio/detail/posix_static_mutex.hpp -/include/asio/detail/posix_thread.hpp -/include/asio/detail/posix_tss_ptr.hpp -/include/asio/detail/push_options.hpp -/include/asio/detail/reactive_descriptor_service.hpp -/include/asio/detail/reactive_null_buffers_op.hpp -/include/asio/detail/reactive_serial_port_service.hpp -/include/asio/detail/reactive_socket_accept_op.hpp -/include/asio/detail/reactive_socket_connect_op.hpp -/include/asio/detail/reactive_socket_recvfrom_op.hpp -/include/asio/detail/reactive_socket_recvmsg_op.hpp -/include/asio/detail/reactive_socket_recv_op.hpp -/include/asio/detail/reactive_socket_send_op.hpp -/include/asio/detail/reactive_socket_sendto_op.hpp -/include/asio/detail/reactive_socket_service_base.hpp -/include/asio/detail/reactive_socket_service.hpp -/include/asio/detail/reactive_wait_op.hpp -/include/asio/detail/reactor_fwd.hpp -/include/asio/detail/reactor.hpp -/include/asio/detail/reactor_op.hpp -/include/asio/detail/reactor_op_queue.hpp -/include/asio/detail/recycling_allocator.hpp -/include/asio/detail/regex_fwd.hpp -/include/asio/detail/resolve_endpoint_op.hpp -/include/asio/detail/resolve_op.hpp -/include/asio/detail/resolve_query_op.hpp -/include/asio/detail/resolver_service_base.hpp -/include/asio/detail/resolver_service.hpp -/include/asio/detail/scheduler.hpp -/include/asio/detail/scheduler_operation.hpp -/include/asio/detail/scheduler_thread_info.hpp -/include/asio/detail/scoped_lock.hpp -/include/asio/detail/scoped_ptr.hpp -/include/asio/detail/select_interrupter.hpp -/include/asio/detail/select_reactor.hpp -/include/asio/detail/service_registry.hpp -/include/asio/detail/signal_blocker.hpp -/include/asio/detail/signal_handler.hpp -/include/asio/detail/signal_init.hpp -/include/asio/detail/signal_op.hpp -/include/asio/detail/signal_set_service.hpp -/include/asio/detail/socket_holder.hpp -/include/asio/detail/socket_ops.hpp -/include/asio/detail/socket_option.hpp -/include/asio/detail/socket_select_interrupter.hpp -/include/asio/detail/socket_types.hpp -/include/asio/detail/solaris_fenced_block.hpp -/include/asio/detail/source_location.hpp -/include/asio/detail/static_mutex.hpp -/include/asio/detail/std_event.hpp -/include/asio/detail/std_fenced_block.hpp -/include/asio/detail/std_global.hpp -/include/asio/detail/std_mutex.hpp -/include/asio/detail/std_static_mutex.hpp -/include/asio/detail/std_thread.hpp -/include/asio/detail/strand_executor_service.hpp -/include/asio/detail/strand_service.hpp -/include/asio/detail/string_view.hpp -/include/asio/detail/thread_context.hpp -/include/asio/detail/thread_group.hpp -/include/asio/detail/thread.hpp -/include/asio/detail/thread_info_base.hpp -/include/asio/detail/throw_error.hpp -/include/asio/detail/throw_exception.hpp -/include/asio/detail/timer_queue_base.hpp -/include/asio/detail/timer_queue.hpp -/include/asio/detail/timer_queue_ptime.hpp -/include/asio/detail/timer_queue_set.hpp -/include/asio/detail/timer_scheduler_fwd.hpp -/include/asio/detail/timer_scheduler.hpp -/include/asio/detail/tss_ptr.hpp -/include/asio/detail/type_traits.hpp -/include/asio/detail/variadic_templates.hpp -/include/asio/detail/wait_handler.hpp -/include/asio/detail/wait_op.hpp -/include/asio/detail/winapp_thread.hpp -/include/asio/detail/wince_thread.hpp -/include/asio/detail/win_event.hpp -/include/asio/detail/win_fd_set_adapter.hpp -/include/asio/detail/win_fenced_block.hpp -/include/asio/detail/win_global.hpp -/include/asio/detail/win_iocp_handle_read_op.hpp -/include/asio/detail/win_iocp_handle_service.hpp -/include/asio/detail/win_iocp_handle_write_op.hpp -/include/asio/detail/win_iocp_io_context.hpp -/include/asio/detail/win_iocp_null_buffers_op.hpp -/include/asio/detail/win_iocp_operation.hpp -/include/asio/detail/win_iocp_overlapped_op.hpp -/include/asio/detail/win_iocp_overlapped_ptr.hpp -/include/asio/detail/win_iocp_serial_port_service.hpp -/include/asio/detail/win_iocp_socket_accept_op.hpp -/include/asio/detail/win_iocp_socket_connect_op.hpp -/include/asio/detail/win_iocp_socket_recvfrom_op.hpp -/include/asio/detail/win_iocp_socket_recvmsg_op.hpp -/include/asio/detail/win_iocp_socket_recv_op.hpp -/include/asio/detail/win_iocp_socket_send_op.hpp -/include/asio/detail/win_iocp_socket_service_base.hpp -/include/asio/detail/win_iocp_socket_service.hpp -/include/asio/detail/win_iocp_thread_info.hpp -/include/asio/detail/win_iocp_wait_op.hpp -/include/asio/detail/win_mutex.hpp -/include/asio/detail/win_object_handle_service.hpp -/include/asio/detail/winrt_async_manager.hpp -/include/asio/detail/winrt_async_op.hpp -/include/asio/detail/winrt_resolve_op.hpp -/include/asio/detail/winrt_resolver_service.hpp -/include/asio/detail/winrt_socket_connect_op.hpp -/include/asio/detail/winrt_socket_recv_op.hpp -/include/asio/detail/winrt_socket_send_op.hpp -/include/asio/detail/winrt_ssocket_service_base.hpp -/include/asio/detail/winrt_ssocket_service.hpp -/include/asio/detail/winrt_timer_scheduler.hpp -/include/asio/detail/winrt_utils.hpp -/include/asio/detail/winsock_init.hpp -/include/asio/detail/win_static_mutex.hpp -/include/asio/detail/win_thread.hpp -/include/asio/detail/win_tss_ptr.hpp -/include/asio/detail/work_dispatcher.hpp -/include/asio/detail/wrapped_handler.hpp -/include/asio/dispatch.hpp -/include/asio/error_code.hpp -/include/asio/error.hpp -/include/asio/execution/ -/include/asio/execution/allocator.hpp -/include/asio/execution/any_executor.hpp -/include/asio/execution/bad_executor.hpp -/include/asio/execution/blocking_adaptation.hpp -/include/asio/execution/blocking.hpp -/include/asio/execution/bulk_execute.hpp -/include/asio/execution/bulk_guarantee.hpp -/include/asio/execution/connect.hpp -/include/asio/execution/context_as.hpp -/include/asio/execution/context.hpp -/include/asio/execution_context.hpp -/include/asio/execution/detail/ -/include/asio/execution/detail/as_invocable.hpp -/include/asio/execution/detail/as_operation.hpp -/include/asio/execution/detail/as_receiver.hpp -/include/asio/execution/detail/bulk_sender.hpp -/include/asio/execution/detail/submit_receiver.hpp -/include/asio/execution/detail/void_receiver.hpp -/include/asio/execution/execute.hpp -/include/asio/execution/executor.hpp -/include/asio/execution.hpp -/include/asio/execution/impl/ -/include/asio/execution/impl/bad_executor.ipp -/include/asio/execution/impl/receiver_invocation_error.ipp -/include/asio/execution/invocable_archetype.hpp -/include/asio/execution/mapping.hpp -/include/asio/execution/occupancy.hpp -/include/asio/execution/operation_state.hpp -/include/asio/execution/outstanding_work.hpp -/include/asio/execution/prefer_only.hpp -/include/asio/execution/receiver.hpp -/include/asio/execution/receiver_invocation_error.hpp -/include/asio/execution/relationship.hpp -/include/asio/execution/schedule.hpp -/include/asio/execution/scheduler.hpp -/include/asio/execution/sender.hpp -/include/asio/execution/set_done.hpp -/include/asio/execution/set_error.hpp -/include/asio/execution/set_value.hpp -/include/asio/execution/start.hpp -/include/asio/execution/submit.hpp -/include/asio/executor.hpp -/include/asio/executor_work_guard.hpp -/include/asio/experimental/ -/include/asio/experimental/as_single.hpp -/include/asio/experimental/impl/ -/include/asio/experimental/impl/as_single.hpp -/include/asio/generic/ -/include/asio/generic/basic_endpoint.hpp -/include/asio/generic/datagram_protocol.hpp -/include/asio/generic/detail/ -/include/asio/generic/detail/endpoint.hpp -/include/asio/generic/detail/impl/ -/include/asio/generic/detail/impl/endpoint.ipp -/include/asio/generic/raw_protocol.hpp -/include/asio/generic/seq_packet_protocol.hpp -/include/asio/generic/stream_protocol.hpp -/include/asio/handler_alloc_hook.hpp -/include/asio/handler_continuation_hook.hpp -/include/asio/handler_invoke_hook.hpp -/include/asio/high_resolution_timer.hpp -/include/asio.hpp -/include/asio/impl/ -/include/asio/impl/awaitable.hpp -/include/asio/impl/buffered_read_stream.hpp -/include/asio/impl/buffered_write_stream.hpp -/include/asio/impl/compose.hpp -/include/asio/impl/connect.hpp -/include/asio/impl/co_spawn.hpp -/include/asio/impl/defer.hpp -/include/asio/impl/detached.hpp -/include/asio/impl/dispatch.hpp -/include/asio/impl/error_code.ipp -/include/asio/impl/error.ipp -/include/asio/impl/execution_context.hpp -/include/asio/impl/execution_context.ipp -/include/asio/impl/executor.hpp -/include/asio/impl/executor.ipp -/include/asio/impl/handler_alloc_hook.ipp -/include/asio/impl/io_context.hpp -/include/asio/impl/io_context.ipp -/include/asio/impl/multiple_exceptions.ipp -/include/asio/impl/post.hpp -/include/asio/impl/read_at.hpp -/include/asio/impl/read.hpp -/include/asio/impl/read_until.hpp -/include/asio/impl/redirect_error.hpp -/include/asio/impl/serial_port_base.hpp -/include/asio/impl/serial_port_base.ipp -/include/asio/impl/spawn.hpp -/include/asio/impl/src.cpp -/include/asio/impl/src.hpp -/include/asio/impl/system_context.hpp -/include/asio/impl/system_context.ipp -/include/asio/impl/system_executor.hpp -/include/asio/impl/thread_pool.hpp -/include/asio/impl/thread_pool.ipp -/include/asio/impl/use_awaitable.hpp -/include/asio/impl/use_future.hpp -/include/asio/impl/write_at.hpp -/include/asio/impl/write.hpp -/include/asio/io_context.hpp -/include/asio/io_context_strand.hpp -/include/asio/io_service.hpp -/include/asio/io_service_strand.hpp -/include/asio/ip/ -/include/asio/ip/address.hpp -/include/asio/ip/address_v4.hpp -/include/asio/ip/address_v4_iterator.hpp -/include/asio/ip/address_v4_range.hpp -/include/asio/ip/address_v6.hpp -/include/asio/ip/address_v6_iterator.hpp -/include/asio/ip/address_v6_range.hpp -/include/asio/ip/bad_address_cast.hpp -/include/asio/ip/basic_endpoint.hpp -/include/asio/ip/basic_resolver_entry.hpp -/include/asio/ip/basic_resolver.hpp -/include/asio/ip/basic_resolver_iterator.hpp -/include/asio/ip/basic_resolver_query.hpp -/include/asio/ip/basic_resolver_results.hpp -/include/asio/ip/detail/ -/include/asio/ip/detail/endpoint.hpp -/include/asio/ip/detail/impl/ -/include/asio/ip/detail/impl/endpoint.ipp -/include/asio/ip/detail/socket_option.hpp -/include/asio/ip/host_name.hpp -/include/asio/ip/icmp.hpp -/include/asio/ip/impl/ -/include/asio/ip/impl/address.hpp -/include/asio/ip/impl/address.ipp -/include/asio/ip/impl/address_v4.hpp -/include/asio/ip/impl/address_v4.ipp -/include/asio/ip/impl/address_v6.hpp -/include/asio/ip/impl/address_v6.ipp -/include/asio/ip/impl/basic_endpoint.hpp -/include/asio/ip/impl/host_name.ipp -/include/asio/ip/impl/network_v4.hpp -/include/asio/ip/impl/network_v4.ipp -/include/asio/ip/impl/network_v6.hpp -/include/asio/ip/impl/network_v6.ipp -/include/asio/ip/multicast.hpp -/include/asio/ip/network_v4.hpp -/include/asio/ip/network_v6.hpp -/include/asio/ip/resolver_base.hpp -/include/asio/ip/resolver_query_base.hpp -/include/asio/ip/tcp.hpp -/include/asio/ip/udp.hpp -/include/asio/ip/unicast.hpp -/include/asio/ip/v6_only.hpp -/include/asio/is_applicable_property.hpp -/include/asio/is_executor.hpp -/include/asio/is_read_buffered.hpp -/include/asio/is_write_buffered.hpp -/include/asio/local/ -/include/asio/local/basic_endpoint.hpp -/include/asio/local/connect_pair.hpp -/include/asio/local/datagram_protocol.hpp -/include/asio/local/detail/ -/include/asio/local/detail/endpoint.hpp -/include/asio/local/detail/impl/ -/include/asio/local/detail/impl/endpoint.ipp -/include/asio/local/stream_protocol.hpp -/include/asio/multiple_exceptions.hpp -/include/asio/packaged_task.hpp -/include/asio/placeholders.hpp -/include/asio/posix/ -/include/asio/posix/basic_descriptor.hpp -/include/asio/posix/basic_stream_descriptor.hpp -/include/asio/posix/descriptor_base.hpp -/include/asio/posix/descriptor.hpp -/include/asio/posix/stream_descriptor.hpp -/include/asio/post.hpp -/include/asio/prefer.hpp -/include/asio/query.hpp -/include/asio/read_at.hpp -/include/asio/read.hpp -/include/asio/read_until.hpp -/include/asio/redirect_error.hpp -/include/asio/require_concept.hpp -/include/asio/require.hpp -/include/asio/serial_port_base.hpp -/include/asio/serial_port.hpp -/include/asio/signal_set.hpp -/include/asio/socket_base.hpp -/include/asio/spawn.hpp -/include/asio/ssl/ -/include/asio/ssl/context_base.hpp -/include/asio/ssl/context.hpp -/include/asio/ssl/detail/ -/include/asio/ssl/detail/buffered_handshake_op.hpp -/include/asio/ssl/detail/engine.hpp -/include/asio/ssl/detail/handshake_op.hpp -/include/asio/ssl/detail/impl/ -/include/asio/ssl/detail/impl/engine.ipp -/include/asio/ssl/detail/impl/openssl_init.ipp -/include/asio/ssl/detail/io.hpp -/include/asio/ssl/detail/openssl_init.hpp -/include/asio/ssl/detail/openssl_types.hpp -/include/asio/ssl/detail/password_callback.hpp -/include/asio/ssl/detail/read_op.hpp -/include/asio/ssl/detail/shutdown_op.hpp -/include/asio/ssl/detail/stream_core.hpp -/include/asio/ssl/detail/verify_callback.hpp -/include/asio/ssl/detail/write_op.hpp -/include/asio/ssl/error.hpp -/include/asio/ssl/host_name_verification.hpp -/include/asio/ssl.hpp -/include/asio/ssl/impl/ -/include/asio/ssl/impl/context.hpp -/include/asio/ssl/impl/context.ipp -/include/asio/ssl/impl/error.ipp -/include/asio/ssl/impl/host_name_verification.ipp -/include/asio/ssl/impl/rfc2818_verification.ipp -/include/asio/ssl/impl/src.hpp -/include/asio/ssl/rfc2818_verification.hpp -/include/asio/ssl/stream_base.hpp -/include/asio/ssl/stream.hpp -/include/asio/ssl/verify_context.hpp -/include/asio/ssl/verify_mode.hpp -/include/asio/static_thread_pool.hpp -/include/asio/steady_timer.hpp -/include/asio/strand.hpp -/include/asio/streambuf.hpp -/include/asio/system_context.hpp -/include/asio/system_error.hpp -/include/asio/system_executor.hpp -/include/asio/system_timer.hpp -/include/asio/this_coro.hpp -/include/asio/thread.hpp -/include/asio/thread_pool.hpp -/include/asio/time_traits.hpp -/include/asio/traits/ -/include/asio/traits/bulk_execute_free.hpp -/include/asio/traits/bulk_execute_member.hpp -/include/asio/traits/connect_free.hpp -/include/asio/traits/connect_member.hpp -/include/asio/traits/equality_comparable.hpp -/include/asio/traits/execute_free.hpp -/include/asio/traits/execute_member.hpp -/include/asio/traits/prefer_free.hpp -/include/asio/traits/prefer_member.hpp -/include/asio/traits/query_free.hpp -/include/asio/traits/query_member.hpp -/include/asio/traits/query_static_constexpr_member.hpp -/include/asio/traits/require_concept_free.hpp -/include/asio/traits/require_concept_member.hpp -/include/asio/traits/require_free.hpp -/include/asio/traits/require_member.hpp -/include/asio/traits/schedule_free.hpp -/include/asio/traits/schedule_member.hpp -/include/asio/traits/set_done_free.hpp -/include/asio/traits/set_done_member.hpp -/include/asio/traits/set_error_free.hpp -/include/asio/traits/set_error_member.hpp -/include/asio/traits/set_value_free.hpp -/include/asio/traits/set_value_member.hpp -/include/asio/traits/start_free.hpp -/include/asio/traits/start_member.hpp -/include/asio/traits/static_query.hpp -/include/asio/traits/static_require_concept.hpp -/include/asio/traits/static_require.hpp -/include/asio/traits/submit_free.hpp -/include/asio/traits/submit_member.hpp -/include/asio/ts/ -/include/asio/ts/buffer.hpp -/include/asio/ts/executor.hpp -/include/asio/ts/internet.hpp -/include/asio/ts/io_context.hpp -/include/asio/ts/netfwd.hpp -/include/asio/ts/net.hpp -/include/asio/ts/socket.hpp -/include/asio/ts/timer.hpp -/include/asio/unyield.hpp -/include/asio/use_awaitable.hpp -/include/asio/use_future.hpp -/include/asio/uses_executor.hpp -/include/asio/version.hpp -/include/asio/wait_traits.hpp -/include/asio/windows/ -/include/asio/windows/basic_object_handle.hpp -/include/asio/windows/basic_overlapped_handle.hpp -/include/asio/windows/basic_random_access_handle.hpp -/include/asio/windows/basic_stream_handle.hpp -/include/asio/windows/object_handle.hpp -/include/asio/windows/overlapped_handle.hpp -/include/asio/windows/overlapped_ptr.hpp -/include/asio/windows/random_access_handle.hpp -/include/asio/windows/stream_handle.hpp -/include/asio/write_at.hpp -/include/asio/write.hpp -/include/asio/yield.hpp -/include/Makefile.am -/include/Makefile.in -/INSTALL -/install-sh -/LICENSE_1_0.txt -/Makefile.am -/Makefile.in -/missing -/README -/src/ -/src/asio.cpp -/src/asio_ssl.cpp -/src/examples/ -/src/examples/cpp03/ -/src/examples/cpp03/allocation/ -/src/examples/cpp03/allocation/server.cpp -/src/examples/cpp03/buffers/ -/src/examples/cpp03/buffers/reference_counted.cpp -/src/examples/cpp03/chat/ -/src/examples/cpp03/chat/chat_client.cpp -/src/examples/cpp03/chat/chat_message.hpp -/src/examples/cpp03/chat/chat_server.cpp -/src/examples/cpp03/chat/posix_chat_client.cpp -/src/examples/cpp03/echo/ -/src/examples/cpp03/echo/async_tcp_echo_server.cpp -/src/examples/cpp03/echo/async_udp_echo_server.cpp -/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp03/echo/blocking_udp_echo_client.cpp -/src/examples/cpp03/echo/blocking_udp_echo_server.cpp -/src/examples/cpp03/fork/ -/src/examples/cpp03/fork/daemon.cpp -/src/examples/cpp03/fork/process_per_connection.cpp -/src/examples/cpp03/http/ -/src/examples/cpp03/http/client/ -/src/examples/cpp03/http/client/async_client.cpp -/src/examples/cpp03/http/client/sync_client.cpp -/src/examples/cpp03/http/server/ -/src/examples/cpp03/http/server2/ -/src/examples/cpp03/http/server2/connection.cpp -/src/examples/cpp03/http/server2/connection.hpp -/src/examples/cpp03/http/server2/header.hpp -/src/examples/cpp03/http/server2/io_context_pool.cpp -/src/examples/cpp03/http/server2/io_context_pool.hpp -/src/examples/cpp03/http/server2/main.cpp -/src/examples/cpp03/http/server2/mime_types.cpp -/src/examples/cpp03/http/server2/mime_types.hpp -/src/examples/cpp03/http/server2/reply.cpp -/src/examples/cpp03/http/server2/reply.hpp -/src/examples/cpp03/http/server2/request_handler.cpp -/src/examples/cpp03/http/server2/request_handler.hpp -/src/examples/cpp03/http/server2/request.hpp -/src/examples/cpp03/http/server2/request_parser.cpp -/src/examples/cpp03/http/server2/request_parser.hpp -/src/examples/cpp03/http/server2/server.cpp -/src/examples/cpp03/http/server2/server.hpp -/src/examples/cpp03/http/server3/ -/src/examples/cpp03/http/server3/connection.cpp -/src/examples/cpp03/http/server3/connection.hpp -/src/examples/cpp03/http/server3/header.hpp -/src/examples/cpp03/http/server3/main.cpp -/src/examples/cpp03/http/server3/mime_types.cpp -/src/examples/cpp03/http/server3/mime_types.hpp -/src/examples/cpp03/http/server3/reply.cpp -/src/examples/cpp03/http/server3/reply.hpp -/src/examples/cpp03/http/server3/request_handler.cpp -/src/examples/cpp03/http/server3/request_handler.hpp -/src/examples/cpp03/http/server3/request.hpp -/src/examples/cpp03/http/server3/request_parser.cpp -/src/examples/cpp03/http/server3/request_parser.hpp -/src/examples/cpp03/http/server3/server.cpp -/src/examples/cpp03/http/server3/server.hpp -/src/examples/cpp03/http/server4/ -/src/examples/cpp03/http/server4/file_handler.cpp -/src/examples/cpp03/http/server4/file_handler.hpp -/src/examples/cpp03/http/server4/header.hpp -/src/examples/cpp03/http/server4/main.cpp -/src/examples/cpp03/http/server4/mime_types.cpp -/src/examples/cpp03/http/server4/mime_types.hpp -/src/examples/cpp03/http/server4/reply.cpp -/src/examples/cpp03/http/server4/reply.hpp -/src/examples/cpp03/http/server4/request.hpp -/src/examples/cpp03/http/server4/request_parser.cpp -/src/examples/cpp03/http/server4/request_parser.hpp -/src/examples/cpp03/http/server4/server.cpp -/src/examples/cpp03/http/server4/server.hpp -/src/examples/cpp03/http/server/connection.cpp -/src/examples/cpp03/http/server/connection.hpp -/src/examples/cpp03/http/server/connection_manager.cpp -/src/examples/cpp03/http/server/connection_manager.hpp -/src/examples/cpp03/http/server/header.hpp -/src/examples/cpp03/http/server/main.cpp -/src/examples/cpp03/http/server/mime_types.cpp -/src/examples/cpp03/http/server/mime_types.hpp -/src/examples/cpp03/http/server/reply.cpp -/src/examples/cpp03/http/server/reply.hpp -/src/examples/cpp03/http/server/request_handler.cpp -/src/examples/cpp03/http/server/request_handler.hpp -/src/examples/cpp03/http/server/request.hpp -/src/examples/cpp03/http/server/request_parser.cpp -/src/examples/cpp03/http/server/request_parser.hpp -/src/examples/cpp03/http/server/server.cpp -/src/examples/cpp03/http/server/server.hpp -/src/examples/cpp03/icmp/ -/src/examples/cpp03/icmp/icmp_header.hpp -/src/examples/cpp03/icmp/ipv4_header.hpp -/src/examples/cpp03/icmp/ping.cpp -/src/examples/cpp03/invocation/ -/src/examples/cpp03/invocation/prioritised_handlers.cpp -/src/examples/cpp03/iostreams/ -/src/examples/cpp03/iostreams/daytime_client.cpp -/src/examples/cpp03/iostreams/daytime_server.cpp -/src/examples/cpp03/iostreams/http_client.cpp -/src/examples/cpp03/local/ -/src/examples/cpp03/local/connect_pair.cpp -/src/examples/cpp03/local/iostream_client.cpp -/src/examples/cpp03/local/stream_client.cpp -/src/examples/cpp03/local/stream_server.cpp -/src/examples/cpp03/Makefile.am -/src/examples/cpp03/Makefile.in -/src/examples/cpp03/multicast/ -/src/examples/cpp03/multicast/receiver.cpp -/src/examples/cpp03/multicast/sender.cpp -/src/examples/cpp03/nonblocking/ -/src/examples/cpp03/nonblocking/third_party_lib.cpp -/src/examples/cpp03/porthopper/ -/src/examples/cpp03/porthopper/client.cpp -/src/examples/cpp03/porthopper/protocol.hpp -/src/examples/cpp03/porthopper/server.cpp -/src/examples/cpp03/serialization/ -/src/examples/cpp03/serialization/client.cpp -/src/examples/cpp03/serialization/connection.hpp -/src/examples/cpp03/serialization/server.cpp -/src/examples/cpp03/serialization/stock.hpp -/src/examples/cpp03/services/ -/src/examples/cpp03/services/basic_logger.hpp -/src/examples/cpp03/services/daytime_client.cpp -/src/examples/cpp03/services/logger.hpp -/src/examples/cpp03/services/logger_service.cpp -/src/examples/cpp03/services/logger_service.hpp -/src/examples/cpp03/socks4/ -/src/examples/cpp03/socks4/socks4.hpp -/src/examples/cpp03/socks4/sync_client.cpp -/src/examples/cpp03/spawn/ -/src/examples/cpp03/spawn/echo_server.cpp -/src/examples/cpp03/spawn/parallel_grep.cpp -/src/examples/cpp03/ssl/ -/src/examples/cpp03/ssl/ca.pem -/src/examples/cpp03/ssl/client.cpp -/src/examples/cpp03/ssl/dh2048.pem -/src/examples/cpp03/ssl/README -/src/examples/cpp03/ssl/server.cpp -/src/examples/cpp03/ssl/server.pem -/src/examples/cpp03/timeouts/ -/src/examples/cpp03/timeouts/async_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_udp_client.cpp -/src/examples/cpp03/timeouts/server.cpp -/src/examples/cpp03/timers/ -/src/examples/cpp03/timers/time_t_timer.cpp -/src/examples/cpp03/tutorial/ -/src/examples/cpp03/tutorial/daytime1/ -/src/examples/cpp03/tutorial/daytime1/client.cpp -/src/examples/cpp03/tutorial/daytime2/ -/src/examples/cpp03/tutorial/daytime2/server.cpp -/src/examples/cpp03/tutorial/daytime3/ -/src/examples/cpp03/tutorial/daytime3/server.cpp -/src/examples/cpp03/tutorial/daytime4/ -/src/examples/cpp03/tutorial/daytime4/client.cpp -/src/examples/cpp03/tutorial/daytime5/ -/src/examples/cpp03/tutorial/daytime5/server.cpp -/src/examples/cpp03/tutorial/daytime6/ -/src/examples/cpp03/tutorial/daytime6/server.cpp -/src/examples/cpp03/tutorial/daytime7/ -/src/examples/cpp03/tutorial/daytime7/server.cpp -/src/examples/cpp03/tutorial/timer1/ -/src/examples/cpp03/tutorial/timer1/timer.cpp -/src/examples/cpp03/tutorial/timer2/ -/src/examples/cpp03/tutorial/timer2/timer.cpp -/src/examples/cpp03/tutorial/timer3/ -/src/examples/cpp03/tutorial/timer3/timer.cpp -/src/examples/cpp03/tutorial/timer4/ -/src/examples/cpp03/tutorial/timer4/timer.cpp -/src/examples/cpp03/tutorial/timer5/ -/src/examples/cpp03/tutorial/timer5/timer.cpp -/src/examples/cpp03/windows/ -/src/examples/cpp03/windows/transmit_file.cpp -/src/examples/cpp11/ -/src/examples/cpp11/allocation/ -/src/examples/cpp11/allocation/server.cpp -/src/examples/cpp11/buffers/ -/src/examples/cpp11/buffers/reference_counted.cpp -/src/examples/cpp11/chat/ -/src/examples/cpp11/chat/chat_client.cpp -/src/examples/cpp11/chat/chat_message.hpp -/src/examples/cpp11/chat/chat_server.cpp -/src/examples/cpp11/echo/ -/src/examples/cpp11/echo/async_tcp_echo_server.cpp -/src/examples/cpp11/echo/async_udp_echo_server.cpp -/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp11/echo/blocking_udp_echo_client.cpp -/src/examples/cpp11/echo/blocking_udp_echo_server.cpp -/src/examples/cpp11/executors/ -/src/examples/cpp11/executors/actor.cpp -/src/examples/cpp11/executors/bank_account_1.cpp -/src/examples/cpp11/executors/bank_account_2.cpp -/src/examples/cpp11/executors/fork_join.cpp -/src/examples/cpp11/executors/pipeline.cpp -/src/examples/cpp11/executors/priority_scheduler.cpp -/src/examples/cpp11/fork/ -/src/examples/cpp11/fork/daemon.cpp -/src/examples/cpp11/fork/process_per_connection.cpp -/src/examples/cpp11/futures/ -/src/examples/cpp11/futures/daytime_client.cpp -/src/examples/cpp11/handler_tracking/ -/src/examples/cpp11/handler_tracking/async_tcp_echo_server.cpp -/src/examples/cpp11/handler_tracking/custom_tracking.hpp -/src/examples/cpp11/http/ -/src/examples/cpp11/http/server/ -/src/examples/cpp11/http/server/connection.cpp -/src/examples/cpp11/http/server/connection.hpp -/src/examples/cpp11/http/server/connection_manager.cpp -/src/examples/cpp11/http/server/connection_manager.hpp -/src/examples/cpp11/http/server/header.hpp -/src/examples/cpp11/http/server/main.cpp -/src/examples/cpp11/http/server/mime_types.cpp -/src/examples/cpp11/http/server/mime_types.hpp -/src/examples/cpp11/http/server/reply.cpp -/src/examples/cpp11/http/server/reply.hpp -/src/examples/cpp11/http/server/request_handler.cpp -/src/examples/cpp11/http/server/request_handler.hpp -/src/examples/cpp11/http/server/request.hpp -/src/examples/cpp11/http/server/request_parser.cpp -/src/examples/cpp11/http/server/request_parser.hpp -/src/examples/cpp11/http/server/server.cpp -/src/examples/cpp11/http/server/server.hpp -/src/examples/cpp11/invocation/ -/src/examples/cpp11/invocation/prioritised_handlers.cpp -/src/examples/cpp11/iostreams/ -/src/examples/cpp11/iostreams/http_client.cpp -/src/examples/cpp11/local/ -/src/examples/cpp11/local/connect_pair.cpp -/src/examples/cpp11/local/iostream_client.cpp -/src/examples/cpp11/local/stream_client.cpp -/src/examples/cpp11/local/stream_server.cpp -/src/examples/cpp11/Makefile.am -/src/examples/cpp11/Makefile.in -/src/examples/cpp11/multicast/ -/src/examples/cpp11/multicast/receiver.cpp -/src/examples/cpp11/multicast/sender.cpp -/src/examples/cpp11/nonblocking/ -/src/examples/cpp11/nonblocking/third_party_lib.cpp -/src/examples/cpp11/operations/ -/src/examples/cpp11/operations/composed_1.cpp -/src/examples/cpp11/operations/composed_2.cpp -/src/examples/cpp11/operations/composed_3.cpp -/src/examples/cpp11/operations/composed_4.cpp -/src/examples/cpp11/operations/composed_5.cpp -/src/examples/cpp11/operations/composed_6.cpp -/src/examples/cpp11/operations/composed_7.cpp -/src/examples/cpp11/operations/composed_8.cpp -/src/examples/cpp11/socks4/ -/src/examples/cpp11/socks4/socks4.hpp -/src/examples/cpp11/socks4/sync_client.cpp -/src/examples/cpp11/spawn/ -/src/examples/cpp11/spawn/echo_server.cpp -/src/examples/cpp11/spawn/parallel_grep.cpp -/src/examples/cpp11/ssl/ -/src/examples/cpp11/ssl/client.cpp -/src/examples/cpp11/ssl/server.cpp -/src/examples/cpp11/timeouts/ -/src/examples/cpp11/timeouts/async_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_udp_client.cpp -/src/examples/cpp11/timeouts/server.cpp -/src/examples/cpp11/timers/ -/src/examples/cpp11/timers/time_t_timer.cpp -/src/examples/cpp14/ -/src/examples/cpp14/echo/ -/src/examples/cpp14/echo/async_tcp_echo_server.cpp -/src/examples/cpp14/echo/async_udp_echo_server.cpp -/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp14/echo/blocking_udp_echo_client.cpp -/src/examples/cpp14/echo/blocking_udp_echo_server.cpp -/src/examples/cpp14/executors/ -/src/examples/cpp14/executors/actor.cpp -/src/examples/cpp14/executors/async_1.cpp -/src/examples/cpp14/executors/async_2.cpp -/src/examples/cpp14/executors/bank_account_1.cpp -/src/examples/cpp14/executors/bank_account_2.cpp -/src/examples/cpp14/executors/fork_join.cpp -/src/examples/cpp14/executors/pipeline.cpp -/src/examples/cpp14/executors/priority_scheduler.cpp -/src/examples/cpp14/iostreams/ -/src/examples/cpp14/iostreams/http_client.cpp -/src/examples/cpp14/Makefile.am -/src/examples/cpp14/Makefile.in -/src/examples/cpp14/operations/ -/src/examples/cpp14/operations/composed_1.cpp -/src/examples/cpp14/operations/composed_2.cpp -/src/examples/cpp14/operations/composed_3.cpp -/src/examples/cpp14/operations/composed_4.cpp -/src/examples/cpp14/operations/composed_5.cpp -/src/examples/cpp14/operations/composed_6.cpp -/src/examples/cpp14/operations/composed_7.cpp -/src/examples/cpp14/operations/composed_8.cpp -/src/examples/cpp17/ -/src/examples/cpp17/coroutines_ts/ -/src/examples/cpp17/coroutines_ts/chat_server.cpp -/src/examples/cpp17/coroutines_ts/echo_server.cpp -/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp -/src/examples/cpp17/coroutines_ts/range_based_for.cpp -/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp -/src/examples/cpp17/Makefile.am -/src/examples/cpp17/Makefile.in -/src/Makefile.am -/src/Makefile.in -/src/Makefile.mgw -/src/Makefile.msc -/src/tests/ -/src/tests/latency/ -/src/tests/latency/allocator.hpp -/src/tests/latency/high_res_clock.hpp -/src/tests/latency/tcp_client.cpp -/src/tests/latency/tcp_server.cpp -/src/tests/latency/udp_client.cpp -/src/tests/latency/udp_server.cpp -/src/tests/Makefile.am -/src/tests/Makefile.in -/src/tests/performance/ -/src/tests/performance/client.cpp -/src/tests/performance/handler_allocator.hpp -/src/tests/performance/server.cpp -/src/tests/properties/ -/src/tests/properties/cpp03/ -/src/tests/properties/cpp03/can_prefer_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_free_require.cpp -/src/tests/properties/cpp03/can_prefer_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp03/can_prefer_static.cpp -/src/tests/properties/cpp03/can_prefer_unsupported.cpp -/src/tests/properties/cpp03/can_query_free.cpp -/src/tests/properties/cpp03/can_query_member.cpp -/src/tests/properties/cpp03/can_query_not_applicable_free.cpp -/src/tests/properties/cpp03/can_query_not_applicable_member.cpp -/src/tests/properties/cpp03/can_query_not_applicable_static.cpp -/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_query_static.cpp -/src/tests/properties/cpp03/can_query_unsupported.cpp -/src/tests/properties/cpp03/can_require_concept_free.cpp -/src/tests/properties/cpp03/can_require_concept_member.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_require_concept_static.cpp -/src/tests/properties/cpp03/can_require_concept_unsupported.cpp -/src/tests/properties/cpp03/can_require_free.cpp -/src/tests/properties/cpp03/can_require_member.cpp -/src/tests/properties/cpp03/can_require_not_applicable_free.cpp -/src/tests/properties/cpp03/can_require_not_applicable_member.cpp -/src/tests/properties/cpp03/can_require_not_applicable_static.cpp -/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_require_static.cpp -/src/tests/properties/cpp03/can_require_unsupported.cpp -/src/tests/properties/cpp03/prefer_free_prefer.cpp -/src/tests/properties/cpp03/prefer_free_require.cpp -/src/tests/properties/cpp03/prefer_member_prefer.cpp -/src/tests/properties/cpp03/prefer_member_require.cpp -/src/tests/properties/cpp03/prefer_static.cpp -/src/tests/properties/cpp03/prefer_unsupported.cpp -/src/tests/properties/cpp03/query_free.cpp -/src/tests/properties/cpp03/query_member.cpp -/src/tests/properties/cpp03/query_static.cpp -/src/tests/properties/cpp03/require_concept_free.cpp -/src/tests/properties/cpp03/require_concept_member.cpp -/src/tests/properties/cpp03/require_concept_static.cpp -/src/tests/properties/cpp03/require_free.cpp -/src/tests/properties/cpp03/require_member.cpp -/src/tests/properties/cpp03/require_static.cpp -/src/tests/properties/cpp11/ -/src/tests/properties/cpp11/can_prefer_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_free_require.cpp -/src/tests/properties/cpp11/can_prefer_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp11/can_prefer_static.cpp -/src/tests/properties/cpp11/can_prefer_unsupported.cpp -/src/tests/properties/cpp11/can_query_free.cpp -/src/tests/properties/cpp11/can_query_member.cpp -/src/tests/properties/cpp11/can_query_not_applicable_free.cpp -/src/tests/properties/cpp11/can_query_not_applicable_member.cpp -/src/tests/properties/cpp11/can_query_not_applicable_static.cpp -/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_query_static.cpp -/src/tests/properties/cpp11/can_query_unsupported.cpp -/src/tests/properties/cpp11/can_require_concept_free.cpp -/src/tests/properties/cpp11/can_require_concept_member.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_require_concept_static.cpp -/src/tests/properties/cpp11/can_require_concept_unsupported.cpp -/src/tests/properties/cpp11/can_require_free.cpp -/src/tests/properties/cpp11/can_require_member.cpp -/src/tests/properties/cpp11/can_require_not_applicable_free.cpp -/src/tests/properties/cpp11/can_require_not_applicable_member.cpp -/src/tests/properties/cpp11/can_require_not_applicable_static.cpp -/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_require_static.cpp -/src/tests/properties/cpp11/can_require_unsupported.cpp -/src/tests/properties/cpp11/prefer_free_prefer.cpp -/src/tests/properties/cpp11/prefer_free_require.cpp -/src/tests/properties/cpp11/prefer_member_prefer.cpp -/src/tests/properties/cpp11/prefer_member_require.cpp -/src/tests/properties/cpp11/prefer_static.cpp -/src/tests/properties/cpp11/prefer_unsupported.cpp -/src/tests/properties/cpp11/query_free.cpp -/src/tests/properties/cpp11/query_member.cpp -/src/tests/properties/cpp11/query_static.cpp -/src/tests/properties/cpp11/require_concept_free.cpp -/src/tests/properties/cpp11/require_concept_member.cpp -/src/tests/properties/cpp11/require_concept_static.cpp -/src/tests/properties/cpp11/require_free.cpp -/src/tests/properties/cpp11/require_member.cpp -/src/tests/properties/cpp11/require_static.cpp -/src/tests/properties/cpp14/ -/src/tests/properties/cpp14/can_prefer_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_free_require.cpp -/src/tests/properties/cpp14/can_prefer_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp14/can_prefer_static.cpp -/src/tests/properties/cpp14/can_prefer_unsupported.cpp -/src/tests/properties/cpp14/can_query_free.cpp -/src/tests/properties/cpp14/can_query_member.cpp -/src/tests/properties/cpp14/can_query_not_applicable_free.cpp -/src/tests/properties/cpp14/can_query_not_applicable_member.cpp -/src/tests/properties/cpp14/can_query_not_applicable_static.cpp -/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_query_static.cpp -/src/tests/properties/cpp14/can_query_unsupported.cpp -/src/tests/properties/cpp14/can_require_concept_free.cpp -/src/tests/properties/cpp14/can_require_concept_member.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_require_concept_static.cpp -/src/tests/properties/cpp14/can_require_concept_unsupported.cpp -/src/tests/properties/cpp14/can_require_free.cpp -/src/tests/properties/cpp14/can_require_member.cpp -/src/tests/properties/cpp14/can_require_not_applicable_free.cpp -/src/tests/properties/cpp14/can_require_not_applicable_member.cpp -/src/tests/properties/cpp14/can_require_not_applicable_static.cpp -/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_require_static.cpp -/src/tests/properties/cpp14/can_require_unsupported.cpp -/src/tests/properties/cpp14/prefer_free_prefer.cpp -/src/tests/properties/cpp14/prefer_free_require.cpp -/src/tests/properties/cpp14/prefer_member_prefer.cpp -/src/tests/properties/cpp14/prefer_member_require.cpp -/src/tests/properties/cpp14/prefer_static.cpp -/src/tests/properties/cpp14/prefer_unsupported.cpp -/src/tests/properties/cpp14/query_free.cpp -/src/tests/properties/cpp14/query_member.cpp -/src/tests/properties/cpp14/query_static.cpp -/src/tests/properties/cpp14/require_concept_free.cpp -/src/tests/properties/cpp14/require_concept_member.cpp -/src/tests/properties/cpp14/require_concept_static.cpp -/src/tests/properties/cpp14/require_free.cpp -/src/tests/properties/cpp14/require_member.cpp -/src/tests/properties/cpp14/require_static.cpp -/src/tests/properties/Makefile.am -/src/tests/properties/Makefile.in -/src/tests/unit/ -/src/tests/unit/archetypes/ -/src/tests/unit/archetypes/async_ops.hpp -/src/tests/unit/archetypes/async_result.hpp -/src/tests/unit/archetypes/gettable_socket_option.hpp -/src/tests/unit/archetypes/io_control_command.hpp -/src/tests/unit/archetypes/settable_socket_option.hpp -/src/tests/unit/associated_allocator.cpp -/src/tests/unit/associated_executor.cpp -/src/tests/unit/async_result.cpp -/src/tests/unit/awaitable.cpp -/src/tests/unit/basic_datagram_socket.cpp -/src/tests/unit/basic_deadline_timer.cpp -/src/tests/unit/basic_raw_socket.cpp -/src/tests/unit/basic_seq_packet_socket.cpp -/src/tests/unit/basic_serial_port.cpp -/src/tests/unit/basic_signal_set.cpp -/src/tests/unit/basic_socket_acceptor.cpp -/src/tests/unit/basic_socket.cpp -/src/tests/unit/basic_streambuf.cpp -/src/tests/unit/basic_stream_socket.cpp -/src/tests/unit/basic_waitable_timer.cpp -/src/tests/unit/bind_executor.cpp -/src/tests/unit/buffer.cpp -/src/tests/unit/buffered_read_stream.cpp -/src/tests/unit/buffered_stream.cpp -/src/tests/unit/buffered_write_stream.cpp -/src/tests/unit/buffers_iterator.cpp -/src/tests/unit/completion_condition.cpp -/src/tests/unit/compose.cpp -/src/tests/unit/connect.cpp -/src/tests/unit/coroutine.cpp -/src/tests/unit/co_spawn.cpp -/src/tests/unit/deadline_timer.cpp -/src/tests/unit/defer.cpp -/src/tests/unit/detached.cpp -/src/tests/unit/dispatch.cpp -/src/tests/unit/error.cpp -/src/tests/unit/execution/ -/src/tests/unit/execution/any_executor.cpp -/src/tests/unit/execution/blocking_adaptation.cpp -/src/tests/unit/execution/blocking.cpp -/src/tests/unit/execution/bulk_execute.cpp -/src/tests/unit/execution/bulk_guarantee.cpp -/src/tests/unit/execution/connect.cpp -/src/tests/unit/execution/context_as.cpp -/src/tests/unit/execution_context.cpp -/src/tests/unit/execution/execute.cpp -/src/tests/unit/execution/executor.cpp -/src/tests/unit/execution/invocable_archetype.cpp -/src/tests/unit/execution/mapping.cpp -/src/tests/unit/execution/operation_state.cpp -/src/tests/unit/execution/outstanding_work.cpp -/src/tests/unit/execution/prefer_only.cpp -/src/tests/unit/execution/receiver.cpp -/src/tests/unit/execution/relationship.cpp -/src/tests/unit/execution/schedule.cpp -/src/tests/unit/execution/scheduler.cpp -/src/tests/unit/execution/sender.cpp -/src/tests/unit/execution/set_done.cpp -/src/tests/unit/execution/set_error.cpp -/src/tests/unit/execution/set_value.cpp -/src/tests/unit/execution/start.cpp -/src/tests/unit/execution/submit.cpp -/src/tests/unit/executor.cpp -/src/tests/unit/executor_work_guard.cpp -/src/tests/unit/generic/ -/src/tests/unit/generic/basic_endpoint.cpp -/src/tests/unit/generic/datagram_protocol.cpp -/src/tests/unit/generic/raw_protocol.cpp -/src/tests/unit/generic/seq_packet_protocol.cpp -/src/tests/unit/generic/stream_protocol.cpp -/src/tests/unit/high_resolution_timer.cpp -/src/tests/unit/io_context.cpp -/src/tests/unit/io_context_strand.cpp -/src/tests/unit/ip/ -/src/tests/unit/ip/address.cpp -/src/tests/unit/ip/address_v4.cpp -/src/tests/unit/ip/address_v4_iterator.cpp -/src/tests/unit/ip/address_v4_range.cpp -/src/tests/unit/ip/address_v6.cpp -/src/tests/unit/ip/address_v6_iterator.cpp -/src/tests/unit/ip/address_v6_range.cpp -/src/tests/unit/ip/basic_endpoint.cpp -/src/tests/unit/ip/basic_resolver.cpp -/src/tests/unit/ip/basic_resolver_entry.cpp -/src/tests/unit/ip/basic_resolver_iterator.cpp -/src/tests/unit/ip/basic_resolver_query.cpp -/src/tests/unit/ip/host_name.cpp -/src/tests/unit/ip/icmp.cpp -/src/tests/unit/ip/multicast.cpp -/src/tests/unit/ip/network_v4.cpp -/src/tests/unit/ip/network_v6.cpp -/src/tests/unit/ip/resolver_query_base.cpp -/src/tests/unit/ip/tcp.cpp -/src/tests/unit/ip/udp.cpp -/src/tests/unit/ip/unicast.cpp -/src/tests/unit/ip/v6_only.cpp -/src/tests/unit/is_read_buffered.cpp -/src/tests/unit/is_write_buffered.cpp -/src/tests/unit/local/ -/src/tests/unit/local/basic_endpoint.cpp -/src/tests/unit/local/connect_pair.cpp -/src/tests/unit/local/datagram_protocol.cpp -/src/tests/unit/local/stream_protocol.cpp -/src/tests/unit/packaged_task.cpp -/src/tests/unit/placeholders.cpp -/src/tests/unit/posix/ -/src/tests/unit/posix/basic_descriptor.cpp -/src/tests/unit/posix/basic_stream_descriptor.cpp -/src/tests/unit/posix/descriptor_base.cpp -/src/tests/unit/posix/descriptor.cpp -/src/tests/unit/posix/stream_descriptor.cpp -/src/tests/unit/post.cpp -/src/tests/unit/read_at.cpp -/src/tests/unit/read.cpp -/src/tests/unit/read_until.cpp -/src/tests/unit/redirect_error.cpp -/src/tests/unit/serial_port_base.cpp -/src/tests/unit/serial_port.cpp -/src/tests/unit/signal_set.cpp -/src/tests/unit/socket_base.cpp -/src/tests/unit/ssl/ -/src/tests/unit/ssl/context_base.cpp -/src/tests/unit/ssl/context.cpp -/src/tests/unit/ssl/error.cpp -/src/tests/unit/ssl/host_name_verification.cpp -/src/tests/unit/ssl/rfc2818_verification.cpp -/src/tests/unit/ssl/stream_base.cpp -/src/tests/unit/ssl/stream.cpp -/src/tests/unit/static_thread_pool.cpp -/src/tests/unit/steady_timer.cpp -/src/tests/unit/strand.cpp -/src/tests/unit/streambuf.cpp -/src/tests/unit/system_context.cpp -/src/tests/unit/system_executor.cpp -/src/tests/unit/system_timer.cpp -/src/tests/unit/this_coro.cpp -/src/tests/unit/thread.cpp -/src/tests/unit/thread_pool.cpp -/src/tests/unit/time_traits.cpp -/src/tests/unit/ts/ -/src/tests/unit/ts/buffer.cpp -/src/tests/unit/ts/executor.cpp -/src/tests/unit/ts/internet.cpp -/src/tests/unit/ts/io_context.cpp -/src/tests/unit/ts/net.cpp -/src/tests/unit/ts/netfwd.cpp -/src/tests/unit/ts/socket.cpp -/src/tests/unit/ts/timer.cpp -/src/tests/unit/unit_test.hpp -/src/tests/unit/use_awaitable.cpp -/src/tests/unit/use_future.cpp -/src/tests/unit/uses_executor.cpp -/src/tests/unit/wait_traits.cpp -/src/tests/unit/windows/ -/src/tests/unit/windows/basic_object_handle.cpp -/src/tests/unit/windows/basic_overlapped_handle.cpp -/src/tests/unit/windows/basic_random_access_handle.cpp -/src/tests/unit/windows/basic_stream_handle.cpp -/src/tests/unit/windows/object_handle.cpp -/src/tests/unit/windows/overlapped_handle.cpp -/src/tests/unit/windows/overlapped_ptr.cpp -/src/tests/unit/windows/random_access_handle.cpp -/src/tests/unit/windows/stream_handle.cpp -/src/tests/unit/write_at.cpp -/src/tests/unit/write.cpp -/src/tools/ -/src/tools/handlerlive.pl -/src/tools/handlertree.pl -/src/tools/handlerviz.pl -/test-driver diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/autogen.sh b/ui/external/fineftp-server/thirdparty/asio/asio/autogen.sh deleted file mode 100755 index 42075e32..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/autogen.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh - -# Helps bootstrapping the application when checked out from CVS. -# Requires GNU autoconf, GNU automake and GNU which. -# -# Copyright (C) 2004, by -# -# Carlo Wood, Run on IRC -# RSA-1024 0x624ACAD5 1997-01-26 Sign & Encrypt -# Fingerprint16 = 32 EC A7 B6 AC DB 65 A6 F6 F6 55 DD 1C DC FF 61 -# - -# Do sanity checks. -# Directory check. -if [ ! -f autogen.sh ]; then - echo "Run ./autogen.sh from the directory it exists in." - exit 1 -fi - -AUTOMAKE=${AUTOMAKE:-automake} -ACLOCAL=${ACLOCAL:-aclocal} -AUTOCONF=${AUTOCONF:-autoconf} - -($AUTOCONF --version) >/dev/null 2>/dev/null || (echo "You need GNU autoconf to install from CVS (ftp://ftp.gnu.org/gnu/autoconf/)"; exit 1) || exit 1 -($AUTOMAKE --version) >/dev/null 2>/dev/null || (echo "You need GNU automake 1.7 or higher to install from CVS (ftp://ftp.gnu.org/gnu/automake/)"; exit 1) || exit 1 - -# Determine the version of automake. -automake_version=`$AUTOMAKE --version | head -n 1 | sed -e 's/[^12]*\([12]\.[0-9][^ ]*\).*/\1/'` -automake_major=`echo $automake_version | cut -f1 -d.` -automake_minor=`echo $automake_version | cut -f2 -d.` -automake_version_number=`expr "$automake_major" \* 1000 \+ "$automake_minor"` - -# Require automake 1.7. -if expr "1007" \> "$automake_version_number" >/dev/null; then - $AUTOMAKE --version | head -n 1 - echo "" - echo "Fatal error: automake 1.7 or higher is required. Please set \$AUTOMAKE" - echo "to point to a newer automake, or upgrade." - echo "" - exit 1 -fi - -run() -{ - echo "Running $1 ..." - $1 -} - -# This is needed when someone just upgraded automake and this cache is still generated by an old version. -rm -rf autom4te.cache config.cache - -run "$ACLOCAL" -run "$AUTOCONF" -run "$AUTOMAKE --add-missing --foreign" - diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/boost_asio.manifest b/ui/external/fineftp-server/thirdparty/asio/asio/boost_asio.manifest deleted file mode 100644 index b92cea3d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/boost_asio.manifest +++ /dev/null @@ -1,6056 +0,0 @@ -/ -/boost/ -/boost/asio/ -/boost/asio/any_io_executor.hpp -/boost/asio/associated_allocator.hpp -/boost/asio/associated_executor.hpp -/boost/asio/async_result.hpp -/boost/asio/awaitable.hpp -/boost/asio/basic_datagram_socket.hpp -/boost/asio/basic_deadline_timer.hpp -/boost/asio/basic_io_object.hpp -/boost/asio/basic_raw_socket.hpp -/boost/asio/basic_seq_packet_socket.hpp -/boost/asio/basic_serial_port.hpp -/boost/asio/basic_signal_set.hpp -/boost/asio/basic_socket_acceptor.hpp -/boost/asio/basic_socket.hpp -/boost/asio/basic_socket_iostream.hpp -/boost/asio/basic_socket_streambuf.hpp -/boost/asio/basic_streambuf_fwd.hpp -/boost/asio/basic_streambuf.hpp -/boost/asio/basic_stream_socket.hpp -/boost/asio/basic_waitable_timer.hpp -/boost/asio/bind_executor.hpp -/boost/asio/buffered_read_stream_fwd.hpp -/boost/asio/buffered_read_stream.hpp -/boost/asio/buffered_stream_fwd.hpp -/boost/asio/buffered_stream.hpp -/boost/asio/buffered_write_stream_fwd.hpp -/boost/asio/buffered_write_stream.hpp -/boost/asio/buffer.hpp -/boost/asio/buffers_iterator.hpp -/boost/asio/completion_condition.hpp -/boost/asio/compose.hpp -/boost/asio/connect.hpp -/boost/asio/coroutine.hpp -/boost/asio/co_spawn.hpp -/boost/asio/deadline_timer.hpp -/boost/asio/defer.hpp -/boost/asio/detached.hpp -/boost/asio/detail/ -/boost/asio/detail/array_fwd.hpp -/boost/asio/detail/array.hpp -/boost/asio/detail/assert.hpp -/boost/asio/detail/atomic_count.hpp -/boost/asio/detail/base_from_completion_cond.hpp -/boost/asio/detail/bind_handler.hpp -/boost/asio/detail/blocking_executor_op.hpp -/boost/asio/detail/buffered_stream_storage.hpp -/boost/asio/detail/buffer_resize_guard.hpp -/boost/asio/detail/buffer_sequence_adapter.hpp -/boost/asio/detail/bulk_executor_op.hpp -/boost/asio/detail/call_stack.hpp -/boost/asio/detail/chrono.hpp -/boost/asio/detail/chrono_time_traits.hpp -/boost/asio/detail/completion_handler.hpp -/boost/asio/detail/concurrency_hint.hpp -/boost/asio/detail/conditionally_enabled_event.hpp -/boost/asio/detail/conditionally_enabled_mutex.hpp -/boost/asio/detail/config.hpp -/boost/asio/detail/consuming_buffers.hpp -/boost/asio/detail/cstddef.hpp -/boost/asio/detail/cstdint.hpp -/boost/asio/detail/date_time_fwd.hpp -/boost/asio/detail/deadline_timer_service.hpp -/boost/asio/detail/dependent_type.hpp -/boost/asio/detail/descriptor_ops.hpp -/boost/asio/detail/descriptor_read_op.hpp -/boost/asio/detail/descriptor_write_op.hpp -/boost/asio/detail/dev_poll_reactor.hpp -/boost/asio/detail/epoll_reactor.hpp -/boost/asio/detail/eventfd_select_interrupter.hpp -/boost/asio/detail/event.hpp -/boost/asio/detail/executor_function.hpp -/boost/asio/detail/executor_op.hpp -/boost/asio/detail/fd_set_adapter.hpp -/boost/asio/detail/fenced_block.hpp -/boost/asio/detail/functional.hpp -/boost/asio/detail/future.hpp -/boost/asio/detail/gcc_arm_fenced_block.hpp -/boost/asio/detail/gcc_hppa_fenced_block.hpp -/boost/asio/detail/gcc_sync_fenced_block.hpp -/boost/asio/detail/gcc_x86_fenced_block.hpp -/boost/asio/detail/global.hpp -/boost/asio/detail/handler_alloc_helpers.hpp -/boost/asio/detail/handler_cont_helpers.hpp -/boost/asio/detail/handler_invoke_helpers.hpp -/boost/asio/detail/handler_tracking.hpp -/boost/asio/detail/handler_type_requirements.hpp -/boost/asio/detail/handler_work.hpp -/boost/asio/detail/hash_map.hpp -/boost/asio/detail/impl/ -/boost/asio/detail/impl/buffer_sequence_adapter.ipp -/boost/asio/detail/impl/descriptor_ops.ipp -/boost/asio/detail/impl/dev_poll_reactor.hpp -/boost/asio/detail/impl/dev_poll_reactor.ipp -/boost/asio/detail/impl/epoll_reactor.hpp -/boost/asio/detail/impl/epoll_reactor.ipp -/boost/asio/detail/impl/eventfd_select_interrupter.ipp -/boost/asio/detail/impl/handler_tracking.ipp -/boost/asio/detail/impl/kqueue_reactor.hpp -/boost/asio/detail/impl/kqueue_reactor.ipp -/boost/asio/detail/impl/null_event.ipp -/boost/asio/detail/impl/pipe_select_interrupter.ipp -/boost/asio/detail/impl/posix_event.ipp -/boost/asio/detail/impl/posix_mutex.ipp -/boost/asio/detail/impl/posix_thread.ipp -/boost/asio/detail/impl/posix_tss_ptr.ipp -/boost/asio/detail/impl/reactive_descriptor_service.ipp -/boost/asio/detail/impl/reactive_serial_port_service.ipp -/boost/asio/detail/impl/reactive_socket_service_base.ipp -/boost/asio/detail/impl/resolver_service_base.ipp -/boost/asio/detail/impl/scheduler.ipp -/boost/asio/detail/impl/select_reactor.hpp -/boost/asio/detail/impl/select_reactor.ipp -/boost/asio/detail/impl/service_registry.hpp -/boost/asio/detail/impl/service_registry.ipp -/boost/asio/detail/impl/signal_set_service.ipp -/boost/asio/detail/impl/socket_ops.ipp -/boost/asio/detail/impl/socket_select_interrupter.ipp -/boost/asio/detail/impl/strand_executor_service.hpp -/boost/asio/detail/impl/strand_executor_service.ipp -/boost/asio/detail/impl/strand_service.hpp -/boost/asio/detail/impl/strand_service.ipp -/boost/asio/detail/impl/throw_error.ipp -/boost/asio/detail/impl/timer_queue_ptime.ipp -/boost/asio/detail/impl/timer_queue_set.ipp -/boost/asio/detail/impl/win_event.ipp -/boost/asio/detail/impl/win_iocp_handle_service.ipp -/boost/asio/detail/impl/win_iocp_io_context.hpp -/boost/asio/detail/impl/win_iocp_io_context.ipp -/boost/asio/detail/impl/win_iocp_serial_port_service.ipp -/boost/asio/detail/impl/win_iocp_socket_service_base.ipp -/boost/asio/detail/impl/win_mutex.ipp -/boost/asio/detail/impl/win_object_handle_service.ipp -/boost/asio/detail/impl/winrt_ssocket_service_base.ipp -/boost/asio/detail/impl/winrt_timer_scheduler.hpp -/boost/asio/detail/impl/winrt_timer_scheduler.ipp -/boost/asio/detail/impl/winsock_init.ipp -/boost/asio/detail/impl/win_static_mutex.ipp -/boost/asio/detail/impl/win_thread.ipp -/boost/asio/detail/impl/win_tss_ptr.ipp -/boost/asio/detail/io_control.hpp -/boost/asio/detail/io_object_impl.hpp -/boost/asio/detail/is_buffer_sequence.hpp -/boost/asio/detail/is_executor.hpp -/boost/asio/detail/keyword_tss_ptr.hpp -/boost/asio/detail/kqueue_reactor.hpp -/boost/asio/detail/limits.hpp -/boost/asio/detail/local_free_on_block_exit.hpp -/boost/asio/detail/macos_fenced_block.hpp -/boost/asio/detail/memory.hpp -/boost/asio/detail/mutex.hpp -/boost/asio/detail/non_const_lvalue.hpp -/boost/asio/detail/noncopyable.hpp -/boost/asio/detail/null_event.hpp -/boost/asio/detail/null_fenced_block.hpp -/boost/asio/detail/null_global.hpp -/boost/asio/detail/null_mutex.hpp -/boost/asio/detail/null_reactor.hpp -/boost/asio/detail/null_signal_blocker.hpp -/boost/asio/detail/null_socket_service.hpp -/boost/asio/detail/null_static_mutex.hpp -/boost/asio/detail/null_thread.hpp -/boost/asio/detail/null_tss_ptr.hpp -/boost/asio/detail/object_pool.hpp -/boost/asio/detail/old_win_sdk_compat.hpp -/boost/asio/detail/operation.hpp -/boost/asio/detail/op_queue.hpp -/boost/asio/detail/pipe_select_interrupter.hpp -/boost/asio/detail/pop_options.hpp -/boost/asio/detail/posix_event.hpp -/boost/asio/detail/posix_fd_set_adapter.hpp -/boost/asio/detail/posix_global.hpp -/boost/asio/detail/posix_mutex.hpp -/boost/asio/detail/posix_signal_blocker.hpp -/boost/asio/detail/posix_static_mutex.hpp -/boost/asio/detail/posix_thread.hpp -/boost/asio/detail/posix_tss_ptr.hpp -/boost/asio/detail/push_options.hpp -/boost/asio/detail/reactive_descriptor_service.hpp -/boost/asio/detail/reactive_null_buffers_op.hpp -/boost/asio/detail/reactive_serial_port_service.hpp -/boost/asio/detail/reactive_socket_accept_op.hpp -/boost/asio/detail/reactive_socket_connect_op.hpp -/boost/asio/detail/reactive_socket_recvfrom_op.hpp -/boost/asio/detail/reactive_socket_recvmsg_op.hpp -/boost/asio/detail/reactive_socket_recv_op.hpp -/boost/asio/detail/reactive_socket_send_op.hpp -/boost/asio/detail/reactive_socket_sendto_op.hpp -/boost/asio/detail/reactive_socket_service_base.hpp -/boost/asio/detail/reactive_socket_service.hpp -/boost/asio/detail/reactive_wait_op.hpp -/boost/asio/detail/reactor_fwd.hpp -/boost/asio/detail/reactor.hpp -/boost/asio/detail/reactor_op.hpp -/boost/asio/detail/reactor_op_queue.hpp -/boost/asio/detail/recycling_allocator.hpp -/boost/asio/detail/regex_fwd.hpp -/boost/asio/detail/resolve_endpoint_op.hpp -/boost/asio/detail/resolve_op.hpp -/boost/asio/detail/resolve_query_op.hpp -/boost/asio/detail/resolver_service_base.hpp -/boost/asio/detail/resolver_service.hpp -/boost/asio/detail/scheduler.hpp -/boost/asio/detail/scheduler_operation.hpp -/boost/asio/detail/scheduler_thread_info.hpp -/boost/asio/detail/scoped_lock.hpp -/boost/asio/detail/scoped_ptr.hpp -/boost/asio/detail/select_interrupter.hpp -/boost/asio/detail/select_reactor.hpp -/boost/asio/detail/service_registry.hpp -/boost/asio/detail/signal_blocker.hpp -/boost/asio/detail/signal_handler.hpp -/boost/asio/detail/signal_init.hpp -/boost/asio/detail/signal_op.hpp -/boost/asio/detail/signal_set_service.hpp -/boost/asio/detail/socket_holder.hpp -/boost/asio/detail/socket_ops.hpp -/boost/asio/detail/socket_option.hpp -/boost/asio/detail/socket_select_interrupter.hpp -/boost/asio/detail/socket_types.hpp -/boost/asio/detail/solaris_fenced_block.hpp -/boost/asio/detail/source_location.hpp -/boost/asio/detail/static_mutex.hpp -/boost/asio/detail/std_event.hpp -/boost/asio/detail/std_fenced_block.hpp -/boost/asio/detail/std_global.hpp -/boost/asio/detail/std_mutex.hpp -/boost/asio/detail/std_static_mutex.hpp -/boost/asio/detail/std_thread.hpp -/boost/asio/detail/strand_executor_service.hpp -/boost/asio/detail/strand_service.hpp -/boost/asio/detail/string_view.hpp -/boost/asio/detail/thread_context.hpp -/boost/asio/detail/thread_group.hpp -/boost/asio/detail/thread.hpp -/boost/asio/detail/thread_info_base.hpp -/boost/asio/detail/throw_error.hpp -/boost/asio/detail/throw_exception.hpp -/boost/asio/detail/timer_queue_base.hpp -/boost/asio/detail/timer_queue.hpp -/boost/asio/detail/timer_queue_ptime.hpp -/boost/asio/detail/timer_queue_set.hpp -/boost/asio/detail/timer_scheduler_fwd.hpp -/boost/asio/detail/timer_scheduler.hpp -/boost/asio/detail/tss_ptr.hpp -/boost/asio/detail/type_traits.hpp -/boost/asio/detail/variadic_templates.hpp -/boost/asio/detail/wait_handler.hpp -/boost/asio/detail/wait_op.hpp -/boost/asio/detail/winapp_thread.hpp -/boost/asio/detail/wince_thread.hpp -/boost/asio/detail/win_event.hpp -/boost/asio/detail/win_fd_set_adapter.hpp -/boost/asio/detail/win_fenced_block.hpp -/boost/asio/detail/win_global.hpp -/boost/asio/detail/win_iocp_handle_read_op.hpp -/boost/asio/detail/win_iocp_handle_service.hpp -/boost/asio/detail/win_iocp_handle_write_op.hpp -/boost/asio/detail/win_iocp_io_context.hpp -/boost/asio/detail/win_iocp_null_buffers_op.hpp -/boost/asio/detail/win_iocp_operation.hpp -/boost/asio/detail/win_iocp_overlapped_op.hpp -/boost/asio/detail/win_iocp_overlapped_ptr.hpp -/boost/asio/detail/win_iocp_serial_port_service.hpp -/boost/asio/detail/win_iocp_socket_accept_op.hpp -/boost/asio/detail/win_iocp_socket_connect_op.hpp -/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp -/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp -/boost/asio/detail/win_iocp_socket_recv_op.hpp -/boost/asio/detail/win_iocp_socket_send_op.hpp -/boost/asio/detail/win_iocp_socket_service_base.hpp -/boost/asio/detail/win_iocp_socket_service.hpp -/boost/asio/detail/win_iocp_thread_info.hpp -/boost/asio/detail/win_iocp_wait_op.hpp -/boost/asio/detail/win_mutex.hpp -/boost/asio/detail/win_object_handle_service.hpp -/boost/asio/detail/winrt_async_manager.hpp -/boost/asio/detail/winrt_async_op.hpp -/boost/asio/detail/winrt_resolve_op.hpp -/boost/asio/detail/winrt_resolver_service.hpp -/boost/asio/detail/winrt_socket_connect_op.hpp -/boost/asio/detail/winrt_socket_recv_op.hpp -/boost/asio/detail/winrt_socket_send_op.hpp -/boost/asio/detail/winrt_ssocket_service_base.hpp -/boost/asio/detail/winrt_ssocket_service.hpp -/boost/asio/detail/winrt_timer_scheduler.hpp -/boost/asio/detail/winrt_utils.hpp -/boost/asio/detail/winsock_init.hpp -/boost/asio/detail/win_static_mutex.hpp -/boost/asio/detail/win_thread.hpp -/boost/asio/detail/win_tss_ptr.hpp -/boost/asio/detail/work_dispatcher.hpp -/boost/asio/detail/wrapped_handler.hpp -/boost/asio/dispatch.hpp -/boost/asio/error.hpp -/boost/asio/execution/ -/boost/asio/execution/allocator.hpp -/boost/asio/execution/any_executor.hpp -/boost/asio/execution/bad_executor.hpp -/boost/asio/execution/blocking_adaptation.hpp -/boost/asio/execution/blocking.hpp -/boost/asio/execution/bulk_execute.hpp -/boost/asio/execution/bulk_guarantee.hpp -/boost/asio/execution/connect.hpp -/boost/asio/execution/context_as.hpp -/boost/asio/execution/context.hpp -/boost/asio/execution_context.hpp -/boost/asio/execution/detail/ -/boost/asio/execution/detail/as_invocable.hpp -/boost/asio/execution/detail/as_operation.hpp -/boost/asio/execution/detail/as_receiver.hpp -/boost/asio/execution/detail/bulk_sender.hpp -/boost/asio/execution/detail/submit_receiver.hpp -/boost/asio/execution/detail/void_receiver.hpp -/boost/asio/execution/execute.hpp -/boost/asio/execution/executor.hpp -/boost/asio/execution.hpp -/boost/asio/execution/impl/ -/boost/asio/execution/impl/bad_executor.ipp -/boost/asio/execution/impl/receiver_invocation_error.ipp -/boost/asio/execution/invocable_archetype.hpp -/boost/asio/execution/mapping.hpp -/boost/asio/execution/occupancy.hpp -/boost/asio/execution/operation_state.hpp -/boost/asio/execution/outstanding_work.hpp -/boost/asio/execution/prefer_only.hpp -/boost/asio/execution/receiver.hpp -/boost/asio/execution/receiver_invocation_error.hpp -/boost/asio/execution/relationship.hpp -/boost/asio/execution/schedule.hpp -/boost/asio/execution/scheduler.hpp -/boost/asio/execution/sender.hpp -/boost/asio/execution/set_done.hpp -/boost/asio/execution/set_error.hpp -/boost/asio/execution/set_value.hpp -/boost/asio/execution/start.hpp -/boost/asio/execution/submit.hpp -/boost/asio/executor.hpp -/boost/asio/executor_work_guard.hpp -/boost/asio/experimental/ -/boost/asio/experimental/as_single.hpp -/boost/asio/experimental/impl/ -/boost/asio/experimental/impl/as_single.hpp -/boost/asio/generic/ -/boost/asio/generic/basic_endpoint.hpp -/boost/asio/generic/datagram_protocol.hpp -/boost/asio/generic/detail/ -/boost/asio/generic/detail/endpoint.hpp -/boost/asio/generic/detail/impl/ -/boost/asio/generic/detail/impl/endpoint.ipp -/boost/asio/generic/raw_protocol.hpp -/boost/asio/generic/seq_packet_protocol.hpp -/boost/asio/generic/stream_protocol.hpp -/boost/asio/handler_alloc_hook.hpp -/boost/asio/handler_continuation_hook.hpp -/boost/asio/handler_invoke_hook.hpp -/boost/asio/high_resolution_timer.hpp -/boost/asio.hpp -/boost/asio/impl/ -/boost/asio/impl/awaitable.hpp -/boost/asio/impl/buffered_read_stream.hpp -/boost/asio/impl/buffered_write_stream.hpp -/boost/asio/impl/compose.hpp -/boost/asio/impl/connect.hpp -/boost/asio/impl/co_spawn.hpp -/boost/asio/impl/defer.hpp -/boost/asio/impl/detached.hpp -/boost/asio/impl/dispatch.hpp -/boost/asio/impl/error.ipp -/boost/asio/impl/execution_context.hpp -/boost/asio/impl/execution_context.ipp -/boost/asio/impl/executor.hpp -/boost/asio/impl/executor.ipp -/boost/asio/impl/handler_alloc_hook.ipp -/boost/asio/impl/io_context.hpp -/boost/asio/impl/io_context.ipp -/boost/asio/impl/multiple_exceptions.ipp -/boost/asio/impl/post.hpp -/boost/asio/impl/read_at.hpp -/boost/asio/impl/read.hpp -/boost/asio/impl/read_until.hpp -/boost/asio/impl/redirect_error.hpp -/boost/asio/impl/serial_port_base.hpp -/boost/asio/impl/serial_port_base.ipp -/boost/asio/impl/spawn.hpp -/boost/asio/impl/src.cpp -/boost/asio/impl/src.hpp -/boost/asio/impl/system_context.hpp -/boost/asio/impl/system_context.ipp -/boost/asio/impl/system_executor.hpp -/boost/asio/impl/thread_pool.hpp -/boost/asio/impl/thread_pool.ipp -/boost/asio/impl/use_awaitable.hpp -/boost/asio/impl/use_future.hpp -/boost/asio/impl/write_at.hpp -/boost/asio/impl/write.hpp -/boost/asio/io_context.hpp -/boost/asio/io_context_strand.hpp -/boost/asio/io_service.hpp -/boost/asio/io_service_strand.hpp -/boost/asio/ip/ -/boost/asio/ip/address.hpp -/boost/asio/ip/address_v4.hpp -/boost/asio/ip/address_v4_iterator.hpp -/boost/asio/ip/address_v4_range.hpp -/boost/asio/ip/address_v6.hpp -/boost/asio/ip/address_v6_iterator.hpp -/boost/asio/ip/address_v6_range.hpp -/boost/asio/ip/bad_address_cast.hpp -/boost/asio/ip/basic_endpoint.hpp -/boost/asio/ip/basic_resolver_entry.hpp -/boost/asio/ip/basic_resolver.hpp -/boost/asio/ip/basic_resolver_iterator.hpp -/boost/asio/ip/basic_resolver_query.hpp -/boost/asio/ip/basic_resolver_results.hpp -/boost/asio/ip/detail/ -/boost/asio/ip/detail/endpoint.hpp -/boost/asio/ip/detail/impl/ -/boost/asio/ip/detail/impl/endpoint.ipp -/boost/asio/ip/detail/socket_option.hpp -/boost/asio/ip/host_name.hpp -/boost/asio/ip/icmp.hpp -/boost/asio/ip/impl/ -/boost/asio/ip/impl/address.hpp -/boost/asio/ip/impl/address.ipp -/boost/asio/ip/impl/address_v4.hpp -/boost/asio/ip/impl/address_v4.ipp -/boost/asio/ip/impl/address_v6.hpp -/boost/asio/ip/impl/address_v6.ipp -/boost/asio/ip/impl/basic_endpoint.hpp -/boost/asio/ip/impl/host_name.ipp -/boost/asio/ip/impl/network_v4.hpp -/boost/asio/ip/impl/network_v4.ipp -/boost/asio/ip/impl/network_v6.hpp -/boost/asio/ip/impl/network_v6.ipp -/boost/asio/ip/multicast.hpp -/boost/asio/ip/network_v4.hpp -/boost/asio/ip/network_v6.hpp -/boost/asio/ip/resolver_base.hpp -/boost/asio/ip/resolver_query_base.hpp -/boost/asio/ip/tcp.hpp -/boost/asio/ip/udp.hpp -/boost/asio/ip/unicast.hpp -/boost/asio/ip/v6_only.hpp -/boost/asio/is_applicable_property.hpp -/boost/asio/is_executor.hpp -/boost/asio/is_read_buffered.hpp -/boost/asio/is_write_buffered.hpp -/boost/asio/local/ -/boost/asio/local/basic_endpoint.hpp -/boost/asio/local/connect_pair.hpp -/boost/asio/local/datagram_protocol.hpp -/boost/asio/local/detail/ -/boost/asio/local/detail/endpoint.hpp -/boost/asio/local/detail/impl/ -/boost/asio/local/detail/impl/endpoint.ipp -/boost/asio/local/stream_protocol.hpp -/boost/asio/multiple_exceptions.hpp -/boost/asio/packaged_task.hpp -/boost/asio/placeholders.hpp -/boost/asio/posix/ -/boost/asio/posix/basic_descriptor.hpp -/boost/asio/posix/basic_stream_descriptor.hpp -/boost/asio/posix/descriptor_base.hpp -/boost/asio/posix/descriptor.hpp -/boost/asio/posix/stream_descriptor.hpp -/boost/asio/post.hpp -/boost/asio/prefer.hpp -/boost/asio/query.hpp -/boost/asio/read_at.hpp -/boost/asio/read.hpp -/boost/asio/read_until.hpp -/boost/asio/redirect_error.hpp -/boost/asio/require_concept.hpp -/boost/asio/require.hpp -/boost/asio/serial_port_base.hpp -/boost/asio/serial_port.hpp -/boost/asio/signal_set.hpp -/boost/asio/socket_base.hpp -/boost/asio/spawn.hpp -/boost/asio/ssl/ -/boost/asio/ssl/context_base.hpp -/boost/asio/ssl/context.hpp -/boost/asio/ssl/detail/ -/boost/asio/ssl/detail/buffered_handshake_op.hpp -/boost/asio/ssl/detail/engine.hpp -/boost/asio/ssl/detail/handshake_op.hpp -/boost/asio/ssl/detail/impl/ -/boost/asio/ssl/detail/impl/engine.ipp -/boost/asio/ssl/detail/impl/openssl_init.ipp -/boost/asio/ssl/detail/io.hpp -/boost/asio/ssl/detail/openssl_init.hpp -/boost/asio/ssl/detail/openssl_types.hpp -/boost/asio/ssl/detail/password_callback.hpp -/boost/asio/ssl/detail/read_op.hpp -/boost/asio/ssl/detail/shutdown_op.hpp -/boost/asio/ssl/detail/stream_core.hpp -/boost/asio/ssl/detail/verify_callback.hpp -/boost/asio/ssl/detail/write_op.hpp -/boost/asio/ssl/error.hpp -/boost/asio/ssl/host_name_verification.hpp -/boost/asio/ssl.hpp -/boost/asio/ssl/impl/ -/boost/asio/ssl/impl/context.hpp -/boost/asio/ssl/impl/context.ipp -/boost/asio/ssl/impl/error.ipp -/boost/asio/ssl/impl/host_name_verification.ipp -/boost/asio/ssl/impl/rfc2818_verification.ipp -/boost/asio/ssl/impl/src.hpp -/boost/asio/ssl/rfc2818_verification.hpp -/boost/asio/ssl/stream_base.hpp -/boost/asio/ssl/stream.hpp -/boost/asio/ssl/verify_context.hpp -/boost/asio/ssl/verify_mode.hpp -/boost/asio/static_thread_pool.hpp -/boost/asio/steady_timer.hpp -/boost/asio/strand.hpp -/boost/asio/streambuf.hpp -/boost/asio/system_context.hpp -/boost/asio/system_executor.hpp -/boost/asio/system_timer.hpp -/boost/asio/this_coro.hpp -/boost/asio/thread_pool.hpp -/boost/asio/time_traits.hpp -/boost/asio/traits/ -/boost/asio/traits/bulk_execute_free.hpp -/boost/asio/traits/bulk_execute_member.hpp -/boost/asio/traits/connect_free.hpp -/boost/asio/traits/connect_member.hpp -/boost/asio/traits/equality_comparable.hpp -/boost/asio/traits/execute_free.hpp -/boost/asio/traits/execute_member.hpp -/boost/asio/traits/prefer_free.hpp -/boost/asio/traits/prefer_member.hpp -/boost/asio/traits/query_free.hpp -/boost/asio/traits/query_member.hpp -/boost/asio/traits/query_static_constexpr_member.hpp -/boost/asio/traits/require_concept_free.hpp -/boost/asio/traits/require_concept_member.hpp -/boost/asio/traits/require_free.hpp -/boost/asio/traits/require_member.hpp -/boost/asio/traits/schedule_free.hpp -/boost/asio/traits/schedule_member.hpp -/boost/asio/traits/set_done_free.hpp -/boost/asio/traits/set_done_member.hpp -/boost/asio/traits/set_error_free.hpp -/boost/asio/traits/set_error_member.hpp -/boost/asio/traits/set_value_free.hpp -/boost/asio/traits/set_value_member.hpp -/boost/asio/traits/start_free.hpp -/boost/asio/traits/start_member.hpp -/boost/asio/traits/static_query.hpp -/boost/asio/traits/static_require_concept.hpp -/boost/asio/traits/static_require.hpp -/boost/asio/traits/submit_free.hpp -/boost/asio/traits/submit_member.hpp -/boost/asio/ts/ -/boost/asio/ts/buffer.hpp -/boost/asio/ts/executor.hpp -/boost/asio/ts/internet.hpp -/boost/asio/ts/io_context.hpp -/boost/asio/ts/netfwd.hpp -/boost/asio/ts/net.hpp -/boost/asio/ts/socket.hpp -/boost/asio/ts/timer.hpp -/boost/asio/unyield.hpp -/boost/asio/use_awaitable.hpp -/boost/asio/use_future.hpp -/boost/asio/uses_executor.hpp -/boost/asio/version.hpp -/boost/asio/wait_traits.hpp -/boost/asio/windows/ -/boost/asio/windows/basic_object_handle.hpp -/boost/asio/windows/basic_overlapped_handle.hpp -/boost/asio/windows/basic_random_access_handle.hpp -/boost/asio/windows/basic_stream_handle.hpp -/boost/asio/windows/object_handle.hpp -/boost/asio/windows/overlapped_handle.hpp -/boost/asio/windows/overlapped_ptr.hpp -/boost/asio/windows/random_access_handle.hpp -/boost/asio/windows/stream_handle.hpp -/boost/asio/write_at.hpp -/boost/asio/write.hpp -/boost/asio/yield.hpp -/boost/cerrno.hpp -/boost/config/ -/boost/config/warning_disable.hpp -/boost/system/ -/boost/system/api_config.hpp -/boost/system/config.hpp -/boost/system/cygwin_error.hpp -/boost/system/detail/ -/boost/system/detail/cerrno.hpp -/boost/system/detail/config.hpp -/boost/system/detail/enable_if.hpp -/boost/system/detail/errc.hpp -/boost/system/detail/error_category.hpp -/boost/system/detail/error_category_impl.hpp -/boost/system/detail/error_code.hpp -/boost/system/detail/error_condition.hpp -/boost/system/detail/generic_category.hpp -/boost/system/detail/generic_category_message.hpp -/boost/system/detail/is_generic_value.hpp -/boost/system/detail/system_category_condition_win32.hpp -/boost/system/detail/system_category.hpp -/boost/system/detail/system_category_impl.hpp -/boost/system/detail/system_category_message_win32.hpp -/boost/system/detail/throws.hpp -/boost/system/detail/to_std_category.hpp -/boost/system/errc.hpp -/boost/system/error_category.hpp -/boost/system/error_code.hpp -/boost/system/error_condition.hpp -/boost/system/generic_category.hpp -/boost/system/is_error_code_enum.hpp -/boost/system/is_error_condition_enum.hpp -/boost/system/linux_error.hpp -/boost/system/system_category.hpp -/boost/system/system_error.hpp -/boost/system/windows_error.hpp -/doc/ -/doc/html/ -/doc/html/boost_asio/ -/doc/html/boost_asio/async_op1.png -/doc/html/boost_asio/async_op2.png -/doc/html/boost_asio/example/ -/doc/html/boost_asio/example/cpp03/ -/doc/html/boost_asio/example/cpp03/allocation/ -/doc/html/boost_asio/example/cpp03/allocation/server.cpp -/doc/html/boost_asio/example/cpp03/buffers/ -/doc/html/boost_asio/example/cpp03/buffers/reference_counted.cpp -/doc/html/boost_asio/example/cpp03/chat/ -/doc/html/boost_asio/example/cpp03/chat/chat_client.cpp -/doc/html/boost_asio/example/cpp03/chat/chat_message.hpp -/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp -/doc/html/boost_asio/example/cpp03/chat/posix_chat_client.cpp -/doc/html/boost_asio/example/cpp03/echo/ -/doc/html/boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/async_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_client.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_udp_echo_client.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/fork/ -/doc/html/boost_asio/example/cpp03/fork/daemon.cpp -/doc/html/boost_asio/example/cpp03/fork/process_per_connection.cpp -/doc/html/boost_asio/example/cpp03/http/ -/doc/html/boost_asio/example/cpp03/http/client/ -/doc/html/boost_asio/example/cpp03/http/client/async_client.cpp -/doc/html/boost_asio/example/cpp03/http/client/sync_client.cpp -/doc/html/boost_asio/example/cpp03/http/server/ -/doc/html/boost_asio/example/cpp03/http/server2/ -/doc/html/boost_asio/example/cpp03/http/server2/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server2/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server2/header.hpp -/doc/html/boost_asio/example/cpp03/http/server2/io_context_pool.cpp -/doc/html/boost_asio/example/cpp03/http/server2/io_context_pool.hpp -/doc/html/boost_asio/example/cpp03/http/server2/main.cpp -/doc/html/boost_asio/example/cpp03/http/server2/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server2/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server2/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server2/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server2/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server2/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server2/server.cpp -/doc/html/boost_asio/example/cpp03/http/server2/server.hpp -/doc/html/boost_asio/example/cpp03/http/server3/ -/doc/html/boost_asio/example/cpp03/http/server3/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server3/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server3/header.hpp -/doc/html/boost_asio/example/cpp03/http/server3/main.cpp -/doc/html/boost_asio/example/cpp03/http/server3/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server3/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server3/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server3/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server3/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server3/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server3/server.cpp -/doc/html/boost_asio/example/cpp03/http/server3/server.hpp -/doc/html/boost_asio/example/cpp03/http/server4/ -/doc/html/boost_asio/example/cpp03/http/server4/file_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server4/file_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server4/header.hpp -/doc/html/boost_asio/example/cpp03/http/server4/main.cpp -/doc/html/boost_asio/example/cpp03/http/server4/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server4/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server4/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server4/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server4/request.hpp -/doc/html/boost_asio/example/cpp03/http/server4/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server4/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server4/server.cpp -/doc/html/boost_asio/example/cpp03/http/server4/server.hpp -/doc/html/boost_asio/example/cpp03/http/server/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server/connection_manager.cpp -/doc/html/boost_asio/example/cpp03/http/server/connection_manager.hpp -/doc/html/boost_asio/example/cpp03/http/server/header.hpp -/doc/html/boost_asio/example/cpp03/http/server/main.cpp -/doc/html/boost_asio/example/cpp03/http/server/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server/request.hpp -/doc/html/boost_asio/example/cpp03/http/server/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server/server.cpp -/doc/html/boost_asio/example/cpp03/http/server/server.hpp -/doc/html/boost_asio/example/cpp03/icmp/ -/doc/html/boost_asio/example/cpp03/icmp/icmp_header.hpp -/doc/html/boost_asio/example/cpp03/icmp/ipv4_header.hpp -/doc/html/boost_asio/example/cpp03/icmp/ping.cpp -/doc/html/boost_asio/example/cpp03/invocation/ -/doc/html/boost_asio/example/cpp03/invocation/prioritised_handlers.cpp -/doc/html/boost_asio/example/cpp03/iostreams/ -/doc/html/boost_asio/example/cpp03/iostreams/daytime_client.cpp -/doc/html/boost_asio/example/cpp03/iostreams/daytime_server.cpp -/doc/html/boost_asio/example/cpp03/iostreams/http_client.cpp -/doc/html/boost_asio/example/cpp03/local/ -/doc/html/boost_asio/example/cpp03/local/connect_pair.cpp -/doc/html/boost_asio/example/cpp03/local/iostream_client.cpp -/doc/html/boost_asio/example/cpp03/local/stream_client.cpp -/doc/html/boost_asio/example/cpp03/local/stream_server.cpp -/doc/html/boost_asio/example/cpp03/multicast/ -/doc/html/boost_asio/example/cpp03/multicast/receiver.cpp -/doc/html/boost_asio/example/cpp03/multicast/sender.cpp -/doc/html/boost_asio/example/cpp03/nonblocking/ -/doc/html/boost_asio/example/cpp03/nonblocking/third_party_lib.cpp -/doc/html/boost_asio/example/cpp03/porthopper/ -/doc/html/boost_asio/example/cpp03/porthopper/client.cpp -/doc/html/boost_asio/example/cpp03/porthopper/protocol.hpp -/doc/html/boost_asio/example/cpp03/porthopper/server.cpp -/doc/html/boost_asio/example/cpp03/serialization/ -/doc/html/boost_asio/example/cpp03/serialization/client.cpp -/doc/html/boost_asio/example/cpp03/serialization/connection.hpp -/doc/html/boost_asio/example/cpp03/serialization/server.cpp -/doc/html/boost_asio/example/cpp03/serialization/stock.hpp -/doc/html/boost_asio/example/cpp03/services/ -/doc/html/boost_asio/example/cpp03/services/basic_logger.hpp -/doc/html/boost_asio/example/cpp03/services/daytime_client.cpp -/doc/html/boost_asio/example/cpp03/services/logger.hpp -/doc/html/boost_asio/example/cpp03/services/logger_service.cpp -/doc/html/boost_asio/example/cpp03/services/logger_service.hpp -/doc/html/boost_asio/example/cpp03/socks4/ -/doc/html/boost_asio/example/cpp03/socks4/socks4.hpp -/doc/html/boost_asio/example/cpp03/socks4/sync_client.cpp -/doc/html/boost_asio/example/cpp03/spawn/ -/doc/html/boost_asio/example/cpp03/spawn/echo_server.cpp -/doc/html/boost_asio/example/cpp03/spawn/parallel_grep.cpp -/doc/html/boost_asio/example/cpp03/ssl/ -/doc/html/boost_asio/example/cpp03/ssl/client.cpp -/doc/html/boost_asio/example/cpp03/ssl/server.cpp -/doc/html/boost_asio/example/cpp03/timeouts/ -/doc/html/boost_asio/example/cpp03/timeouts/async_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/server.cpp -/doc/html/boost_asio/example/cpp03/timers/ -/doc/html/boost_asio/example/cpp03/timers/time_t_timer.cpp -/doc/html/boost_asio/example/cpp03/windows/ -/doc/html/boost_asio/example/cpp03/windows/transmit_file.cpp -/doc/html/boost_asio/example/cpp11/ -/doc/html/boost_asio/example/cpp11/allocation/ -/doc/html/boost_asio/example/cpp11/allocation/server.cpp -/doc/html/boost_asio/example/cpp11/buffers/ -/doc/html/boost_asio/example/cpp11/buffers/reference_counted.cpp -/doc/html/boost_asio/example/cpp11/chat/ -/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp -/doc/html/boost_asio/example/cpp11/chat/chat_message.hpp -/doc/html/boost_asio/example/cpp11/chat/chat_server.cpp -/doc/html/boost_asio/example/cpp11/echo/ -/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/async_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_client.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_udp_echo_client.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/executors/ -/doc/html/boost_asio/example/cpp11/executors/actor.cpp -/doc/html/boost_asio/example/cpp11/executors/bank_account_1.cpp -/doc/html/boost_asio/example/cpp11/executors/bank_account_2.cpp -/doc/html/boost_asio/example/cpp11/executors/fork_join.cpp -/doc/html/boost_asio/example/cpp11/executors/pipeline.cpp -/doc/html/boost_asio/example/cpp11/executors/priority_scheduler.cpp -/doc/html/boost_asio/example/cpp11/fork/ -/doc/html/boost_asio/example/cpp11/fork/daemon.cpp -/doc/html/boost_asio/example/cpp11/fork/process_per_connection.cpp -/doc/html/boost_asio/example/cpp11/futures/ -/doc/html/boost_asio/example/cpp11/futures/daytime_client.cpp -/doc/html/boost_asio/example/cpp11/handler_tracking/ -/doc/html/boost_asio/example/cpp11/handler_tracking/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/handler_tracking/custom_tracking.hpp -/doc/html/boost_asio/example/cpp11/http/ -/doc/html/boost_asio/example/cpp11/http/server/ -/doc/html/boost_asio/example/cpp11/http/server/connection.cpp -/doc/html/boost_asio/example/cpp11/http/server/connection.hpp -/doc/html/boost_asio/example/cpp11/http/server/connection_manager.cpp -/doc/html/boost_asio/example/cpp11/http/server/connection_manager.hpp -/doc/html/boost_asio/example/cpp11/http/server/header.hpp -/doc/html/boost_asio/example/cpp11/http/server/main.cpp -/doc/html/boost_asio/example/cpp11/http/server/mime_types.cpp -/doc/html/boost_asio/example/cpp11/http/server/mime_types.hpp -/doc/html/boost_asio/example/cpp11/http/server/reply.cpp -/doc/html/boost_asio/example/cpp11/http/server/reply.hpp -/doc/html/boost_asio/example/cpp11/http/server/request_handler.cpp -/doc/html/boost_asio/example/cpp11/http/server/request_handler.hpp -/doc/html/boost_asio/example/cpp11/http/server/request.hpp -/doc/html/boost_asio/example/cpp11/http/server/request_parser.cpp -/doc/html/boost_asio/example/cpp11/http/server/request_parser.hpp -/doc/html/boost_asio/example/cpp11/http/server/server.cpp -/doc/html/boost_asio/example/cpp11/http/server/server.hpp -/doc/html/boost_asio/example/cpp11/invocation/ -/doc/html/boost_asio/example/cpp11/invocation/prioritised_handlers.cpp -/doc/html/boost_asio/example/cpp11/local/ -/doc/html/boost_asio/example/cpp11/local/connect_pair.cpp -/doc/html/boost_asio/example/cpp11/local/iostream_client.cpp -/doc/html/boost_asio/example/cpp11/local/stream_client.cpp -/doc/html/boost_asio/example/cpp11/local/stream_server.cpp -/doc/html/boost_asio/example/cpp11/multicast/ -/doc/html/boost_asio/example/cpp11/multicast/receiver.cpp -/doc/html/boost_asio/example/cpp11/multicast/sender.cpp -/doc/html/boost_asio/example/cpp11/nonblocking/ -/doc/html/boost_asio/example/cpp11/nonblocking/third_party_lib.cpp -/doc/html/boost_asio/example/cpp11/operations/ -/doc/html/boost_asio/example/cpp11/operations/composed_1.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_2.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_3.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_4.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_5.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_6.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_7.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_8.cpp -/doc/html/boost_asio/example/cpp11/socks4/ -/doc/html/boost_asio/example/cpp11/socks4/socks4.hpp -/doc/html/boost_asio/example/cpp11/socks4/sync_client.cpp -/doc/html/boost_asio/example/cpp11/spawn/ -/doc/html/boost_asio/example/cpp11/spawn/echo_server.cpp -/doc/html/boost_asio/example/cpp11/spawn/parallel_grep.cpp -/doc/html/boost_asio/example/cpp11/ssl/ -/doc/html/boost_asio/example/cpp11/ssl/client.cpp -/doc/html/boost_asio/example/cpp11/ssl/server.cpp -/doc/html/boost_asio/example/cpp11/timeouts/ -/doc/html/boost_asio/example/cpp11/timeouts/async_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_udp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/server.cpp -/doc/html/boost_asio/example/cpp11/timers/ -/doc/html/boost_asio/example/cpp11/timers/time_t_timer.cpp -/doc/html/boost_asio/example/cpp14/ -/doc/html/boost_asio/example/cpp14/operations/ -/doc/html/boost_asio/example/cpp14/operations/composed_1.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_2.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_3.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_4.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_5.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_6.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_7.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_8.cpp -/doc/html/boost_asio/example/cpp17/ -/doc/html/boost_asio/example/cpp17/coroutines_ts/ -/doc/html/boost_asio/example/cpp17/coroutines_ts/chat_server.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/range_based_for.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp -/doc/html/boost_asio/examples/ -/doc/html/boost_asio/examples/cpp03_examples.html -/doc/html/boost_asio/examples/cpp11_examples.html -/doc/html/boost_asio/examples/cpp14_examples.html -/doc/html/boost_asio/examples/cpp17_examples.html -/doc/html/boost_asio/examples.html -/doc/html/boost_asio/history.html -/doc/html/boost_asio.html -/doc/html/boost_asio/index.html -/doc/html/boost_asio/net_ts.html -/doc/html/boost_asio/overview/ -/doc/html/boost_asio/overview/core/ -/doc/html/boost_asio/overview/core/allocation.html -/doc/html/boost_asio/overview/core/async.html -/doc/html/boost_asio/overview/core/basics.html -/doc/html/boost_asio/overview/core/buffers.html -/doc/html/boost_asio/overview/core/concurrency_hint.html -/doc/html/boost_asio/overview/core/coroutine.html -/doc/html/boost_asio/overview/core/coroutines_ts.html -/doc/html/boost_asio/overview/core/handler_tracking.html -/doc/html/boost_asio/overview/core.html -/doc/html/boost_asio/overview/core/line_based.html -/doc/html/boost_asio/overview/core/reactor.html -/doc/html/boost_asio/overview/core/spawn.html -/doc/html/boost_asio/overview/core/strands.html -/doc/html/boost_asio/overview/core/streams.html -/doc/html/boost_asio/overview/core/threads.html -/doc/html/boost_asio/overview/cpp2011/ -/doc/html/boost_asio/overview/cpp2011/array.html -/doc/html/boost_asio/overview/cpp2011/atomic.html -/doc/html/boost_asio/overview/cpp2011/chrono.html -/doc/html/boost_asio/overview/cpp2011/futures.html -/doc/html/boost_asio/overview/cpp2011.html -/doc/html/boost_asio/overview/cpp2011/move_handlers.html -/doc/html/boost_asio/overview/cpp2011/move_objects.html -/doc/html/boost_asio/overview/cpp2011/shared_ptr.html -/doc/html/boost_asio/overview/cpp2011/variadic.html -/doc/html/boost_asio/overview.html -/doc/html/boost_asio/overview/implementation.html -/doc/html/boost_asio/overview/networking/ -/doc/html/boost_asio/overview/networking/bsd_sockets.html -/doc/html/boost_asio/overview/networking.html -/doc/html/boost_asio/overview/networking/iostreams.html -/doc/html/boost_asio/overview/networking/other_protocols.html -/doc/html/boost_asio/overview/networking/protocols.html -/doc/html/boost_asio/overview/posix/ -/doc/html/boost_asio/overview/posix/fork.html -/doc/html/boost_asio/overview/posix.html -/doc/html/boost_asio/overview/posix/local.html -/doc/html/boost_asio/overview/posix/stream_descriptor.html -/doc/html/boost_asio/overview/rationale.html -/doc/html/boost_asio/overview/serial_ports.html -/doc/html/boost_asio/overview/signals.html -/doc/html/boost_asio/overview/ssl.html -/doc/html/boost_asio/overview/timers.html -/doc/html/boost_asio/overview/windows/ -/doc/html/boost_asio/overview/windows.html -/doc/html/boost_asio/overview/windows/object_handle.html -/doc/html/boost_asio/overview/windows/random_access_handle.html -/doc/html/boost_asio/overview/windows/stream_handle.html -/doc/html/boost_asio/proactor.png -/doc/html/boost_asio/reference/ -/doc/html/boost_asio/reference/AcceptableProtocol.html -/doc/html/boost_asio/reference/AcceptHandler.html -/doc/html/boost_asio/reference/any_io_executor.html -/doc/html/boost_asio/reference/asio_handler_allocate.html -/doc/html/boost_asio/reference/asio_handler_deallocate.html -/doc/html/boost_asio/reference/asio_handler_invoke/ -/doc/html/boost_asio/reference/asio_handler_invoke.html -/doc/html/boost_asio/reference/asio_handler_invoke/overload1.html -/doc/html/boost_asio/reference/asio_handler_invoke/overload2.html -/doc/html/boost_asio/reference/asio_handler_is_continuation.html -/doc/html/boost_asio/reference/associated_allocator/ -/doc/html/boost_asio/reference/associated_allocator/get.html -/doc/html/boost_asio/reference/associated_allocator.html -/doc/html/boost_asio/reference/associated_allocator/type.html -/doc/html/boost_asio/reference/associated_executor/ -/doc/html/boost_asio/reference/associated_executor/get.html -/doc/html/boost_asio/reference/associated_executor.html -/doc/html/boost_asio/reference/associated_executor/type.html -/doc/html/boost_asio/reference/async_completion/ -/doc/html/boost_asio/reference/async_completion/async_completion.html -/doc/html/boost_asio/reference/async_completion/completion_handler.html -/doc/html/boost_asio/reference/async_completion/completion_handler_type.html -/doc/html/boost_asio/reference/async_completion.html -/doc/html/boost_asio/reference/async_completion/result.html -/doc/html/boost_asio/reference/async_compose.html -/doc/html/boost_asio/reference/async_connect/ -/doc/html/boost_asio/reference/async_connect.html -/doc/html/boost_asio/reference/async_connect/overload1.html -/doc/html/boost_asio/reference/async_connect/overload2.html -/doc/html/boost_asio/reference/async_connect/overload3.html -/doc/html/boost_asio/reference/async_connect/overload4.html -/doc/html/boost_asio/reference/async_connect/overload5.html -/doc/html/boost_asio/reference/async_connect/overload6.html -/doc/html/boost_asio/reference/asynchronous_operations.html -/doc/html/boost_asio/reference/asynchronous_socket_operations.html -/doc/html/boost_asio/reference/async_initiate.html -/doc/html/boost_asio/reference/AsyncRandomAccessReadDevice.html -/doc/html/boost_asio/reference/AsyncRandomAccessWriteDevice.html -/doc/html/boost_asio/reference/async_read/ -/doc/html/boost_asio/reference/async_read_at/ -/doc/html/boost_asio/reference/async_read_at.html -/doc/html/boost_asio/reference/async_read_at/overload1.html -/doc/html/boost_asio/reference/async_read_at/overload2.html -/doc/html/boost_asio/reference/async_read_at/overload3.html -/doc/html/boost_asio/reference/async_read_at/overload4.html -/doc/html/boost_asio/reference/async_read.html -/doc/html/boost_asio/reference/async_read/overload1.html -/doc/html/boost_asio/reference/async_read/overload2.html -/doc/html/boost_asio/reference/async_read/overload3.html -/doc/html/boost_asio/reference/async_read/overload4.html -/doc/html/boost_asio/reference/async_read/overload5.html -/doc/html/boost_asio/reference/async_read/overload6.html -/doc/html/boost_asio/reference/async_read/overload7.html -/doc/html/boost_asio/reference/async_read/overload8.html -/doc/html/boost_asio/reference/AsyncReadStream.html -/doc/html/boost_asio/reference/async_read_until/ -/doc/html/boost_asio/reference/async_read_until.html -/doc/html/boost_asio/reference/async_read_until/overload10.html -/doc/html/boost_asio/reference/async_read_until/overload11.html -/doc/html/boost_asio/reference/async_read_until/overload12.html -/doc/html/boost_asio/reference/async_read_until/overload1.html -/doc/html/boost_asio/reference/async_read_until/overload2.html -/doc/html/boost_asio/reference/async_read_until/overload3.html -/doc/html/boost_asio/reference/async_read_until/overload4.html -/doc/html/boost_asio/reference/async_read_until/overload5.html -/doc/html/boost_asio/reference/async_read_until/overload6.html -/doc/html/boost_asio/reference/async_read_until/overload7.html -/doc/html/boost_asio/reference/async_read_until/overload8.html -/doc/html/boost_asio/reference/async_read_until/overload9.html -/doc/html/boost_asio/reference/async_result/ -/doc/html/boost_asio/reference/async_result/async_result.html -/doc/html/boost_asio/reference/async_result/completion_handler_type.html -/doc/html/boost_asio/reference/async_result/get.html -/doc/html/boost_asio/reference/async_result.html -/doc/html/boost_asio/reference/async_result/initiate.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/get.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/return_type.html -/doc/html/boost_asio/reference/async_result/return_type.html -/doc/html/boost_asio/reference/async_write/ -/doc/html/boost_asio/reference/async_write_at/ -/doc/html/boost_asio/reference/async_write_at.html -/doc/html/boost_asio/reference/async_write_at/overload1.html -/doc/html/boost_asio/reference/async_write_at/overload2.html -/doc/html/boost_asio/reference/async_write_at/overload3.html -/doc/html/boost_asio/reference/async_write_at/overload4.html -/doc/html/boost_asio/reference/async_write.html -/doc/html/boost_asio/reference/async_write/overload1.html -/doc/html/boost_asio/reference/async_write/overload2.html -/doc/html/boost_asio/reference/async_write/overload3.html -/doc/html/boost_asio/reference/async_write/overload4.html -/doc/html/boost_asio/reference/async_write/overload5.html -/doc/html/boost_asio/reference/async_write/overload6.html -/doc/html/boost_asio/reference/async_write/overload7.html -/doc/html/boost_asio/reference/async_write/overload8.html -/doc/html/boost_asio/reference/AsyncWriteStream.html -/doc/html/boost_asio/reference/awaitable/ -/doc/html/boost_asio/reference/awaitable/awaitable/ -/doc/html/boost_asio/reference/awaitable/_awaitable.html -/doc/html/boost_asio/reference/awaitable/awaitable.html -/doc/html/boost_asio/reference/awaitable/awaitable/overload1.html -/doc/html/boost_asio/reference/awaitable/awaitable/overload2.html -/doc/html/boost_asio/reference/awaitable/executor_type.html -/doc/html/boost_asio/reference/awaitable.html -/doc/html/boost_asio/reference/awaitable/valid.html -/doc/html/boost_asio/reference/awaitable/value_type.html -/doc/html/boost_asio/reference/bad_executor/ -/doc/html/boost_asio/reference/bad_executor/bad_executor.html -/doc/html/boost_asio/reference/bad_executor.html -/doc/html/boost_asio/reference/bad_executor/what.html -/doc/html/boost_asio/reference/basic_datagram_socket/ -/doc/html/boost_asio/reference/basic_datagram_socket/assign/ -/doc/html/boost_asio/reference/basic_datagram_socket/assign.html -/doc/html/boost_asio/reference/basic_datagram_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_connect.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_send.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_wait.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/ -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/ -/doc/html/boost_asio/reference/basic_datagram_socket/available.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/ -/doc/html/boost_asio/reference/basic_datagram_socket/_basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload10.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload4.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload5.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload6.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload7.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload8.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload9.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/ -/doc/html/boost_asio/reference/basic_datagram_socket/bind.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/broadcast.html -/doc/html/boost_asio/reference/basic_datagram_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/ -/doc/html/boost_asio/reference/basic_datagram_socket/cancel.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/ -/doc/html/boost_asio/reference/basic_datagram_socket/close.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/ -/doc/html/boost_asio/reference/basic_datagram_socket/connect.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/debug.html -/doc/html/boost_asio/reference/basic_datagram_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_datagram_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_datagram_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/executor_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_executor.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/ -/doc/html/boost_asio/reference/basic_datagram_socket/get_option.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/ -/doc/html/boost_asio/reference/basic_datagram_socket/io_control.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/is_open.html -/doc/html/boost_asio/reference/basic_datagram_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_datagram_socket/linger.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/max_connections.html -/doc/html/boost_asio/reference/basic_datagram_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_flags.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_peek.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_handle.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/ -/doc/html/boost_asio/reference/basic_datagram_socket/open.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_datagram_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/ -/doc/html/boost_asio/reference/basic_datagram_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/ -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/ -/doc/html/boost_asio/reference/basic_datagram_socket/release.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/ -/doc/html/boost_asio/reference/basic_datagram_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_datagram_socket/send.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/ -/doc/html/boost_asio/reference/basic_datagram_socket/send_to.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/ -/doc/html/boost_asio/reference/basic_datagram_socket/set_option.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/ -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/ -/doc/html/boost_asio/reference/basic_datagram_socket/wait.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/ -/doc/html/boost_asio/reference/basic_deadline_timer/async_wait.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/ -/doc/html/boost_asio/reference/basic_deadline_timer/_basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload4.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload5.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload6.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload7.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/ -/doc/html/boost_asio/reference/basic_deadline_timer/cancel.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/ -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/duration_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/executor_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/ -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/ -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/get_executor.html -/doc/html/boost_asio/reference/basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/operator_eq_.html -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor/ -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor.html -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_deadline_timer/time_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/traits_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/ -/doc/html/boost_asio/reference/basic_deadline_timer/wait.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/overload2.html -/doc/html/boost_asio/reference/basic_io_object/ -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/ -/doc/html/boost_asio/reference/basic_io_object/_basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload1.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload2.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload3.html -/doc/html/boost_asio/reference/basic_io_object/executor_type.html -/doc/html/boost_asio/reference/basic_io_object/get_executor.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/ -/doc/html/boost_asio/reference/basic_io_object/get_implementation.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/overload1.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/overload2.html -/doc/html/boost_asio/reference/basic_io_object/get_io_context.html -/doc/html/boost_asio/reference/basic_io_object/get_io_service.html -/doc/html/boost_asio/reference/basic_io_object/get_service/ -/doc/html/boost_asio/reference/basic_io_object/get_service.html -/doc/html/boost_asio/reference/basic_io_object/get_service/overload1.html -/doc/html/boost_asio/reference/basic_io_object/get_service/overload2.html -/doc/html/boost_asio/reference/basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/implementation_type.html -/doc/html/boost_asio/reference/basic_io_object/operator_eq_.html -/doc/html/boost_asio/reference/basic_io_object/service_type.html -/doc/html/boost_asio/reference/basic_raw_socket/ -/doc/html/boost_asio/reference/basic_raw_socket/assign/ -/doc/html/boost_asio/reference/basic_raw_socket/assign.html -/doc/html/boost_asio/reference/basic_raw_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_connect.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/ -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/ -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/ -/doc/html/boost_asio/reference/basic_raw_socket/async_send.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/ -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_wait.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/ -/doc/html/boost_asio/reference/basic_raw_socket/at_mark.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/available/ -/doc/html/boost_asio/reference/basic_raw_socket/available.html -/doc/html/boost_asio/reference/basic_raw_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/ -/doc/html/boost_asio/reference/basic_raw_socket/_basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload10.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload4.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload5.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload6.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload7.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload8.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload9.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/ -/doc/html/boost_asio/reference/basic_raw_socket/bind.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/broadcast.html -/doc/html/boost_asio/reference/basic_raw_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/ -/doc/html/boost_asio/reference/basic_raw_socket/cancel.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/close/ -/doc/html/boost_asio/reference/basic_raw_socket/close.html -/doc/html/boost_asio/reference/basic_raw_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/ -/doc/html/boost_asio/reference/basic_raw_socket/connect.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/debug.html -/doc/html/boost_asio/reference/basic_raw_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_raw_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_raw_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_raw_socket/executor_type.html -/doc/html/boost_asio/reference/basic_raw_socket/get_executor.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/ -/doc/html/boost_asio/reference/basic_raw_socket/get_option.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/ -/doc/html/boost_asio/reference/basic_raw_socket/io_control.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/is_open.html -/doc/html/boost_asio/reference/basic_raw_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_raw_socket/linger.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_raw_socket/max_connections.html -/doc/html/boost_asio/reference/basic_raw_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_raw_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_raw_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_raw_socket/message_flags.html -/doc/html/boost_asio/reference/basic_raw_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_raw_socket/message_peek.html -/doc/html/boost_asio/reference/basic_raw_socket/native_handle.html -/doc/html/boost_asio/reference/basic_raw_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/open/ -/doc/html/boost_asio/reference/basic_raw_socket/open.html -/doc/html/boost_asio/reference/basic_raw_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_raw_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/ -/doc/html/boost_asio/reference/basic_raw_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/ -/doc/html/boost_asio/reference/basic_raw_socket/receive_from.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/receive.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/release/ -/doc/html/boost_asio/reference/basic_raw_socket/release.html -/doc/html/boost_asio/reference/basic_raw_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_raw_socket/send/ -/doc/html/boost_asio/reference/basic_raw_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_raw_socket/send.html -/doc/html/boost_asio/reference/basic_raw_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/ -/doc/html/boost_asio/reference/basic_raw_socket/send_to.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/ -/doc/html/boost_asio/reference/basic_raw_socket/set_option.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/ -/doc/html/boost_asio/reference/basic_raw_socket/shutdown.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/ -/doc/html/boost_asio/reference/basic_raw_socket/wait.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/wait_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_connect.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_send.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_wait.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/available.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/_basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload10.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload4.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload5.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload6.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload7.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload8.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload9.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/broadcast.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/close.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/debug.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/executor_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_executor.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/is_open.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/linger.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/max_connections.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_flags.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_peek.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_handle.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/open.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/release.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait_type.html -/doc/html/boost_asio/reference/basic_serial_port/ -/doc/html/boost_asio/reference/basic_serial_port/assign/ -/doc/html/boost_asio/reference/basic_serial_port/assign.html -/doc/html/boost_asio/reference/basic_serial_port/assign/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/assign/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/async_read_some.html -/doc/html/boost_asio/reference/basic_serial_port/async_write_some.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/ -/doc/html/boost_asio/reference/basic_serial_port/_basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload3.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload4.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload5.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload6.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload7.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload8.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload9.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/ -/doc/html/boost_asio/reference/basic_serial_port/cancel.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/close/ -/doc/html/boost_asio/reference/basic_serial_port/close.html -/doc/html/boost_asio/reference/basic_serial_port/close/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/close/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/executor_type.html -/doc/html/boost_asio/reference/basic_serial_port/get_executor.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/ -/doc/html/boost_asio/reference/basic_serial_port/get_option.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/overload2.html -/doc/html/boost_asio/reference/basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/is_open.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/ -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_serial_port/native_handle.html -/doc/html/boost_asio/reference/basic_serial_port/native_handle_type.html -/doc/html/boost_asio/reference/basic_serial_port/open/ -/doc/html/boost_asio/reference/basic_serial_port/open.html -/doc/html/boost_asio/reference/basic_serial_port/open/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/open/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/operator_eq_.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/ -/doc/html/boost_asio/reference/basic_serial_port/read_some.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/overload2.html -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor/ -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor.html -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/ -/doc/html/boost_asio/reference/basic_serial_port/send_break.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/ -/doc/html/boost_asio/reference/basic_serial_port/set_option.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/ -/doc/html/boost_asio/reference/basic_serial_port/write_some.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/ -/doc/html/boost_asio/reference/basic_signal_set/add/ -/doc/html/boost_asio/reference/basic_signal_set/add.html -/doc/html/boost_asio/reference/basic_signal_set/add/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/add/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/async_wait.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/ -/doc/html/boost_asio/reference/basic_signal_set/_basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload3.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload4.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload5.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload6.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload7.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload8.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/ -/doc/html/boost_asio/reference/basic_signal_set/cancel.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/clear/ -/doc/html/boost_asio/reference/basic_signal_set/clear.html -/doc/html/boost_asio/reference/basic_signal_set/clear/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/clear/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/executor_type.html -/doc/html/boost_asio/reference/basic_signal_set/get_executor.html -/doc/html/boost_asio/reference/basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor/ -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor.html -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_signal_set/remove/ -/doc/html/boost_asio/reference/basic_signal_set/remove.html -/doc/html/boost_asio/reference/basic_signal_set/remove/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/remove/overload2.html -/doc/html/boost_asio/reference/basic_socket/ -/doc/html/boost_asio/reference/basic_socket_acceptor/ -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/ -/doc/html/boost_asio/reference/basic_socket_acceptor/accept.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload10.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload11.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload12.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload13.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload14.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload15.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload16.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload9.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/ -/doc/html/boost_asio/reference/basic_socket_acceptor/assign.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/ -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_wait.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/ -/doc/html/boost_asio/reference/basic_socket_acceptor/_basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload10.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload9.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/ -/doc/html/boost_asio/reference/basic_socket_acceptor/bind.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/broadcast.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bytes_readable.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/ -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/ -/doc/html/boost_asio/reference/basic_socket_acceptor/close.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/debug.html -/doc/html/boost_asio/reference/basic_socket_acceptor/do_not_route.html -/doc/html/boost_asio/reference/basic_socket_acceptor/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_socket_acceptor/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/executor_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_executor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/ -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/ -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/is_open.html -/doc/html/boost_asio/reference/basic_socket_acceptor/keep_alive.html -/doc/html/boost_asio/reference/basic_socket_acceptor/linger.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/ -/doc/html/boost_asio/reference/basic_socket_acceptor/listen.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/ -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/max_connections.html -/doc/html/boost_asio/reference/basic_socket_acceptor/max_listen_connections.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_do_not_route.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_end_of_record.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_flags.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_out_of_band.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_peek.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_handle.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_handle_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/ -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/ -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/ -/doc/html/boost_asio/reference/basic_socket_acceptor/open.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/ -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_socket_acceptor/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor/ -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor.html -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_socket_acceptor/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_socket_acceptor/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/ -/doc/html/boost_asio/reference/basic_socket_acceptor/release.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/reuse_address.html -/doc/html/boost_asio/reference/basic_socket_acceptor/send_buffer_size.html -/doc/html/boost_asio/reference/basic_socket_acceptor/send_low_watermark.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/ -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/shutdown_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/ -/doc/html/boost_asio/reference/basic_socket_acceptor/wait.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait_type.html -/doc/html/boost_asio/reference/basic_socket/assign/ -/doc/html/boost_asio/reference/basic_socket/assign.html -/doc/html/boost_asio/reference/basic_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_socket/async_connect.html -/doc/html/boost_asio/reference/basic_socket/async_wait.html -/doc/html/boost_asio/reference/basic_socket/at_mark/ -/doc/html/boost_asio/reference/basic_socket/at_mark.html -/doc/html/boost_asio/reference/basic_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_socket/available/ -/doc/html/boost_asio/reference/basic_socket/available.html -/doc/html/boost_asio/reference/basic_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/ -/doc/html/boost_asio/reference/basic_socket/_basic_socket.html -/doc/html/boost_asio/reference/basic_socket/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload10.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload1.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload2.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload3.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload4.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload5.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload6.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload7.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload8.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload9.html -/doc/html/boost_asio/reference/basic_socket/bind/ -/doc/html/boost_asio/reference/basic_socket/bind.html -/doc/html/boost_asio/reference/basic_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_socket/broadcast.html -/doc/html/boost_asio/reference/basic_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_socket/cancel/ -/doc/html/boost_asio/reference/basic_socket/cancel.html -/doc/html/boost_asio/reference/basic_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_socket/close/ -/doc/html/boost_asio/reference/basic_socket/close.html -/doc/html/boost_asio/reference/basic_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_socket/connect/ -/doc/html/boost_asio/reference/basic_socket/connect.html -/doc/html/boost_asio/reference/basic_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_socket/debug.html -/doc/html/boost_asio/reference/basic_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket/executor_type.html -/doc/html/boost_asio/reference/basic_socket/get_executor.html -/doc/html/boost_asio/reference/basic_socket/get_option/ -/doc/html/boost_asio/reference/basic_socket/get_option.html -/doc/html/boost_asio/reference/basic_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/io_control/ -/doc/html/boost_asio/reference/basic_socket/io_control.html -/doc/html/boost_asio/reference/basic_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/ -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/ -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload3.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload4.html -/doc/html/boost_asio/reference/basic_socket_iostream/clock_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/close.html -/doc/html/boost_asio/reference/basic_socket_iostream/connect.html -/doc/html/boost_asio/reference/basic_socket_iostream/duration.html -/doc/html/boost_asio/reference/basic_socket_iostream/duration_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/error.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_after.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/ -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/ -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/expiry.html -/doc/html/boost_asio/reference/basic_socket_iostream.html -/doc/html/boost_asio/reference/basic_socket_iostream/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_iostream/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/rdbuf.html -/doc/html/boost_asio/reference/basic_socket_iostream/socket.html -/doc/html/boost_asio/reference/basic_socket_iostream/time_point.html -/doc/html/boost_asio/reference/basic_socket_iostream/time_type.html -/doc/html/boost_asio/reference/basic_socket/is_open.html -/doc/html/boost_asio/reference/basic_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_socket/linger.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_socket/max_connections.html -/doc/html/boost_asio/reference/basic_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_socket/message_flags.html -/doc/html/boost_asio/reference/basic_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_socket/message_peek.html -/doc/html/boost_asio/reference/basic_socket/native_handle.html -/doc/html/boost_asio/reference/basic_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket/open/ -/doc/html/boost_asio/reference/basic_socket/open.html -/doc/html/boost_asio/reference/basic_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_socket/release/ -/doc/html/boost_asio/reference/basic_socket/release.html -/doc/html/boost_asio/reference/basic_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_socket/set_option/ -/doc/html/boost_asio/reference/basic_socket/set_option.html -/doc/html/boost_asio/reference/basic_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_socket/shutdown/ -/doc/html/boost_asio/reference/basic_socket/shutdown.html -/doc/html/boost_asio/reference/basic_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/ -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/ -/doc/html/boost_asio/reference/basic_socket_streambuf/_basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload3.html -/doc/html/boost_asio/reference/basic_socket_streambuf/clock_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/close.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/ -/doc/html/boost_asio/reference/basic_socket_streambuf/connect.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/duration.html -/doc/html/boost_asio/reference/basic_socket_streambuf/duration_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/error.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_after.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/ -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/ -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expiry.html -/doc/html/boost_asio/reference/basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_streambuf/overflow.html -/doc/html/boost_asio/reference/basic_socket_streambuf/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/puberror.html -/doc/html/boost_asio/reference/basic_socket_streambuf/setbuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/socket.html -/doc/html/boost_asio/reference/basic_socket_streambuf/sync.html -/doc/html/boost_asio/reference/basic_socket_streambuf/time_point.html -/doc/html/boost_asio/reference/basic_socket_streambuf/time_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/underflow.html -/doc/html/boost_asio/reference/basic_socket/wait/ -/doc/html/boost_asio/reference/basic_socket/wait.html -/doc/html/boost_asio/reference/basic_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_socket/wait_type.html -/doc/html/boost_asio/reference/basic_streambuf/ -/doc/html/boost_asio/reference/basic_streambuf/basic_streambuf.html -/doc/html/boost_asio/reference/basic_streambuf/capacity.html -/doc/html/boost_asio/reference/basic_streambuf/commit.html -/doc/html/boost_asio/reference/basic_streambuf/const_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf/consume.html -/doc/html/boost_asio/reference/basic_streambuf/data.html -/doc/html/boost_asio/reference/basic_streambuf.html -/doc/html/boost_asio/reference/basic_streambuf/max_size.html -/doc/html/boost_asio/reference/basic_streambuf/mutable_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf/overflow.html -/doc/html/boost_asio/reference/basic_streambuf/prepare.html -/doc/html/boost_asio/reference/basic_streambuf_ref/ -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/ -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload1.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload2.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload3.html -/doc/html/boost_asio/reference/basic_streambuf_ref/capacity.html -/doc/html/boost_asio/reference/basic_streambuf_ref/commit.html -/doc/html/boost_asio/reference/basic_streambuf_ref/const_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf_ref/consume.html -/doc/html/boost_asio/reference/basic_streambuf_ref/data.html -/doc/html/boost_asio/reference/basic_streambuf_ref.html -/doc/html/boost_asio/reference/basic_streambuf_ref/max_size.html -/doc/html/boost_asio/reference/basic_streambuf_ref/mutable_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf_ref/prepare.html -/doc/html/boost_asio/reference/basic_streambuf_ref/size.html -/doc/html/boost_asio/reference/basic_streambuf/reserve.html -/doc/html/boost_asio/reference/basic_streambuf/size.html -/doc/html/boost_asio/reference/basic_streambuf/underflow.html -/doc/html/boost_asio/reference/basic_stream_socket/ -/doc/html/boost_asio/reference/basic_stream_socket/assign/ -/doc/html/boost_asio/reference/basic_stream_socket/assign.html -/doc/html/boost_asio/reference/basic_stream_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_connect.html -/doc/html/boost_asio/reference/basic_stream_socket/async_read_some.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/ -/doc/html/boost_asio/reference/basic_stream_socket/async_receive.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/ -/doc/html/boost_asio/reference/basic_stream_socket/async_send.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_wait.html -/doc/html/boost_asio/reference/basic_stream_socket/async_write_some.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/ -/doc/html/boost_asio/reference/basic_stream_socket/at_mark.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/available/ -/doc/html/boost_asio/reference/basic_stream_socket/available.html -/doc/html/boost_asio/reference/basic_stream_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/ -/doc/html/boost_asio/reference/basic_stream_socket/_basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload10.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload4.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload5.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload6.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload7.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload8.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload9.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/ -/doc/html/boost_asio/reference/basic_stream_socket/bind.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/broadcast.html -/doc/html/boost_asio/reference/basic_stream_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/ -/doc/html/boost_asio/reference/basic_stream_socket/cancel.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/close/ -/doc/html/boost_asio/reference/basic_stream_socket/close.html -/doc/html/boost_asio/reference/basic_stream_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/ -/doc/html/boost_asio/reference/basic_stream_socket/connect.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/debug.html -/doc/html/boost_asio/reference/basic_stream_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_stream_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_stream_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_stream_socket/executor_type.html -/doc/html/boost_asio/reference/basic_stream_socket/get_executor.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/ -/doc/html/boost_asio/reference/basic_stream_socket/get_option.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/ -/doc/html/boost_asio/reference/basic_stream_socket/io_control.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/is_open.html -/doc/html/boost_asio/reference/basic_stream_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_stream_socket/linger.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_stream_socket/max_connections.html -/doc/html/boost_asio/reference/basic_stream_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_stream_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_stream_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_stream_socket/message_flags.html -/doc/html/boost_asio/reference/basic_stream_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_stream_socket/message_peek.html -/doc/html/boost_asio/reference/basic_stream_socket/native_handle.html -/doc/html/boost_asio/reference/basic_stream_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/open/ -/doc/html/boost_asio/reference/basic_stream_socket/open.html -/doc/html/boost_asio/reference/basic_stream_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_stream_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/ -/doc/html/boost_asio/reference/basic_stream_socket/read_some.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/ -/doc/html/boost_asio/reference/basic_stream_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_stream_socket/receive.html -/doc/html/boost_asio/reference/basic_stream_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/release/ -/doc/html/boost_asio/reference/basic_stream_socket/release.html -/doc/html/boost_asio/reference/basic_stream_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_stream_socket/send/ -/doc/html/boost_asio/reference/basic_stream_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_stream_socket/send.html -/doc/html/boost_asio/reference/basic_stream_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/ -/doc/html/boost_asio/reference/basic_stream_socket/set_option.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/ -/doc/html/boost_asio/reference/basic_stream_socket/shutdown.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/ -/doc/html/boost_asio/reference/basic_stream_socket/wait.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/wait_type.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/ -/doc/html/boost_asio/reference/basic_stream_socket/write_some.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/ -/doc/html/boost_asio/reference/basic_system_executor/basic_system_executor.html -/doc/html/boost_asio/reference/basic_system_executor/context.html -/doc/html/boost_asio/reference/basic_system_executor/defer.html -/doc/html/boost_asio/reference/basic_system_executor/dispatch.html -/doc/html/boost_asio/reference/basic_system_executor/execute.html -/doc/html/boost_asio/reference/basic_system_executor.html -/doc/html/boost_asio/reference/basic_system_executor/on_work_finished.html -/doc/html/boost_asio/reference/basic_system_executor/on_work_started.html -/doc/html/boost_asio/reference/basic_system_executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/basic_system_executor/operator_not__eq_.html -/doc/html/boost_asio/reference/basic_system_executor/post.html -/doc/html/boost_asio/reference/basic_system_executor/query/ -/doc/html/boost_asio/reference/basic_system_executor/query.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/ -/doc/html/boost_asio/reference/basic_system_executor/query__static.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload4.html -/doc/html/boost_asio/reference/basic_system_executor/require/ -/doc/html/boost_asio/reference/basic_system_executor/require.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload4.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload5.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload6.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload7.html -/doc/html/boost_asio/reference/basic_waitable_timer/ -/doc/html/boost_asio/reference/basic_waitable_timer/async_wait.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/ -/doc/html/boost_asio/reference/basic_waitable_timer/_basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload4.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload5.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload6.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload7.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload8.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/ -/doc/html/boost_asio/reference/basic_waitable_timer/cancel.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/ -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/clock_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/duration.html -/doc/html/boost_asio/reference/basic_waitable_timer/executor_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_after.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/ -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/ -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/expiry.html -/doc/html/boost_asio/reference/basic_waitable_timer/get_executor.html -/doc/html/boost_asio/reference/basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/ -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor/ -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor.html -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_waitable_timer/time_point.html -/doc/html/boost_asio/reference/basic_waitable_timer/traits_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/ -/doc/html/boost_asio/reference/basic_waitable_timer/wait.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/callee_type.html -/doc/html/boost_asio/reference/basic_yield_context/caller_type.html -/doc/html/boost_asio/reference/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/operator_lb__rb_.html -/doc/html/boost_asio/reference/bind_executor/ -/doc/html/boost_asio/reference/bind_executor.html -/doc/html/boost_asio/reference/bind_executor/overload1.html -/doc/html/boost_asio/reference/bind_executor/overload2.html -/doc/html/boost_asio/reference/buffer/ -/doc/html/boost_asio/reference/buffer_cast/ -/doc/html/boost_asio/reference/buffer_cast.html -/doc/html/boost_asio/reference/buffer_cast/overload1.html -/doc/html/boost_asio/reference/buffer_cast/overload2.html -/doc/html/boost_asio/reference/buffer_copy/ -/doc/html/boost_asio/reference/buffer_copy.html -/doc/html/boost_asio/reference/buffer_copy/overload1.html -/doc/html/boost_asio/reference/buffer_copy/overload2.html -/doc/html/boost_asio/reference/BufferedHandshakeHandler.html -/doc/html/boost_asio/reference/buffered_read_stream/ -/doc/html/boost_asio/reference/buffered_read_stream/async_fill.html -/doc/html/boost_asio/reference/buffered_read_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_read_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/ -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/close/ -/doc/html/boost_asio/reference/buffered_read_stream/close.html -/doc/html/boost_asio/reference/buffered_read_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/default_buffer_size.html -/doc/html/boost_asio/reference/buffered_read_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/ -/doc/html/boost_asio/reference/buffered_read_stream/fill.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_read_stream.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_read_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_read_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_read_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/ -/doc/html/boost_asio/reference/buffered_read_stream/peek.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/ -/doc/html/boost_asio/reference/buffered_read_stream/read_some.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/ -/doc/html/boost_asio/reference/buffered_read_stream/write_some.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffered_stream/ -/doc/html/boost_asio/reference/buffered_stream/async_fill.html -/doc/html/boost_asio/reference/buffered_stream/async_flush.html -/doc/html/boost_asio/reference/buffered_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/ -/doc/html/boost_asio/reference/buffered_stream/buffered_stream.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/overload1.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/overload2.html -/doc/html/boost_asio/reference/buffered_stream/close/ -/doc/html/boost_asio/reference/buffered_stream/close.html -/doc/html/boost_asio/reference/buffered_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_stream/fill/ -/doc/html/boost_asio/reference/buffered_stream/fill.html -/doc/html/boost_asio/reference/buffered_stream/fill/overload1.html -/doc/html/boost_asio/reference/buffered_stream/fill/overload2.html -/doc/html/boost_asio/reference/buffered_stream/flush/ -/doc/html/boost_asio/reference/buffered_stream/flush.html -/doc/html/boost_asio/reference/buffered_stream/flush/overload1.html -/doc/html/boost_asio/reference/buffered_stream/flush/overload2.html -/doc/html/boost_asio/reference/buffered_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_stream.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_stream/peek/ -/doc/html/boost_asio/reference/buffered_stream/peek.html -/doc/html/boost_asio/reference/buffered_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_stream/read_some/ -/doc/html/boost_asio/reference/buffered_stream/read_some.html -/doc/html/boost_asio/reference/buffered_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_stream/write_some/ -/doc/html/boost_asio/reference/buffered_stream/write_some.html -/doc/html/boost_asio/reference/buffered_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/ -/doc/html/boost_asio/reference/buffered_write_stream/async_flush.html -/doc/html/boost_asio/reference/buffered_write_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_write_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/ -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/close/ -/doc/html/boost_asio/reference/buffered_write_stream/close.html -/doc/html/boost_asio/reference/buffered_write_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/default_buffer_size.html -/doc/html/boost_asio/reference/buffered_write_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/ -/doc/html/boost_asio/reference/buffered_write_stream/flush.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_write_stream.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_write_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_write_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_write_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/ -/doc/html/boost_asio/reference/buffered_write_stream/peek.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/ -/doc/html/boost_asio/reference/buffered_write_stream/read_some.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/ -/doc/html/boost_asio/reference/buffered_write_stream/write_some.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffer.html -/doc/html/boost_asio/reference/buffer/overload10.html -/doc/html/boost_asio/reference/buffer/overload11.html -/doc/html/boost_asio/reference/buffer/overload12.html -/doc/html/boost_asio/reference/buffer/overload13.html -/doc/html/boost_asio/reference/buffer/overload14.html -/doc/html/boost_asio/reference/buffer/overload15.html -/doc/html/boost_asio/reference/buffer/overload16.html -/doc/html/boost_asio/reference/buffer/overload17.html -/doc/html/boost_asio/reference/buffer/overload18.html -/doc/html/boost_asio/reference/buffer/overload19.html -/doc/html/boost_asio/reference/buffer/overload1.html -/doc/html/boost_asio/reference/buffer/overload20.html -/doc/html/boost_asio/reference/buffer/overload21.html -/doc/html/boost_asio/reference/buffer/overload22.html -/doc/html/boost_asio/reference/buffer/overload23.html -/doc/html/boost_asio/reference/buffer/overload24.html -/doc/html/boost_asio/reference/buffer/overload25.html -/doc/html/boost_asio/reference/buffer/overload26.html -/doc/html/boost_asio/reference/buffer/overload27.html -/doc/html/boost_asio/reference/buffer/overload28.html -/doc/html/boost_asio/reference/buffer/overload29.html -/doc/html/boost_asio/reference/buffer/overload2.html -/doc/html/boost_asio/reference/buffer/overload30.html -/doc/html/boost_asio/reference/buffer/overload31.html -/doc/html/boost_asio/reference/buffer/overload32.html -/doc/html/boost_asio/reference/buffer/overload3.html -/doc/html/boost_asio/reference/buffer/overload4.html -/doc/html/boost_asio/reference/buffer/overload5.html -/doc/html/boost_asio/reference/buffer/overload6.html -/doc/html/boost_asio/reference/buffer/overload7.html -/doc/html/boost_asio/reference/buffer/overload8.html -/doc/html/boost_asio/reference/buffer/overload9.html -/doc/html/boost_asio/reference/buffers_begin.html -/doc/html/boost_asio/reference/buffers_end.html -/doc/html/boost_asio/reference/buffer_sequence_begin/ -/doc/html/boost_asio/reference/buffer_sequence_begin.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload1.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload2.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload3.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload4.html -/doc/html/boost_asio/reference/buffer_sequence_end/ -/doc/html/boost_asio/reference/buffer_sequence_end.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload1.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload2.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload3.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload4.html -/doc/html/boost_asio/reference/buffers_iterator/ -/doc/html/boost_asio/reference/buffers_iterator/begin.html -/doc/html/boost_asio/reference/buffers_iterator/buffers_iterator.html -/doc/html/boost_asio/reference/buffers_iterator/difference_type.html -/doc/html/boost_asio/reference/buffers_iterator/end.html -/doc/html/boost_asio/reference/buffers_iterator.html -/doc/html/boost_asio/reference/buffers_iterator/iterator_category.html -/doc/html/boost_asio/reference/buffers_iterator/operator_arrow_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_eq__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_gt__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_gt_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lb__rb_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lt__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lt_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_not__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator__star_.html -/doc/html/boost_asio/reference/buffers_iterator/pointer.html -/doc/html/boost_asio/reference/buffers_iterator/reference.html -/doc/html/boost_asio/reference/buffers_iterator/value_type.html -/doc/html/boost_asio/reference/buffer_size.html -/doc/html/boost_asio/reference/can_prefer.html -/doc/html/boost_asio/reference/can_query.html -/doc/html/boost_asio/reference/can_require_concept.html -/doc/html/boost_asio/reference/can_require.html -/doc/html/boost_asio/reference/CompletionCondition.html -/doc/html/boost_asio/reference/CompletionHandler.html -/doc/html/boost_asio/reference/connect/ -/doc/html/boost_asio/reference/ConnectCondition.html -/doc/html/boost_asio/reference/ConnectHandler.html -/doc/html/boost_asio/reference/connect.html -/doc/html/boost_asio/reference/connect/overload10.html -/doc/html/boost_asio/reference/connect/overload11.html -/doc/html/boost_asio/reference/connect/overload12.html -/doc/html/boost_asio/reference/connect/overload1.html -/doc/html/boost_asio/reference/connect/overload2.html -/doc/html/boost_asio/reference/connect/overload3.html -/doc/html/boost_asio/reference/connect/overload4.html -/doc/html/boost_asio/reference/connect/overload5.html -/doc/html/boost_asio/reference/connect/overload6.html -/doc/html/boost_asio/reference/connect/overload7.html -/doc/html/boost_asio/reference/connect/overload8.html -/doc/html/boost_asio/reference/connect/overload9.html -/doc/html/boost_asio/reference/const_buffer/ -/doc/html/boost_asio/reference/const_buffer/const_buffer/ -/doc/html/boost_asio/reference/const_buffer/const_buffer.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload1.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload2.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload3.html -/doc/html/boost_asio/reference/const_buffer/data.html -/doc/html/boost_asio/reference/const_buffer.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/ -/doc/html/boost_asio/reference/const_buffer/operator_plus__eq_.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/overload1.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/ -/doc/html/boost_asio/reference/const_buffers_1/begin.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/ -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/overload1.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/const_iterator.html -/doc/html/boost_asio/reference/const_buffers_1/data.html -/doc/html/boost_asio/reference/const_buffers_1/end.html -/doc/html/boost_asio/reference/const_buffers_1.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/ -/doc/html/boost_asio/reference/const_buffers_1/operator_plus__eq_.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/overload1.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/size.html -/doc/html/boost_asio/reference/const_buffers_1/value_type.html -/doc/html/boost_asio/reference/ConstBufferSequence.html -/doc/html/boost_asio/reference/const_buffer/size.html -/doc/html/boost_asio/reference/coroutine/ -/doc/html/boost_asio/reference/coroutine/coroutine.html -/doc/html/boost_asio/reference/coroutine.html -/doc/html/boost_asio/reference/coroutine/is_child.html -/doc/html/boost_asio/reference/coroutine/is_complete.html -/doc/html/boost_asio/reference/coroutine/is_parent.html -/doc/html/boost_asio/reference/co_spawn/ -/doc/html/boost_asio/reference/co_spawn.html -/doc/html/boost_asio/reference/co_spawn/overload1.html -/doc/html/boost_asio/reference/co_spawn/overload2.html -/doc/html/boost_asio/reference/co_spawn/overload3.html -/doc/html/boost_asio/reference/co_spawn/overload4.html -/doc/html/boost_asio/reference/co_spawn/overload5.html -/doc/html/boost_asio/reference/co_spawn/overload6.html -/doc/html/boost_asio/reference/deadline_timer.html -/doc/html/boost_asio/reference/default_completion_token/ -/doc/html/boost_asio/reference/default_completion_token.html -/doc/html/boost_asio/reference/default_completion_token/type.html -/doc/html/boost_asio/reference/defer/ -/doc/html/boost_asio/reference/defer.html -/doc/html/boost_asio/reference/defer/overload1.html -/doc/html/boost_asio/reference/defer/overload2.html -/doc/html/boost_asio/reference/defer/overload3.html -/doc/html/boost_asio/reference/detached.html -/doc/html/boost_asio/reference/detached_t/ -/doc/html/boost_asio/reference/detached_t/as_default_on.html -/doc/html/boost_asio/reference/detached_t/detached_t.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/ -/doc/html/boost_asio/reference/detached_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/ -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html -/doc/html/boost_asio/reference/detached_t__executor_with_default.html -/doc/html/boost_asio/reference/detached_t.html -/doc/html/boost_asio/reference/dispatch/ -/doc/html/boost_asio/reference/dispatch.html -/doc/html/boost_asio/reference/dispatch/overload1.html -/doc/html/boost_asio/reference/dispatch/overload2.html -/doc/html/boost_asio/reference/dispatch/overload3.html -/doc/html/boost_asio/reference/dynamic_buffer/ -/doc/html/boost_asio/reference/DynamicBuffer.html -/doc/html/boost_asio/reference/dynamic_buffer.html -/doc/html/boost_asio/reference/dynamic_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_buffer/overload4.html -/doc/html/boost_asio/reference/DynamicBuffer_v1.html -/doc/html/boost_asio/reference/DynamicBuffer_v2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/ -/doc/html/boost_asio/reference/dynamic_string_buffer/capacity.html -/doc/html/boost_asio/reference/dynamic_string_buffer/commit.html -/doc/html/boost_asio/reference/dynamic_string_buffer/const_buffers_type.html -/doc/html/boost_asio/reference/dynamic_string_buffer/consume.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/ -/doc/html/boost_asio/reference/dynamic_string_buffer/data.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload1.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload3.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/ -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_string_buffer/grow.html -/doc/html/boost_asio/reference/dynamic_string_buffer.html -/doc/html/boost_asio/reference/dynamic_string_buffer/max_size.html -/doc/html/boost_asio/reference/dynamic_string_buffer/mutable_buffers_type.html -/doc/html/boost_asio/reference/dynamic_string_buffer/prepare.html -/doc/html/boost_asio/reference/dynamic_string_buffer/shrink.html -/doc/html/boost_asio/reference/dynamic_string_buffer/size.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/capacity.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/commit.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/const_buffers_type.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/consume.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/data.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload1.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload2.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload3.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/grow.html -/doc/html/boost_asio/reference/dynamic_vector_buffer.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/max_size.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/mutable_buffers_type.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/prepare.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/shrink.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/size.html -/doc/html/boost_asio/reference/Endpoint.html -/doc/html/boost_asio/reference/EndpointSequence.html -/doc/html/boost_asio/reference/error__addrinfo_category.html -/doc/html/boost_asio/reference/error__addrinfo_errors.html -/doc/html/boost_asio/reference/error__basic_errors.html -/doc/html/boost_asio/reference/error__get_addrinfo_category.html -/doc/html/boost_asio/reference/error__get_misc_category.html -/doc/html/boost_asio/reference/error__get_netdb_category.html -/doc/html/boost_asio/reference/error__get_ssl_category.html -/doc/html/boost_asio/reference/error__get_system_category.html -/doc/html/boost_asio/reference/error__make_error_code/ -/doc/html/boost_asio/reference/error__make_error_code.html -/doc/html/boost_asio/reference/error__make_error_code/overload1.html -/doc/html/boost_asio/reference/error__make_error_code/overload2.html -/doc/html/boost_asio/reference/error__make_error_code/overload3.html -/doc/html/boost_asio/reference/error__make_error_code/overload4.html -/doc/html/boost_asio/reference/error__make_error_code/overload5.html -/doc/html/boost_asio/reference/error__misc_category.html -/doc/html/boost_asio/reference/error__misc_errors.html -/doc/html/boost_asio/reference/error__netdb_category.html -/doc/html/boost_asio/reference/error__netdb_errors.html -/doc/html/boost_asio/reference/error__ssl_category.html -/doc/html/boost_asio/reference/error__ssl_errors.html -/doc/html/boost_asio/reference/error__system_category.html -/doc/html/boost_asio/reference/execution__allocator.html -/doc/html/boost_asio/reference/execution__allocator_t/ -/doc/html/boost_asio/reference/execution__allocator_t/allocator_t.html -/doc/html/boost_asio/reference/execution__allocator_t.html -/doc/html/boost_asio/reference/execution__allocator_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__allocator_t/is_preferable.html -/doc/html/boost_asio/reference/execution__allocator_t/is_requirable.html -/doc/html/boost_asio/reference/execution__allocator_t/value.html -/doc/html/boost_asio/reference/execution__any_executor/ -/doc/html/boost_asio/reference/execution__any_executor/any_executor/ -/doc/html/boost_asio/reference/execution__any_executor/_any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload4.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload5.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload6.html -/doc/html/boost_asio/reference/execution__any_executor/context.html -/doc/html/boost_asio/reference/execution__any_executor/execute.html -/doc/html/boost_asio/reference/execution__any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/operator_bool.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload4.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/prefer.html -/doc/html/boost_asio/reference/execution__any_executor/query.html -/doc/html/boost_asio/reference/execution__any_executor/require.html -/doc/html/boost_asio/reference/execution__any_executor/swap.html -/doc/html/boost_asio/reference/execution__any_executor/target/ -/doc/html/boost_asio/reference/execution__any_executor/target.html -/doc/html/boost_asio/reference/execution__any_executor/target/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/target/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/target_type.html -/doc/html/boost_asio/reference/execution__bad_executor/ -/doc/html/boost_asio/reference/execution__bad_executor/bad_executor.html -/doc/html/boost_asio/reference/execution__bad_executor.html -/doc/html/boost_asio/reference/execution__bad_executor/what.html -/doc/html/boost_asio/reference/execution__blocking_adaptation.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/allowed.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/allowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/value.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload1.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload2.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload3.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/disallowed.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/disallowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/value.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking.html -/doc/html/boost_asio/reference/execution__blocking_t/ -/doc/html/boost_asio/reference/execution__blocking_t/always.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/ -/doc/html/boost_asio/reference/execution__blocking_t__always_t/always_t.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/value.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/ -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload1.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload2.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload3.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload4.html -/doc/html/boost_asio/reference/execution__blocking_t.html -/doc/html/boost_asio/reference/execution__blocking_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t/never.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/ -/doc/html/boost_asio/reference/execution__blocking_t__never_t.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/never_t.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/value.html -/doc/html/boost_asio/reference/execution__blocking_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__blocking_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__blocking_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t/possibly.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/ -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/possibly_t.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/value.html -/doc/html/boost_asio/reference/execution__bulk_execute.html -/doc/html/boost_asio/reference/execution__bulk_guarantee.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload1.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload2.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload3.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload4.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/parallel.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/parallel_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/value.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/sequenced.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/sequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/value.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/unsequenced.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/unsequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/value.html -/doc/html/boost_asio/reference/execution__can_bulk_execute.html -/doc/html/boost_asio/reference/execution__can_connect.html -/doc/html/boost_asio/reference/execution__can_execute.html -/doc/html/boost_asio/reference/execution__can_schedule.html -/doc/html/boost_asio/reference/execution__can_set_done.html -/doc/html/boost_asio/reference/execution__can_set_error.html -/doc/html/boost_asio/reference/execution__can_set_value.html -/doc/html/boost_asio/reference/execution__can_start.html -/doc/html/boost_asio/reference/execution__can_submit.html -/doc/html/boost_asio/reference/execution__connect.html -/doc/html/boost_asio/reference/execution__connect_result/ -/doc/html/boost_asio/reference/execution__connect_result.html -/doc/html/boost_asio/reference/execution__connect_result/type.html -/doc/html/boost_asio/reference/execution_context/ -/doc/html/boost_asio/reference/execution_context/add_service.html -/doc/html/boost_asio/reference/execution__context_as.html -/doc/html/boost_asio/reference/execution__context_as_t/ -/doc/html/boost_asio/reference/execution__context_as_t.html -/doc/html/boost_asio/reference/execution__context_as_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__context_as_t/is_preferable.html -/doc/html/boost_asio/reference/execution__context_as_t/is_requirable.html -/doc/html/boost_asio/reference/execution__context_as_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution_context/destroy.html -/doc/html/boost_asio/reference/execution_context/_execution_context.html -/doc/html/boost_asio/reference/execution_context/execution_context.html -/doc/html/boost_asio/reference/execution_context/fork_event.html -/doc/html/boost_asio/reference/execution_context/has_service.html -/doc/html/boost_asio/reference/ExecutionContext.html -/doc/html/boost_asio/reference/execution__context.html -/doc/html/boost_asio/reference/execution_context.html -/doc/html/boost_asio/reference/execution_context__id/ -/doc/html/boost_asio/reference/execution_context__id.html -/doc/html/boost_asio/reference/execution_context__id/id.html -/doc/html/boost_asio/reference/execution_context/make_service.html -/doc/html/boost_asio/reference/execution_context/notify_fork.html -/doc/html/boost_asio/reference/execution_context__service/ -/doc/html/boost_asio/reference/execution_context__service/context.html -/doc/html/boost_asio/reference/execution_context__service.html -/doc/html/boost_asio/reference/execution_context__service/notify_fork.html -/doc/html/boost_asio/reference/execution_context__service/_service.html -/doc/html/boost_asio/reference/execution_context__service/service.html -/doc/html/boost_asio/reference/execution_context__service/shutdown.html -/doc/html/boost_asio/reference/execution_context/shutdown.html -/doc/html/boost_asio/reference/execution__context_t/ -/doc/html/boost_asio/reference/execution__context_t.html -/doc/html/boost_asio/reference/execution__context_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__context_t/is_preferable.html -/doc/html/boost_asio/reference/execution__context_t/is_requirable.html -/doc/html/boost_asio/reference/execution__context_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution_context/use_service/ -/doc/html/boost_asio/reference/execution_context/use_service.html -/doc/html/boost_asio/reference/execution_context/use_service/overload1.html -/doc/html/boost_asio/reference/execution_context/use_service/overload2.html -/doc/html/boost_asio/reference/execution__execute.html -/doc/html/boost_asio/reference/execution__executor_index/ -/doc/html/boost_asio/reference/execution__executor_index.html -/doc/html/boost_asio/reference/execution__executor_index/type.html -/doc/html/boost_asio/reference/execution__executor_shape/ -/doc/html/boost_asio/reference/execution__executor_shape.html -/doc/html/boost_asio/reference/execution__executor_shape/type.html -/doc/html/boost_asio/reference/execution__invocable_archetype/ -/doc/html/boost_asio/reference/execution__invocable_archetype.html -/doc/html/boost_asio/reference/execution__invocable_archetype/operator_lp__rp_.html -/doc/html/boost_asio/reference/execution__is_executor.html -/doc/html/boost_asio/reference/execution__is_executor_of.html -/doc/html/boost_asio/reference/execution__is_nothrow_receiver_of.html -/doc/html/boost_asio/reference/execution__is_operation_state.html -/doc/html/boost_asio/reference/execution__is_receiver.html -/doc/html/boost_asio/reference/execution__is_receiver_of.html -/doc/html/boost_asio/reference/execution__is_scheduler.html -/doc/html/boost_asio/reference/execution__is_sender.html -/doc/html/boost_asio/reference/execution__is_sender_to.html -/doc/html/boost_asio/reference/execution__is_typed_sender.html -/doc/html/boost_asio/reference/execution__mapping.html -/doc/html/boost_asio/reference/execution__mapping_t/ -/doc/html/boost_asio/reference/execution__mapping_t.html -/doc/html/boost_asio/reference/execution__mapping_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/ -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload1.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload2.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload3.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload4.html -/doc/html/boost_asio/reference/execution__mapping_t/new_thread.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/ -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/new_thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/value.html -/doc/html/boost_asio/reference/execution__mapping_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__mapping_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__mapping_t/other.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/ -/doc/html/boost_asio/reference/execution__mapping_t__other_t.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/other_t.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/value.html -/doc/html/boost_asio/reference/execution__mapping_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t/thread.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/ -/doc/html/boost_asio/reference/execution__mapping_t__thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/value.html -/doc/html/boost_asio/reference/execution__occupancy.html -/doc/html/boost_asio/reference/execution__occupancy_t/ -/doc/html/boost_asio/reference/execution__occupancy_t.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_preferable.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_requirable.html -/doc/html/boost_asio/reference/execution__occupancy_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload1.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload2.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload3.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/tracked.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/tracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/value.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/untracked.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/untracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/value.html -/doc/html/boost_asio/reference/execution__prefer_only/ -/doc/html/boost_asio/reference/execution__prefer_only.html -/doc/html/boost_asio/reference/execution__prefer_only/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__prefer_only/is_preferable.html -/doc/html/boost_asio/reference/execution__prefer_only/is_requirable.html -/doc/html/boost_asio/reference/execution__prefer_only/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__receiver_invocation_error/ -/doc/html/boost_asio/reference/execution__receiver_invocation_error.html -/doc/html/boost_asio/reference/execution__receiver_invocation_error/receiver_invocation_error.html -/doc/html/boost_asio/reference/execution__relationship.html -/doc/html/boost_asio/reference/execution__relationship_t/ -/doc/html/boost_asio/reference/execution__relationship_t/continuation.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/ -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/continuation_t.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/value.html -/doc/html/boost_asio/reference/execution__relationship_t/fork.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/ -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/fork_t.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/value.html -/doc/html/boost_asio/reference/execution__relationship_t.html -/doc/html/boost_asio/reference/execution__relationship_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__relationship_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__relationship_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/ -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload1.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload2.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload3.html -/doc/html/boost_asio/reference/execution__schedule.html -/doc/html/boost_asio/reference/execution__sender_base.html -/doc/html/boost_asio/reference/execution__sender_traits.html -/doc/html/boost_asio/reference/execution__set_done.html -/doc/html/boost_asio/reference/execution__set_error.html -/doc/html/boost_asio/reference/execution__set_value.html -/doc/html/boost_asio/reference/execution__start.html -/doc/html/boost_asio/reference/execution__submit.html -/doc/html/boost_asio/reference/executor/ -/doc/html/boost_asio/reference/Executor1.html -/doc/html/boost_asio/reference/executor_arg.html -/doc/html/boost_asio/reference/executor_arg_t/ -/doc/html/boost_asio/reference/executor_arg_t/executor_arg_t.html -/doc/html/boost_asio/reference/executor_arg_t.html -/doc/html/boost_asio/reference/executor_binder/ -/doc/html/boost_asio/reference/executor_binder/argument_type.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/ -/doc/html/boost_asio/reference/executor_binder/_executor_binder.html -/doc/html/boost_asio/reference/executor_binder/executor_binder.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload1.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload2.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload3.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload4.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload5.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload6.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload7.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload8.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload9.html -/doc/html/boost_asio/reference/executor_binder/executor_type.html -/doc/html/boost_asio/reference/executor_binder/first_argument_type.html -/doc/html/boost_asio/reference/executor_binder/get/ -/doc/html/boost_asio/reference/executor_binder/get_executor.html -/doc/html/boost_asio/reference/executor_binder/get.html -/doc/html/boost_asio/reference/executor_binder/get/overload1.html -/doc/html/boost_asio/reference/executor_binder/get/overload2.html -/doc/html/boost_asio/reference/executor_binder.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/ -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/executor_binder/result_type.html -/doc/html/boost_asio/reference/executor_binder/second_argument_type.html -/doc/html/boost_asio/reference/executor_binder/target_type.html -/doc/html/boost_asio/reference/executor/context.html -/doc/html/boost_asio/reference/executor/defer.html -/doc/html/boost_asio/reference/executor/dispatch.html -/doc/html/boost_asio/reference/executor/executor/ -/doc/html/boost_asio/reference/executor/_executor.html -/doc/html/boost_asio/reference/executor/executor.html -/doc/html/boost_asio/reference/executor/executor/overload1.html -/doc/html/boost_asio/reference/executor/executor/overload2.html -/doc/html/boost_asio/reference/executor/executor/overload3.html -/doc/html/boost_asio/reference/executor/executor/overload4.html -/doc/html/boost_asio/reference/executor/executor/overload5.html -/doc/html/boost_asio/reference/executor/executor/overload6.html -/doc/html/boost_asio/reference/executor.html -/doc/html/boost_asio/reference/executor/on_work_finished.html -/doc/html/boost_asio/reference/executor/on_work_started.html -/doc/html/boost_asio/reference/executor/operator_eq_/ -/doc/html/boost_asio/reference/executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/executor/operator_eq_.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload3.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload4.html -/doc/html/boost_asio/reference/executor/operator_not__eq_.html -/doc/html/boost_asio/reference/executor/operator_unspecified_bool_type.html -/doc/html/boost_asio/reference/executor/post.html -/doc/html/boost_asio/reference/executor/target/ -/doc/html/boost_asio/reference/executor/target.html -/doc/html/boost_asio/reference/executor/target/overload1.html -/doc/html/boost_asio/reference/executor/target/overload2.html -/doc/html/boost_asio/reference/executor/target_type.html -/doc/html/boost_asio/reference/executor/unspecified_bool_true.html -/doc/html/boost_asio/reference/executor/unspecified_bool_type.html -/doc/html/boost_asio/reference/executor__unspecified_bool_type_t.html -/doc/html/boost_asio/reference/executor_work_guard/ -/doc/html/boost_asio/reference/executor_work_guard/executor_type.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/ -/doc/html/boost_asio/reference/executor_work_guard/_executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload1.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload2.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload3.html -/doc/html/boost_asio/reference/executor_work_guard/get_executor.html -/doc/html/boost_asio/reference/executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/owns_work.html -/doc/html/boost_asio/reference/executor_work_guard/reset.html -/doc/html/boost_asio/reference/experimental__as_single.html -/doc/html/boost_asio/reference/experimental__as_single_t/ -/doc/html/boost_asio/reference/experimental__as_single_t/as_default_on.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/ -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload1.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload2.html -/doc/html/boost_asio/reference/experimental__as_single_t__default_constructor_tag.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/ -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_single_t.html -/doc/html/boost_asio/reference/experimental__as_single_t/token_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/ -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/generic__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/ -/doc/html/boost_asio/reference/generic__basic_endpoint/data.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/generic__basic_endpoint.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/generic__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/generic__basic_endpoint/resize.html -/doc/html/boost_asio/reference/generic__basic_endpoint/size.html -/doc/html/boost_asio/reference/generic__datagram_protocol/ -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/ -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/overload1.html -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/overload2.html -/doc/html/boost_asio/reference/generic__datagram_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__datagram_protocol/family.html -/doc/html/boost_asio/reference/generic__datagram_protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__datagram_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__datagram_protocol/protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/socket.html -/doc/html/boost_asio/reference/generic__datagram_protocol/type.html -/doc/html/boost_asio/reference/generic__raw_protocol/ -/doc/html/boost_asio/reference/generic__raw_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__raw_protocol/family.html -/doc/html/boost_asio/reference/generic__raw_protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__raw_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__raw_protocol/protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/ -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/overload1.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/overload2.html -/doc/html/boost_asio/reference/generic__raw_protocol/socket.html -/doc/html/boost_asio/reference/generic__raw_protocol/type.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/ -/doc/html/boost_asio/reference/generic__seq_packet_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/family.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/ -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload1.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload2.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/socket.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/type.html -/doc/html/boost_asio/reference/generic__stream_protocol/ -/doc/html/boost_asio/reference/generic__stream_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__stream_protocol/family.html -/doc/html/boost_asio/reference/generic__stream_protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/iostream.html -/doc/html/boost_asio/reference/generic__stream_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__stream_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__stream_protocol/protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/socket.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/ -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/overload1.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/overload2.html -/doc/html/boost_asio/reference/generic__stream_protocol/type.html -/doc/html/boost_asio/reference/get_associated_allocator/ -/doc/html/boost_asio/reference/get_associated_allocator.html -/doc/html/boost_asio/reference/get_associated_allocator/overload1.html -/doc/html/boost_asio/reference/get_associated_allocator/overload2.html -/doc/html/boost_asio/reference/get_associated_executor/ -/doc/html/boost_asio/reference/get_associated_executor.html -/doc/html/boost_asio/reference/get_associated_executor/overload1.html -/doc/html/boost_asio/reference/get_associated_executor/overload2.html -/doc/html/boost_asio/reference/get_associated_executor/overload3.html -/doc/html/boost_asio/reference/GettableSerialPortOption.html -/doc/html/boost_asio/reference/GettableSocketOption.html -/doc/html/boost_asio/reference/Handler.html -/doc/html/boost_asio/reference/HandshakeHandler.html -/doc/html/boost_asio/reference/high_resolution_timer.html -/doc/html/boost_asio/reference.html -/doc/html/boost_asio/reference/InternetProtocol.html -/doc/html/boost_asio/reference/invalid_service_owner/ -/doc/html/boost_asio/reference/invalid_service_owner.html -/doc/html/boost_asio/reference/invalid_service_owner/invalid_service_owner.html -/doc/html/boost_asio/reference/io_context/ -/doc/html/boost_asio/reference/io_context/add_service.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/_basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/context.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/defer.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/dispatch.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/execute.html -/doc/html/boost_asio/reference/io_context__basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/on_work_finished.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/on_work_started.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq__eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_not__eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/post.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/query.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload3.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload4.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload5.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/require.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload3.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload4.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload5.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload6.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload7.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload8.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/running_in_this_thread.html -/doc/html/boost_asio/reference/io_context/count_type.html -/doc/html/boost_asio/reference/io_context/destroy.html -/doc/html/boost_asio/reference/io_context/dispatch.html -/doc/html/boost_asio/reference/io_context/executor_type.html -/doc/html/boost_asio/reference/io_context/fork_event.html -/doc/html/boost_asio/reference/io_context/get_executor.html -/doc/html/boost_asio/reference/io_context/has_service.html -/doc/html/boost_asio/reference/io_context.html -/doc/html/boost_asio/reference/io_context/io_context/ -/doc/html/boost_asio/reference/io_context/_io_context.html -/doc/html/boost_asio/reference/io_context/io_context.html -/doc/html/boost_asio/reference/io_context/io_context/overload1.html -/doc/html/boost_asio/reference/io_context/io_context/overload2.html -/doc/html/boost_asio/reference/io_context/make_service.html -/doc/html/boost_asio/reference/io_context/notify_fork.html -/doc/html/boost_asio/reference/io_context/poll/ -/doc/html/boost_asio/reference/io_context/poll.html -/doc/html/boost_asio/reference/io_context/poll_one/ -/doc/html/boost_asio/reference/io_context/poll_one.html -/doc/html/boost_asio/reference/io_context/poll_one/overload1.html -/doc/html/boost_asio/reference/io_context/poll_one/overload2.html -/doc/html/boost_asio/reference/io_context/poll/overload1.html -/doc/html/boost_asio/reference/io_context/poll/overload2.html -/doc/html/boost_asio/reference/io_context/post.html -/doc/html/boost_asio/reference/io_context/reset.html -/doc/html/boost_asio/reference/io_context/restart.html -/doc/html/boost_asio/reference/io_context/run/ -/doc/html/boost_asio/reference/io_context/run_for.html -/doc/html/boost_asio/reference/io_context/run.html -/doc/html/boost_asio/reference/io_context/run_one/ -/doc/html/boost_asio/reference/io_context/run_one_for.html -/doc/html/boost_asio/reference/io_context/run_one.html -/doc/html/boost_asio/reference/io_context/run_one/overload1.html -/doc/html/boost_asio/reference/io_context/run_one/overload2.html -/doc/html/boost_asio/reference/io_context/run_one_until.html -/doc/html/boost_asio/reference/io_context/run/overload1.html -/doc/html/boost_asio/reference/io_context/run/overload2.html -/doc/html/boost_asio/reference/io_context/run_until.html -/doc/html/boost_asio/reference/io_context__service/ -/doc/html/boost_asio/reference/io_context__service/get_io_context.html -/doc/html/boost_asio/reference/io_context__service.html -/doc/html/boost_asio/reference/io_context__service/_service.html -/doc/html/boost_asio/reference/io_context__service/service.html -/doc/html/boost_asio/reference/io_context/shutdown.html -/doc/html/boost_asio/reference/io_context/stop.html -/doc/html/boost_asio/reference/io_context/stopped.html -/doc/html/boost_asio/reference/io_context__strand/ -/doc/html/boost_asio/reference/io_context__strand/context.html -/doc/html/boost_asio/reference/io_context__strand/defer.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/ -/doc/html/boost_asio/reference/io_context__strand/dispatch.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/overload1.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/overload2.html -/doc/html/boost_asio/reference/io_context__strand.html -/doc/html/boost_asio/reference/io_context__strand/on_work_finished.html -/doc/html/boost_asio/reference/io_context__strand/on_work_started.html -/doc/html/boost_asio/reference/io_context__strand/operator_eq__eq_.html -/doc/html/boost_asio/reference/io_context__strand/operator_not__eq_.html -/doc/html/boost_asio/reference/io_context__strand/post/ -/doc/html/boost_asio/reference/io_context__strand/post.html -/doc/html/boost_asio/reference/io_context__strand/post/overload1.html -/doc/html/boost_asio/reference/io_context__strand/post/overload2.html -/doc/html/boost_asio/reference/io_context__strand/running_in_this_thread.html -/doc/html/boost_asio/reference/io_context__strand/_strand.html -/doc/html/boost_asio/reference/io_context__strand/strand.html -/doc/html/boost_asio/reference/io_context__strand/wrap.html -/doc/html/boost_asio/reference/io_context/use_service/ -/doc/html/boost_asio/reference/io_context/use_service.html -/doc/html/boost_asio/reference/io_context/use_service/overload1.html -/doc/html/boost_asio/reference/io_context/use_service/overload2.html -/doc/html/boost_asio/reference/io_context__work/ -/doc/html/boost_asio/reference/io_context__work/get_io_context.html -/doc/html/boost_asio/reference/io_context__work.html -/doc/html/boost_asio/reference/io_context__work/work/ -/doc/html/boost_asio/reference/io_context__work/_work.html -/doc/html/boost_asio/reference/io_context__work/work.html -/doc/html/boost_asio/reference/io_context__work/work/overload1.html -/doc/html/boost_asio/reference/io_context__work/work/overload2.html -/doc/html/boost_asio/reference/io_context/wrap.html -/doc/html/boost_asio/reference/IoControlCommand.html -/doc/html/boost_asio/reference/IoObjectService.html -/doc/html/boost_asio/reference/io_service.html -/doc/html/boost_asio/reference/ip__address/ -/doc/html/boost_asio/reference/ip__address/address/ -/doc/html/boost_asio/reference/ip__address/address.html -/doc/html/boost_asio/reference/ip__address/address/overload1.html -/doc/html/boost_asio/reference/ip__address/address/overload2.html -/doc/html/boost_asio/reference/ip__address/address/overload3.html -/doc/html/boost_asio/reference/ip__address/address/overload4.html -/doc/html/boost_asio/reference/ip__address/from_string/ -/doc/html/boost_asio/reference/ip__address/from_string.html -/doc/html/boost_asio/reference/ip__address/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address.html -/doc/html/boost_asio/reference/ip__address/is_loopback.html -/doc/html/boost_asio/reference/ip__address/is_multicast.html -/doc/html/boost_asio/reference/ip__address/is_unspecified.html -/doc/html/boost_asio/reference/ip__address/is_v4.html -/doc/html/boost_asio/reference/ip__address/is_v6.html -/doc/html/boost_asio/reference/ip__address/make_address/ -/doc/html/boost_asio/reference/ip__address/make_address.html -/doc/html/boost_asio/reference/ip__address/make_address/overload1.html -/doc/html/boost_asio/reference/ip__address/make_address/overload2.html -/doc/html/boost_asio/reference/ip__address/make_address/overload3.html -/doc/html/boost_asio/reference/ip__address/make_address/overload4.html -/doc/html/boost_asio/reference/ip__address/make_address/overload5.html -/doc/html/boost_asio/reference/ip__address/make_address/overload6.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/ -/doc/html/boost_asio/reference/ip__address/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_eq_.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload3.html -/doc/html/boost_asio/reference/ip__address/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_gt_.html -/doc/html/boost_asio/reference/ip__address/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_lt_.html -/doc/html/boost_asio/reference/ip__address/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address/to_string/ -/doc/html/boost_asio/reference/ip__address/to_string.html -/doc/html/boost_asio/reference/ip__address/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address/to_v4.html -/doc/html/boost_asio/reference/ip__address/to_v6.html -/doc/html/boost_asio/reference/ip__address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload4.html -/doc/html/boost_asio/reference/ip__address_v4/any.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/ -/doc/html/boost_asio/reference/ip__address_v4/broadcast.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/bytes_type.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/ -/doc/html/boost_asio/reference/ip__address_v4/from_string.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_a.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_b.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_c.html -/doc/html/boost_asio/reference/ip__address_v4/is_loopback.html -/doc/html/boost_asio/reference/ip__address_v4/is_multicast.html -/doc/html/boost_asio/reference/ip__address_v4/is_unspecified.html -/doc/html/boost_asio/reference/ip__address_v4_iterator.html -/doc/html/boost_asio/reference/ip__address_v4/loopback.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload4.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload5.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload6.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload7.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload8.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload9.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/ -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/netmask.html -/doc/html/boost_asio/reference/ip__address_v4/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_gt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/ -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address_v4_range.html -/doc/html/boost_asio/reference/ip__address_v4/to_bytes.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/ -/doc/html/boost_asio/reference/ip__address_v4/to_string.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/to_uint.html -/doc/html/boost_asio/reference/ip__address_v4/to_ulong.html -/doc/html/boost_asio/reference/ip__address_v4/uint_type.html -/doc/html/boost_asio/reference/ip__address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/any.html -/doc/html/boost_asio/reference/ip__address_v6/bytes_type.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/ -/doc/html/boost_asio/reference/ip__address_v6/from_string.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/is_link_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_loopback.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_global.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_link_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_node_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_org_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_site_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_site_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_unspecified.html -/doc/html/boost_asio/reference/ip__address_v6/is_v4_compatible.html -/doc/html/boost_asio/reference/ip__address_v6/is_v4_mapped.html -/doc/html/boost_asio/reference/ip__address_v6_iterator.html -/doc/html/boost_asio/reference/ip__address_v6/loopback.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload4.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload5.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload6.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload7.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload8.html -/doc/html/boost_asio/reference/ip__address_v6/make_network_v6.html -/doc/html/boost_asio/reference/ip__address_v6/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_gt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/ -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address_v6_range.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/ -/doc/html/boost_asio/reference/ip__address_v6/scope_id.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/to_bytes.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/ -/doc/html/boost_asio/reference/ip__address_v6/to_string.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/to_v4.html -/doc/html/boost_asio/reference/ip__address_v6/v4_compatible.html -/doc/html/boost_asio/reference/ip__address_v6/v4_mapped.html -/doc/html/boost_asio/reference/ip__bad_address_cast/ -/doc/html/boost_asio/reference/ip__bad_address_cast/_bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast/bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast/what.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/difference_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/pointer.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/reference.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/value_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/difference_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/pointer.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/reference.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/value_type.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload3.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/begin.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/empty.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/end.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/find.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/iterator.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/size.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload3.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/begin.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/empty.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/end.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/find.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/iterator.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/ -/doc/html/boost_asio/reference/ip__basic_endpoint/address/ -/doc/html/boost_asio/reference/ip__basic_endpoint/address.html -/doc/html/boost_asio/reference/ip__basic_endpoint/address/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/address/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload5.html -/doc/html/boost_asio/reference/ip__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/ -/doc/html/boost_asio/reference/ip__basic_endpoint/data.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/ip__basic_endpoint.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/ -/doc/html/boost_asio/reference/ip__basic_endpoint/port.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/ip__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_endpoint/resize.html -/doc/html/boost_asio/reference/ip__basic_endpoint/size.html -/doc/html/boost_asio/reference/ip__basic_resolver/ -/doc/html/boost_asio/reference/ip__basic_resolver/address_configured.html -/doc/html/boost_asio/reference/ip__basic_resolver/all_matching.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/ -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload5.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload6.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/ -/doc/html/boost_asio/reference/ip__basic_resolver/_basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/cancel.html -/doc/html/boost_asio/reference/ip__basic_resolver/canonical_name.html -/doc/html/boost_asio/reference/ip__basic_resolver/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/endpoint.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/operator_endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/executor_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/flags.html -/doc/html/boost_asio/reference/ip__basic_resolver/get_executor.html -/doc/html/boost_asio/reference/ip__basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/dereference.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/difference_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/equal.html -/doc/html/boost_asio/reference/ip__basic_resolver/iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/increment.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/index_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/pointer.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/values_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/value_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/numeric_host.html -/doc/html/boost_asio/reference/ip__basic_resolver/numeric_service.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/passive.html -/doc/html/boost_asio/reference/ip__basic_resolver/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/ -/doc/html/boost_asio/reference/ip__basic_resolver_query/address_configured.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/all_matching.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/ -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/canonical_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/flags.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/hints.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/host_name.html -/doc/html/boost_asio/reference/ip__basic_resolver/query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/numeric_host.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/numeric_service.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/passive.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/service_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/v4_mapped.html -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor/ -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor.html -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor/other.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/ -/doc/html/boost_asio/reference/ip__basic_resolver/resolve.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload10.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload11.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload12.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload5.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload6.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload7.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload8.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload9.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/begin.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/cbegin.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/cend.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/const_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/const_reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/dereference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/difference_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/empty.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/end.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/equal.html -/doc/html/boost_asio/reference/ip__basic_resolver_results.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/increment.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/index_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/max_size.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/pointer.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/size.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/size_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/swap.html -/doc/html/boost_asio/reference/ip__basic_resolver/results_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/values_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/value_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/v4_mapped.html -/doc/html/boost_asio/reference/ip__host_name/ -/doc/html/boost_asio/reference/ip__host_name.html -/doc/html/boost_asio/reference/ip__host_name/overload1.html -/doc/html/boost_asio/reference/ip__host_name/overload2.html -/doc/html/boost_asio/reference/ip__icmp/ -/doc/html/boost_asio/reference/ip__icmp/endpoint.html -/doc/html/boost_asio/reference/ip__icmp/family.html -/doc/html/boost_asio/reference/ip__icmp.html -/doc/html/boost_asio/reference/ip__icmp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__icmp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__icmp/protocol.html -/doc/html/boost_asio/reference/ip__icmp/resolver.html -/doc/html/boost_asio/reference/ip__icmp/socket.html -/doc/html/boost_asio/reference/ip__icmp/type.html -/doc/html/boost_asio/reference/ip__icmp/v4.html -/doc/html/boost_asio/reference/ip__icmp/v6.html -/doc/html/boost_asio/reference/ip__multicast__enable_loopback.html -/doc/html/boost_asio/reference/ip__multicast__hops.html -/doc/html/boost_asio/reference/ip__multicast__join_group.html -/doc/html/boost_asio/reference/ip__multicast__leave_group.html -/doc/html/boost_asio/reference/ip__multicast__outbound_interface.html -/doc/html/boost_asio/reference/ip__network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/address.html -/doc/html/boost_asio/reference/ip__network_v4/broadcast.html -/doc/html/boost_asio/reference/ip__network_v4/canonical.html -/doc/html/boost_asio/reference/ip__network_v4/hosts.html -/doc/html/boost_asio/reference/ip__network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/is_host.html -/doc/html/boost_asio/reference/ip__network_v4/is_subnet_of.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload2.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload3.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload4.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload5.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload6.html -/doc/html/boost_asio/reference/ip__network_v4/netmask.html -/doc/html/boost_asio/reference/ip__network_v4/network.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload2.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload3.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload4.html -/doc/html/boost_asio/reference/ip__network_v4/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__network_v4/operator_eq_.html -/doc/html/boost_asio/reference/ip__network_v4/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__network_v4/prefix_length.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/ -/doc/html/boost_asio/reference/ip__network_v4/to_string.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/address.html -/doc/html/boost_asio/reference/ip__network_v6/canonical.html -/doc/html/boost_asio/reference/ip__network_v6/hosts.html -/doc/html/boost_asio/reference/ip__network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/is_host.html -/doc/html/boost_asio/reference/ip__network_v6/is_subnet_of.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload3.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload4.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload5.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload6.html -/doc/html/boost_asio/reference/ip__network_v6/network.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload3.html -/doc/html/boost_asio/reference/ip__network_v6/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__network_v6/operator_eq_.html -/doc/html/boost_asio/reference/ip__network_v6/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__network_v6/prefix_length.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/ -/doc/html/boost_asio/reference/ip__network_v6/to_string.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/overload2.html -/doc/html/boost_asio/reference/ip__resolver_base/ -/doc/html/boost_asio/reference/ip__resolver_base/address_configured.html -/doc/html/boost_asio/reference/ip__resolver_base/all_matching.html -/doc/html/boost_asio/reference/ip__resolver_base/canonical_name.html -/doc/html/boost_asio/reference/ip__resolver_base/flags.html -/doc/html/boost_asio/reference/ip__resolver_base.html -/doc/html/boost_asio/reference/ip__resolver_base/numeric_host.html -/doc/html/boost_asio/reference/ip__resolver_base/numeric_service.html -/doc/html/boost_asio/reference/ip__resolver_base/passive.html -/doc/html/boost_asio/reference/ip__resolver_base/_resolver_base.html -/doc/html/boost_asio/reference/ip__resolver_base/v4_mapped.html -/doc/html/boost_asio/reference/ip__resolver_query_base/ -/doc/html/boost_asio/reference/ip__resolver_query_base/address_configured.html -/doc/html/boost_asio/reference/ip__resolver_query_base/all_matching.html -/doc/html/boost_asio/reference/ip__resolver_query_base/canonical_name.html -/doc/html/boost_asio/reference/ip__resolver_query_base/flags.html -/doc/html/boost_asio/reference/ip__resolver_query_base.html -/doc/html/boost_asio/reference/ip__resolver_query_base/numeric_host.html -/doc/html/boost_asio/reference/ip__resolver_query_base/numeric_service.html -/doc/html/boost_asio/reference/ip__resolver_query_base/passive.html -/doc/html/boost_asio/reference/ip__resolver_query_base/_resolver_query_base.html -/doc/html/boost_asio/reference/ip__resolver_query_base/v4_mapped.html -/doc/html/boost_asio/reference/ip__tcp/ -/doc/html/boost_asio/reference/ip__tcp/acceptor.html -/doc/html/boost_asio/reference/ip__tcp/endpoint.html -/doc/html/boost_asio/reference/ip__tcp/family.html -/doc/html/boost_asio/reference/ip__tcp.html -/doc/html/boost_asio/reference/ip__tcp/iostream.html -/doc/html/boost_asio/reference/ip__tcp/no_delay.html -/doc/html/boost_asio/reference/ip__tcp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__tcp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__tcp/protocol.html -/doc/html/boost_asio/reference/ip__tcp/resolver.html -/doc/html/boost_asio/reference/ip__tcp/socket.html -/doc/html/boost_asio/reference/ip__tcp/type.html -/doc/html/boost_asio/reference/ip__tcp/v4.html -/doc/html/boost_asio/reference/ip__tcp/v6.html -/doc/html/boost_asio/reference/ip__udp/ -/doc/html/boost_asio/reference/ip__udp/endpoint.html -/doc/html/boost_asio/reference/ip__udp/family.html -/doc/html/boost_asio/reference/ip__udp.html -/doc/html/boost_asio/reference/ip__udp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__udp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__udp/protocol.html -/doc/html/boost_asio/reference/ip__udp/resolver.html -/doc/html/boost_asio/reference/ip__udp/socket.html -/doc/html/boost_asio/reference/ip__udp/type.html -/doc/html/boost_asio/reference/ip__udp/v4.html -/doc/html/boost_asio/reference/ip__udp/v6.html -/doc/html/boost_asio/reference/ip__unicast__hops.html -/doc/html/boost_asio/reference/ip__v4_mapped_t.html -/doc/html/boost_asio/reference/ip__v6_only.html -/doc/html/boost_asio/reference/is_applicable_property.html -/doc/html/boost_asio/reference/is_const_buffer_sequence.html -/doc/html/boost_asio/reference/is_dynamic_buffer.html -/doc/html/boost_asio/reference/is_dynamic_buffer_v1.html -/doc/html/boost_asio/reference/is_dynamic_buffer_v2.html -/doc/html/boost_asio/reference/is_endpoint_sequence/ -/doc/html/boost_asio/reference/is_endpoint_sequence.html -/doc/html/boost_asio/reference/is_endpoint_sequence/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_/value.html -/doc/html/boost_asio/reference/is_executor.html -/doc/html/boost_asio/reference/is_match_condition/ -/doc/html/boost_asio/reference/is_match_condition.html -/doc/html/boost_asio/reference/is_match_condition/value.html -/doc/html/boost_asio/reference/is_mutable_buffer_sequence.html -/doc/html/boost_asio/reference/is_nothrow_prefer.html -/doc/html/boost_asio/reference/is_nothrow_query.html -/doc/html/boost_asio/reference/is_nothrow_require_concept.html -/doc/html/boost_asio/reference/is_nothrow_require.html -/doc/html/boost_asio/reference/is_read_buffered/ -/doc/html/boost_asio/reference/is_read_buffered.html -/doc/html/boost_asio/reference/is_read_buffered/value.html -/doc/html/boost_asio/reference/is_write_buffered/ -/doc/html/boost_asio/reference/is_write_buffered.html -/doc/html/boost_asio/reference/is_write_buffered/value.html -/doc/html/boost_asio/reference/IteratorConnectHandler.html -/doc/html/boost_asio/reference/LegacyCompletionHandler.html -/doc/html/boost_asio/reference/local__basic_endpoint/ -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/local__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/ -/doc/html/boost_asio/reference/local__basic_endpoint/data.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/local__basic_endpoint.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt__lt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/ -/doc/html/boost_asio/reference/local__basic_endpoint/path.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload3.html -/doc/html/boost_asio/reference/local__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/local__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/local__basic_endpoint/resize.html -/doc/html/boost_asio/reference/local__basic_endpoint/size.html -/doc/html/boost_asio/reference/local__connect_pair/ -/doc/html/boost_asio/reference/local__connect_pair.html -/doc/html/boost_asio/reference/local__connect_pair/overload1.html -/doc/html/boost_asio/reference/local__connect_pair/overload2.html -/doc/html/boost_asio/reference/local__datagram_protocol/ -/doc/html/boost_asio/reference/local__datagram_protocol/endpoint.html -/doc/html/boost_asio/reference/local__datagram_protocol/family.html -/doc/html/boost_asio/reference/local__datagram_protocol.html -/doc/html/boost_asio/reference/local__datagram_protocol/protocol.html -/doc/html/boost_asio/reference/local__datagram_protocol/socket.html -/doc/html/boost_asio/reference/local__datagram_protocol/type.html -/doc/html/boost_asio/reference/local__stream_protocol/ -/doc/html/boost_asio/reference/local__stream_protocol/acceptor.html -/doc/html/boost_asio/reference/local__stream_protocol/endpoint.html -/doc/html/boost_asio/reference/local__stream_protocol/family.html -/doc/html/boost_asio/reference/local__stream_protocol.html -/doc/html/boost_asio/reference/local__stream_protocol/iostream.html -/doc/html/boost_asio/reference/local__stream_protocol/protocol.html -/doc/html/boost_asio/reference/local__stream_protocol/socket.html -/doc/html/boost_asio/reference/local__stream_protocol/type.html -/doc/html/boost_asio/reference/make_strand/ -/doc/html/boost_asio/reference/make_strand.html -/doc/html/boost_asio/reference/make_strand/overload1.html -/doc/html/boost_asio/reference/make_strand/overload2.html -/doc/html/boost_asio/reference/make_work_guard/ -/doc/html/boost_asio/reference/make_work_guard.html -/doc/html/boost_asio/reference/make_work_guard/overload1.html -/doc/html/boost_asio/reference/make_work_guard/overload2.html -/doc/html/boost_asio/reference/make_work_guard/overload3.html -/doc/html/boost_asio/reference/make_work_guard/overload4.html -/doc/html/boost_asio/reference/make_work_guard/overload5.html -/doc/html/boost_asio/reference/MoveAcceptHandler.html -/doc/html/boost_asio/reference/multiple_exceptions/ -/doc/html/boost_asio/reference/multiple_exceptions/first_exception.html -/doc/html/boost_asio/reference/multiple_exceptions.html -/doc/html/boost_asio/reference/multiple_exceptions/multiple_exceptions.html -/doc/html/boost_asio/reference/multiple_exceptions/what.html -/doc/html/boost_asio/reference/mutable_buffer/ -/doc/html/boost_asio/reference/mutable_buffer/data.html -/doc/html/boost_asio/reference/mutable_buffer.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/ -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/overload1.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/overload2.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/ -/doc/html/boost_asio/reference/mutable_buffer/operator_plus__eq_.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/overload1.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/ -/doc/html/boost_asio/reference/mutable_buffers_1/begin.html -/doc/html/boost_asio/reference/mutable_buffers_1/const_iterator.html -/doc/html/boost_asio/reference/mutable_buffers_1/data.html -/doc/html/boost_asio/reference/mutable_buffers_1/end.html -/doc/html/boost_asio/reference/mutable_buffers_1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/ -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/overload1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/ -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus__eq_.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/overload1.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/size.html -/doc/html/boost_asio/reference/mutable_buffers_1/value_type.html -/doc/html/boost_asio/reference/MutableBufferSequence.html -/doc/html/boost_asio/reference/mutable_buffer/size.html -/doc/html/boost_asio/reference/null_buffers/ -/doc/html/boost_asio/reference/null_buffers/begin.html -/doc/html/boost_asio/reference/null_buffers/const_iterator.html -/doc/html/boost_asio/reference/null_buffers/end.html -/doc/html/boost_asio/reference/null_buffers.html -/doc/html/boost_asio/reference/null_buffers/value_type.html -/doc/html/boost_asio/reference/OperationState.html -/doc/html/boost_asio/reference/placeholders__bytes_transferred.html -/doc/html/boost_asio/reference/placeholders__endpoint.html -/doc/html/boost_asio/reference/placeholders__error.html -/doc/html/boost_asio/reference/placeholders__iterator.html -/doc/html/boost_asio/reference/placeholders__results.html -/doc/html/boost_asio/reference/placeholders__signal_number.html -/doc/html/boost_asio/reference/posix__basic_descriptor/ -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/ -/doc/html/boost_asio/reference/posix__basic_descriptor/assign.html -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/async_wait.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/ -/doc/html/boost_asio/reference/posix__basic_descriptor/_basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html -/doc/html/boost_asio/reference/posix__basic_descriptor/bytes_readable.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/ -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/ -/doc/html/boost_asio/reference/posix__basic_descriptor/close.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/executor_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/get_executor.html -/doc/html/boost_asio/reference/posix__basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/ -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/is_open.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/ -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_handle.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_handle_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/ -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/ -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_.html -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/ -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor.html -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/other.html -/doc/html/boost_asio/reference/posix__basic_descriptor/release.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/ -/doc/html/boost_asio/reference/posix__basic_descriptor/wait.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_read_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_wait.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_write_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/bytes_readable.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/executor_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/get_executor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/is_open.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_handle.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_handle_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor/other.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/release.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/overload2.html -/doc/html/boost_asio/reference/posix__descriptor_base/ -/doc/html/boost_asio/reference/posix__descriptor_base/bytes_readable.html -/doc/html/boost_asio/reference/posix__descriptor_base/_descriptor_base.html -/doc/html/boost_asio/reference/posix__descriptor_base.html -/doc/html/boost_asio/reference/posix__descriptor_base/wait_type.html -/doc/html/boost_asio/reference/posix__descriptor.html -/doc/html/boost_asio/reference/posix__stream_descriptor.html -/doc/html/boost_asio/reference/post/ -/doc/html/boost_asio/reference/post.html -/doc/html/boost_asio/reference/post/overload1.html -/doc/html/boost_asio/reference/post/overload2.html -/doc/html/boost_asio/reference/post/overload3.html -/doc/html/boost_asio/reference/prefer.html -/doc/html/boost_asio/reference/prefer_result/ -/doc/html/boost_asio/reference/prefer_result.html -/doc/html/boost_asio/reference/prefer_result/type.html -/doc/html/boost_asio/reference/ProtoAllocator.html -/doc/html/boost_asio/reference/Protocol.html -/doc/html/boost_asio/reference/query.html -/doc/html/boost_asio/reference/query_result/ -/doc/html/boost_asio/reference/query_result.html -/doc/html/boost_asio/reference/query_result/type.html -/doc/html/boost_asio/reference/RangeConnectHandler.html -/doc/html/boost_asio/reference/read/ -/doc/html/boost_asio/reference/read_at/ -/doc/html/boost_asio/reference/read_at.html -/doc/html/boost_asio/reference/read_at/overload1.html -/doc/html/boost_asio/reference/read_at/overload2.html -/doc/html/boost_asio/reference/read_at/overload3.html -/doc/html/boost_asio/reference/read_at/overload4.html -/doc/html/boost_asio/reference/read_at/overload5.html -/doc/html/boost_asio/reference/read_at/overload6.html -/doc/html/boost_asio/reference/read_at/overload7.html -/doc/html/boost_asio/reference/read_at/overload8.html -/doc/html/boost_asio/reference/ReadHandler.html -/doc/html/boost_asio/reference/read.html -/doc/html/boost_asio/reference/read/overload10.html -/doc/html/boost_asio/reference/read/overload11.html -/doc/html/boost_asio/reference/read/overload12.html -/doc/html/boost_asio/reference/read/overload13.html -/doc/html/boost_asio/reference/read/overload14.html -/doc/html/boost_asio/reference/read/overload15.html -/doc/html/boost_asio/reference/read/overload16.html -/doc/html/boost_asio/reference/read/overload1.html -/doc/html/boost_asio/reference/read/overload2.html -/doc/html/boost_asio/reference/read/overload3.html -/doc/html/boost_asio/reference/read/overload4.html -/doc/html/boost_asio/reference/read/overload5.html -/doc/html/boost_asio/reference/read/overload6.html -/doc/html/boost_asio/reference/read/overload7.html -/doc/html/boost_asio/reference/read/overload8.html -/doc/html/boost_asio/reference/read/overload9.html -/doc/html/boost_asio/reference/read_until/ -/doc/html/boost_asio/reference/read_until.html -/doc/html/boost_asio/reference/read_until/overload10.html -/doc/html/boost_asio/reference/read_until/overload11.html -/doc/html/boost_asio/reference/read_until/overload12.html -/doc/html/boost_asio/reference/read_until/overload13.html -/doc/html/boost_asio/reference/read_until/overload14.html -/doc/html/boost_asio/reference/read_until/overload15.html -/doc/html/boost_asio/reference/read_until/overload16.html -/doc/html/boost_asio/reference/read_until/overload17.html -/doc/html/boost_asio/reference/read_until/overload18.html -/doc/html/boost_asio/reference/read_until/overload19.html -/doc/html/boost_asio/reference/read_until/overload1.html -/doc/html/boost_asio/reference/read_until/overload20.html -/doc/html/boost_asio/reference/read_until/overload21.html -/doc/html/boost_asio/reference/read_until/overload22.html -/doc/html/boost_asio/reference/read_until/overload23.html -/doc/html/boost_asio/reference/read_until/overload24.html -/doc/html/boost_asio/reference/read_until/overload2.html -/doc/html/boost_asio/reference/read_until/overload3.html -/doc/html/boost_asio/reference/read_until/overload4.html -/doc/html/boost_asio/reference/read_until/overload5.html -/doc/html/boost_asio/reference/read_until/overload6.html -/doc/html/boost_asio/reference/read_until/overload7.html -/doc/html/boost_asio/reference/read_until/overload8.html -/doc/html/boost_asio/reference/read_until/overload9.html -/doc/html/boost_asio/reference/read_write_operations.html -/doc/html/boost_asio/reference/Receiver.html -/doc/html/boost_asio/reference/redirect_error.html -/doc/html/boost_asio/reference/redirect_error_t/ -/doc/html/boost_asio/reference/redirect_error_t/ec_.html -/doc/html/boost_asio/reference/redirect_error_t.html -/doc/html/boost_asio/reference/redirect_error_t/redirect_error_t.html -/doc/html/boost_asio/reference/redirect_error_t/token_.html -/doc/html/boost_asio/reference/require_concept.html -/doc/html/boost_asio/reference/require_concept_result/ -/doc/html/boost_asio/reference/require_concept_result.html -/doc/html/boost_asio/reference/require_concept_result/type.html -/doc/html/boost_asio/reference/require.html -/doc/html/boost_asio/reference/require_result/ -/doc/html/boost_asio/reference/require_result.html -/doc/html/boost_asio/reference/require_result/type.html -/doc/html/boost_asio/reference/ResolveHandler.html -/doc/html/boost_asio/reference/resolver_errc__try_again.html -/doc/html/boost_asio/reference/Scheduler.html -/doc/html/boost_asio/reference/Sender.html -/doc/html/boost_asio/reference/serial_port_base/ -/doc/html/boost_asio/reference/serial_port_base__baud_rate/ -/doc/html/boost_asio/reference/serial_port_base__baud_rate/baud_rate.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/load.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/store.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/value.html -/doc/html/boost_asio/reference/serial_port_base__character_size/ -/doc/html/boost_asio/reference/serial_port_base__character_size/character_size.html -/doc/html/boost_asio/reference/serial_port_base__character_size.html -/doc/html/boost_asio/reference/serial_port_base__character_size/load.html -/doc/html/boost_asio/reference/serial_port_base__character_size/store.html -/doc/html/boost_asio/reference/serial_port_base__character_size/value.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/ -/doc/html/boost_asio/reference/serial_port_base__flow_control/flow_control.html -/doc/html/boost_asio/reference/serial_port_base__flow_control.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/load.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/store.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/type.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/value.html -/doc/html/boost_asio/reference/serial_port_base.html -/doc/html/boost_asio/reference/serial_port_base__parity/ -/doc/html/boost_asio/reference/serial_port_base__parity.html -/doc/html/boost_asio/reference/serial_port_base__parity/load.html -/doc/html/boost_asio/reference/serial_port_base__parity/parity.html -/doc/html/boost_asio/reference/serial_port_base__parity/store.html -/doc/html/boost_asio/reference/serial_port_base__parity/type.html -/doc/html/boost_asio/reference/serial_port_base__parity/value.html -/doc/html/boost_asio/reference/serial_port_base/_serial_port_base.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/ -/doc/html/boost_asio/reference/serial_port_base__stop_bits.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/load.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/stop_bits.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/store.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/type.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/value.html -/doc/html/boost_asio/reference/serial_port.html -/doc/html/boost_asio/reference/service_already_exists/ -/doc/html/boost_asio/reference/service_already_exists.html -/doc/html/boost_asio/reference/service_already_exists/service_already_exists.html -/doc/html/boost_asio/reference/Service.html -/doc/html/boost_asio/reference/SettableSerialPortOption.html -/doc/html/boost_asio/reference/SettableSocketOption.html -/doc/html/boost_asio/reference/ShutdownHandler.html -/doc/html/boost_asio/reference/SignalHandler.html -/doc/html/boost_asio/reference/signal_set.html -/doc/html/boost_asio/reference/socket_base/ -/doc/html/boost_asio/reference/socket_base/broadcast.html -/doc/html/boost_asio/reference/socket_base/bytes_readable.html -/doc/html/boost_asio/reference/socket_base/debug.html -/doc/html/boost_asio/reference/socket_base/do_not_route.html -/doc/html/boost_asio/reference/socket_base/enable_connection_aborted.html -/doc/html/boost_asio/reference/socket_base.html -/doc/html/boost_asio/reference/socket_base/keep_alive.html -/doc/html/boost_asio/reference/socket_base/linger.html -/doc/html/boost_asio/reference/socket_base/max_connections.html -/doc/html/boost_asio/reference/socket_base/max_listen_connections.html -/doc/html/boost_asio/reference/socket_base/message_do_not_route.html -/doc/html/boost_asio/reference/socket_base/message_end_of_record.html -/doc/html/boost_asio/reference/socket_base/message_flags.html -/doc/html/boost_asio/reference/socket_base/message_out_of_band.html -/doc/html/boost_asio/reference/socket_base/message_peek.html -/doc/html/boost_asio/reference/socket_base/out_of_band_inline.html -/doc/html/boost_asio/reference/socket_base/receive_buffer_size.html -/doc/html/boost_asio/reference/socket_base/receive_low_watermark.html -/doc/html/boost_asio/reference/socket_base/reuse_address.html -/doc/html/boost_asio/reference/socket_base/send_buffer_size.html -/doc/html/boost_asio/reference/socket_base/send_low_watermark.html -/doc/html/boost_asio/reference/socket_base/shutdown_type.html -/doc/html/boost_asio/reference/socket_base/_socket_base.html -/doc/html/boost_asio/reference/socket_base/wait_type.html -/doc/html/boost_asio/reference/spawn/ -/doc/html/boost_asio/reference/spawn.html -/doc/html/boost_asio/reference/spawn/overload1.html -/doc/html/boost_asio/reference/spawn/overload2.html -/doc/html/boost_asio/reference/spawn/overload3.html -/doc/html/boost_asio/reference/spawn/overload4.html -/doc/html/boost_asio/reference/spawn/overload5.html -/doc/html/boost_asio/reference/spawn/overload6.html -/doc/html/boost_asio/reference/spawn/overload7.html -/doc/html/boost_asio/reference/ssl__context/ -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/ -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority.html -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/overload1.html -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/overload2.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/ -/doc/html/boost_asio/reference/ssl__context/add_verify_path.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/overload1.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/overload2.html -/doc/html/boost_asio/reference/ssl__context_base/ -/doc/html/boost_asio/reference/ssl__context_base/_context_base.html -/doc/html/boost_asio/reference/ssl__context_base/default_workarounds.html -/doc/html/boost_asio/reference/ssl__context_base/file_format.html -/doc/html/boost_asio/reference/ssl__context_base.html -/doc/html/boost_asio/reference/ssl__context_base/method.html -/doc/html/boost_asio/reference/ssl__context_base/no_compression.html -/doc/html/boost_asio/reference/ssl__context_base/no_sslv2.html -/doc/html/boost_asio/reference/ssl__context_base/no_sslv3.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_1.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_2.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_3.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1.html -/doc/html/boost_asio/reference/ssl__context_base/options.html -/doc/html/boost_asio/reference/ssl__context_base/password_purpose.html -/doc/html/boost_asio/reference/ssl__context_base/single_dh_use.html -/doc/html/boost_asio/reference/ssl__context/clear_options/ -/doc/html/boost_asio/reference/ssl__context/clear_options.html -/doc/html/boost_asio/reference/ssl__context/clear_options/overload1.html -/doc/html/boost_asio/reference/ssl__context/clear_options/overload2.html -/doc/html/boost_asio/reference/ssl__context/context/ -/doc/html/boost_asio/reference/ssl__context/_context.html -/doc/html/boost_asio/reference/ssl__context/context.html -/doc/html/boost_asio/reference/ssl__context/context/overload1.html -/doc/html/boost_asio/reference/ssl__context/context/overload2.html -/doc/html/boost_asio/reference/ssl__context/context/overload3.html -/doc/html/boost_asio/reference/ssl__context/default_workarounds.html -/doc/html/boost_asio/reference/ssl__context/file_format.html -/doc/html/boost_asio/reference/ssl__context.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/ -/doc/html/boost_asio/reference/ssl__context/load_verify_file.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/method.html -/doc/html/boost_asio/reference/ssl__context/native_handle.html -/doc/html/boost_asio/reference/ssl__context/native_handle_type.html -/doc/html/boost_asio/reference/ssl__context/no_compression.html -/doc/html/boost_asio/reference/ssl__context/no_sslv2.html -/doc/html/boost_asio/reference/ssl__context/no_sslv3.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_1.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_2.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_3.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1.html -/doc/html/boost_asio/reference/ssl__context/operator_eq_.html -/doc/html/boost_asio/reference/ssl__context/options.html -/doc/html/boost_asio/reference/ssl__context/password_purpose.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/ -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_options/ -/doc/html/boost_asio/reference/ssl__context/set_options.html -/doc/html/boost_asio/reference/ssl__context/set_options/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_options/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/ -/doc/html/boost_asio/reference/ssl__context/set_password_callback.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/ -/doc/html/boost_asio/reference/ssl__context/set_verify_callback.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/ -/doc/html/boost_asio/reference/ssl__context/set_verify_depth.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/ -/doc/html/boost_asio/reference/ssl__context/set_verify_mode.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/overload2.html -/doc/html/boost_asio/reference/ssl__context/single_dh_use.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_file.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/ -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/ -/doc/html/boost_asio/reference/ssl__context/use_private_key_file.html -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_private_key.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/ -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/ -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/ -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/ -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/overload2.html -/doc/html/boost_asio/reference/ssl__error__get_stream_category.html -/doc/html/boost_asio/reference/ssl__error__make_error_code.html -/doc/html/boost_asio/reference/ssl__error__stream_category.html -/doc/html/boost_asio/reference/ssl__error__stream_errors.html -/doc/html/boost_asio/reference/ssl__host_name_verification/ -/doc/html/boost_asio/reference/ssl__host_name_verification/host_name_verification.html -/doc/html/boost_asio/reference/ssl__host_name_verification.html -/doc/html/boost_asio/reference/ssl__host_name_verification/operator_lp__rp_.html -/doc/html/boost_asio/reference/ssl__host_name_verification/result_type.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/ -/doc/html/boost_asio/reference/ssl__rfc2818_verification.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/operator_lp__rp_.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/result_type.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/rfc2818_verification.html -/doc/html/boost_asio/reference/ssl__stream/ -/doc/html/boost_asio/reference/ssl__stream/async_handshake/ -/doc/html/boost_asio/reference/ssl__stream/async_handshake.html -/doc/html/boost_asio/reference/ssl__stream/async_handshake/overload1.html -/doc/html/boost_asio/reference/ssl__stream/async_handshake/overload2.html -/doc/html/boost_asio/reference/ssl__stream/async_read_some.html -/doc/html/boost_asio/reference/ssl__stream/async_shutdown.html -/doc/html/boost_asio/reference/ssl__stream/async_write_some.html -/doc/html/boost_asio/reference/ssl__stream_base/ -/doc/html/boost_asio/reference/ssl__stream_base/handshake_type.html -/doc/html/boost_asio/reference/ssl__stream_base.html -/doc/html/boost_asio/reference/ssl__stream_base/_stream_base.html -/doc/html/boost_asio/reference/ssl__stream/executor_type.html -/doc/html/boost_asio/reference/ssl__stream/get_executor.html -/doc/html/boost_asio/reference/ssl__stream/handshake/ -/doc/html/boost_asio/reference/ssl__stream/handshake.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload1.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload2.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload3.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload4.html -/doc/html/boost_asio/reference/ssl__stream/handshake_type.html -/doc/html/boost_asio/reference/ssl__stream.html -/doc/html/boost_asio/reference/ssl__stream__impl_struct/ -/doc/html/boost_asio/reference/ssl__stream__impl_struct.html -/doc/html/boost_asio/reference/ssl__stream__impl_struct/ssl.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/ -/doc/html/boost_asio/reference/ssl__stream/lowest_layer.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer_type.html -/doc/html/boost_asio/reference/ssl__stream/native_handle.html -/doc/html/boost_asio/reference/ssl__stream/native_handle_type.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/ -/doc/html/boost_asio/reference/ssl__stream/next_layer.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/overload1.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/overload2.html -/doc/html/boost_asio/reference/ssl__stream/next_layer_type.html -/doc/html/boost_asio/reference/ssl__stream/read_some/ -/doc/html/boost_asio/reference/ssl__stream/read_some.html -/doc/html/boost_asio/reference/ssl__stream/read_some/overload1.html -/doc/html/boost_asio/reference/ssl__stream/read_some/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/overload2.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/ -/doc/html/boost_asio/reference/ssl__stream/shutdown.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/overload1.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/overload2.html -/doc/html/boost_asio/reference/ssl__stream/stream/ -/doc/html/boost_asio/reference/ssl__stream/_stream.html -/doc/html/boost_asio/reference/ssl__stream/stream.html -/doc/html/boost_asio/reference/ssl__stream/stream/overload1.html -/doc/html/boost_asio/reference/ssl__stream/stream/overload2.html -/doc/html/boost_asio/reference/ssl__stream/write_some/ -/doc/html/boost_asio/reference/ssl__stream/write_some.html -/doc/html/boost_asio/reference/ssl__stream/write_some/overload1.html -/doc/html/boost_asio/reference/ssl__stream/write_some/overload2.html -/doc/html/boost_asio/reference/ssl__verify_client_once.html -/doc/html/boost_asio/reference/ssl__verify_context/ -/doc/html/boost_asio/reference/ssl__verify_context.html -/doc/html/boost_asio/reference/ssl__verify_context/native_handle.html -/doc/html/boost_asio/reference/ssl__verify_context/native_handle_type.html -/doc/html/boost_asio/reference/ssl__verify_context/verify_context.html -/doc/html/boost_asio/reference/ssl__verify_fail_if_no_peer_cert.html -/doc/html/boost_asio/reference/ssl__verify_mode.html -/doc/html/boost_asio/reference/ssl__verify_none.html -/doc/html/boost_asio/reference/ssl__verify_peer.html -/doc/html/boost_asio/reference/static_thread_pool.html -/doc/html/boost_asio/reference/steady_timer.html -/doc/html/boost_asio/reference/strand/ -/doc/html/boost_asio/reference/strand/defer.html -/doc/html/boost_asio/reference/strand/dispatch.html -/doc/html/boost_asio/reference/strand/execute.html -/doc/html/boost_asio/reference/strand/get_inner_executor.html -/doc/html/boost_asio/reference/strand.html -/doc/html/boost_asio/reference/strand/inner_executor_type.html -/doc/html/boost_asio/reference/strand/operator_eq_/ -/doc/html/boost_asio/reference/strand/operator_eq__eq_.html -/doc/html/boost_asio/reference/strand/operator_eq_.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload1.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload2.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload3.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload4.html -/doc/html/boost_asio/reference/strand/operator_not__eq_.html -/doc/html/boost_asio/reference/strand/post.html -/doc/html/boost_asio/reference/strand/prefer.html -/doc/html/boost_asio/reference/strand/query.html -/doc/html/boost_asio/reference/strand/require.html -/doc/html/boost_asio/reference/strand/running_in_this_thread.html -/doc/html/boost_asio/reference/strand/strand/ -/doc/html/boost_asio/reference/strand/_strand.html -/doc/html/boost_asio/reference/strand/strand.html -/doc/html/boost_asio/reference/strand/strand/overload1.html -/doc/html/boost_asio/reference/strand/strand/overload2.html -/doc/html/boost_asio/reference/strand/strand/overload3.html -/doc/html/boost_asio/reference/strand/strand/overload4.html -/doc/html/boost_asio/reference/strand/strand/overload5.html -/doc/html/boost_asio/reference/strand/strand/overload6.html -/doc/html/boost_asio/reference/streambuf.html -/doc/html/boost_asio/reference/synchronous_socket_operations.html -/doc/html/boost_asio/reference/SyncRandomAccessReadDevice.html -/doc/html/boost_asio/reference/SyncRandomAccessWriteDevice.html -/doc/html/boost_asio/reference/SyncReadStream.html -/doc/html/boost_asio/reference/SyncWriteStream.html -/doc/html/boost_asio/reference/system_context/ -/doc/html/boost_asio/reference/system_context/add_service.html -/doc/html/boost_asio/reference/system_context/destroy.html -/doc/html/boost_asio/reference/system_context/executor_type.html -/doc/html/boost_asio/reference/system_context/fork_event.html -/doc/html/boost_asio/reference/system_context/get_executor.html -/doc/html/boost_asio/reference/system_context/has_service.html -/doc/html/boost_asio/reference/system_context.html -/doc/html/boost_asio/reference/system_context/join.html -/doc/html/boost_asio/reference/system_context/make_service.html -/doc/html/boost_asio/reference/system_context/notify_fork.html -/doc/html/boost_asio/reference/system_context/shutdown.html -/doc/html/boost_asio/reference/system_context/stop.html -/doc/html/boost_asio/reference/system_context/stopped.html -/doc/html/boost_asio/reference/system_context/_system_context.html -/doc/html/boost_asio/reference/system_context/use_service/ -/doc/html/boost_asio/reference/system_context/use_service.html -/doc/html/boost_asio/reference/system_context/use_service/overload1.html -/doc/html/boost_asio/reference/system_context/use_service/overload2.html -/doc/html/boost_asio/reference/system_executor.html -/doc/html/boost_asio/reference/system_timer.html -/doc/html/boost_asio/reference/this_coro__executor.html -/doc/html/boost_asio/reference/this_coro__executor_t/ -/doc/html/boost_asio/reference/this_coro__executor_t/executor_t.html -/doc/html/boost_asio/reference/this_coro__executor_t.html -/doc/html/boost_asio/reference/thread_pool/ -/doc/html/boost_asio/reference/thread_pool/add_service.html -/doc/html/boost_asio/reference/thread_pool/attach.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/_basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/bulk_execute.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/connect.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/context.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/defer.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/dispatch.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/execute.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/index_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_finished.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_started.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq__eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_not__eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/post.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload4.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload5.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload6.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload4.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload5.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload6.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload7.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload8.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload9.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/schedule.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/sender_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/shape_type.html -/doc/html/boost_asio/reference/thread_pool/destroy.html -/doc/html/boost_asio/reference/thread_pool/executor.html -/doc/html/boost_asio/reference/thread_pool/executor_type.html -/doc/html/boost_asio/reference/thread_pool/fork_event.html -/doc/html/boost_asio/reference/thread_pool/get_executor.html -/doc/html/boost_asio/reference/thread_pool/has_service.html -/doc/html/boost_asio/reference/thread_pool.html -/doc/html/boost_asio/reference/thread_pool/join.html -/doc/html/boost_asio/reference/thread_pool/make_service.html -/doc/html/boost_asio/reference/thread_pool/notify_fork.html -/doc/html/boost_asio/reference/thread_pool/scheduler.html -/doc/html/boost_asio/reference/thread_pool/scheduler_type.html -/doc/html/boost_asio/reference/thread_pool/shutdown.html -/doc/html/boost_asio/reference/thread_pool/stop.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/ -/doc/html/boost_asio/reference/thread_pool/_thread_pool.html -/doc/html/boost_asio/reference/thread_pool/thread_pool.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/overload1.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/overload2.html -/doc/html/boost_asio/reference/thread_pool/use_service/ -/doc/html/boost_asio/reference/thread_pool/use_service.html -/doc/html/boost_asio/reference/thread_pool/use_service/overload1.html -/doc/html/boost_asio/reference/thread_pool/use_service/overload2.html -/doc/html/boost_asio/reference/thread_pool/wait.html -/doc/html/boost_asio/reference/TimeTraits.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/ -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/add.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/duration_type.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/less_than.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/now.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/subtract.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/time_type.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/to_posix_duration.html -/doc/html/boost_asio/reference/transfer_all.html -/doc/html/boost_asio/reference/transfer_at_least.html -/doc/html/boost_asio/reference/transfer_exactly.html -/doc/html/boost_asio/reference/use_awaitable.html -/doc/html/boost_asio/reference/use_awaitable_t/ -/doc/html/boost_asio/reference/use_awaitable_t/as_default_on.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/ -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/ -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/overload1.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/overload2.html -/doc/html/boost_asio/reference/use_future.html -/doc/html/boost_asio/reference/use_future_t/ -/doc/html/boost_asio/reference/use_future_t/allocator_type.html -/doc/html/boost_asio/reference/use_future_t/get_allocator.html -/doc/html/boost_asio/reference/use_future_t.html -/doc/html/boost_asio/reference/use_future_t/operator_lb__rb_.html -/doc/html/boost_asio/reference/use_future_t/operator_lp__rp_.html -/doc/html/boost_asio/reference/use_future_t/rebind.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/ -/doc/html/boost_asio/reference/use_future_t/use_future_t.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/overload1.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/overload2.html -/doc/html/boost_asio/reference/uses_executor.html -/doc/html/boost_asio/reference/WaitHandler.html -/doc/html/boost_asio/reference/wait_traits/ -/doc/html/boost_asio/reference/WaitTraits.html -/doc/html/boost_asio/reference/wait_traits.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/ -/doc/html/boost_asio/reference/wait_traits/to_wait_duration.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/overload1.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/ -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_object_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/async_wait.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/ -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/ -/doc/html/boost_asio/reference/windows__basic_object_handle/close.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_object_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/ -/doc/html/boost_asio/reference/windows__basic_object_handle/wait.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/_basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/async_read_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/async_write_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/async_read_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/async_write_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/close.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload2.html -/doc/html/boost_asio/reference/windows__object_handle.html -/doc/html/boost_asio/reference/windows__overlapped_handle.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/complete.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/get.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/_overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload3.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/release.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload3.html -/doc/html/boost_asio/reference/windows__random_access_handle.html -/doc/html/boost_asio/reference/windows__stream_handle.html -/doc/html/boost_asio/reference/write/ -/doc/html/boost_asio/reference/write_at/ -/doc/html/boost_asio/reference/write_at.html -/doc/html/boost_asio/reference/write_at/overload1.html -/doc/html/boost_asio/reference/write_at/overload2.html -/doc/html/boost_asio/reference/write_at/overload3.html -/doc/html/boost_asio/reference/write_at/overload4.html -/doc/html/boost_asio/reference/write_at/overload5.html -/doc/html/boost_asio/reference/write_at/overload6.html -/doc/html/boost_asio/reference/write_at/overload7.html -/doc/html/boost_asio/reference/write_at/overload8.html -/doc/html/boost_asio/reference/WriteHandler.html -/doc/html/boost_asio/reference/write.html -/doc/html/boost_asio/reference/write/overload10.html -/doc/html/boost_asio/reference/write/overload11.html -/doc/html/boost_asio/reference/write/overload12.html -/doc/html/boost_asio/reference/write/overload13.html -/doc/html/boost_asio/reference/write/overload14.html -/doc/html/boost_asio/reference/write/overload15.html -/doc/html/boost_asio/reference/write/overload16.html -/doc/html/boost_asio/reference/write/overload1.html -/doc/html/boost_asio/reference/write/overload2.html -/doc/html/boost_asio/reference/write/overload3.html -/doc/html/boost_asio/reference/write/overload4.html -/doc/html/boost_asio/reference/write/overload5.html -/doc/html/boost_asio/reference/write/overload6.html -/doc/html/boost_asio/reference/write/overload7.html -/doc/html/boost_asio/reference/write/overload8.html -/doc/html/boost_asio/reference/write/overload9.html -/doc/html/boost_asio/reference/yield_context.html -/doc/html/boost_asio/std_executors.html -/doc/html/boost_asio/sync_op.png -/doc/html/boost_asio/tutorial/ -/doc/html/boost_asio/tutorial.html -/doc/html/boost_asio/tutorial/tutdaytime1/ -/doc/html/boost_asio/tutorial/tutdaytime1.html -/doc/html/boost_asio/tutorial/tutdaytime1/src.html -/doc/html/boost_asio/tutorial/tutdaytime2/ -/doc/html/boost_asio/tutorial/tutdaytime2.html -/doc/html/boost_asio/tutorial/tutdaytime2/src.html -/doc/html/boost_asio/tutorial/tutdaytime3/ -/doc/html/boost_asio/tutorial/tutdaytime3.html -/doc/html/boost_asio/tutorial/tutdaytime3/src.html -/doc/html/boost_asio/tutorial/tutdaytime4/ -/doc/html/boost_asio/tutorial/tutdaytime4.html -/doc/html/boost_asio/tutorial/tutdaytime4/src.html -/doc/html/boost_asio/tutorial/tutdaytime5/ -/doc/html/boost_asio/tutorial/tutdaytime5.html -/doc/html/boost_asio/tutorial/tutdaytime5/src.html -/doc/html/boost_asio/tutorial/tutdaytime6/ -/doc/html/boost_asio/tutorial/tutdaytime6.html -/doc/html/boost_asio/tutorial/tutdaytime6/src.html -/doc/html/boost_asio/tutorial/tutdaytime7/ -/doc/html/boost_asio/tutorial/tutdaytime7.html -/doc/html/boost_asio/tutorial/tutdaytime7/src.html -/doc/html/boost_asio/tutorial/tuttimer1/ -/doc/html/boost_asio/tutorial/tuttimer1.html -/doc/html/boost_asio/tutorial/tuttimer1/src.html -/doc/html/boost_asio/tutorial/tuttimer2/ -/doc/html/boost_asio/tutorial/tuttimer2.html -/doc/html/boost_asio/tutorial/tuttimer2/src.html -/doc/html/boost_asio/tutorial/tuttimer3/ -/doc/html/boost_asio/tutorial/tuttimer3.html -/doc/html/boost_asio/tutorial/tuttimer3/src.html -/doc/html/boost_asio/tutorial/tuttimer4/ -/doc/html/boost_asio/tutorial/tuttimer4.html -/doc/html/boost_asio/tutorial/tuttimer4/src.html -/doc/html/boost_asio/tutorial/tuttimer5/ -/doc/html/boost_asio/tutorial/tuttimer5.html -/doc/html/boost_asio/tutorial/tuttimer5/src.html -/doc/html/boost_asio/using.html -/libs/ -/libs/asio/ -/libs/asio/doc/ -/libs/asio/doc/asio.qbk -/libs/asio/doc/doxy2qbk.pl -/libs/asio/doc/examples.qbk -/libs/asio/doc/history.qbk -/libs/asio/doc/index.xml -/libs/asio/doc/Jamfile.v2 -/libs/asio/doc/net_ts.qbk -/libs/asio/doc/noncopyable_dox.txt -/libs/asio/doc/overview/ -/libs/asio/doc/overview/allocation.qbk -/libs/asio/doc/overview/async_op1.dot -/libs/asio/doc/overview/async_op1.png -/libs/asio/doc/overview/async_op2.dot -/libs/asio/doc/overview/async_op2.png -/libs/asio/doc/overview/async.qbk -/libs/asio/doc/overview/basics.qbk -/libs/asio/doc/overview/bsd_sockets.qbk -/libs/asio/doc/overview/buffers.qbk -/libs/asio/doc/overview/concurrency_hint.qbk -/libs/asio/doc/overview/coroutine.qbk -/libs/asio/doc/overview/coroutines_ts.qbk -/libs/asio/doc/overview/cpp2011.qbk -/libs/asio/doc/overview/handler_tracking.qbk -/libs/asio/doc/overview/implementation.qbk -/libs/asio/doc/overview/iostreams.qbk -/libs/asio/doc/overview/line_based.qbk -/libs/asio/doc/overview/other_protocols.qbk -/libs/asio/doc/overview/posix.qbk -/libs/asio/doc/overview/proactor.dot -/libs/asio/doc/overview/proactor.png -/libs/asio/doc/overview/protocols.qbk -/libs/asio/doc/overview.qbk -/libs/asio/doc/overview/rationale.qbk -/libs/asio/doc/overview/reactor.qbk -/libs/asio/doc/overview/serial_ports.qbk -/libs/asio/doc/overview/signals.qbk -/libs/asio/doc/overview/spawn.qbk -/libs/asio/doc/overview/ssl.qbk -/libs/asio/doc/overview/strands.qbk -/libs/asio/doc/overview/streams.qbk -/libs/asio/doc/overview/sync_op.dot -/libs/asio/doc/overview/sync_op.png -/libs/asio/doc/overview/threads.qbk -/libs/asio/doc/overview/timers.qbk -/libs/asio/doc/overview/windows.qbk -/libs/asio/doc/platform_macros.pl -/libs/asio/doc/platform_macros.qbk -/libs/asio/doc/quickref.xml -/libs/asio/doc/reference.dox -/libs/asio/doc/reference.qbk -/libs/asio/doc/reference.xsl -/libs/asio/doc/requirements/ -/libs/asio/doc/requirements/AcceptableProtocol.qbk -/libs/asio/doc/requirements/AcceptHandler.qbk -/libs/asio/doc/requirements/asynchronous_operations.qbk -/libs/asio/doc/requirements/asynchronous_socket_operations.qbk -/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk -/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk -/libs/asio/doc/requirements/AsyncReadStream.qbk -/libs/asio/doc/requirements/AsyncWriteStream.qbk -/libs/asio/doc/requirements/BufferedHandshakeHandler.qbk -/libs/asio/doc/requirements/CompletionCondition.qbk -/libs/asio/doc/requirements/CompletionHandler.qbk -/libs/asio/doc/requirements/ConnectCondition.qbk -/libs/asio/doc/requirements/ConnectHandler.qbk -/libs/asio/doc/requirements/ConstBufferSequence.qbk -/libs/asio/doc/requirements/DynamicBuffer.qbk -/libs/asio/doc/requirements/DynamicBuffer_v1.qbk -/libs/asio/doc/requirements/DynamicBuffer_v2.qbk -/libs/asio/doc/requirements/Endpoint.qbk -/libs/asio/doc/requirements/EndpointSequence.qbk -/libs/asio/doc/requirements/ExecutionContext.qbk -/libs/asio/doc/requirements/Executor.qbk -/libs/asio/doc/requirements/GettableSerialPortOption.qbk -/libs/asio/doc/requirements/GettableSocketOption.qbk -/libs/asio/doc/requirements/Handler.qbk -/libs/asio/doc/requirements/HandshakeHandler.qbk -/libs/asio/doc/requirements/InternetProtocol.qbk -/libs/asio/doc/requirements/IoControlCommand.qbk -/libs/asio/doc/requirements/IoObjectService.qbk -/libs/asio/doc/requirements/IteratorConnectHandler.qbk -/libs/asio/doc/requirements/LegacyCompletionHandler.qbk -/libs/asio/doc/requirements/MoveAcceptHandler.qbk -/libs/asio/doc/requirements/MutableBufferSequence.qbk -/libs/asio/doc/requirements/OperationState.qbk -/libs/asio/doc/requirements/ProtoAllocator.qbk -/libs/asio/doc/requirements/Protocol.qbk -/libs/asio/doc/requirements.qbk -/libs/asio/doc/requirements/RangeConnectHandler.qbk -/libs/asio/doc/requirements/ReadHandler.qbk -/libs/asio/doc/requirements/read_write_operations.qbk -/libs/asio/doc/requirements/Receiver.qbk -/libs/asio/doc/requirements/ResolveHandler.qbk -/libs/asio/doc/requirements/Scheduler.qbk -/libs/asio/doc/requirements/Sender.qbk -/libs/asio/doc/requirements/Service.qbk -/libs/asio/doc/requirements/SettableSerialPortOption.qbk -/libs/asio/doc/requirements/SettableSocketOption.qbk -/libs/asio/doc/requirements/ShutdownHandler.qbk -/libs/asio/doc/requirements/SignalHandler.qbk -/libs/asio/doc/requirements/synchronous_socket_operations.qbk -/libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk -/libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk -/libs/asio/doc/requirements/SyncReadStream.qbk -/libs/asio/doc/requirements/SyncWriteStream.qbk -/libs/asio/doc/requirements/TimeTraits.qbk -/libs/asio/doc/requirements/WaitHandler.qbk -/libs/asio/doc/requirements/WaitTraits.qbk -/libs/asio/doc/requirements/WriteHandler.qbk -/libs/asio/doc/std_exception_dox.txt -/libs/asio/doc/std_executors.qbk -/libs/asio/doc/tutorial.dox -/libs/asio/doc/tutorial.qbk -/libs/asio/doc/tutorial.xsl -/libs/asio/doc/using.qbk -/libs/asio/example/ -/libs/asio/example/cpp03/ -/libs/asio/example/cpp03/allocation/ -/libs/asio/example/cpp03/allocation/Jamfile.v2 -/libs/asio/example/cpp03/allocation/server.cpp -/libs/asio/example/cpp03/buffers/ -/libs/asio/example/cpp03/buffers/Jamfile.v2 -/libs/asio/example/cpp03/buffers/reference_counted.cpp -/libs/asio/example/cpp03/chat/ -/libs/asio/example/cpp03/chat/chat_client.cpp -/libs/asio/example/cpp03/chat/chat_message.hpp -/libs/asio/example/cpp03/chat/chat_server.cpp -/libs/asio/example/cpp03/chat/Jamfile.v2 -/libs/asio/example/cpp03/chat/posix_chat_client.cpp -/libs/asio/example/cpp03/echo/ -/libs/asio/example/cpp03/echo/async_tcp_echo_server.cpp -/libs/asio/example/cpp03/echo/async_udp_echo_server.cpp -/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp -/libs/asio/example/cpp03/echo/blocking_tcp_echo_server.cpp -/libs/asio/example/cpp03/echo/blocking_udp_echo_client.cpp -/libs/asio/example/cpp03/echo/blocking_udp_echo_server.cpp -/libs/asio/example/cpp03/echo/Jamfile.v2 -/libs/asio/example/cpp03/fork/ -/libs/asio/example/cpp03/fork/daemon.cpp -/libs/asio/example/cpp03/fork/Jamfile.v2 -/libs/asio/example/cpp03/fork/process_per_connection.cpp -/libs/asio/example/cpp03/http/ -/libs/asio/example/cpp03/http/client/ -/libs/asio/example/cpp03/http/client/async_client.cpp -/libs/asio/example/cpp03/http/client/Jamfile.v2 -/libs/asio/example/cpp03/http/client/sync_client.cpp -/libs/asio/example/cpp03/http/doc_root/ -/libs/asio/example/cpp03/http/doc_root/data_1K.html -/libs/asio/example/cpp03/http/doc_root/data_2K.html -/libs/asio/example/cpp03/http/doc_root/data_4K.html -/libs/asio/example/cpp03/http/doc_root/data_8K.html -/libs/asio/example/cpp03/http/server/ -/libs/asio/example/cpp03/http/server2/ -/libs/asio/example/cpp03/http/server2/connection.cpp -/libs/asio/example/cpp03/http/server2/connection.hpp -/libs/asio/example/cpp03/http/server2/header.hpp -/libs/asio/example/cpp03/http/server2/io_context_pool.cpp -/libs/asio/example/cpp03/http/server2/io_context_pool.hpp -/libs/asio/example/cpp03/http/server2/Jamfile.v2 -/libs/asio/example/cpp03/http/server2/main.cpp -/libs/asio/example/cpp03/http/server2/mime_types.cpp -/libs/asio/example/cpp03/http/server2/mime_types.hpp -/libs/asio/example/cpp03/http/server2/reply.cpp -/libs/asio/example/cpp03/http/server2/reply.hpp -/libs/asio/example/cpp03/http/server2/request_handler.cpp -/libs/asio/example/cpp03/http/server2/request_handler.hpp -/libs/asio/example/cpp03/http/server2/request.hpp -/libs/asio/example/cpp03/http/server2/request_parser.cpp -/libs/asio/example/cpp03/http/server2/request_parser.hpp -/libs/asio/example/cpp03/http/server2/server.cpp -/libs/asio/example/cpp03/http/server2/server.hpp -/libs/asio/example/cpp03/http/server3/ -/libs/asio/example/cpp03/http/server3/connection.cpp -/libs/asio/example/cpp03/http/server3/connection.hpp -/libs/asio/example/cpp03/http/server3/header.hpp -/libs/asio/example/cpp03/http/server3/Jamfile.v2 -/libs/asio/example/cpp03/http/server3/main.cpp -/libs/asio/example/cpp03/http/server3/mime_types.cpp -/libs/asio/example/cpp03/http/server3/mime_types.hpp -/libs/asio/example/cpp03/http/server3/reply.cpp -/libs/asio/example/cpp03/http/server3/reply.hpp -/libs/asio/example/cpp03/http/server3/request_handler.cpp -/libs/asio/example/cpp03/http/server3/request_handler.hpp -/libs/asio/example/cpp03/http/server3/request.hpp -/libs/asio/example/cpp03/http/server3/request_parser.cpp -/libs/asio/example/cpp03/http/server3/request_parser.hpp -/libs/asio/example/cpp03/http/server3/server.cpp -/libs/asio/example/cpp03/http/server3/server.hpp -/libs/asio/example/cpp03/http/server4/ -/libs/asio/example/cpp03/http/server4/file_handler.cpp -/libs/asio/example/cpp03/http/server4/file_handler.hpp -/libs/asio/example/cpp03/http/server4/header.hpp -/libs/asio/example/cpp03/http/server4/Jamfile.v2 -/libs/asio/example/cpp03/http/server4/main.cpp -/libs/asio/example/cpp03/http/server4/mime_types.cpp -/libs/asio/example/cpp03/http/server4/mime_types.hpp -/libs/asio/example/cpp03/http/server4/reply.cpp -/libs/asio/example/cpp03/http/server4/reply.hpp -/libs/asio/example/cpp03/http/server4/request.hpp -/libs/asio/example/cpp03/http/server4/request_parser.cpp -/libs/asio/example/cpp03/http/server4/request_parser.hpp -/libs/asio/example/cpp03/http/server4/server.cpp -/libs/asio/example/cpp03/http/server4/server.hpp -/libs/asio/example/cpp03/http/server/connection.cpp -/libs/asio/example/cpp03/http/server/connection.hpp -/libs/asio/example/cpp03/http/server/connection_manager.cpp -/libs/asio/example/cpp03/http/server/connection_manager.hpp -/libs/asio/example/cpp03/http/server/header.hpp -/libs/asio/example/cpp03/http/server/Jamfile.v2 -/libs/asio/example/cpp03/http/server/main.cpp -/libs/asio/example/cpp03/http/server/mime_types.cpp -/libs/asio/example/cpp03/http/server/mime_types.hpp -/libs/asio/example/cpp03/http/server/reply.cpp -/libs/asio/example/cpp03/http/server/reply.hpp -/libs/asio/example/cpp03/http/server/request_handler.cpp -/libs/asio/example/cpp03/http/server/request_handler.hpp -/libs/asio/example/cpp03/http/server/request.hpp -/libs/asio/example/cpp03/http/server/request_parser.cpp -/libs/asio/example/cpp03/http/server/request_parser.hpp -/libs/asio/example/cpp03/http/server/server.cpp -/libs/asio/example/cpp03/http/server/server.hpp -/libs/asio/example/cpp03/icmp/ -/libs/asio/example/cpp03/icmp/icmp_header.hpp -/libs/asio/example/cpp03/icmp/ipv4_header.hpp -/libs/asio/example/cpp03/icmp/Jamfile.v2 -/libs/asio/example/cpp03/icmp/ping.cpp -/libs/asio/example/cpp03/invocation/ -/libs/asio/example/cpp03/invocation/Jamfile.v2 -/libs/asio/example/cpp03/invocation/prioritised_handlers.cpp -/libs/asio/example/cpp03/iostreams/ -/libs/asio/example/cpp03/iostreams/daytime_client.cpp -/libs/asio/example/cpp03/iostreams/daytime_server.cpp -/libs/asio/example/cpp03/iostreams/http_client.cpp -/libs/asio/example/cpp03/iostreams/Jamfile.v2 -/libs/asio/example/cpp03/local/ -/libs/asio/example/cpp03/local/connect_pair.cpp -/libs/asio/example/cpp03/local/iostream_client.cpp -/libs/asio/example/cpp03/local/Jamfile.v2 -/libs/asio/example/cpp03/local/stream_client.cpp -/libs/asio/example/cpp03/local/stream_server.cpp -/libs/asio/example/cpp03/multicast/ -/libs/asio/example/cpp03/multicast/Jamfile.v2 -/libs/asio/example/cpp03/multicast/receiver.cpp -/libs/asio/example/cpp03/multicast/sender.cpp -/libs/asio/example/cpp03/nonblocking/ -/libs/asio/example/cpp03/nonblocking/Jamfile.v2 -/libs/asio/example/cpp03/nonblocking/third_party_lib.cpp -/libs/asio/example/cpp03/porthopper/ -/libs/asio/example/cpp03/porthopper/client.cpp -/libs/asio/example/cpp03/porthopper/Jamfile.v2 -/libs/asio/example/cpp03/porthopper/protocol.hpp -/libs/asio/example/cpp03/porthopper/server.cpp -/libs/asio/example/cpp03/serialization/ -/libs/asio/example/cpp03/serialization/client.cpp -/libs/asio/example/cpp03/serialization/connection.hpp -/libs/asio/example/cpp03/serialization/Jamfile.v2 -/libs/asio/example/cpp03/serialization/server.cpp -/libs/asio/example/cpp03/serialization/stock.hpp -/libs/asio/example/cpp03/services/ -/libs/asio/example/cpp03/services/basic_logger.hpp -/libs/asio/example/cpp03/services/daytime_client.cpp -/libs/asio/example/cpp03/services/Jamfile.v2 -/libs/asio/example/cpp03/services/logger.hpp -/libs/asio/example/cpp03/services/logger_service.cpp -/libs/asio/example/cpp03/services/logger_service.hpp -/libs/asio/example/cpp03/socks4/ -/libs/asio/example/cpp03/socks4/Jamfile.v2 -/libs/asio/example/cpp03/socks4/socks4.hpp -/libs/asio/example/cpp03/socks4/sync_client.cpp -/libs/asio/example/cpp03/spawn/ -/libs/asio/example/cpp03/spawn/echo_server.cpp -/libs/asio/example/cpp03/spawn/Jamfile.v2 -/libs/asio/example/cpp03/spawn/parallel_grep.cpp -/libs/asio/example/cpp03/ssl/ -/libs/asio/example/cpp03/ssl/ca.pem -/libs/asio/example/cpp03/ssl/client.cpp -/libs/asio/example/cpp03/ssl/dh2048.pem -/libs/asio/example/cpp03/ssl/Jamfile.v2 -/libs/asio/example/cpp03/ssl/README -/libs/asio/example/cpp03/ssl/server.cpp -/libs/asio/example/cpp03/ssl/server.pem -/libs/asio/example/cpp03/timeouts/ -/libs/asio/example/cpp03/timeouts/async_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_udp_client.cpp -/libs/asio/example/cpp03/timeouts/Jamfile.v2 -/libs/asio/example/cpp03/timeouts/server.cpp -/libs/asio/example/cpp03/timers/ -/libs/asio/example/cpp03/timers/Jamfile.v2 -/libs/asio/example/cpp03/timers/time_t_timer.cpp -/libs/asio/example/cpp03/tutorial/ -/libs/asio/example/cpp03/tutorial/daytime1/ -/libs/asio/example/cpp03/tutorial/daytime1/client.cpp -/libs/asio/example/cpp03/tutorial/daytime2/ -/libs/asio/example/cpp03/tutorial/daytime2/server.cpp -/libs/asio/example/cpp03/tutorial/daytime3/ -/libs/asio/example/cpp03/tutorial/daytime3/server.cpp -/libs/asio/example/cpp03/tutorial/daytime4/ -/libs/asio/example/cpp03/tutorial/daytime4/client.cpp -/libs/asio/example/cpp03/tutorial/daytime5/ -/libs/asio/example/cpp03/tutorial/daytime5/server.cpp -/libs/asio/example/cpp03/tutorial/daytime6/ -/libs/asio/example/cpp03/tutorial/daytime6/server.cpp -/libs/asio/example/cpp03/tutorial/daytime7/ -/libs/asio/example/cpp03/tutorial/daytime7/server.cpp -/libs/asio/example/cpp03/tutorial/daytime_dox.txt -/libs/asio/example/cpp03/tutorial/index_dox.txt -/libs/asio/example/cpp03/tutorial/Jamfile.v2 -/libs/asio/example/cpp03/tutorial/timer1/ -/libs/asio/example/cpp03/tutorial/timer1/timer.cpp -/libs/asio/example/cpp03/tutorial/timer2/ -/libs/asio/example/cpp03/tutorial/timer2/timer.cpp -/libs/asio/example/cpp03/tutorial/timer3/ -/libs/asio/example/cpp03/tutorial/timer3/timer.cpp -/libs/asio/example/cpp03/tutorial/timer4/ -/libs/asio/example/cpp03/tutorial/timer4/timer.cpp -/libs/asio/example/cpp03/tutorial/timer5/ -/libs/asio/example/cpp03/tutorial/timer5/timer.cpp -/libs/asio/example/cpp03/tutorial/timer_dox.txt -/libs/asio/example/cpp03/windows/ -/libs/asio/example/cpp03/windows/Jamfile.v2 -/libs/asio/example/cpp03/windows/transmit_file.cpp -/libs/asio/example/cpp11/ -/libs/asio/example/cpp11/allocation/ -/libs/asio/example/cpp11/allocation/Jamfile.v2 -/libs/asio/example/cpp11/allocation/server.cpp -/libs/asio/example/cpp11/buffers/ -/libs/asio/example/cpp11/buffers/Jamfile.v2 -/libs/asio/example/cpp11/buffers/reference_counted.cpp -/libs/asio/example/cpp11/chat/ -/libs/asio/example/cpp11/chat/chat_client.cpp -/libs/asio/example/cpp11/chat/chat_message.hpp -/libs/asio/example/cpp11/chat/chat_server.cpp -/libs/asio/example/cpp11/chat/Jamfile.v2 -/libs/asio/example/cpp11/echo/ -/libs/asio/example/cpp11/echo/async_tcp_echo_server.cpp -/libs/asio/example/cpp11/echo/async_udp_echo_server.cpp -/libs/asio/example/cpp11/echo/blocking_tcp_echo_client.cpp -/libs/asio/example/cpp11/echo/blocking_tcp_echo_server.cpp -/libs/asio/example/cpp11/echo/blocking_udp_echo_client.cpp -/libs/asio/example/cpp11/echo/blocking_udp_echo_server.cpp -/libs/asio/example/cpp11/echo/Jamfile.v2 -/libs/asio/example/cpp11/executors/ -/libs/asio/example/cpp11/executors/actor.cpp -/libs/asio/example/cpp11/executors/bank_account_1.cpp -/libs/asio/example/cpp11/executors/bank_account_2.cpp -/libs/asio/example/cpp11/executors/fork_join.cpp -/libs/asio/example/cpp11/executors/Jamfile.v2 -/libs/asio/example/cpp11/executors/pipeline.cpp -/libs/asio/example/cpp11/executors/priority_scheduler.cpp -/libs/asio/example/cpp11/fork/ -/libs/asio/example/cpp11/fork/daemon.cpp -/libs/asio/example/cpp11/fork/Jamfile.v2 -/libs/asio/example/cpp11/fork/process_per_connection.cpp -/libs/asio/example/cpp11/futures/ -/libs/asio/example/cpp11/futures/daytime_client.cpp -/libs/asio/example/cpp11/futures/Jamfile.v2 -/libs/asio/example/cpp11/handler_tracking/ -/libs/asio/example/cpp11/handler_tracking/async_tcp_echo_server.cpp -/libs/asio/example/cpp11/handler_tracking/custom_tracking.hpp -/libs/asio/example/cpp11/handler_tracking/Jamfile.v2 -/libs/asio/example/cpp11/http/ -/libs/asio/example/cpp11/http/server/ -/libs/asio/example/cpp11/http/server/connection.cpp -/libs/asio/example/cpp11/http/server/connection.hpp -/libs/asio/example/cpp11/http/server/connection_manager.cpp -/libs/asio/example/cpp11/http/server/connection_manager.hpp -/libs/asio/example/cpp11/http/server/header.hpp -/libs/asio/example/cpp11/http/server/Jamfile.v2 -/libs/asio/example/cpp11/http/server/main.cpp -/libs/asio/example/cpp11/http/server/mime_types.cpp -/libs/asio/example/cpp11/http/server/mime_types.hpp -/libs/asio/example/cpp11/http/server/reply.cpp -/libs/asio/example/cpp11/http/server/reply.hpp -/libs/asio/example/cpp11/http/server/request_handler.cpp -/libs/asio/example/cpp11/http/server/request_handler.hpp -/libs/asio/example/cpp11/http/server/request.hpp -/libs/asio/example/cpp11/http/server/request_parser.cpp -/libs/asio/example/cpp11/http/server/request_parser.hpp -/libs/asio/example/cpp11/http/server/server.cpp -/libs/asio/example/cpp11/http/server/server.hpp -/libs/asio/example/cpp11/invocation/ -/libs/asio/example/cpp11/invocation/Jamfile.v2 -/libs/asio/example/cpp11/invocation/prioritised_handlers.cpp -/libs/asio/example/cpp11/iostreams/ -/libs/asio/example/cpp11/iostreams/http_client.cpp -/libs/asio/example/cpp11/iostreams/Jamfile.v2 -/libs/asio/example/cpp11/local/ -/libs/asio/example/cpp11/local/connect_pair.cpp -/libs/asio/example/cpp11/local/iostream_client.cpp -/libs/asio/example/cpp11/local/Jamfile.v2 -/libs/asio/example/cpp11/local/stream_client.cpp -/libs/asio/example/cpp11/local/stream_server.cpp -/libs/asio/example/cpp11/multicast/ -/libs/asio/example/cpp11/multicast/Jamfile.v2 -/libs/asio/example/cpp11/multicast/receiver.cpp -/libs/asio/example/cpp11/multicast/sender.cpp -/libs/asio/example/cpp11/nonblocking/ -/libs/asio/example/cpp11/nonblocking/Jamfile.v2 -/libs/asio/example/cpp11/nonblocking/third_party_lib.cpp -/libs/asio/example/cpp11/operations/ -/libs/asio/example/cpp11/operations/composed_1.cpp -/libs/asio/example/cpp11/operations/composed_2.cpp -/libs/asio/example/cpp11/operations/composed_3.cpp -/libs/asio/example/cpp11/operations/composed_4.cpp -/libs/asio/example/cpp11/operations/composed_5.cpp -/libs/asio/example/cpp11/operations/composed_6.cpp -/libs/asio/example/cpp11/operations/composed_7.cpp -/libs/asio/example/cpp11/operations/composed_8.cpp -/libs/asio/example/cpp11/operations/Jamfile.v2 -/libs/asio/example/cpp11/socks4/ -/libs/asio/example/cpp11/socks4/Jamfile.v2 -/libs/asio/example/cpp11/socks4/socks4.hpp -/libs/asio/example/cpp11/socks4/sync_client.cpp -/libs/asio/example/cpp11/spawn/ -/libs/asio/example/cpp11/spawn/echo_server.cpp -/libs/asio/example/cpp11/spawn/Jamfile.v2 -/libs/asio/example/cpp11/spawn/parallel_grep.cpp -/libs/asio/example/cpp11/ssl/ -/libs/asio/example/cpp11/ssl/ca.pem -/libs/asio/example/cpp11/ssl/client.cpp -/libs/asio/example/cpp11/ssl/dh2048.pem -/libs/asio/example/cpp11/ssl/Jamfile.v2 -/libs/asio/example/cpp11/ssl/README -/libs/asio/example/cpp11/ssl/server.cpp -/libs/asio/example/cpp11/ssl/server.pem -/libs/asio/example/cpp11/timeouts/ -/libs/asio/example/cpp11/timeouts/async_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_udp_client.cpp -/libs/asio/example/cpp11/timeouts/Jamfile.v2 -/libs/asio/example/cpp11/timeouts/server.cpp -/libs/asio/example/cpp11/timers/ -/libs/asio/example/cpp11/timers/Jamfile.v2 -/libs/asio/example/cpp11/timers/time_t_timer.cpp -/libs/asio/example/cpp14/ -/libs/asio/example/cpp14/executors/ -/libs/asio/example/cpp14/executors/actor.cpp -/libs/asio/example/cpp14/executors/async_1.cpp -/libs/asio/example/cpp14/executors/async_2.cpp -/libs/asio/example/cpp14/executors/bank_account_1.cpp -/libs/asio/example/cpp14/executors/bank_account_2.cpp -/libs/asio/example/cpp14/executors/fork_join.cpp -/libs/asio/example/cpp14/executors/Jamfile.v2 -/libs/asio/example/cpp14/executors/pipeline.cpp -/libs/asio/example/cpp14/executors/priority_scheduler.cpp -/libs/asio/example/cpp14/operations/ -/libs/asio/example/cpp14/operations/composed_1.cpp -/libs/asio/example/cpp14/operations/composed_2.cpp -/libs/asio/example/cpp14/operations/composed_3.cpp -/libs/asio/example/cpp14/operations/composed_4.cpp -/libs/asio/example/cpp14/operations/composed_5.cpp -/libs/asio/example/cpp14/operations/composed_6.cpp -/libs/asio/example/cpp14/operations/composed_7.cpp -/libs/asio/example/cpp14/operations/composed_8.cpp -/libs/asio/example/cpp14/operations/Jamfile.v2 -/libs/asio/example/cpp17/ -/libs/asio/example/cpp17/coroutines_ts/ -/libs/asio/example/cpp17/coroutines_ts/chat_server.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp -/libs/asio/example/cpp17/coroutines_ts/range_based_for.cpp -/libs/asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp -/libs/asio/.github/ -/libs/asio/.github/ISSUE_TEMPLATE/ -/libs/asio/.github/ISSUE_TEMPLATE/config.yml -/libs/asio/.github/move.yml -/libs/asio/.github/PULL_REQUEST_TEMPLATE.md -/libs/asio/index.html -/libs/asio/meta/ -/libs/asio/meta/libraries.json -/libs/asio/test/ -/libs/asio/test/archetypes/ -/libs/asio/test/archetypes/async_ops.hpp -/libs/asio/test/archetypes/async_result.hpp -/libs/asio/test/archetypes/gettable_socket_option.hpp -/libs/asio/test/archetypes/io_control_command.hpp -/libs/asio/test/archetypes/settable_socket_option.hpp -/libs/asio/test/associated_allocator.cpp -/libs/asio/test/associated_executor.cpp -/libs/asio/test/async_result.cpp -/libs/asio/test/awaitable.cpp -/libs/asio/test/basic_datagram_socket.cpp -/libs/asio/test/basic_deadline_timer.cpp -/libs/asio/test/basic_raw_socket.cpp -/libs/asio/test/basic_seq_packet_socket.cpp -/libs/asio/test/basic_serial_port.cpp -/libs/asio/test/basic_signal_set.cpp -/libs/asio/test/basic_socket_acceptor.cpp -/libs/asio/test/basic_socket.cpp -/libs/asio/test/basic_streambuf.cpp -/libs/asio/test/basic_stream_socket.cpp -/libs/asio/test/basic_waitable_timer.cpp -/libs/asio/test/bind_executor.cpp -/libs/asio/test/buffer.cpp -/libs/asio/test/buffered_read_stream.cpp -/libs/asio/test/buffered_stream.cpp -/libs/asio/test/buffered_write_stream.cpp -/libs/asio/test/buffers_iterator.cpp -/libs/asio/test/completion_condition.cpp -/libs/asio/test/compose.cpp -/libs/asio/test/connect.cpp -/libs/asio/test/coroutine.cpp -/libs/asio/test/co_spawn.cpp -/libs/asio/test/deadline_timer.cpp -/libs/asio/test/defer.cpp -/libs/asio/test/detached.cpp -/libs/asio/test/dispatch.cpp -/libs/asio/test/error.cpp -/libs/asio/test/execution/ -/libs/asio/test/execution/any_executor.cpp -/libs/asio/test/execution/blocking_adaptation.cpp -/libs/asio/test/execution/blocking.cpp -/libs/asio/test/execution/bulk_execute.cpp -/libs/asio/test/execution/bulk_guarantee.cpp -/libs/asio/test/execution/connect.cpp -/libs/asio/test/execution/context_as.cpp -/libs/asio/test/execution_context.cpp -/libs/asio/test/execution/execute.cpp -/libs/asio/test/execution/executor.cpp -/libs/asio/test/execution/invocable_archetype.cpp -/libs/asio/test/execution/Jamfile.v2 -/libs/asio/test/execution/mapping.cpp -/libs/asio/test/execution/operation_state.cpp -/libs/asio/test/execution/outstanding_work.cpp -/libs/asio/test/execution/prefer_only.cpp -/libs/asio/test/execution/receiver.cpp -/libs/asio/test/execution/relationship.cpp -/libs/asio/test/execution/schedule.cpp -/libs/asio/test/execution/scheduler.cpp -/libs/asio/test/execution/sender.cpp -/libs/asio/test/execution/set_done.cpp -/libs/asio/test/execution/set_error.cpp -/libs/asio/test/execution/set_value.cpp -/libs/asio/test/execution/start.cpp -/libs/asio/test/execution/submit.cpp -/libs/asio/test/executor.cpp -/libs/asio/test/executor_work_guard.cpp -/libs/asio/test/generic/ -/libs/asio/test/generic/basic_endpoint.cpp -/libs/asio/test/generic/datagram_protocol.cpp -/libs/asio/test/generic/raw_protocol.cpp -/libs/asio/test/generic/seq_packet_protocol.cpp -/libs/asio/test/generic/stream_protocol.cpp -/libs/asio/test/high_resolution_timer.cpp -/libs/asio/test/io_context.cpp -/libs/asio/test/io_context_strand.cpp -/libs/asio/test/ip/ -/libs/asio/test/ip/address.cpp -/libs/asio/test/ip/address_v4.cpp -/libs/asio/test/ip/address_v4_iterator.cpp -/libs/asio/test/ip/address_v4_range.cpp -/libs/asio/test/ip/address_v6.cpp -/libs/asio/test/ip/address_v6_iterator.cpp -/libs/asio/test/ip/address_v6_range.cpp -/libs/asio/test/ip/basic_endpoint.cpp -/libs/asio/test/ip/basic_resolver.cpp -/libs/asio/test/ip/basic_resolver_entry.cpp -/libs/asio/test/ip/basic_resolver_iterator.cpp -/libs/asio/test/ip/basic_resolver_query.cpp -/libs/asio/test/ip/host_name.cpp -/libs/asio/test/ip/icmp.cpp -/libs/asio/test/ip/multicast.cpp -/libs/asio/test/ip/network_v4.cpp -/libs/asio/test/ip/network_v6.cpp -/libs/asio/test/ip/resolver_query_base.cpp -/libs/asio/test/ip/tcp.cpp -/libs/asio/test/ip/udp.cpp -/libs/asio/test/ip/unicast.cpp -/libs/asio/test/ip/v6_only.cpp -/libs/asio/test/is_read_buffered.cpp -/libs/asio/test/is_write_buffered.cpp -/libs/asio/test/Jamfile.v2 -/libs/asio/test/latency/ -/libs/asio/test/latency/allocator.hpp -/libs/asio/test/latency/high_res_clock.hpp -/libs/asio/test/latency/Jamfile.v2 -/libs/asio/test/latency/tcp_client.cpp -/libs/asio/test/latency/tcp_server.cpp -/libs/asio/test/latency/udp_client.cpp -/libs/asio/test/latency/udp_server.cpp -/libs/asio/test/local/ -/libs/asio/test/local/basic_endpoint.cpp -/libs/asio/test/local/connect_pair.cpp -/libs/asio/test/local/datagram_protocol.cpp -/libs/asio/test/local/stream_protocol.cpp -/libs/asio/test/packaged_task.cpp -/libs/asio/test/placeholders.cpp -/libs/asio/test/posix/ -/libs/asio/test/posix/basic_descriptor.cpp -/libs/asio/test/posix/basic_stream_descriptor.cpp -/libs/asio/test/posix/descriptor_base.cpp -/libs/asio/test/posix/descriptor.cpp -/libs/asio/test/posix/stream_descriptor.cpp -/libs/asio/test/post.cpp -/libs/asio/test/properties/ -/libs/asio/test/properties/cpp03/ -/libs/asio/test/properties/cpp03/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_prefer_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp03/can_query_free.cpp -/libs/asio/test/properties/cpp03/can_query_member.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_query_static.cpp -/libs/asio/test/properties/cpp03/can_query_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_concept_free.cpp -/libs/asio/test/properties/cpp03/can_require_concept_member.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_concept_static.cpp -/libs/asio/test/properties/cpp03/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_free.cpp -/libs/asio/test/properties/cpp03/can_require_member.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_static.cpp -/libs/asio/test/properties/cpp03/can_require_unsupported.cpp -/libs/asio/test/properties/cpp03/Jamfile.v2 -/libs/asio/test/properties/cpp03/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp03/prefer_free_require.cpp -/libs/asio/test/properties/cpp03/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp03/prefer_member_require.cpp -/libs/asio/test/properties/cpp03/prefer_static.cpp -/libs/asio/test/properties/cpp03/prefer_unsupported.cpp -/libs/asio/test/properties/cpp03/query_free.cpp -/libs/asio/test/properties/cpp03/query_member.cpp -/libs/asio/test/properties/cpp03/query_static.cpp -/libs/asio/test/properties/cpp03/require_concept_free.cpp -/libs/asio/test/properties/cpp03/require_concept_member.cpp -/libs/asio/test/properties/cpp03/require_concept_static.cpp -/libs/asio/test/properties/cpp03/require_free.cpp -/libs/asio/test/properties/cpp03/require_member.cpp -/libs/asio/test/properties/cpp03/require_static.cpp -/libs/asio/test/properties/cpp11/ -/libs/asio/test/properties/cpp11/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_prefer_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp11/can_query_free.cpp -/libs/asio/test/properties/cpp11/can_query_member.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_query_static.cpp -/libs/asio/test/properties/cpp11/can_query_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_concept_free.cpp -/libs/asio/test/properties/cpp11/can_require_concept_member.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_concept_static.cpp -/libs/asio/test/properties/cpp11/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_free.cpp -/libs/asio/test/properties/cpp11/can_require_member.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_static.cpp -/libs/asio/test/properties/cpp11/can_require_unsupported.cpp -/libs/asio/test/properties/cpp11/Jamfile.v2 -/libs/asio/test/properties/cpp11/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp11/prefer_free_require.cpp -/libs/asio/test/properties/cpp11/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp11/prefer_member_require.cpp -/libs/asio/test/properties/cpp11/prefer_static.cpp -/libs/asio/test/properties/cpp11/prefer_unsupported.cpp -/libs/asio/test/properties/cpp11/query_free.cpp -/libs/asio/test/properties/cpp11/query_member.cpp -/libs/asio/test/properties/cpp11/query_static.cpp -/libs/asio/test/properties/cpp11/require_concept_free.cpp -/libs/asio/test/properties/cpp11/require_concept_member.cpp -/libs/asio/test/properties/cpp11/require_concept_static.cpp -/libs/asio/test/properties/cpp11/require_free.cpp -/libs/asio/test/properties/cpp11/require_member.cpp -/libs/asio/test/properties/cpp11/require_static.cpp -/libs/asio/test/properties/cpp14/ -/libs/asio/test/properties/cpp14/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_prefer_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp14/can_query_free.cpp -/libs/asio/test/properties/cpp14/can_query_member.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_query_static.cpp -/libs/asio/test/properties/cpp14/can_query_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_concept_free.cpp -/libs/asio/test/properties/cpp14/can_require_concept_member.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_concept_static.cpp -/libs/asio/test/properties/cpp14/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_free.cpp -/libs/asio/test/properties/cpp14/can_require_member.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_static.cpp -/libs/asio/test/properties/cpp14/can_require_unsupported.cpp -/libs/asio/test/properties/cpp14/Jamfile.v2 -/libs/asio/test/properties/cpp14/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp14/prefer_free_require.cpp -/libs/asio/test/properties/cpp14/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp14/prefer_member_require.cpp -/libs/asio/test/properties/cpp14/prefer_static.cpp -/libs/asio/test/properties/cpp14/prefer_unsupported.cpp -/libs/asio/test/properties/cpp14/query_free.cpp -/libs/asio/test/properties/cpp14/query_member.cpp -/libs/asio/test/properties/cpp14/query_static.cpp -/libs/asio/test/properties/cpp14/require_concept_free.cpp -/libs/asio/test/properties/cpp14/require_concept_member.cpp -/libs/asio/test/properties/cpp14/require_concept_static.cpp -/libs/asio/test/properties/cpp14/require_free.cpp -/libs/asio/test/properties/cpp14/require_member.cpp -/libs/asio/test/properties/cpp14/require_static.cpp -/libs/asio/test/read_at.cpp -/libs/asio/test/read.cpp -/libs/asio/test/read_until.cpp -/libs/asio/test/redirect_error.cpp -/libs/asio/test/serial_port_base.cpp -/libs/asio/test/serial_port.cpp -/libs/asio/test/signal_set.cpp -/libs/asio/test/socket_base.cpp -/libs/asio/test/ssl/ -/libs/asio/test/ssl/context_base.cpp -/libs/asio/test/ssl/context.cpp -/libs/asio/test/ssl/error.cpp -/libs/asio/test/ssl/host_name_verification.cpp -/libs/asio/test/ssl/Jamfile.v2 -/libs/asio/test/ssl/rfc2818_verification.cpp -/libs/asio/test/ssl/stream_base.cpp -/libs/asio/test/ssl/stream.cpp -/libs/asio/test/static_thread_pool.cpp -/libs/asio/test/steady_timer.cpp -/libs/asio/test/strand.cpp -/libs/asio/test/streambuf.cpp -/libs/asio/test/system_context.cpp -/libs/asio/test/system_executor.cpp -/libs/asio/test/system_timer.cpp -/libs/asio/test/this_coro.cpp -/libs/asio/test/thread_pool.cpp -/libs/asio/test/time_traits.cpp -/libs/asio/test/ts/ -/libs/asio/test/ts/buffer.cpp -/libs/asio/test/ts/executor.cpp -/libs/asio/test/ts/internet.cpp -/libs/asio/test/ts/io_context.cpp -/libs/asio/test/ts/net.cpp -/libs/asio/test/ts/netfwd.cpp -/libs/asio/test/ts/socket.cpp -/libs/asio/test/ts/timer.cpp -/libs/asio/test/unit_test.hpp -/libs/asio/test/use_awaitable.cpp -/libs/asio/test/use_future.cpp -/libs/asio/test/uses_executor.cpp -/libs/asio/test/wait_traits.cpp -/libs/asio/test/windows/ -/libs/asio/test/windows/basic_object_handle.cpp -/libs/asio/test/windows/basic_overlapped_handle.cpp -/libs/asio/test/windows/basic_random_access_handle.cpp -/libs/asio/test/windows/basic_stream_handle.cpp -/libs/asio/test/windows/object_handle.cpp -/libs/asio/test/windows/overlapped_handle.cpp -/libs/asio/test/windows/overlapped_ptr.cpp -/libs/asio/test/windows/random_access_handle.cpp -/libs/asio/test/windows/stream_handle.cpp -/libs/asio/test/write_at.cpp -/libs/asio/test/write.cpp -/libs/asio/tools/ -/libs/asio/tools/handlerlive.pl -/libs/asio/tools/handlertree.pl -/libs/asio/tools/handlerviz.pl -/libs/system/ -/libs/system/appveyor.yml -/libs/system/build/ -/libs/system/build/Jamfile -/libs/system/build/Jamfile.v2 -/libs/system/CMakeLists.txt -/libs/system/doc/ -/libs/system/doc/Jamfile -/libs/system/doc/system/ -/libs/system/doc/system/acknowledgements.adoc -/libs/system/doc/system.adoc -/libs/system/doc/system/changes.adoc -/libs/system/doc/system/copyright.adoc -/libs/system/doc/system-docinfo-footer.html -/libs/system/doc/system/history.adoc -/libs/system/doc/system/introduction.adoc -/libs/system/doc/system/rationale.adoc -/libs/system/doc/system/reference.adoc -/libs/system/index.html -/libs/system/meta/ -/libs/system/meta/libraries.json -/libs/system/src/ -/libs/system/src/error_code.cpp -/libs/system/test/ -/libs/system/test/after_main_test.cpp -/libs/system/test/before_main_test.cpp -/libs/system/test/cmake_install_test/ -/libs/system/test/cmake_install_test/CMakeLists.txt -/libs/system/test/CMakeLists.txt -/libs/system/test/cmake_subdir_test/ -/libs/system/test/cmake_subdir_test/CMakeLists.txt -/libs/system/test/config_test.cpp -/libs/system/test/constexpr_test.cpp -/libs/system/test/cygwin_error_test.cpp -/libs/system/test/dynamic_link_test.cpp -/libs/system/test/errc_test2.cpp -/libs/system/test/errc_test.cpp -/libs/system/test/error_category_test2.cpp -/libs/system/test/error_category_test.cpp -/libs/system/test/error_code_test.cpp -/libs/system/test/error_code_user_test.cpp -/libs/system/test/error_condition_test2.cpp -/libs/system/test/error_condition_test.cpp -/libs/system/test/failed_constexpr_test.cpp -/libs/system/test/failed_test.cpp -/libs/system/test/generic_category_test2.cpp -/libs/system/test/generic_category_test3.cpp -/libs/system/test/generic_category_test.cpp -/libs/system/test/header_only_test.cpp -/libs/system/test/initialization_test.cpp -/libs/system/test/is_error_code_enum_test.cpp -/libs/system/test/is_error_condition_enum_test.cpp -/libs/system/test/Jamfile.v2 -/libs/system/test/linux_error_test.cpp -/libs/system/test/msvc/ -/libs/system/test/msvc/common.props -/libs/system/test/msvc/config_test/ -/libs/system/test/msvc/config_test/config_test.vcxproj -/libs/system/test/msvc/error_code_test/ -/libs/system/test/msvc/error_code_test/error_code_test.vcxproj -/libs/system/test/msvc/header_only_error_code_test/ -/libs/system/test/msvc/header_only_error_code_test/header_only_error_code_test.vcxproj -/libs/system/test/msvc/header_only_test/ -/libs/system/test/msvc/header_only_test/header_only_test.vcxproj -/libs/system/test/msvc/std_interop_test/ -/libs/system/test/msvc/std_interop_test/std_interop_test.vcxproj -/libs/system/test/msvc/system-dll/ -/libs/system/test/msvc/system-dll/system-dll.vcxproj -/libs/system/test/msvc/system.sln -/libs/system/test/quick.cpp -/libs/system/test/single_instance_1.cpp -/libs/system/test/single_instance_2.cpp -/libs/system/test/single_instance_test.cpp -/libs/system/test/std_interop_test.cpp -/libs/system/test/std_mismatch_test.cpp -/libs/system/test/std_single_instance_1.cpp -/libs/system/test/std_single_instance_2.cpp -/libs/system/test/std_single_instance_test.cpp -/libs/system/test/system_category_test2.cpp -/libs/system/test/system_category_test3.cpp -/libs/system/test/system_category_test.cpp -/libs/system/test/system_error_test.cpp -/libs/system/test/throws_assign_fail.cpp -/libs/system/test/throw_test.cpp -/libs/system/test/warnings_test.cpp -/libs/system/test/win32_hresult_test.cpp -/libs/system/test/windows_error_test.cpp -/libs/system/.travis.yml -/README.txt diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/boostify.pl b/ui/external/fineftp-server/thirdparty/asio/asio/boostify.pl deleted file mode 100755 index 460aab95..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/boostify.pl +++ /dev/null @@ -1,635 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use File::Path; - -our $boost_dir = "boostified"; - -sub print_line -{ - my ($output, $line, $from, $lineno) = @_; - - # Warn if the resulting line is >80 characters wide. - if (length($line) > 80) - { - if ($from =~ /\.[chi]pp$/) - { - print("Warning: $from:$lineno: output >80 characters wide.\n"); - } - } - - # Write the output. - print($output $line . "\n"); -} - -sub source_contains_asio_thread_usage -{ - my ($from) = @_; - - # Open the input file. - open(my $input, "<$from") or die("Can't open $from for reading"); - - # Check file for use of asio::thread. - while (my $line = <$input>) - { - chomp($line); - if ($line =~ /asio::thread/) - { - close($input); - return 1; - } - elsif ($line =~ /^ *thread /) - { - close($input); - return 1; - } - } - - close($input); - return 0; -} - -sub source_contains_asio_include -{ - my ($from) = @_; - - # Open the input file. - open(my $input, "<$from") or die("Can't open $from for reading"); - - # Check file for inclusion of asio.hpp. - while (my $line = <$input>) - { - chomp($line); - if ($line =~ /# *include [<"]asio\.hpp[>"]/) - { - close($input); - return 1; - } - } - - close($input); - return 0; -} - -sub copy_source_file -{ - my ($from, $to) = @_; - - # Ensure the output directory exists. - my $dir = $to; - $dir =~ s/[^\/]*$//; - mkpath($dir); - - # First determine whether the file makes any use of asio::thread. - my $uses_asio_thread = source_contains_asio_thread_usage($from); - - my $includes_asio = source_contains_asio_include($from); - - my $is_asio_hpp = 0; - $is_asio_hpp = 1 if ($from =~ /asio\.hpp/); - - my $needs_doc_link = 0; - $needs_doc_link = 1 if ($is_asio_hpp); - - my $is_error_hpp = 0; - $is_error_hpp = 1 if ($from =~ /asio\/error\.hpp/); - - my $is_qbk = 0; - $is_qbk = 1 if ($from =~ /.qbk$/); - - my $is_xsl = 0; - $is_xsl = 1 if ($from =~ /.xsl$/); - - my $is_test = 0; - $is_test = 1 if ($from =~ /tests\/unit/); - - my $is_coroutine_related = 0; - $is_coroutine_related = 1 if ($from =~ /await/); - - # Open the files. - open(my $input, "<$from") or die("Can't open $from for reading"); - open(my $output, ">$to") or die("Can't open $to for writing"); - - # Copy the content. - my $lineno = 1; - while (my $line = <$input>) - { - chomp($line); - - # Unconditional replacements. - $line =~ s/[\\@]ref boost_bind/boost::bind()/g; - if ($from =~ /.*\.txt$/) - { - $line =~ s/[\\@]ref async_read/boost::asio::async_read()/g; - $line =~ s/[\\@]ref async_write/boost::asio::async_write()/g; - } - if ($line =~ /asio_detail_posix_thread_function/) - { - $line =~ s/asio_detail_posix_thread_function/boost_asio_detail_posix_thread_function/g; - } - if ($line =~ /asio_signal_handler/) - { - $line =~ s/asio_signal_handler/boost_asio_signal_handler/g; - } - if ($line =~ /ASIO_/ && !($line =~ /BOOST_ASIO_/)) - { - $line =~ s/ASIO_/BOOST_ASIO_/g; - } - - # Extra replacements for quickbook and XSL source only. - if ($is_qbk || $is_xsl) - { - $line =~ s/asio\.examples/boost_asio.examples/g; - $line =~ s/asio\.history/boost_asio.history/g; - $line =~ s/asio\.index/boost_asio.index/g; - $line =~ s/asio\.net_ts/boost_asio.net_ts/g; - $line =~ s/asio\.std_executors/boost_asio.std_executors/g; - $line =~ s/asio\.overview/boost_asio.overview/g; - $line =~ s/asio\.reference/boost_asio.reference/g; - $line =~ s/asio\.tutorial/boost_asio.tutorial/g; - $line =~ s/asio\.using/boost_asio.using/g; - $line =~ s/Asio/Boost.Asio/g; - $line =~ s/changes made in each release/changes made in each Boost release/g; - $line =~ s/\[\$/[\$boost_asio\//g; - $line =~ s/\[@\.\.\/src\/examples/[\@boost_asio\/example/g; - $line =~ s/include\/asio/boost\/asio/g; - $line =~ s/\^asio/^boost\/asio/g; - $line =~ s/namespaceasio/namespaceboost_1_1asio/g; - $line =~ s/ \(\[\@examples\/diffs.*$//; - } - - # Conditional replacements. - if ($line =~ /^( *)namespace asio \{/) - { - if ($is_qbk) - { - print_line($output, $1 . "namespace boost { namespace asio {", $from, $lineno); - } - else - { - print_line($output, $1 . "namespace boost {", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - } - elsif ($line =~ /^( *)} \/\/ namespace asio$/) - { - if ($is_qbk) - { - print_line($output, $1 . "} } // namespace boost::asio", $from, $lineno); - } - else - { - print_line($output, $line, $from, $lineno); - print_line($output, $1 . "} // namespace boost", $from, $lineno); - } - } - elsif ($line =~ /^(# *include )[<"](asio\.hpp)[>"]$/) - { - print_line($output, $1 . "", $from, $lineno); - if ($uses_asio_thread) - { - print_line($output, $1 . "", $from, $lineno) if (!$is_test); - $uses_asio_thread = 0; - } - } - elsif ($line =~ /^(# *include )[<"]boost\/.*[>"].*$/) - { - if (!$includes_asio && $uses_asio_thread) - { - print_line($output, $1 . "", $from, $lineno) if (!$is_test); - $uses_asio_thread = 0; - } - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^(# *include )[<"]asio\/thread\.hpp[>"]/) - { - if ($is_test) - { - print_line($output, $1 . "", $from, $lineno); - } - else - { - # Line is removed. - } - } - elsif ($line =~ /(# *include )[<"]asio\/error_code\.hpp[>"]/) - { - if ($is_asio_hpp) - { - # Line is removed. - } - else - { - print_line($output, $1 . "", $from, $lineno) if ($is_error_hpp); - print_line($output, $1 . "", $from, $lineno); - } - } - elsif ($line =~ /# *include [<"]asio\/impl\/error_code\.[hi]pp[>"]/) - { - # Line is removed. - } - elsif ($line =~ /(# *include )[<"]asio\/system_error\.hpp[>"]/) - { - if ($is_asio_hpp) - { - # Line is removed. - } - else - { - print_line($output, $1 . "", $from, $lineno); - } - } - elsif ($line =~ /(^.*# *include )[<"](asio\/[^>"]*)[>"](.*)$/) - { - print_line($output, $1 . "" . $3, $from, $lineno); - } - elsif ($line =~ /#.*defined\(.*ASIO_HAS_STD_SYSTEM_ERROR\)$/) - { - # Line is removed. - } - elsif ($line =~ /asio::thread\b/) - { - if ($is_test) - { - $line =~ s/asio::thread/asio::detail::thread/g; - } - else - { - $line =~ s/asio::thread/boost::thread/g; - } - if (!($line =~ /boost::asio::/)) - { - $line =~ s/asio::/boost::asio::/g; - } - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^( *)thread( .*)$/ && !$is_qbk) - { - if ($is_test) - { - print_line($output, $1 . "boost::asio::detail::thread" . $2, $from, $lineno); - } - else - { - print_line($output, $1 . "boost::thread" . $2, $from, $lineno); - } - } - elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related) - { - print_line($output, "namespace boost {", $from, $lineno); - print_line($output, "namespace system {", $from, $lineno); - } - elsif ($line =~ /std::error_code/) - { - $line =~ s/std::error_code/boost::system::error_code/g; - $line =~ s/asio::/boost::asio::/g if !$is_xsl; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related) - { - print_line($output, "} // namespace system", $from, $lineno); - print_line($output, "} // namespace boost", $from, $lineno); - } - elsif ($line =~ /asio::/ && !($line =~ /boost::asio::/)) - { - $line =~ s/asio::error_code/boost::system::error_code/g; - $line =~ s/asio::error_category/boost::system::error_category/g; - $line =~ s/asio::system_category/boost::system::system_category/g; - $line =~ s/asio::system_error/boost::system::system_error/g; - $line =~ s/asio::/boost::asio::/g if !$is_xsl; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /using namespace asio/) - { - $line =~ s/using namespace asio/using namespace boost::asio/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_alloc_helpers/) - { - $line =~ s/asio_handler_alloc_helpers/boost_asio_handler_alloc_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_cont_helpers/) - { - $line =~ s/asio_handler_cont_helpers/boost_asio_handler_cont_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_invoke_helpers/) - { - $line =~ s/asio_handler_invoke_helpers/boost_asio_handler_invoke_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /[\\@]ref boost_bind/) - { - $line =~ s/[\\@]ref boost_bind/boost::bind()/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /( *)\[category template\]/) - { - print_line($output, $1 . "[authors [Kohlhoff, Christopher]]", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /boostify: non-boost docs start here/) - { - while ($line = <$input>) - { - last if $line =~ /boostify: non-boost docs end here/; - } - } - elsif ($line =~ /boostify: non-boost code starts here/) - { - while ($line = <$input>) - { - last if $line =~ /boostify: non-boost code ends here/; - } - } - elsif ($line =~ /^$/ && $needs_doc_link) - { - $needs_doc_link = 0; - print_line($output, "// See www.boost.org/libs/asio for documentation.", $from, $lineno); - print_line($output, "//", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - else - { - print_line($output, $line, $from, $lineno); - } - ++$lineno; - } - - # Ok, we're done. - close($input); - close($output); -} - -sub copy_include_files -{ - my @dirs = ( - "include", - "include/asio", - "include/asio/detail", - "include/asio/detail/impl", - "include/asio/execution", - "include/asio/execution/detail", - "include/asio/execution/impl", - "include/asio/experimental", - "include/asio/experimental/impl", - "include/asio/generic", - "include/asio/generic/detail", - "include/asio/generic/detail/impl", - "include/asio/impl", - "include/asio/ip", - "include/asio/ip/impl", - "include/asio/ip/detail", - "include/asio/ip/detail/impl", - "include/asio/local", - "include/asio/local/detail", - "include/asio/local/detail/impl", - "include/asio/posix", - "include/asio/ssl", - "include/asio/ssl/detail", - "include/asio/ssl/detail/impl", - "include/asio/ssl/impl", - "include/asio/ssl/old", - "include/asio/ssl/old/detail", - "include/asio/traits", - "include/asio/ts", - "include/asio/windows"); - - foreach my $dir (@dirs) - { - our $boost_dir; - my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp"), glob("$dir/*cpp") ); - foreach my $file (@files) - { - if ($file ne "include/asio/thread.hpp" - and $file ne "include/asio/error_code.hpp" - and $file ne "include/asio/system_error.hpp" - and $file ne "include/asio/impl/error_code.hpp" - and $file ne "include/asio/impl/error_code.ipp") - { - my $from = $file; - my $to = $file; - $to =~ s/^include\//$boost_dir\/libs\/asio\/include\/boost\//; - copy_source_file($from, $to); - } - } - } -} - -sub create_lib_directory -{ - my @dirs = ( - "doc", - "example", - "test"); - - our $boost_dir; - foreach my $dir (@dirs) - { - mkpath("$boost_dir/libs/asio/$dir"); - } -} - -sub copy_unit_tests -{ - my @dirs = ( - "src/tests/unit", - "src/tests/unit/archetypes", - "src/tests/unit/execution", - "src/tests/unit/generic", - "src/tests/unit/ip", - "src/tests/unit/local", - "src/tests/unit/posix", - "src/tests/unit/ssl", - "src/tests/unit/ts", - "src/tests/unit/windows"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - if ($file ne "src/tests/unit/thread.cpp" - and $file ne "src/tests/unit/error_handler.cpp" - and $file ne "src/tests/unit/unit_test.cpp") - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/unit\//$boost_dir\/libs\/asio\/test\//; - copy_source_file($from, $to); - } - } - } -} - -sub copy_latency_tests -{ - my @dirs = ( - "src/tests/latency"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/latency\//$boost_dir\/libs\/asio\/test\/latency\//; - copy_source_file($from, $to); - } - } -} - -sub copy_properties_tests -{ - my @dirs = ( - "src/tests/properties/cpp03", - "src/tests/properties/cpp11", - "src/tests/properties/cpp14"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/properties\//$boost_dir\/libs\/asio\/test\/properties\//; - copy_source_file($from, $to); - } - } -} - -sub copy_examples -{ - my @dirs = ( - "src/examples/cpp03/allocation", - "src/examples/cpp03/buffers", - "src/examples/cpp03/chat", - "src/examples/cpp03/echo", - "src/examples/cpp03/fork", - "src/examples/cpp03/http/client", - "src/examples/cpp03/http/doc_root", - "src/examples/cpp03/http/server", - "src/examples/cpp03/http/server2", - "src/examples/cpp03/http/server3", - "src/examples/cpp03/http/server4", - "src/examples/cpp03/icmp", - "src/examples/cpp03/invocation", - "src/examples/cpp03/iostreams", - "src/examples/cpp03/local", - "src/examples/cpp03/multicast", - "src/examples/cpp03/nonblocking", - "src/examples/cpp03/porthopper", - "src/examples/cpp03/serialization", - "src/examples/cpp03/services", - "src/examples/cpp03/socks4", - "src/examples/cpp03/spawn", - "src/examples/cpp03/ssl", - "src/examples/cpp03/timeouts", - "src/examples/cpp03/timers", - "src/examples/cpp03/tutorial", - "src/examples/cpp03/tutorial/daytime1", - "src/examples/cpp03/tutorial/daytime2", - "src/examples/cpp03/tutorial/daytime3", - "src/examples/cpp03/tutorial/daytime4", - "src/examples/cpp03/tutorial/daytime5", - "src/examples/cpp03/tutorial/daytime6", - "src/examples/cpp03/tutorial/daytime7", - "src/examples/cpp03/tutorial/timer1", - "src/examples/cpp03/tutorial/timer2", - "src/examples/cpp03/tutorial/timer3", - "src/examples/cpp03/tutorial/timer4", - "src/examples/cpp03/tutorial/timer5", - "src/examples/cpp03/windows", - "src/examples/cpp11/allocation", - "src/examples/cpp11/buffers", - "src/examples/cpp11/chat", - "src/examples/cpp11/echo", - "src/examples/cpp11/executors", - "src/examples/cpp11/fork", - "src/examples/cpp11/futures", - "src/examples/cpp11/handler_tracking", - "src/examples/cpp11/http/server", - "src/examples/cpp11/invocation", - "src/examples/cpp11/iostreams", - "src/examples/cpp11/local", - "src/examples/cpp11/multicast", - "src/examples/cpp11/nonblocking", - "src/examples/cpp11/operations", - "src/examples/cpp11/socks4", - "src/examples/cpp11/spawn", - "src/examples/cpp11/ssl", - "src/examples/cpp11/timeouts", - "src/examples/cpp11/timers", - "src/examples/cpp14/executors", - "src/examples/cpp14/operations", - "src/examples/cpp17/coroutines_ts"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( - glob("$dir/*.*pp"), - glob("$dir/*.html"), - glob("$dir/Jamfile*"), - glob("$dir/*.pem"), - glob("$dir/README*"), - glob("$dir/*.txt")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/examples\//$boost_dir\/libs\/asio\/example\//; - copy_source_file($from, $to); - } - } -} - -sub copy_doc -{ - our $boost_dir; - my @files = ( - "src/doc/asio.qbk", - "src/doc/examples.qbk", - "src/doc/net_ts.qbk", - "src/doc/reference.xsl", - "src/doc/std_executors.qbk", - "src/doc/tutorial.xsl", - glob("src/doc/overview/*.qbk"), - glob("src/doc/requirements/*.qbk")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/doc\//$boost_dir\/libs\/asio\/doc\//; - copy_source_file($from, $to); - } -} - -sub copy_tools -{ - our $boost_dir; - my @files = ( - glob("src/tools/*.pl")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tools\//$boost_dir\/libs\/asio\/tools\//; - copy_source_file($from, $to); - } -} - -copy_include_files(); -create_lib_directory(); -copy_unit_tests(); -copy_latency_tests(); -copy_properties_tests(); -copy_examples(); -copy_doc(); -copy_tools(); diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/configure.ac b/ui/external/fineftp-server/thirdparty/asio/asio/configure.ac deleted file mode 100644 index 5085a998..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/configure.ac +++ /dev/null @@ -1,230 +0,0 @@ -AC_INIT(asio, [1.18.1]) -AC_CONFIG_SRCDIR(include/asio.hpp) -AM_MAINTAINER_MODE -AM_INIT_AUTOMAKE([tar-ustar]) - -AC_CANONICAL_HOST -AM_PROG_CC_C_O -AC_PROG_CXX -AC_LANG(C++) -AC_PROG_RANLIB - -AC_DEFINE(_REENTRANT, [1], [Define this]) - -AC_ARG_WITH(boost, - AC_HELP_STRING([--with-boost=DIR],[location of boost distribution]), -[ - if test "${withval}" = no; then - STANDALONE="yes" - else - if test "${withval}" != system; then - CPPFLAGS="$CPPFLAGS -I${withval}" - LIBS="$LIBS -L${withval}/stage/lib" - fi - CPPFLAGS="$CPPFLAGS -DASIO_ENABLE_BOOST -DBOOST_CHRONO_HEADER_ONLY -DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING" - fi -], -[ - STANDALONE="yes" -]) - -AC_ARG_ENABLE(separate-compilation, -[ --enable-separate-compilation separate compilation of asio source], -[ - SEPARATE_COMPILATION=yes -]) - -AC_ARG_ENABLE(boost-coroutine, -[ --enable-boost-coroutine use Boost.Coroutine to implement stackful coroutines], -[ - HAVE_BOOST_COROUTINE=yes -]) - -if test "$STANDALONE" != yes; then - AC_CHECK_HEADER([boost/noncopyable.hpp],, - [ - echo "Can't find boost headers. Please check the location of the boost" - echo "distribution and rerun configure using the --with-boost=DIR option." - echo "Alternatively, run with --without-boost to enable standalone build." - exit 1 - ],[]) -fi - -AC_ARG_WITH(openssl, - AC_HELP_STRING([--with-openssl=DIR],[location of openssl]), -[ - CPPFLAGS="$CPPFLAGS -I${withval}/include" - LIBS="$LIBS -L${withval}/lib" -],[]) - -AC_CHECK_HEADER([openssl/ssl.h],, -[ - OPENSSL_FOUND=no -],[]) - -if test x$OPENSSL_FOUND != xno; then - LIBS="$LIBS -lssl -lcrypto" -fi - -AM_CONDITIONAL(HAVE_OPENSSL,test x$OPENSSL_FOUND != xno) - -WINDOWS=no -case $host in - *-*-linux*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - LIBS="$LIBS -lrt" - ;; - *-*-solaris*) - if test "$GXX" = yes; then - CXXFLAGS="$CXXFLAGS -D_PTHREADS" - else - # We'll assume Sun's CC. - CXXFLAGS="$CXXFLAGS -mt" - fi - LIBS="$LIBS -lsocket -lnsl -lpthread" - ;; - *-*-mingw32*) - CXXFLAGS="$CXXFLAGS -mthreads" - LDFLAGS="$LDFLAGS -mthreads" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-*-mingw64*) - CXXFLAGS="$CXXFLAGS -mthreads" - LDFLAGS="$LDFLAGS -mthreads" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-pc-cygwin*) - CXXFLAGS="$CXXFLAGS -D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0601" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-apple-darwin*) - CXXFLAGS="$CXXFLAGS" - LDFLAGS="$LDFLAGS" - ;; - *-*-freebsd*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - ;; - *-*-netbsd*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - ;; - *-*-haiku*) - CXXFLAGS="$CXXFLAGS -lnetwork" - LDFLAGS="$LDFLAGS -lnetwork" - -esac - -if test "$GXX" = yes; then - CXXFLAGS="$CXXFLAGS -ftemplate-depth-256" -fi - -if test "$STANDALONE" = yes; then - CPPFLAGS="$CPPFLAGS -DASIO_STANDALONE" -fi - -if test "$SEPARATE_COMPILATION" = yes; then - CPPFLAGS="$CPPFLAGS -DASIO_SEPARATE_COMPILATION" -fi - -AC_MSG_CHECKING([whether C++11 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if __cplusplus < 201103L]] - [[#error C++11 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX11=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX11=no;]) - -AC_MSG_CHECKING([whether C++14 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if defined(__GNUC__) && !defined(__clang__)]] - [[# if (__GNUC__ <= 6)]] - [[# error C++14 support on this compiler not sufficiently compliant]] - [[# endif]] - [[#endif]] - [[#if __cplusplus < 201402L]] - [[#error C++14 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX14=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX14=no;]) - -AC_MSG_CHECKING([whether C++17 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if __cplusplus < 201703L]] - [[#error C++17 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX17=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX17=no;]) - -AC_MSG_CHECKING([whether coroutines are enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if defined(__clang__)]] - [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] - [[# endif]] - [[# endif]] - [[#elif defined(__GNUC__)]] - [[# if (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] - [[# endif]] - [[# endif]] - [[#endif]] - [[#ifndef ASIO_HAS_CO_AWAIT]] - [[# error coroutines not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_COROUTINES=yes;], - [AC_MSG_RESULT([no]) - HAVE_COROUTINES=no;]) - -if test "$GXX" = yes; then - if test "$STANDALONE" = yes; then - if test "$HAVE_CXX11" = no; then - HAVE_CXX11=yes - CPPFLAGS="-std=c++0x $CPPFLAGS" - fi - fi -fi - -AM_CONDITIONAL(STANDALONE,test x$STANDALONE = xyes) - -AM_CONDITIONAL(SEPARATE_COMPILATION,test x$SEPARATE_COMPILATION = xyes) - -AM_CONDITIONAL(HAVE_BOOST_COROUTINE,test x$HAVE_BOOST_COROUTINE = xyes) - -AM_CONDITIONAL(WINDOWS_TARGET,test x$WINDOWS != xno) - -AM_CONDITIONAL(HAVE_CXX11,test x$HAVE_CXX11 = xyes) - -AM_CONDITIONAL(HAVE_CXX14,test x$HAVE_CXX14 = xyes) - -AM_CONDITIONAL(HAVE_CXX17,test x$HAVE_CXX17 = xyes) - -AM_CONDITIONAL(HAVE_COROUTINES,test x$HAVE_COROUTINES = xyes) - -AC_OUTPUT([ - Makefile - include/Makefile - src/Makefile - src/tests/Makefile - src/tests/properties/Makefile - src/examples/cpp03/Makefile - src/examples/cpp11/Makefile - src/examples/cpp14/Makefile - src/examples/cpp17/Makefile]) diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/.gitignore b/ui/external/fineftp-server/thirdparty/asio/asio/include/.gitignore deleted file mode 100644 index 282522db..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/Makefile.am b/ui/external/fineftp-server/thirdparty/asio/asio/include/Makefile.am deleted file mode 100644 index 051fa836..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/Makefile.am +++ /dev/null @@ -1,566 +0,0 @@ -# find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/ & \\/' | sort -nobase_include_HEADERS = \ - asio/any_io_executor.hpp \ - asio/associated_allocator.hpp \ - asio/associated_executor.hpp \ - asio/async_result.hpp \ - asio/awaitable.hpp \ - asio/basic_datagram_socket.hpp \ - asio/basic_deadline_timer.hpp \ - asio/basic_io_object.hpp \ - asio/basic_raw_socket.hpp \ - asio/basic_seq_packet_socket.hpp \ - asio/basic_serial_port.hpp \ - asio/basic_signal_set.hpp \ - asio/basic_socket_acceptor.hpp \ - asio/basic_socket.hpp \ - asio/basic_socket_iostream.hpp \ - asio/basic_socket_streambuf.hpp \ - asio/basic_streambuf_fwd.hpp \ - asio/basic_streambuf.hpp \ - asio/basic_stream_socket.hpp \ - asio/basic_waitable_timer.hpp \ - asio/bind_executor.hpp \ - asio/buffered_read_stream_fwd.hpp \ - asio/buffered_read_stream.hpp \ - asio/buffered_stream_fwd.hpp \ - asio/buffered_stream.hpp \ - asio/buffered_write_stream_fwd.hpp \ - asio/buffered_write_stream.hpp \ - asio/buffer.hpp \ - asio/buffers_iterator.hpp \ - asio/co_spawn.hpp \ - asio/completion_condition.hpp \ - asio/compose.hpp \ - asio/connect.hpp \ - asio/coroutine.hpp \ - asio/deadline_timer.hpp \ - asio/defer.hpp \ - asio/detached.hpp \ - asio/detail/array_fwd.hpp \ - asio/detail/array.hpp \ - asio/detail/assert.hpp \ - asio/detail/atomic_count.hpp \ - asio/detail/base_from_completion_cond.hpp \ - asio/detail/bind_handler.hpp \ - asio/detail/blocking_executor_op.hpp \ - asio/detail/buffered_stream_storage.hpp \ - asio/detail/buffer_resize_guard.hpp \ - asio/detail/buffer_sequence_adapter.hpp \ - asio/detail/bulk_executor_op.hpp \ - asio/detail/call_stack.hpp \ - asio/detail/chrono.hpp \ - asio/detail/chrono_time_traits.hpp \ - asio/detail/completion_handler.hpp \ - asio/detail/concurrency_hint.hpp \ - asio/detail/conditionally_enabled_event.hpp \ - asio/detail/conditionally_enabled_mutex.hpp \ - asio/detail/config.hpp \ - asio/detail/consuming_buffers.hpp \ - asio/detail/cstddef.hpp \ - asio/detail/cstdint.hpp \ - asio/detail/date_time_fwd.hpp \ - asio/detail/deadline_timer_service.hpp \ - asio/detail/dependent_type.hpp \ - asio/detail/descriptor_ops.hpp \ - asio/detail/descriptor_read_op.hpp \ - asio/detail/descriptor_write_op.hpp \ - asio/detail/dev_poll_reactor.hpp \ - asio/detail/epoll_reactor.hpp \ - asio/detail/eventfd_select_interrupter.hpp \ - asio/detail/event.hpp \ - asio/detail/executor_function.hpp \ - asio/detail/executor_op.hpp \ - asio/detail/fd_set_adapter.hpp \ - asio/detail/fenced_block.hpp \ - asio/detail/functional.hpp \ - asio/detail/future.hpp \ - asio/detail/gcc_arm_fenced_block.hpp \ - asio/detail/gcc_hppa_fenced_block.hpp \ - asio/detail/gcc_sync_fenced_block.hpp \ - asio/detail/gcc_x86_fenced_block.hpp \ - asio/detail/global.hpp \ - asio/detail/handler_alloc_helpers.hpp \ - asio/detail/handler_cont_helpers.hpp \ - asio/detail/handler_invoke_helpers.hpp \ - asio/detail/handler_tracking.hpp \ - asio/detail/handler_type_requirements.hpp \ - asio/detail/handler_work.hpp \ - asio/detail/hash_map.hpp \ - asio/detail/impl/buffer_sequence_adapter.ipp \ - asio/detail/impl/descriptor_ops.ipp \ - asio/detail/impl/dev_poll_reactor.hpp \ - asio/detail/impl/dev_poll_reactor.ipp \ - asio/detail/impl/epoll_reactor.hpp \ - asio/detail/impl/epoll_reactor.ipp \ - asio/detail/impl/eventfd_select_interrupter.ipp \ - asio/detail/impl/handler_tracking.ipp \ - asio/detail/impl/kqueue_reactor.hpp \ - asio/detail/impl/kqueue_reactor.ipp \ - asio/detail/impl/null_event.ipp \ - asio/detail/impl/pipe_select_interrupter.ipp \ - asio/detail/impl/posix_event.ipp \ - asio/detail/impl/posix_mutex.ipp \ - asio/detail/impl/posix_thread.ipp \ - asio/detail/impl/posix_tss_ptr.ipp \ - asio/detail/impl/reactive_descriptor_service.ipp \ - asio/detail/impl/reactive_serial_port_service.ipp \ - asio/detail/impl/reactive_socket_service_base.ipp \ - asio/detail/impl/resolver_service_base.ipp \ - asio/detail/impl/scheduler.ipp \ - asio/detail/impl/select_reactor.hpp \ - asio/detail/impl/select_reactor.ipp \ - asio/detail/impl/service_registry.hpp \ - asio/detail/impl/service_registry.ipp \ - asio/detail/impl/signal_set_service.ipp \ - asio/detail/impl/socket_ops.ipp \ - asio/detail/impl/socket_select_interrupter.ipp \ - asio/detail/impl/strand_executor_service.hpp \ - asio/detail/impl/strand_executor_service.ipp \ - asio/detail/impl/strand_service.hpp \ - asio/detail/impl/strand_service.ipp \ - asio/detail/impl/throw_error.ipp \ - asio/detail/impl/timer_queue_ptime.ipp \ - asio/detail/impl/timer_queue_set.ipp \ - asio/detail/impl/win_event.ipp \ - asio/detail/impl/win_iocp_handle_service.ipp \ - asio/detail/impl/win_iocp_io_context.hpp \ - asio/detail/impl/win_iocp_io_context.ipp \ - asio/detail/impl/win_iocp_serial_port_service.ipp \ - asio/detail/impl/win_iocp_socket_service_base.ipp \ - asio/detail/impl/win_mutex.ipp \ - asio/detail/impl/win_object_handle_service.ipp \ - asio/detail/impl/winrt_ssocket_service_base.ipp \ - asio/detail/impl/winrt_timer_scheduler.hpp \ - asio/detail/impl/winrt_timer_scheduler.ipp \ - asio/detail/impl/winsock_init.ipp \ - asio/detail/impl/win_static_mutex.ipp \ - asio/detail/impl/win_thread.ipp \ - asio/detail/impl/win_tss_ptr.ipp \ - asio/detail/io_control.hpp \ - asio/detail/io_object_impl.hpp \ - asio/detail/is_buffer_sequence.hpp \ - asio/detail/is_executor.hpp \ - asio/detail/keyword_tss_ptr.hpp \ - asio/detail/kqueue_reactor.hpp \ - asio/detail/limits.hpp \ - asio/detail/local_free_on_block_exit.hpp \ - asio/detail/macos_fenced_block.hpp \ - asio/detail/memory.hpp \ - asio/detail/mutex.hpp \ - asio/detail/non_const_lvalue.hpp \ - asio/detail/noncopyable.hpp \ - asio/detail/null_event.hpp \ - asio/detail/null_fenced_block.hpp \ - asio/detail/null_global.hpp \ - asio/detail/null_mutex.hpp \ - asio/detail/null_reactor.hpp \ - asio/detail/null_signal_blocker.hpp \ - asio/detail/null_socket_service.hpp \ - asio/detail/null_static_mutex.hpp \ - asio/detail/null_thread.hpp \ - asio/detail/null_tss_ptr.hpp \ - asio/detail/object_pool.hpp \ - asio/detail/old_win_sdk_compat.hpp \ - asio/detail/operation.hpp \ - asio/detail/op_queue.hpp \ - asio/detail/pipe_select_interrupter.hpp \ - asio/detail/pop_options.hpp \ - asio/detail/posix_event.hpp \ - asio/detail/posix_fd_set_adapter.hpp \ - asio/detail/posix_global.hpp \ - asio/detail/posix_mutex.hpp \ - asio/detail/posix_signal_blocker.hpp \ - asio/detail/posix_static_mutex.hpp \ - asio/detail/posix_thread.hpp \ - asio/detail/posix_tss_ptr.hpp \ - asio/detail/push_options.hpp \ - asio/detail/reactive_descriptor_service.hpp \ - asio/detail/reactive_null_buffers_op.hpp \ - asio/detail/reactive_serial_port_service.hpp \ - asio/detail/reactive_socket_accept_op.hpp \ - asio/detail/reactive_socket_connect_op.hpp \ - asio/detail/reactive_socket_recvfrom_op.hpp \ - asio/detail/reactive_socket_recvmsg_op.hpp \ - asio/detail/reactive_socket_recv_op.hpp \ - asio/detail/reactive_socket_send_op.hpp \ - asio/detail/reactive_socket_sendto_op.hpp \ - asio/detail/reactive_socket_service_base.hpp \ - asio/detail/reactive_socket_service.hpp \ - asio/detail/reactive_wait_op.hpp \ - asio/detail/reactor_fwd.hpp \ - asio/detail/reactor.hpp \ - asio/detail/reactor_op.hpp \ - asio/detail/reactor_op_queue.hpp \ - asio/detail/recycling_allocator.hpp \ - asio/detail/regex_fwd.hpp \ - asio/detail/resolve_endpoint_op.hpp \ - asio/detail/resolve_op.hpp \ - asio/detail/resolve_query_op.hpp \ - asio/detail/resolver_service_base.hpp \ - asio/detail/resolver_service.hpp \ - asio/detail/scheduler.hpp \ - asio/detail/scheduler_operation.hpp \ - asio/detail/scheduler_thread_info.hpp \ - asio/detail/scoped_lock.hpp \ - asio/detail/scoped_ptr.hpp \ - asio/detail/select_interrupter.hpp \ - asio/detail/select_reactor.hpp \ - asio/detail/service_registry.hpp \ - asio/detail/signal_blocker.hpp \ - asio/detail/signal_handler.hpp \ - asio/detail/signal_init.hpp \ - asio/detail/signal_op.hpp \ - asio/detail/signal_set_service.hpp \ - asio/detail/socket_holder.hpp \ - asio/detail/socket_ops.hpp \ - asio/detail/socket_option.hpp \ - asio/detail/socket_select_interrupter.hpp \ - asio/detail/socket_types.hpp \ - asio/detail/solaris_fenced_block.hpp \ - asio/detail/source_location.hpp \ - asio/detail/static_mutex.hpp \ - asio/detail/std_event.hpp \ - asio/detail/std_fenced_block.hpp \ - asio/detail/std_global.hpp \ - asio/detail/std_mutex.hpp \ - asio/detail/std_static_mutex.hpp \ - asio/detail/std_thread.hpp \ - asio/detail/strand_executor_service.hpp \ - asio/detail/strand_service.hpp \ - asio/detail/string_view.hpp \ - asio/detail/thread_context.hpp \ - asio/detail/thread_group.hpp \ - asio/detail/thread.hpp \ - asio/detail/thread_info_base.hpp \ - asio/detail/throw_error.hpp \ - asio/detail/throw_exception.hpp \ - asio/detail/timer_queue_base.hpp \ - asio/detail/timer_queue.hpp \ - asio/detail/timer_queue_ptime.hpp \ - asio/detail/timer_queue_set.hpp \ - asio/detail/timer_scheduler_fwd.hpp \ - asio/detail/timer_scheduler.hpp \ - asio/detail/tss_ptr.hpp \ - asio/detail/type_traits.hpp \ - asio/detail/variadic_templates.hpp \ - asio/detail/wait_handler.hpp \ - asio/detail/wait_op.hpp \ - asio/detail/winapp_thread.hpp \ - asio/detail/wince_thread.hpp \ - asio/detail/win_event.hpp \ - asio/detail/win_fd_set_adapter.hpp \ - asio/detail/win_fenced_block.hpp \ - asio/detail/win_global.hpp \ - asio/detail/win_iocp_handle_read_op.hpp \ - asio/detail/win_iocp_handle_service.hpp \ - asio/detail/win_iocp_handle_write_op.hpp \ - asio/detail/win_iocp_io_context.hpp \ - asio/detail/win_iocp_null_buffers_op.hpp \ - asio/detail/win_iocp_operation.hpp \ - asio/detail/win_iocp_overlapped_op.hpp \ - asio/detail/win_iocp_overlapped_ptr.hpp \ - asio/detail/win_iocp_serial_port_service.hpp \ - asio/detail/win_iocp_socket_accept_op.hpp \ - asio/detail/win_iocp_socket_connect_op.hpp \ - asio/detail/win_iocp_socket_recvfrom_op.hpp \ - asio/detail/win_iocp_socket_recvmsg_op.hpp \ - asio/detail/win_iocp_socket_recv_op.hpp \ - asio/detail/win_iocp_socket_send_op.hpp \ - asio/detail/win_iocp_socket_service_base.hpp \ - asio/detail/win_iocp_socket_service.hpp \ - asio/detail/win_iocp_thread_info.hpp \ - asio/detail/win_iocp_wait_op.hpp \ - asio/detail/win_mutex.hpp \ - asio/detail/win_object_handle_service.hpp \ - asio/detail/winrt_async_manager.hpp \ - asio/detail/winrt_async_op.hpp \ - asio/detail/winrt_resolve_op.hpp \ - asio/detail/winrt_resolver_service.hpp \ - asio/detail/winrt_socket_connect_op.hpp \ - asio/detail/winrt_socket_recv_op.hpp \ - asio/detail/winrt_socket_send_op.hpp \ - asio/detail/winrt_ssocket_service_base.hpp \ - asio/detail/winrt_ssocket_service.hpp \ - asio/detail/winrt_timer_scheduler.hpp \ - asio/detail/winrt_utils.hpp \ - asio/detail/winsock_init.hpp \ - asio/detail/win_static_mutex.hpp \ - asio/detail/win_thread.hpp \ - asio/detail/win_tss_ptr.hpp \ - asio/detail/work_dispatcher.hpp \ - asio/detail/wrapped_handler.hpp \ - asio/dispatch.hpp \ - asio/error_code.hpp \ - asio/error.hpp \ - asio/execution.hpp \ - asio/execution_context.hpp \ - asio/execution/allocator.hpp \ - asio/execution/any_executor.hpp \ - asio/execution/bad_executor.hpp \ - asio/execution/blocking.hpp \ - asio/execution/blocking_adaptation.hpp \ - asio/execution/bulk_execute.hpp \ - asio/execution/bulk_guarantee.hpp \ - asio/execution/connect.hpp \ - asio/execution/context.hpp \ - asio/execution/context_as.hpp \ - asio/execution/detail/as_invocable.hpp \ - asio/execution/detail/as_operation.hpp \ - asio/execution/detail/as_receiver.hpp \ - asio/execution/detail/bulk_sender.hpp \ - asio/execution/detail/void_receiver.hpp \ - asio/execution/detail/submit_receiver.hpp \ - asio/execution/execute.hpp \ - asio/execution/executor.hpp \ - asio/execution/impl/bad_executor.ipp \ - asio/execution/impl/receiver_invocation_error.ipp \ - asio/execution/invocable_archetype.hpp \ - asio/execution/mapping.hpp \ - asio/execution/occupancy.hpp \ - asio/execution/operation_state.hpp \ - asio/execution/outstanding_work.hpp \ - asio/execution/prefer_only.hpp \ - asio/execution/receiver.hpp \ - asio/execution/receiver_invocation_error.hpp \ - asio/execution/relationship.hpp \ - asio/execution/schedule.hpp \ - asio/execution/scheduler.hpp \ - asio/execution/sender.hpp \ - asio/execution/set_done.hpp \ - asio/execution/set_error.hpp \ - asio/execution/set_value.hpp \ - asio/execution/start.hpp \ - asio/execution/submit.hpp \ - asio/executor.hpp \ - asio/executor_work_guard.hpp \ - asio/experimental/as_single.hpp \ - asio/experimental/impl/as_single.hpp \ - asio/generic/basic_endpoint.hpp \ - asio/generic/datagram_protocol.hpp \ - asio/generic/detail/endpoint.hpp \ - asio/generic/detail/impl/endpoint.ipp \ - asio/generic/raw_protocol.hpp \ - asio/generic/seq_packet_protocol.hpp \ - asio/generic/stream_protocol.hpp \ - asio/handler_alloc_hook.hpp \ - asio/handler_continuation_hook.hpp \ - asio/handler_invoke_hook.hpp \ - asio/high_resolution_timer.hpp \ - asio.hpp \ - asio/impl/awaitable.hpp \ - asio/impl/buffered_read_stream.hpp \ - asio/impl/buffered_write_stream.hpp \ - asio/impl/co_spawn.hpp \ - asio/impl/compose.hpp \ - asio/impl/connect.hpp \ - asio/impl/defer.hpp \ - asio/impl/detached.hpp \ - asio/impl/dispatch.hpp \ - asio/impl/error_code.ipp \ - asio/impl/error.ipp \ - asio/impl/execution_context.hpp \ - asio/impl/execution_context.ipp \ - asio/impl/executor.hpp \ - asio/impl/executor.ipp \ - asio/impl/handler_alloc_hook.ipp \ - asio/impl/io_context.hpp \ - asio/impl/io_context.ipp \ - asio/impl/multiple_exceptions.ipp \ - asio/impl/post.hpp \ - asio/impl/read_at.hpp \ - asio/impl/read.hpp \ - asio/impl/read_until.hpp \ - asio/impl/redirect_error.hpp \ - asio/impl/serial_port_base.hpp \ - asio/impl/serial_port_base.ipp \ - asio/impl/spawn.hpp \ - asio/impl/src.cpp \ - asio/impl/src.hpp \ - asio/impl/system_context.hpp \ - asio/impl/system_context.ipp \ - asio/impl/system_executor.hpp \ - asio/impl/thread_pool.hpp \ - asio/impl/thread_pool.ipp \ - asio/impl/use_awaitable.hpp \ - asio/impl/use_future.hpp \ - asio/impl/write_at.hpp \ - asio/impl/write.hpp \ - asio/io_context.hpp \ - asio/io_context_strand.hpp \ - asio/io_service.hpp \ - asio/io_service_strand.hpp \ - asio/ip/address.hpp \ - asio/ip/address_v4.hpp \ - asio/ip/address_v4_iterator.hpp \ - asio/ip/address_v4_range.hpp \ - asio/ip/address_v6.hpp \ - asio/ip/address_v6_iterator.hpp \ - asio/ip/address_v6_range.hpp \ - asio/ip/bad_address_cast.hpp \ - asio/ip/basic_endpoint.hpp \ - asio/ip/basic_resolver_entry.hpp \ - asio/ip/basic_resolver.hpp \ - asio/ip/basic_resolver_iterator.hpp \ - asio/ip/basic_resolver_query.hpp \ - asio/ip/basic_resolver_results.hpp \ - asio/ip/detail/endpoint.hpp \ - asio/ip/detail/impl/endpoint.ipp \ - asio/ip/detail/socket_option.hpp \ - asio/ip/host_name.hpp \ - asio/ip/icmp.hpp \ - asio/ip/impl/address.hpp \ - asio/ip/impl/address.ipp \ - asio/ip/impl/address_v4.hpp \ - asio/ip/impl/address_v4.ipp \ - asio/ip/impl/address_v6.hpp \ - asio/ip/impl/address_v6.ipp \ - asio/ip/impl/basic_endpoint.hpp \ - asio/ip/impl/host_name.ipp \ - asio/ip/impl/network_v4.hpp \ - asio/ip/impl/network_v4.ipp \ - asio/ip/impl/network_v6.hpp \ - asio/ip/impl/network_v6.ipp \ - asio/ip/multicast.hpp \ - asio/ip/network_v4.hpp \ - asio/ip/network_v6.hpp \ - asio/ip/resolver_base.hpp \ - asio/ip/resolver_query_base.hpp \ - asio/ip/tcp.hpp \ - asio/ip/udp.hpp \ - asio/ip/unicast.hpp \ - asio/ip/v6_only.hpp \ - asio/is_applicable_property.hpp \ - asio/is_executor.hpp \ - asio/is_read_buffered.hpp \ - asio/is_write_buffered.hpp \ - asio/local/basic_endpoint.hpp \ - asio/local/connect_pair.hpp \ - asio/local/datagram_protocol.hpp \ - asio/local/detail/endpoint.hpp \ - asio/local/detail/impl/endpoint.ipp \ - asio/local/stream_protocol.hpp \ - asio/multiple_exceptions.hpp \ - asio/packaged_task.hpp \ - asio/placeholders.hpp \ - asio/posix/basic_descriptor.hpp \ - asio/posix/basic_stream_descriptor.hpp \ - asio/posix/descriptor_base.hpp \ - asio/posix/descriptor.hpp \ - asio/posix/stream_descriptor.hpp \ - asio/post.hpp \ - asio/prefer.hpp \ - asio/query.hpp \ - asio/read_at.hpp \ - asio/read.hpp \ - asio/read_until.hpp \ - asio/redirect_error.hpp \ - asio/require.hpp \ - asio/require_concept.hpp \ - asio/serial_port_base.hpp \ - asio/serial_port.hpp \ - asio/signal_set.hpp \ - asio/socket_base.hpp \ - asio/spawn.hpp \ - asio/ssl/context_base.hpp \ - asio/ssl/context.hpp \ - asio/ssl/detail/buffered_handshake_op.hpp \ - asio/ssl/detail/engine.hpp \ - asio/ssl/detail/handshake_op.hpp \ - asio/ssl/detail/impl/engine.ipp \ - asio/ssl/detail/impl/openssl_init.ipp \ - asio/ssl/detail/io.hpp \ - asio/ssl/detail/openssl_init.hpp \ - asio/ssl/detail/openssl_types.hpp \ - asio/ssl/detail/password_callback.hpp \ - asio/ssl/detail/read_op.hpp \ - asio/ssl/detail/shutdown_op.hpp \ - asio/ssl/detail/stream_core.hpp \ - asio/ssl/detail/verify_callback.hpp \ - asio/ssl/detail/write_op.hpp \ - asio/ssl/error.hpp \ - asio/ssl.hpp \ - asio/ssl/host_name_verification.hpp \ - asio/ssl/impl/context.hpp \ - asio/ssl/impl/context.ipp \ - asio/ssl/impl/error.ipp \ - asio/ssl/impl/host_name_verification.ipp \ - asio/ssl/impl/rfc2818_verification.ipp \ - asio/ssl/impl/src.hpp \ - asio/ssl/rfc2818_verification.hpp \ - asio/ssl/stream_base.hpp \ - asio/ssl/stream.hpp \ - asio/ssl/verify_context.hpp \ - asio/ssl/verify_mode.hpp \ - asio/static_thread_pool.hpp \ - asio/steady_timer.hpp \ - asio/strand.hpp \ - asio/streambuf.hpp \ - asio/system_context.hpp \ - asio/system_error.hpp \ - asio/system_executor.hpp \ - asio/system_timer.hpp \ - asio/this_coro.hpp \ - asio/thread.hpp \ - asio/thread_pool.hpp \ - asio/time_traits.hpp \ - asio/traits/bulk_execute_free.hpp \ - asio/traits/bulk_execute_member.hpp \ - asio/traits/connect_free.hpp \ - asio/traits/connect_member.hpp \ - asio/traits/equality_comparable.hpp \ - asio/traits/execute_free.hpp \ - asio/traits/execute_member.hpp \ - asio/traits/prefer_free.hpp \ - asio/traits/prefer_member.hpp \ - asio/traits/query_free.hpp \ - asio/traits/query_member.hpp \ - asio/traits/query_static_constexpr_member.hpp \ - asio/traits/require_concept_free.hpp \ - asio/traits/require_concept_member.hpp \ - asio/traits/require_free.hpp \ - asio/traits/require_member.hpp \ - asio/traits/schedule_free.hpp \ - asio/traits/schedule_member.hpp \ - asio/traits/set_done_free.hpp \ - asio/traits/set_done_member.hpp \ - asio/traits/set_error_free.hpp \ - asio/traits/set_error_member.hpp \ - asio/traits/set_value_free.hpp \ - asio/traits/set_value_member.hpp \ - asio/traits/start_free.hpp \ - asio/traits/start_member.hpp \ - asio/traits/static_query.hpp \ - asio/traits/static_require.hpp \ - asio/traits/static_require_concept.hpp \ - asio/traits/submit_free.hpp \ - asio/traits/submit_member.hpp \ - asio/ts/buffer.hpp \ - asio/ts/executor.hpp \ - asio/ts/internet.hpp \ - asio/ts/io_context.hpp \ - asio/ts/netfwd.hpp \ - asio/ts/net.hpp \ - asio/ts/socket.hpp \ - asio/ts/timer.hpp \ - asio/unyield.hpp \ - asio/use_awaitable.hpp \ - asio/use_future.hpp \ - asio/uses_executor.hpp \ - asio/version.hpp \ - asio/wait_traits.hpp \ - asio/windows/basic_object_handle.hpp \ - asio/windows/basic_overlapped_handle.hpp \ - asio/windows/basic_random_access_handle.hpp \ - asio/windows/basic_stream_handle.hpp \ - asio/windows/object_handle.hpp \ - asio/windows/overlapped_handle.hpp \ - asio/windows/overlapped_ptr.hpp \ - asio/windows/random_access_handle.hpp \ - asio/windows/stream_handle.hpp \ - asio/write_at.hpp \ - asio/write.hpp \ - asio/yield.hpp - -MAINTAINERCLEANFILES = \ - $(srcdir)/Makefile.in diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio.hpp deleted file mode 100644 index 345aec71..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio.hpp +++ /dev/null @@ -1,182 +0,0 @@ -// -// asio.hpp -// ~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_HPP -#define ASIO_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/associated_allocator.hpp" -#include "asio/associated_executor.hpp" -#include "asio/async_result.hpp" -#include "asio/awaitable.hpp" -#include "asio/basic_datagram_socket.hpp" -#include "asio/basic_deadline_timer.hpp" -#include "asio/basic_io_object.hpp" -#include "asio/basic_raw_socket.hpp" -#include "asio/basic_seq_packet_socket.hpp" -#include "asio/basic_serial_port.hpp" -#include "asio/basic_signal_set.hpp" -#include "asio/basic_socket.hpp" -#include "asio/basic_socket_acceptor.hpp" -#include "asio/basic_socket_iostream.hpp" -#include "asio/basic_socket_streambuf.hpp" -#include "asio/basic_stream_socket.hpp" -#include "asio/basic_streambuf.hpp" -#include "asio/basic_waitable_timer.hpp" -#include "asio/bind_executor.hpp" -#include "asio/buffer.hpp" -#include "asio/buffered_read_stream_fwd.hpp" -#include "asio/buffered_read_stream.hpp" -#include "asio/buffered_stream_fwd.hpp" -#include "asio/buffered_stream.hpp" -#include "asio/buffered_write_stream_fwd.hpp" -#include "asio/buffered_write_stream.hpp" -#include "asio/buffers_iterator.hpp" -#include "asio/co_spawn.hpp" -#include "asio/completion_condition.hpp" -#include "asio/compose.hpp" -#include "asio/connect.hpp" -#include "asio/coroutine.hpp" -#include "asio/deadline_timer.hpp" -#include "asio/defer.hpp" -#include "asio/detached.hpp" -#include "asio/dispatch.hpp" -#include "asio/error.hpp" -#include "asio/error_code.hpp" -#include "asio/execution.hpp" -#include "asio/execution/allocator.hpp" -#include "asio/execution/any_executor.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/blocking_adaptation.hpp" -#include "asio/execution/bulk_execute.hpp" -#include "asio/execution/bulk_guarantee.hpp" -#include "asio/execution/connect.hpp" -#include "asio/execution/context.hpp" -#include "asio/execution/context_as.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/invocable_archetype.hpp" -#include "asio/execution/mapping.hpp" -#include "asio/execution/occupancy.hpp" -#include "asio/execution/operation_state.hpp" -#include "asio/execution/outstanding_work.hpp" -#include "asio/execution/prefer_only.hpp" -#include "asio/execution/receiver.hpp" -#include "asio/execution/receiver_invocation_error.hpp" -#include "asio/execution/relationship.hpp" -#include "asio/execution/schedule.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" -#include "asio/execution/start.hpp" -#include "asio/execution_context.hpp" -#include "asio/executor.hpp" -#include "asio/executor_work_guard.hpp" -#include "asio/generic/basic_endpoint.hpp" -#include "asio/generic/datagram_protocol.hpp" -#include "asio/generic/raw_protocol.hpp" -#include "asio/generic/seq_packet_protocol.hpp" -#include "asio/generic/stream_protocol.hpp" -#include "asio/handler_alloc_hook.hpp" -#include "asio/handler_continuation_hook.hpp" -#include "asio/handler_invoke_hook.hpp" -#include "asio/high_resolution_timer.hpp" -#include "asio/io_context.hpp" -#include "asio/io_context_strand.hpp" -#include "asio/io_service.hpp" -#include "asio/io_service_strand.hpp" -#include "asio/ip/address.hpp" -#include "asio/ip/address_v4.hpp" -#include "asio/ip/address_v4_iterator.hpp" -#include "asio/ip/address_v4_range.hpp" -#include "asio/ip/address_v6.hpp" -#include "asio/ip/address_v6_iterator.hpp" -#include "asio/ip/address_v6_range.hpp" -#include "asio/ip/network_v4.hpp" -#include "asio/ip/network_v6.hpp" -#include "asio/ip/bad_address_cast.hpp" -#include "asio/ip/basic_endpoint.hpp" -#include "asio/ip/basic_resolver.hpp" -#include "asio/ip/basic_resolver_entry.hpp" -#include "asio/ip/basic_resolver_iterator.hpp" -#include "asio/ip/basic_resolver_query.hpp" -#include "asio/ip/host_name.hpp" -#include "asio/ip/icmp.hpp" -#include "asio/ip/multicast.hpp" -#include "asio/ip/resolver_base.hpp" -#include "asio/ip/resolver_query_base.hpp" -#include "asio/ip/tcp.hpp" -#include "asio/ip/udp.hpp" -#include "asio/ip/unicast.hpp" -#include "asio/ip/v6_only.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/is_executor.hpp" -#include "asio/is_read_buffered.hpp" -#include "asio/is_write_buffered.hpp" -#include "asio/local/basic_endpoint.hpp" -#include "asio/local/connect_pair.hpp" -#include "asio/local/datagram_protocol.hpp" -#include "asio/local/stream_protocol.hpp" -#include "asio/multiple_exceptions.hpp" -#include "asio/packaged_task.hpp" -#include "asio/placeholders.hpp" -#include "asio/posix/basic_descriptor.hpp" -#include "asio/posix/basic_stream_descriptor.hpp" -#include "asio/posix/descriptor.hpp" -#include "asio/posix/descriptor_base.hpp" -#include "asio/posix/stream_descriptor.hpp" -#include "asio/post.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/read.hpp" -#include "asio/read_at.hpp" -#include "asio/read_until.hpp" -#include "asio/redirect_error.hpp" -#include "asio/require.hpp" -#include "asio/require_concept.hpp" -#include "asio/serial_port.hpp" -#include "asio/serial_port_base.hpp" -#include "asio/signal_set.hpp" -#include "asio/socket_base.hpp" -#include "asio/static_thread_pool.hpp" -#include "asio/steady_timer.hpp" -#include "asio/strand.hpp" -#include "asio/streambuf.hpp" -#include "asio/system_context.hpp" -#include "asio/system_error.hpp" -#include "asio/system_executor.hpp" -#include "asio/system_timer.hpp" -#include "asio/this_coro.hpp" -#include "asio/thread.hpp" -#include "asio/thread_pool.hpp" -#include "asio/time_traits.hpp" -#include "asio/use_awaitable.hpp" -#include "asio/use_future.hpp" -#include "asio/uses_executor.hpp" -#include "asio/version.hpp" -#include "asio/wait_traits.hpp" -#include "asio/windows/basic_object_handle.hpp" -#include "asio/windows/basic_overlapped_handle.hpp" -#include "asio/windows/basic_random_access_handle.hpp" -#include "asio/windows/basic_stream_handle.hpp" -#include "asio/windows/object_handle.hpp" -#include "asio/windows/overlapped_handle.hpp" -#include "asio/windows/overlapped_ptr.hpp" -#include "asio/windows/random_access_handle.hpp" -#include "asio/windows/stream_handle.hpp" -#include "asio/write.hpp" -#include "asio/write_at.hpp" - -#endif // ASIO_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/any_io_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/any_io_executor.hpp deleted file mode 100644 index 3a4d13b6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/any_io_executor.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// any_io_executor.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ANY_IO_EXECUTOR_HPP -#define ASIO_ANY_IO_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) -# include "asio/executor.hpp" -#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) -# include "asio/execution.hpp" -# include "asio/execution_context.hpp" -#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -typedef executor any_io_executor; - -#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -/// Polymorphic executor type for use with I/O objects. -/** - * The @c any_io_executor type is a polymorphic executor that supports the set - * of properties required by I/O objects. It is defined as the - * execution::any_executor class template parameterised as follows: - * @code execution::any_executor< - * execution::context_as_t, - * execution::blocking_t::never_t, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only - * > @endcode - */ -#if defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor<...> any_io_executor; -#else // defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > any_io_executor; -#endif // defined(GENERATING_DOCUMENTATION) - -#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ANY_IO_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_allocator.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_allocator.hpp deleted file mode 100644 index 14d76b62..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_allocator.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// associated_allocator.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATED_ALLOCATOR_HPP -#define ASIO_ASSOCIATED_ALLOCATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct associated_allocator_impl -{ - typedef E type; - - static type get(const T&, const E& e) ASIO_NOEXCEPT - { - return e; - } -}; - -template -struct associated_allocator_impl::type> -{ - typedef typename T::allocator_type type; - - static type get(const T& t, const E&) ASIO_NOEXCEPT - { - return t.get_allocator(); - } -}; - -} // namespace detail - -/// Traits type used to obtain the allocator associated with an object. -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. The template parameter @c - * Allocator shall be a type meeting the Allocator requirements. - * - * Specialisations shall meet the following requirements, where @c t is a const - * reference to an object of type @c T, and @c a is an object of type @c - * Allocator. - * - * @li Provide a nested typedef @c type that identifies a type meeting the - * Allocator requirements. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t) and with return type @c type. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t,a) and with return type @c type. - */ -template > -struct associated_allocator -{ - /// If @c T has a nested type @c allocator_type, T::allocator_type. - /// Otherwise @c Allocator. -#if defined(GENERATING_DOCUMENTATION) - typedef see_below type; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::associated_allocator_impl::type type; -#endif // defined(GENERATING_DOCUMENTATION) - - /// If @c T has a nested type @c allocator_type, returns - /// t.get_allocator(). Otherwise returns @c a. - static type get(const T& t, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return detail::associated_allocator_impl::get(t, a); - } -}; - -/// Helper function to obtain an object's associated allocator. -/** - * @returns associated_allocator::get(t) - */ -template -inline typename associated_allocator::type -get_associated_allocator(const T& t) ASIO_NOEXCEPT -{ - return associated_allocator::get(t); -} - -/// Helper function to obtain an object's associated allocator. -/** - * @returns associated_allocator::get(t, a) - */ -template -inline typename associated_allocator::type -get_associated_allocator(const T& t, const Allocator& a) ASIO_NOEXCEPT -{ - return associated_allocator::get(t, a); -} - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template > -using associated_allocator_t - = typename associated_allocator::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASSOCIATED_ALLOCATOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_executor.hpp deleted file mode 100644 index e1792466..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/associated_executor.hpp +++ /dev/null @@ -1,166 +0,0 @@ -// -// associated_executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATED_EXECUTOR_HPP -#define ASIO_ASSOCIATED_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/is_executor.hpp" -#include "asio/system_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct associated_executor_impl -{ - typedef void asio_associated_executor_is_unspecialised; - - typedef E type; - - static type get(const T&, const E& e = E()) ASIO_NOEXCEPT - { - return e; - } -}; - -template -struct associated_executor_impl::type> -{ - typedef typename T::executor_type type; - - static type get(const T& t, const E& = E()) ASIO_NOEXCEPT - { - return t.get_executor(); - } -}; - -} // namespace detail - -/// Traits type used to obtain the executor associated with an object. -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. The template parameter @c - * Executor shall be a type meeting the Executor requirements. - * - * Specialisations shall meet the following requirements, where @c t is a const - * reference to an object of type @c T, and @c e is an object of type @c - * Executor. - * - * @li Provide a nested typedef @c type that identifies a type meeting the - * Executor requirements. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t) and with return type @c type. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t,e) and with return type @c type. - */ -template -struct associated_executor -#if !defined(GENERATING_DOCUMENTATION) - : detail::associated_executor_impl -#endif // !defined(GENERATING_DOCUMENTATION) -{ -#if defined(GENERATING_DOCUMENTATION) - /// If @c T has a nested type @c executor_type, T::executor_type. - /// Otherwise @c Executor. - typedef see_below type; - - /// If @c T has a nested type @c executor_type, returns - /// t.get_executor(). Otherwise returns @c ex. - static type get(const T& t, - const Executor& ex = Executor()) ASIO_NOEXCEPT; -#endif // defined(GENERATING_DOCUMENTATION) -}; - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t) ASIO_NOEXCEPT -{ - return associated_executor::get(t); -} - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t, ex) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t, const Executor& ex, - typename enable_if< - is_executor::value || execution::is_executor::value - >::type* = 0) ASIO_NOEXCEPT -{ - return associated_executor::get(t, ex); -} - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t, ctx.get_executor()) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t, ExecutionContext& ctx, - typename enable_if::value>::type* = 0) ASIO_NOEXCEPT -{ - return associated_executor::get(t, ctx.get_executor()); -} - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using associated_executor_t = typename associated_executor::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -namespace detail { - -template -struct associated_executor_forwarding_base -{ -}; - -template -struct associated_executor_forwarding_base::asio_associated_executor_is_unspecialised, - void - >::value - >::type> -{ - typedef void asio_associated_executor_is_unspecialised; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASSOCIATED_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/async_result.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/async_result.hpp deleted file mode 100644 index 8a4c9db8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/async_result.hpp +++ /dev/null @@ -1,582 +0,0 @@ -// -// async_result.hpp -// ~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASYNC_RESULT_HPP -#define ASIO_ASYNC_RESULT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/variadic_templates.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_HAS_CONCEPTS) \ - && defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - && defined(ASIO_HAS_DECLTYPE) - -namespace detail { - -template -struct is_completion_signature : false_type -{ -}; - -template -struct is_completion_signature : true_type -{ -}; - -template -ASIO_CONCEPT callable_with = requires(T t, Args&&... args) -{ - t(static_cast(args)...); -}; - -template -struct is_completion_handler_for : false_type -{ -}; - -template -struct is_completion_handler_for - : integral_constant)> -{ -}; - -} // namespace detail - -template -ASIO_CONCEPT completion_signature = - detail::is_completion_signature::value; - -#define ASIO_COMPLETION_SIGNATURE \ - ::asio::completion_signature - -template -ASIO_CONCEPT completion_handler_for = - detail::is_completion_signature::value - && detail::is_completion_handler_for::value; - -#define ASIO_COMPLETION_HANDLER_FOR(s) \ - ::asio::completion_handler_for - -#else // defined(ASIO_HAS_CONCEPTS) - // && defined(ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(ASIO_HAS_DECLTYPE) - -#define ASIO_COMPLETION_SIGNATURE typename -#define ASIO_COMPLETION_HANDLER_FOR(s) typename - -#endif // defined(ASIO_HAS_CONCEPTS) - // && defined(ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(ASIO_HAS_DECLTYPE) - -/// An interface for customising the behaviour of an initiating function. -/** - * The async_result traits class is used for determining: - * - * @li the concrete completion handler type to be called at the end of the - * asynchronous operation; - * - * @li the initiating function return type; and - * - * @li how the return value of the initiating function is obtained. - * - * The trait allows the handler and return types to be determined at the point - * where the specific completion handler signature is known. - * - * This template may be specialised for user-defined completion token types. - * The primary template assumes that the CompletionToken is the completion - * handler. - */ -template -class async_result -{ -public: - /// The concrete completion handler type for the specific signature. - typedef CompletionToken completion_handler_type; - - /// The return type of the initiating function. - typedef void return_type; - - /// Construct an async result from a given handler. - /** - * When using a specalised async_result, the constructor has an opportunity - * to initialise some state associated with the completion handler, which is - * then returned from the initiating function. - */ - explicit async_result(completion_handler_type& h) - { - (void)h; - } - - /// Obtain the value to be returned from the initiating function. - return_type get() - { - } - -#if defined(GENERATING_DOCUMENTATION) - - /// Initiate the asynchronous operation that will produce the result, and - /// obtain the value to be returned from the initiating function. - template - static return_type initiate( - ASIO_MOVE_ARG(Initiation) initiation, - ASIO_MOVE_ARG(RawCompletionToken) token, - ASIO_MOVE_ARG(Args)... args); - -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - static return_type initiate( - ASIO_MOVE_ARG(Initiation) initiation, - ASIO_MOVE_ARG(RawCompletionToken) token, - ASIO_MOVE_ARG(Args)... args) - { - ASIO_MOVE_CAST(Initiation)(initiation)( - ASIO_MOVE_CAST(RawCompletionToken)(token), - ASIO_MOVE_CAST(Args)(args)...); - } - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - static return_type initiate( - ASIO_MOVE_ARG(Initiation) initiation, - ASIO_MOVE_ARG(RawCompletionToken) token) - { - ASIO_MOVE_CAST(Initiation)(initiation)( - ASIO_MOVE_CAST(RawCompletionToken)(token)); - } - -#define ASIO_PRIVATE_INITIATE_DEF(n) \ - template \ - static return_type initiate( \ - ASIO_MOVE_ARG(Initiation) initiation, \ - ASIO_MOVE_ARG(RawCompletionToken) token, \ - ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - ASIO_MOVE_CAST(Initiation)(initiation)( \ - ASIO_MOVE_CAST(RawCompletionToken)(token), \ - ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_INITIATE_DEF) -#undef ASIO_PRIVATE_INITIATE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -private: - async_result(const async_result&) ASIO_DELETED; - async_result& operator=(const async_result&) ASIO_DELETED; -}; - -#if !defined(GENERATING_DOCUMENTATION) - -template -class async_result -{ - // Empty. -}; - -#endif // !defined(GENERATING_DOCUMENTATION) - -/// Helper template to deduce the handler type from a CompletionToken, capture -/// a local copy of the handler, and then create an async_result for the -/// handler. -template -struct async_completion -{ - /// The real handler type to be used for the asynchronous operation. - typedef typename asio::async_result< - typename decay::type, - Signature>::completion_handler_type completion_handler_type; - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Constructor. - /** - * The constructor creates the concrete completion handler and makes the link - * between the handler and the asynchronous result. - */ - explicit async_completion(CompletionToken& token) - : completion_handler(static_cast::value, - completion_handler_type&, CompletionToken&&>::type>(token)), - result(completion_handler) - { - } -#else // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - explicit async_completion(typename decay::type& token) - : completion_handler(token), - result(completion_handler) - { - } - - explicit async_completion(const typename decay::type& token) - : completion_handler(token), - result(completion_handler) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// A copy of, or reference to, a real handler object. -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - typename conditional< - is_same::value, - completion_handler_type&, completion_handler_type>::type completion_handler; -#else // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - completion_handler_type completion_handler; -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// The result of the asynchronous operation's initiating function. - async_result::type, Signature> result; -}; - -namespace detail { - -template -struct async_result_helper - : async_result::type, Signature> -{ -}; - -struct async_result_memfns_base -{ - void initiate(); -}; - -template -struct async_result_memfns_derived - : T, async_result_memfns_base -{ -}; - -template -struct async_result_memfns_check -{ -}; - -template -char (&async_result_initiate_memfn_helper(...))[2]; - -template -char async_result_initiate_memfn_helper( - async_result_memfns_check< - void (async_result_memfns_base::*)(), - &async_result_memfns_derived::initiate>*); - -template -struct async_result_has_initiate_memfn - : integral_constant::type, Signature> - >(0)) != 1> -{ -}; - -} // namespace detail - -#if defined(GENERATING_DOCUMENTATION) -# define ASIO_INITFN_RESULT_TYPE(ct, sig) \ - void_or_deduced -#elif defined(_MSC_VER) && (_MSC_VER < 1500) -# define ASIO_INITFN_RESULT_TYPE(ct, sig) \ - typename ::asio::detail::async_result_helper< \ - ct, sig>::return_type -#define ASIO_HANDLER_TYPE(ct, sig) \ - typename ::asio::detail::async_result_helper< \ - ct, sig>::completion_handler_type -#else -# define ASIO_INITFN_RESULT_TYPE(ct, sig) \ - typename ::asio::async_result< \ - typename ::asio::decay::type, sig>::return_type -#define ASIO_HANDLER_TYPE(ct, sig) \ - typename ::asio::async_result< \ - typename ::asio::decay::type, sig>::completion_handler_type -#endif - -#if defined(GENERATING_DOCUMENTATION) -# define ASIO_INITFN_AUTO_RESULT_TYPE(ct, sig) \ - auto -#elif defined(ASIO_HAS_RETURN_TYPE_DEDUCTION) -# define ASIO_INITFN_AUTO_RESULT_TYPE(ct, sig) \ - auto -#else -# define ASIO_INITFN_AUTO_RESULT_TYPE(ct, sig) \ - ASIO_INITFN_RESULT_TYPE(ct, sig) -#endif - -#if defined(GENERATING_DOCUMENTATION) -# define ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ - void_or_deduced -#elif defined(ASIO_HAS_DECLTYPE) -# define ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ - decltype expr -#else -# define ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ - ASIO_INITFN_RESULT_TYPE(ct, sig) -#endif - -#if defined(GENERATING_DOCUMENTATION) - -template -void_or_deduced async_initiate( - ASIO_MOVE_ARG(Initiation) initiation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken), - ASIO_MOVE_ARG(Args)... args); - -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -inline typename enable_if< - detail::async_result_has_initiate_memfn::value, - ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, - (async_result::type, - Signature>::initiate(declval(), - declval(), - declval()...)))>::type -async_initiate(ASIO_MOVE_ARG(Initiation) initiation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, - ASIO_MOVE_ARG(Args)... args) -{ - return async_result::type, - Signature>::initiate(ASIO_MOVE_CAST(Initiation)(initiation), - ASIO_MOVE_CAST(CompletionToken)(token), - ASIO_MOVE_CAST(Args)(args)...); -} - -template -inline typename enable_if< - !detail::async_result_has_initiate_memfn::value, - ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type -async_initiate(ASIO_MOVE_ARG(Initiation) initiation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, - ASIO_MOVE_ARG(Args)... args) -{ - async_completion completion(token); - - ASIO_MOVE_CAST(Initiation)(initiation)( - ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(CompletionToken, - Signature))(completion.completion_handler), - ASIO_MOVE_CAST(Args)(args)...); - - return completion.result.get(); -} - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -inline typename enable_if< - detail::async_result_has_initiate_memfn::value, - ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, - (async_result::type, - Signature>::initiate(declval(), - declval())))>::type -async_initiate(ASIO_MOVE_ARG(Initiation) initiation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - return async_result::type, - Signature>::initiate(ASIO_MOVE_CAST(Initiation)(initiation), - ASIO_MOVE_CAST(CompletionToken)(token)); -} - -template -inline typename enable_if< - !detail::async_result_has_initiate_memfn::value, - ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type -async_initiate(ASIO_MOVE_ARG(Initiation) initiation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - async_completion completion(token); - - ASIO_MOVE_CAST(Initiation)(initiation)( - ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(CompletionToken, - Signature))(completion.completion_handler)); - - return completion.result.get(); -} - -#define ASIO_PRIVATE_INITIATE_DEF(n) \ - template \ - inline typename enable_if< \ - detail::async_result_has_initiate_memfn< \ - CompletionToken, Signature>::value, \ - ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signature, \ - (async_result::type, \ - Signature>::initiate(declval(), \ - declval(), \ - ASIO_VARIADIC_MOVE_DECLVAL(n))))>::type \ - async_initiate(ASIO_MOVE_ARG(Initiation) initiation, \ - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return async_result::type, \ - Signature>::initiate(ASIO_MOVE_CAST(Initiation)(initiation), \ - ASIO_MOVE_CAST(CompletionToken)(token), \ - ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - inline typename enable_if< \ - !detail::async_result_has_initiate_memfn< \ - CompletionToken, Signature>::value, \ - ASIO_INITFN_RESULT_TYPE(CompletionToken, Signature)>::type \ - async_initiate(ASIO_MOVE_ARG(Initiation) initiation, \ - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - async_completion completion(token); \ - \ - ASIO_MOVE_CAST(Initiation)(initiation)( \ - ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(CompletionToken, \ - Signature))(completion.completion_handler), \ - ASIO_VARIADIC_MOVE_ARGS(n)); \ - \ - return completion.result.get(); \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_INITIATE_DEF) -#undef ASIO_PRIVATE_INITIATE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) \ - && defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - && defined(ASIO_HAS_DECLTYPE) - -namespace detail { - -template -struct initiation_archetype -{ - template CompletionHandler> - void operator()(CompletionHandler&&) const - { - } -}; - -} // namespace detail - -template -ASIO_CONCEPT completion_token_for = - detail::is_completion_signature::value - && - requires(T&& t) - { - async_initiate(detail::initiation_archetype{}, t); - }; - -#define ASIO_COMPLETION_TOKEN_FOR(s) \ - ::asio::completion_token_for - -#else // defined(ASIO_HAS_CONCEPTS) - // && defined(ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(ASIO_HAS_DECLTYPE) - -#define ASIO_COMPLETION_TOKEN_FOR(s) typename - -#endif // defined(ASIO_HAS_CONCEPTS) - // && defined(ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(ASIO_HAS_DECLTYPE) - -namespace detail { - -template -struct default_completion_token_impl -{ - typedef void type; -}; - -template -struct default_completion_token_impl::type> -{ - typedef typename T::default_completion_token_type type; -}; - -} // namespace detail - -#if defined(GENERATING_DOCUMENTATION) - -/// Traits type used to determine the default completion token type associated -/// with a type (such as an executor). -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. - * - * Specialisations of this trait may provide a nested typedef @c type, which is - * a default-constructible completion token type. - */ -template -struct default_completion_token -{ - /// If @c T has a nested type @c default_completion_token_type, - /// T::default_completion_token_type. Otherwise the typedef @c type - /// is not defined. - typedef see_below type; -}; -#else -template -struct default_completion_token - : detail::default_completion_token_impl -{ -}; -#endif - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using default_completion_token_t = typename default_completion_token::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -#if defined(ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) - -#define ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(e) \ - = typename ::asio::default_completion_token::type -#define ASIO_DEFAULT_COMPLETION_TOKEN(e) \ - = typename ::asio::default_completion_token::type() - -#else // defined(ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) - -#define ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(e) -#define ASIO_DEFAULT_COMPLETION_TOKEN(e) - -#endif // defined(ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASYNC_RESULT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/awaitable.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/awaitable.hpp deleted file mode 100644 index e9c74c84..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/awaitable.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// -// awaitable.hpp -// ~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_AWAITABLE_HPP -#define ASIO_AWAITABLE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_CO_AWAIT) || defined(GENERATING_DOCUMENTATION) - -#if defined(ASIO_HAS_STD_COROUTINE) -# include -#else // defined(ASIO_HAS_STD_COROUTINE) -# include -#endif // defined(ASIO_HAS_STD_COROUTINE) - -#include "asio/any_io_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_STD_COROUTINE) -using std::coroutine_handle; -using std::suspend_always; -#else // defined(ASIO_HAS_STD_COROUTINE) -using std::experimental::coroutine_handle; -using std::experimental::suspend_always; -#endif // defined(ASIO_HAS_STD_COROUTINE) - -template class awaitable_thread; -template class awaitable_frame; - -} // namespace detail - -/// The return type of a coroutine or asynchronous operation. -template -class awaitable -{ -public: - /// The type of the awaited value. - typedef T value_type; - - /// The executor type that will be used for the coroutine. - typedef Executor executor_type; - - /// Default constructor. - constexpr awaitable() noexcept - : frame_(nullptr) - { - } - - /// Move constructor. - awaitable(awaitable&& other) noexcept - : frame_(std::exchange(other.frame_, nullptr)) - { - } - - /// Destructor - ~awaitable() - { - if (frame_) - frame_->destroy(); - } - - /// Checks if the awaitable refers to a future result. - bool valid() const noexcept - { - return !!frame_; - } - -#if !defined(GENERATING_DOCUMENTATION) - - // Support for co_await keyword. - bool await_ready() const noexcept - { - return false; - } - - // Support for co_await keyword. - template - void await_suspend( - detail::coroutine_handle> h) - { - frame_->push_frame(&h.promise()); - } - - // Support for co_await keyword. - T await_resume() - { - return awaitable(static_cast(*this)).frame_->get(); - } - -#endif // !defined(GENERATING_DOCUMENTATION) - -private: - template friend class detail::awaitable_thread; - template friend class detail::awaitable_frame; - - // Not copy constructible or copy assignable. - awaitable(const awaitable&) = delete; - awaitable& operator=(const awaitable&) = delete; - - // Construct the awaitable from a coroutine's frame object. - explicit awaitable(detail::awaitable_frame* a) - : frame_(a) - { - } - - detail::awaitable_frame* frame_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/awaitable.hpp" - -#endif // defined(ASIO_HAS_CO_AWAIT) || defined(GENERATING_DOCUMENTATION) - -#endif // ASIO_AWAITABLE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_datagram_socket.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_datagram_socket.hpp deleted file mode 100644 index ce767ae8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_datagram_socket.hpp +++ /dev/null @@ -1,1215 +0,0 @@ -// -// basic_datagram_socket.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_DATAGRAM_SOCKET_HPP -#define ASIO_BASIC_DATAGRAM_SOCKET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/basic_socket.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL) -#define ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_datagram_socket; - -#endif // !defined(ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL) - -/// Provides datagram-oriented socket functionality. -/** - * The basic_datagram_socket class template provides asynchronous and blocking - * datagram-oriented socket functionality. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - */ -template -class basic_datagram_socket - : public basic_socket -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the socket type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_datagram_socket other; - }; - - /// The native representation of a socket. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#else - typedef typename basic_socket::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// Construct a basic_datagram_socket without opening it. - /** - * This constructor creates a datagram socket without opening it. The open() - * function must be called before data can be sent or received on the socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - */ - explicit basic_datagram_socket(const executor_type& ex) - : basic_socket(ex) - { - } - - /// Construct a basic_datagram_socket without opening it. - /** - * This constructor creates a datagram socket without opening it. The open() - * function must be called before data can be sent or received on the socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - */ - template - explicit basic_datagram_socket(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context) - { - } - - /// Construct and open a basic_datagram_socket. - /** - * This constructor creates and opens a datagram socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_datagram_socket(const executor_type& ex, const protocol_type& protocol) - : basic_socket(ex, protocol) - { - } - - /// Construct and open a basic_datagram_socket. - /** - * This constructor creates and opens a datagram socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_datagram_socket(ExecutionContext& context, - const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol) - { - } - - /// Construct a basic_datagram_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a datagram socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the datagram - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - basic_datagram_socket(const executor_type& ex, const endpoint_type& endpoint) - : basic_socket(ex, endpoint) - { - } - - /// Construct a basic_datagram_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a datagram socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the datagram - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_datagram_socket(ExecutionContext& context, - const endpoint_type& endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, endpoint) - { - } - - /// Construct a basic_datagram_socket on an existing native socket. - /** - * This constructor creates a datagram socket object to hold an existing - * native socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - basic_datagram_socket(const executor_type& ex, - const protocol_type& protocol, const native_handle_type& native_socket) - : basic_socket(ex, protocol, native_socket) - { - } - - /// Construct a basic_datagram_socket on an existing native socket. - /** - * This constructor creates a datagram socket object to hold an existing - * native socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_datagram_socket(ExecutionContext& context, - const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol, native_socket) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_datagram_socket from another. - /** - * This constructor moves a datagram socket from one object to another. - * - * @param other The other basic_datagram_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_datagram_socket(const executor_type&) - * constructor. - */ - basic_datagram_socket(basic_datagram_socket&& other) ASIO_NOEXCEPT - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_datagram_socket from another. - /** - * This assignment operator moves a datagram socket from one object to - * another. - * - * @param other The other basic_datagram_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_datagram_socket(const executor_type&) - * constructor. - */ - basic_datagram_socket& operator=(basic_datagram_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } - - /// Move-construct a basic_datagram_socket from a socket of another protocol - /// type. - /** - * This constructor moves a datagram socket from one object to another. - * - * @param other The other basic_datagram_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_datagram_socket(const executor_type&) - * constructor. - */ - template - basic_datagram_socket(basic_datagram_socket&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_datagram_socket from a socket of another protocol - /// type. - /** - * This assignment operator moves a datagram socket from one object to - * another. - * - * @param other The other basic_datagram_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_datagram_socket(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_datagram_socket& - >::type operator=(basic_datagram_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the socket. - /** - * This function destroys the socket, cancelling any outstanding asynchronous - * operations associated with the socket as if by calling @c cancel. - */ - ~basic_datagram_socket() - { - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the datagram socket. The function - * call will block until the data has been sent successfully or an error - * occurs. - * - * @param buffers One ore more data buffers to be sent on the socket. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected datagram socket. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code socket.send(asio::buffer(data, size)); @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the datagram socket. The function - * call will block until the data has been sent successfully or an error - * occurs. - * - * @param buffers One ore more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected datagram socket. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the datagram socket. The function - * call will block until the data has been sent successfully or an error - * occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected datagram socket. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous send on a connected socket. - /** - * This function is used to asynchronously send data on the datagram socket. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_send operation can only be used with a connected socket. - * Use the async_send_to function to send data on an unconnected datagram - * socket. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_send(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous send on a connected socket. - /** - * This function is used to asynchronously send data on the datagram socket. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_send operation can only be used with a connected socket. - * Use the async_send_to function to send data on an unconnected datagram - * socket. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, buffers, flags); - } - - /// Send a datagram to the specified endpoint. - /** - * This function is used to send a datagram to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * asio::ip::udp::endpoint destination( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.send_to(asio::buffer(data, size), destination); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send_to( - this->impl_.get_implementation(), buffers, destination, 0, ec); - asio::detail::throw_error(ec, "send_to"); - return s; - } - - /// Send a datagram to the specified endpoint. - /** - * This function is used to send a datagram to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send_to( - this->impl_.get_implementation(), buffers, destination, flags, ec); - asio::detail::throw_error(ec, "send_to"); - return s; - } - - /// Send a datagram to the specified endpoint. - /** - * This function is used to send a datagram to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - asio::error_code& ec) - { - return this->impl_.get_service().send_to(this->impl_.get_implementation(), - buffers, destination, flags, ec); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send a datagram to the specified - * remote endpoint. The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param destination The remote endpoint to which the data will be sent. - * Copies will be made of the endpoint as required. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * asio::ip::udp::endpoint destination( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.async_send_to( - * asio::buffer(data, size), destination, handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send_to(this), handler, buffers, - destination, socket_base::message_flags(0)); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send a datagram to the specified - * remote endpoint. The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param destination The remote endpoint to which the data will be sent. - * Copies will be made of the endpoint as required. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send_to(this), handler, buffers, destination, flags); - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the datagram socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected datagram - * socket. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code socket.receive(asio::buffer(data, size)); @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the datagram socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected datagram - * socket. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the datagram socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected datagram - * socket. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous receive on a connected socket. - /** - * This function is used to asynchronously receive data from the datagram - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_receive operation can only be used with a connected socket. - * Use the async_receive_from function to receive data on an unconnected - * datagram socket. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous receive on a connected socket. - /** - * This function is used to asynchronously receive data from the datagram - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_receive operation can only be used with a connected socket. - * Use the async_receive_from function to receive data on an unconnected - * datagram socket. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, buffers, flags); - } - - /// Receive a datagram with the endpoint of the sender. - /** - * This function is used to receive a datagram. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the datagram. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * asio::ip::udp::endpoint sender_endpoint; - * socket.receive_from( - * asio::buffer(data, size), sender_endpoint); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, 0, ec); - asio::detail::throw_error(ec, "receive_from"); - return s; - } - - /// Receive a datagram with the endpoint of the sender. - /** - * This function is used to receive a datagram. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the datagram. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, flags, ec); - asio::detail::throw_error(ec, "receive_from"); - return s; - } - - /// Receive a datagram with the endpoint of the sender. - /** - * This function is used to receive a datagram. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the datagram. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - asio::error_code& ec) - { - return this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, flags, ec); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive a datagram. The function - * call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the datagram. Ownership of the sender_endpoint object - * is retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code socket.async_receive_from( - * asio::buffer(data, size), sender_endpoint, handler); @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_from(this), handler, buffers, - &sender_endpoint, socket_base::message_flags(0)); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive a datagram. The function - * call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the datagram. Ownership of the sender_endpoint object - * is retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_from(this), handler, - buffers, &sender_endpoint, flags); - } - -private: - // Disallow copying and assignment. - basic_datagram_socket(const basic_datagram_socket&) ASIO_DELETED; - basic_datagram_socket& operator=( - const basic_datagram_socket&) ASIO_DELETED; - - class initiate_async_send - { - public: - typedef Executor executor_type; - - explicit initiate_async_send(basic_datagram_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_datagram_socket* self_; - }; - - class initiate_async_send_to - { - public: - typedef Executor executor_type; - - explicit initiate_async_send_to(basic_datagram_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, const endpoint_type& destination, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send_to( - self_->impl_.get_implementation(), buffers, destination, - flags, handler2.value, self_->impl_.get_executor()); - } - - private: - basic_datagram_socket* self_; - }; - - class initiate_async_receive - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive(basic_datagram_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_datagram_socket* self_; - }; - - class initiate_async_receive_from - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive_from(basic_datagram_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, endpoint_type* sender_endpoint, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive_from( - self_->impl_.get_implementation(), buffers, *sender_endpoint, - flags, handler2.value, self_->impl_.get_executor()); - } - - private: - basic_datagram_socket* self_; - }; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_DATAGRAM_SOCKET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_deadline_timer.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_deadline_timer.hpp deleted file mode 100644 index 7e95f2b5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_deadline_timer.hpp +++ /dev/null @@ -1,693 +0,0 @@ -// -// basic_deadline_timer.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_DEADLINE_TIMER_HPP -#define ASIO_BASIC_DEADLINE_TIMER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - || defined(GENERATING_DOCUMENTATION) - -#include -#include "asio/any_io_executor.hpp" -#include "asio/detail/deadline_timer_service.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/time_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Provides waitable timer functionality. -/** - * The basic_deadline_timer class template provides the ability to perform a - * blocking or asynchronous wait for a timer to expire. - * - * A deadline timer is always in one of two states: "expired" or "not expired". - * If the wait() or async_wait() function is called on an expired timer, the - * wait operation will complete immediately. - * - * Most applications will use the asio::deadline_timer typedef. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Examples - * Performing a blocking wait: - * @code - * // Construct a timer without setting an expiry time. - * asio::deadline_timer timer(my_context); - * - * // Set an expiry time relative to now. - * timer.expires_from_now(boost::posix_time::seconds(5)); - * - * // Wait for the timer to expire. - * timer.wait(); - * @endcode - * - * @par - * Performing an asynchronous wait: - * @code - * void handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Timer expired. - * } - * } - * - * ... - * - * // Construct a timer with an absolute expiry time. - * asio::deadline_timer timer(my_context, - * boost::posix_time::time_from_string("2005-12-07 23:59:59.000")); - * - * // Start an asynchronous wait. - * timer.async_wait(handler); - * @endcode - * - * @par Changing an active deadline_timer's expiry time - * - * Changing the expiry time of a timer while there are pending asynchronous - * waits causes those wait operations to be cancelled. To ensure that the action - * associated with the timer is performed only once, use something like this: - * used: - * - * @code - * void on_some_event() - * { - * if (my_timer.expires_from_now(seconds(5)) > 0) - * { - * // We managed to cancel the timer. Start new asynchronous wait. - * my_timer.async_wait(on_timeout); - * } - * else - * { - * // Too late, timer has already expired! - * } - * } - * - * void on_timeout(const asio::error_code& e) - * { - * if (e != asio::error::operation_aborted) - * { - * // Timer was not cancelled, take necessary action. - * } - * } - * @endcode - * - * @li The asio::basic_deadline_timer::expires_from_now() function - * cancels any pending asynchronous waits, and returns the number of - * asynchronous waits that were cancelled. If it returns 0 then you were too - * late and the wait handler has already been executed, or will soon be - * executed. If it returns 1 then the wait handler was successfully cancelled. - * - * @li If a wait handler is cancelled, the asio::error_code passed to - * it contains the value asio::error::operation_aborted. - */ -template , - typename Executor = any_io_executor> -class basic_deadline_timer -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the timer type to another executor. - template - struct rebind_executor - { - /// The timer type when rebound to the specified executor. - typedef basic_deadline_timer other; - }; - - /// The time traits type. - typedef TimeTraits traits_type; - - /// The time type. - typedef typename traits_type::time_type time_type; - - /// The duration type. - typedef typename traits_type::duration_type duration_type; - - /// Constructor. - /** - * This constructor creates a timer without setting an expiry time. The - * expires_at() or expires_from_now() functions must be called to set an - * expiry time before the timer can be waited on. - * - * @param ex The I/O executor that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - */ - explicit basic_deadline_timer(const executor_type& ex) - : impl_(ex) - { - } - - /// Constructor. - /** - * This constructor creates a timer without setting an expiry time. The - * expires_at() or expires_from_now() functions must be called to set an - * expiry time before the timer can be waited on. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - */ - template - explicit basic_deadline_timer(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - } - - /// Constructor to set a particular expiry time as an absolute time. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param ex The I/O executor that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, expressed - * as an absolute time. - */ - basic_deadline_timer(const executor_type& ex, const time_type& expiry_time) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - } - - /// Constructor to set a particular expiry time as an absolute time. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, expressed - * as an absolute time. - */ - template - basic_deadline_timer(ExecutionContext& context, const time_type& expiry_time, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - } - - /// Constructor to set a particular expiry time relative to now. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param ex The I/O executor that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, relative to - * now. - */ - basic_deadline_timer(const executor_type& ex, - const duration_type& expiry_time) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_from_now"); - } - - /// Constructor to set a particular expiry time relative to now. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, relative to - * now. - */ - template - basic_deadline_timer(ExecutionContext& context, - const duration_type& expiry_time, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_from_now"); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_deadline_timer from another. - /** - * This constructor moves a timer from one object to another. - * - * @param other The other basic_deadline_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_deadline_timer(const executor_type&) - * constructor. - */ - basic_deadline_timer(basic_deadline_timer&& other) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_deadline_timer from another. - /** - * This assignment operator moves a timer from one object to another. Cancels - * any outstanding asynchronous operations associated with the target object. - * - * @param other The other basic_deadline_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_deadline_timer(const executor_type&) - * constructor. - */ - basic_deadline_timer& operator=(basic_deadline_timer&& other) - { - impl_ = std::move(other.impl_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the timer. - /** - * This function destroys the timer, cancelling any outstanding asynchronous - * wait operations associated with the timer as if by calling @c cancel. - */ - ~basic_deadline_timer() - { - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - - /// Cancel any asynchronous operations that are waiting on the timer. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the timer. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel() - { - asio::error_code ec; - std::size_t s = impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - return s; - } - - /// Cancel any asynchronous operations that are waiting on the timer. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the timer. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel(asio::error_code& ec) - { - return impl_.get_service().cancel(impl_.get_implementation(), ec); - } - - /// Cancels one asynchronous operation that is waiting on the timer. - /** - * This function forces the completion of one pending asynchronous wait - * operation against the timer. Handlers are cancelled in FIFO order. The - * handler for the cancelled operation will be invoked with the - * asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @return The number of asynchronous operations that were cancelled. That is, - * either 0 or 1. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when cancel_one() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel_one() - { - asio::error_code ec; - std::size_t s = impl_.get_service().cancel_one( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel_one"); - return s; - } - - /// Cancels one asynchronous operation that is waiting on the timer. - /** - * This function forces the completion of one pending asynchronous wait - * operation against the timer. Handlers are cancelled in FIFO order. The - * handler for the cancelled operation will be invoked with the - * asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. That is, - * either 0 or 1. - * - * @note If the timer has already expired when cancel_one() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel_one(asio::error_code& ec) - { - return impl_.get_service().cancel_one(impl_.get_implementation(), ec); - } - - /// Get the timer's expiry time as an absolute time. - /** - * This function may be used to obtain the timer's current expiry time. - * Whether the timer has expired or not does not affect this value. - */ - time_type expires_at() const - { - return impl_.get_service().expires_at(impl_.get_implementation()); - } - - /// Set the timer's expiry time as an absolute time. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when expires_at() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_at(const time_type& expiry_time) - { - asio::error_code ec; - std::size_t s = impl_.get_service().expires_at( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - return s; - } - - /// Set the timer's expiry time as an absolute time. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when expires_at() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_at(const time_type& expiry_time, - asio::error_code& ec) - { - return impl_.get_service().expires_at( - impl_.get_implementation(), expiry_time, ec); - } - - /// Get the timer's expiry time relative to now. - /** - * This function may be used to obtain the timer's current expiry time. - * Whether the timer has expired or not does not affect this value. - */ - duration_type expires_from_now() const - { - return impl_.get_service().expires_from_now(impl_.get_implementation()); - } - - /// Set the timer's expiry time relative to now. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when expires_from_now() is called, - * then the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_from_now(const duration_type& expiry_time) - { - asio::error_code ec; - std::size_t s = impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_from_now"); - return s; - } - - /// Set the timer's expiry time relative to now. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when expires_from_now() is called, - * then the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_from_now(const duration_type& expiry_time, - asio::error_code& ec) - { - return impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - } - - /// Perform a blocking wait on the timer. - /** - * This function is used to wait for the timer to expire. This function - * blocks and does not return until the timer has expired. - * - * @throws asio::system_error Thrown on failure. - */ - void wait() - { - asio::error_code ec; - impl_.get_service().wait(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "wait"); - } - - /// Perform a blocking wait on the timer. - /** - * This function is used to wait for the timer to expire. This function - * blocks and does not return until the timer has expired. - * - * @param ec Set to indicate what error occurred, if any. - */ - void wait(asio::error_code& ec) - { - impl_.get_service().wait(impl_.get_implementation(), ec); - } - - /// Start an asynchronous wait on the timer. - /** - * This function may be used to initiate an asynchronous wait against the - * timer. It always returns immediately. - * - * For each call to async_wait(), the supplied handler will be called exactly - * once. The handler will be called when: - * - * @li The timer has expired. - * - * @li The timer was cancelled, in which case the handler is passed the error - * code asio::error::operation_aborted. - * - * @param handler The handler to be called when the timer expires. Copies - * will be made of the handler as required. The function signature of the - * handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code)) - WaitHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WaitHandler, - void (asio::error_code)) - async_wait( - ASIO_MOVE_ARG(WaitHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_wait(this), handler); - } - -private: - // Disallow copying and assignment. - basic_deadline_timer(const basic_deadline_timer&) ASIO_DELETED; - basic_deadline_timer& operator=( - const basic_deadline_timer&) ASIO_DELETED; - - class initiate_async_wait - { - public: - typedef Executor executor_type; - - explicit initiate_async_wait(basic_deadline_timer* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WaitHandler) handler) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WaitHandler. - ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_wait( - self_->impl_.get_implementation(), - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_deadline_timer* self_; - }; - - detail::io_object_impl< - detail::deadline_timer_service, Executor> impl_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // || defined(GENERATING_DOCUMENTATION) - -#endif // ASIO_BASIC_DEADLINE_TIMER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_io_object.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_io_object.hpp deleted file mode 100644 index b6d5f46f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_io_object.hpp +++ /dev/null @@ -1,290 +0,0 @@ -// -// basic_io_object.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_IO_OBJECT_HPP -#define ASIO_BASIC_IO_OBJECT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/io_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_HAS_MOVE) -namespace detail -{ - // Type trait used to determine whether a service supports move. - template - class service_has_move - { - private: - typedef IoObjectService service_type; - typedef typename service_type::implementation_type implementation_type; - - template - static auto asio_service_has_move_eval(T* t, U* u) - -> decltype(t->move_construct(*u, *u), char()); - static char (&asio_service_has_move_eval(...))[2]; - - public: - static const bool value = - sizeof(asio_service_has_move_eval( - static_cast(0), - static_cast(0))) == 1; - }; -} -#endif // defined(ASIO_HAS_MOVE) - -/// Base class for all I/O objects. -/** - * @note All I/O objects are non-copyable. However, when using C++0x, certain - * I/O objects do support move construction and move assignment. - */ -#if !defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) -template -#else -template ::value> -#endif -class basic_io_object -{ -public: - /// The type of the service that will be used to provide I/O operations. - typedef IoObjectService service_type; - - /// The underlying implementation type of I/O object. - typedef typename service_type::implementation_type implementation_type; - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use get_executor().) Get the io_context associated with the - /// object. - /** - * This function may be used to obtain the io_context object that the I/O - * object uses to dispatch handlers for asynchronous operations. - * - * @return A reference to the io_context object that the I/O object will use - * to dispatch handlers. Ownership is not transferred to the caller. - */ - asio::io_context& get_io_context() - { - return service_.get_io_context(); - } - - /// (Deprecated: Use get_executor().) Get the io_context associated with the - /// object. - /** - * This function may be used to obtain the io_context object that the I/O - * object uses to dispatch handlers for asynchronous operations. - * - * @return A reference to the io_context object that the I/O object will use - * to dispatch handlers. Ownership is not transferred to the caller. - */ - asio::io_context& get_io_service() - { - return service_.get_io_context(); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// The type of the executor associated with the object. - typedef asio::io_context::executor_type executor_type; - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return service_.get_io_context().get_executor(); - } - -protected: - /// Construct a basic_io_object. - /** - * Performs: - * @code get_service().construct(get_implementation()); @endcode - */ - explicit basic_io_object(asio::io_context& io_context) - : service_(asio::use_service(io_context)) - { - service_.construct(implementation_); - } - -#if defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_io_object. - /** - * Performs: - * @code get_service().move_construct( - * get_implementation(), other.get_implementation()); @endcode - * - * @note Available only for services that support movability, - */ - basic_io_object(basic_io_object&& other); - - /// Move-assign a basic_io_object. - /** - * Performs: - * @code get_service().move_assign(get_implementation(), - * other.get_service(), other.get_implementation()); @endcode - * - * @note Available only for services that support movability, - */ - basic_io_object& operator=(basic_io_object&& other); - - /// Perform a converting move-construction of a basic_io_object. - template - basic_io_object(IoObjectService1& other_service, - typename IoObjectService1::implementation_type& other_implementation); -#endif // defined(GENERATING_DOCUMENTATION) - - /// Protected destructor to prevent deletion through this type. - /** - * Performs: - * @code get_service().destroy(get_implementation()); @endcode - */ - ~basic_io_object() - { - service_.destroy(implementation_); - } - - /// Get the service associated with the I/O object. - service_type& get_service() - { - return service_; - } - - /// Get the service associated with the I/O object. - const service_type& get_service() const - { - return service_; - } - - /// Get the underlying implementation of the I/O object. - implementation_type& get_implementation() - { - return implementation_; - } - - /// Get the underlying implementation of the I/O object. - const implementation_type& get_implementation() const - { - return implementation_; - } - -private: - basic_io_object(const basic_io_object&); - basic_io_object& operator=(const basic_io_object&); - - // The service associated with the I/O object. - service_type& service_; - - /// The underlying implementation of the I/O object. - implementation_type implementation_; -}; - -#if defined(ASIO_HAS_MOVE) -// Specialisation for movable objects. -template -class basic_io_object -{ -public: - typedef IoObjectService service_type; - typedef typename service_type::implementation_type implementation_type; - -#if !defined(ASIO_NO_DEPRECATED) - asio::io_context& get_io_context() - { - return service_->get_io_context(); - } - - asio::io_context& get_io_service() - { - return service_->get_io_context(); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - typedef asio::io_context::executor_type executor_type; - - executor_type get_executor() ASIO_NOEXCEPT - { - return service_->get_io_context().get_executor(); - } - -protected: - explicit basic_io_object(asio::io_context& io_context) - : service_(&asio::use_service(io_context)) - { - service_->construct(implementation_); - } - - basic_io_object(basic_io_object&& other) - : service_(&other.get_service()) - { - service_->move_construct(implementation_, other.implementation_); - } - - template - basic_io_object(IoObjectService1& other_service, - typename IoObjectService1::implementation_type& other_implementation) - : service_(&asio::use_service( - other_service.get_io_context())) - { - service_->converting_move_construct(implementation_, - other_service, other_implementation); - } - - ~basic_io_object() - { - service_->destroy(implementation_); - } - - basic_io_object& operator=(basic_io_object&& other) - { - service_->move_assign(implementation_, - *other.service_, other.implementation_); - service_ = other.service_; - return *this; - } - - service_type& get_service() - { - return *service_; - } - - const service_type& get_service() const - { - return *service_; - } - - implementation_type& get_implementation() - { - return implementation_; - } - - const implementation_type& get_implementation() const - { - return implementation_; - } - -private: - basic_io_object(const basic_io_object&); - void operator=(const basic_io_object&); - - IoObjectService* service_; - implementation_type implementation_; -}; -#endif // defined(ASIO_HAS_MOVE) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_IO_OBJECT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_raw_socket.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_raw_socket.hpp deleted file mode 100644 index 52368705..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_raw_socket.hpp +++ /dev/null @@ -1,1206 +0,0 @@ -// -// basic_raw_socket.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_RAW_SOCKET_HPP -#define ASIO_BASIC_RAW_SOCKET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/basic_socket.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_RAW_SOCKET_FWD_DECL) -#define ASIO_BASIC_RAW_SOCKET_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_raw_socket; - -#endif // !defined(ASIO_BASIC_RAW_SOCKET_FWD_DECL) - -/// Provides raw-oriented socket functionality. -/** - * The basic_raw_socket class template provides asynchronous and blocking - * raw-oriented socket functionality. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - */ -template -class basic_raw_socket - : public basic_socket -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the socket type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_raw_socket other; - }; - - /// The native representation of a socket. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#else - typedef typename basic_socket::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// Construct a basic_raw_socket without opening it. - /** - * This constructor creates a raw socket without opening it. The open() - * function must be called before data can be sent or received on the socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - */ - explicit basic_raw_socket(const executor_type& ex) - : basic_socket(ex) - { - } - - /// Construct a basic_raw_socket without opening it. - /** - * This constructor creates a raw socket without opening it. The open() - * function must be called before data can be sent or received on the socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - */ - template - explicit basic_raw_socket(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context) - { - } - - /// Construct and open a basic_raw_socket. - /** - * This constructor creates and opens a raw socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_raw_socket(const executor_type& ex, const protocol_type& protocol) - : basic_socket(ex, protocol) - { - } - - /// Construct and open a basic_raw_socket. - /** - * This constructor creates and opens a raw socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_raw_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol) - { - } - - /// Construct a basic_raw_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a raw socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the raw - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - basic_raw_socket(const executor_type& ex, const endpoint_type& endpoint) - : basic_socket(ex, endpoint) - { - } - - /// Construct a basic_raw_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a raw socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the raw - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_raw_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, endpoint) - { - } - - /// Construct a basic_raw_socket on an existing native socket. - /** - * This constructor creates a raw socket object to hold an existing - * native socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - basic_raw_socket(const executor_type& ex, - const protocol_type& protocol, const native_handle_type& native_socket) - : basic_socket(ex, protocol, native_socket) - { - } - - /// Construct a basic_raw_socket on an existing native socket. - /** - * This constructor creates a raw socket object to hold an existing - * native socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_raw_socket(ExecutionContext& context, - const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol, native_socket) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_raw_socket from another. - /** - * This constructor moves a raw socket from one object to another. - * - * @param other The other basic_raw_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_raw_socket(const executor_type&) - * constructor. - */ - basic_raw_socket(basic_raw_socket&& other) ASIO_NOEXCEPT - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_raw_socket from another. - /** - * This assignment operator moves a raw socket from one object to another. - * - * @param other The other basic_raw_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_raw_socket(const executor_type&) - * constructor. - */ - basic_raw_socket& operator=(basic_raw_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } - - /// Move-construct a basic_raw_socket from a socket of another protocol - /// type. - /** - * This constructor moves a raw socket from one object to another. - * - * @param other The other basic_raw_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_raw_socket(const executor_type&) - * constructor. - */ - template - basic_raw_socket(basic_raw_socket&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_raw_socket from a socket of another protocol type. - /** - * This assignment operator moves a raw socket from one object to another. - * - * @param other The other basic_raw_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_raw_socket(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_raw_socket& - >::type operator=(basic_raw_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the socket. - /** - * This function destroys the socket, cancelling any outstanding asynchronous - * operations associated with the socket as if by calling @c cancel. - */ - ~basic_raw_socket() - { - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the raw socket. The function call - * will block until the data has been sent successfully or an error occurs. - * - * @param buffers One ore more data buffers to be sent on the socket. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected raw socket. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code socket.send(asio::buffer(data, size)); @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the raw socket. The function call - * will block until the data has been sent successfully or an error occurs. - * - * @param buffers One ore more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected raw socket. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on a connected socket. - /** - * This function is used to send data on the raw socket. The function call - * will block until the data has been sent successfully or an error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. - * - * @note The send operation can only be used with a connected socket. Use - * the send_to function to send data on an unconnected raw socket. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous send on a connected socket. - /** - * This function is used to send data on the raw socket. The function call - * will block until the data has been sent successfully or an error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_send operation can only be used with a connected socket. - * Use the async_send_to function to send data on an unconnected raw - * socket. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_send(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous send on a connected socket. - /** - * This function is used to send data on the raw socket. The function call - * will block until the data has been sent successfully or an error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_send operation can only be used with a connected socket. - * Use the async_send_to function to send data on an unconnected raw - * socket. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, buffers, flags); - } - - /// Send raw data to the specified endpoint. - /** - * This function is used to send raw data to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * asio::ip::udp::endpoint destination( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.send_to(asio::buffer(data, size), destination); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send_to( - this->impl_.get_implementation(), buffers, destination, 0, ec); - asio::detail::throw_error(ec, "send_to"); - return s; - } - - /// Send raw data to the specified endpoint. - /** - * This function is used to send raw data to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send_to( - this->impl_.get_implementation(), buffers, destination, flags, ec); - asio::detail::throw_error(ec, "send_to"); - return s; - } - - /// Send raw data to the specified endpoint. - /** - * This function is used to send raw data to the specified remote endpoint. - * The function call will block until the data has been sent successfully or - * an error occurs. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * - * @param destination The remote endpoint to which the data will be sent. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. - */ - template - std::size_t send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - asio::error_code& ec) - { - return this->impl_.get_service().send_to(this->impl_.get_implementation(), - buffers, destination, flags, ec); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send raw data to the specified - * remote endpoint. The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param destination The remote endpoint to which the data will be sent. - * Copies will be made of the endpoint as required. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * asio::ip::udp::endpoint destination( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.async_send_to( - * asio::buffer(data, size), destination, handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send_to(this), handler, buffers, - destination, socket_base::message_flags(0)); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send raw data to the specified - * remote endpoint. The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent to the remote endpoint. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param destination The remote endpoint to which the data will be sent. - * Copies will be made of the endpoint as required. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send_to(this), handler, buffers, destination, flags); - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the raw socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected raw - * socket. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code socket.receive(asio::buffer(data, size)); @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the raw socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected raw - * socket. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the raw socket. The function - * call will block until data has been received successfully or an error - * occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. - * - * @note The receive operation can only be used with a connected socket. Use - * the receive_from function to receive data on an unconnected raw - * socket. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous receive on a connected socket. - /** - * This function is used to asynchronously receive data from the raw - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_receive operation can only be used with a connected socket. - * Use the async_receive_from function to receive data on an unconnected - * raw socket. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous receive on a connected socket. - /** - * This function is used to asynchronously receive data from the raw - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The async_receive operation can only be used with a connected socket. - * Use the async_receive_from function to receive data on an unconnected - * raw socket. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, buffers, flags); - } - - /// Receive raw data with the endpoint of the sender. - /** - * This function is used to receive raw data. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the data. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * asio::ip::udp::endpoint sender_endpoint; - * socket.receive_from( - * asio::buffer(data, size), sender_endpoint); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, 0, ec); - asio::detail::throw_error(ec, "receive_from"); - return s; - } - - /// Receive raw data with the endpoint of the sender. - /** - * This function is used to receive raw data. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the data. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, flags, ec); - asio::detail::throw_error(ec, "receive_from"); - return s; - } - - /// Receive raw data with the endpoint of the sender. - /** - * This function is used to receive raw data. The function call will block - * until data has been received successfully or an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the data. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. - */ - template - std::size_t receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - asio::error_code& ec) - { - return this->impl_.get_service().receive_from( - this->impl_.get_implementation(), buffers, sender_endpoint, flags, ec); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive raw data. The function - * call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the data. Ownership of the sender_endpoint object - * is retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code socket.async_receive_from( - * asio::buffer(data, size), 0, sender_endpoint, handler); @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_from(this), handler, buffers, - &sender_endpoint, socket_base::message_flags(0)); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive raw data. The function - * call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param sender_endpoint An endpoint object that receives the endpoint of - * the remote sender of the data. Ownership of the sender_endpoint object - * is retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_from(this), handler, - buffers, &sender_endpoint, flags); - } - -private: - // Disallow copying and assignment. - basic_raw_socket(const basic_raw_socket&) ASIO_DELETED; - basic_raw_socket& operator=(const basic_raw_socket&) ASIO_DELETED; - - class initiate_async_send - { - public: - typedef Executor executor_type; - - explicit initiate_async_send(basic_raw_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_raw_socket* self_; - }; - - class initiate_async_send_to - { - public: - typedef Executor executor_type; - - explicit initiate_async_send_to(basic_raw_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, const endpoint_type& destination, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send_to( - self_->impl_.get_implementation(), buffers, destination, - flags, handler2.value, self_->impl_.get_executor()); - } - - private: - basic_raw_socket* self_; - }; - - class initiate_async_receive - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive(basic_raw_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_raw_socket* self_; - }; - - class initiate_async_receive_from - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive_from(basic_raw_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, endpoint_type* sender_endpoint, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive_from( - self_->impl_.get_implementation(), buffers, *sender_endpoint, - flags, handler2.value, self_->impl_.get_executor()); - } - - private: - basic_raw_socket* self_; - }; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_RAW_SOCKET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_seq_packet_socket.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_seq_packet_socket.hpp deleted file mode 100644 index 81069498..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_seq_packet_socket.hpp +++ /dev/null @@ -1,761 +0,0 @@ -// -// basic_seq_packet_socket.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SEQ_PACKET_SOCKET_HPP -#define ASIO_BASIC_SEQ_PACKET_SOCKET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/basic_socket.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_SEQ_PACKET_SOCKET_FWD_DECL) -#define ASIO_BASIC_SEQ_PACKET_SOCKET_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_seq_packet_socket; - -#endif // !defined(ASIO_BASIC_SEQ_PACKET_SOCKET_FWD_DECL) - -/// Provides sequenced packet socket functionality. -/** - * The basic_seq_packet_socket class template provides asynchronous and blocking - * sequenced packet socket functionality. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - */ -template -class basic_seq_packet_socket - : public basic_socket -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the socket type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_seq_packet_socket other; - }; - - /// The native representation of a socket. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#else - typedef typename basic_socket::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// Construct a basic_seq_packet_socket without opening it. - /** - * This constructor creates a sequenced packet socket without opening it. The - * socket needs to be opened and then connected or accepted before data can - * be sent or received on it. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - */ - explicit basic_seq_packet_socket(const executor_type& ex) - : basic_socket(ex) - { - } - - /// Construct a basic_seq_packet_socket without opening it. - /** - * This constructor creates a sequenced packet socket without opening it. The - * socket needs to be opened and then connected or accepted before data can - * be sent or received on it. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - */ - template - explicit basic_seq_packet_socket(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context) - { - } - - /// Construct and open a basic_seq_packet_socket. - /** - * This constructor creates and opens a sequenced_packet socket. The socket - * needs to be connected or accepted before data can be sent or received on - * it. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_seq_packet_socket(const executor_type& ex, - const protocol_type& protocol) - : basic_socket(ex, protocol) - { - } - - /// Construct and open a basic_seq_packet_socket. - /** - * This constructor creates and opens a sequenced_packet socket. The socket - * needs to be connected or accepted before data can be sent or received on - * it. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_seq_packet_socket(ExecutionContext& context, - const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol) - { - } - - /// Construct a basic_seq_packet_socket, opening it and binding it to the - /// given local endpoint. - /** - * This constructor creates a sequenced packet socket and automatically opens - * it bound to the specified endpoint on the local machine. The protocol used - * is the protocol associated with the given endpoint. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the sequenced - * packet socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - basic_seq_packet_socket(const executor_type& ex, - const endpoint_type& endpoint) - : basic_socket(ex, endpoint) - { - } - - /// Construct a basic_seq_packet_socket, opening it and binding it to the - /// given local endpoint. - /** - * This constructor creates a sequenced packet socket and automatically opens - * it bound to the specified endpoint on the local machine. The protocol used - * is the protocol associated with the given endpoint. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the sequenced - * packet socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_seq_packet_socket(ExecutionContext& context, - const endpoint_type& endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, endpoint) - { - } - - /// Construct a basic_seq_packet_socket on an existing native socket. - /** - * This constructor creates a sequenced packet socket object to hold an - * existing native socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - basic_seq_packet_socket(const executor_type& ex, - const protocol_type& protocol, const native_handle_type& native_socket) - : basic_socket(ex, protocol, native_socket) - { - } - - /// Construct a basic_seq_packet_socket on an existing native socket. - /** - * This constructor creates a sequenced packet socket object to hold an - * existing native socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_seq_packet_socket(ExecutionContext& context, - const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol, native_socket) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_seq_packet_socket from another. - /** - * This constructor moves a sequenced packet socket from one object to - * another. - * - * @param other The other basic_seq_packet_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_seq_packet_socket(const executor_type&) - * constructor. - */ - basic_seq_packet_socket(basic_seq_packet_socket&& other) ASIO_NOEXCEPT - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_seq_packet_socket from another. - /** - * This assignment operator moves a sequenced packet socket from one object to - * another. - * - * @param other The other basic_seq_packet_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_seq_packet_socket(const executor_type&) - * constructor. - */ - basic_seq_packet_socket& operator=(basic_seq_packet_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } - - /// Move-construct a basic_seq_packet_socket from a socket of another protocol - /// type. - /** - * This constructor moves a sequenced packet socket from one object to - * another. - * - * @param other The other basic_seq_packet_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_seq_packet_socket(const executor_type&) - * constructor. - */ - template - basic_seq_packet_socket(basic_seq_packet_socket&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_seq_packet_socket from a socket of another protocol - /// type. - /** - * This assignment operator moves a sequenced packet socket from one object to - * another. - * - * @param other The other basic_seq_packet_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_seq_packet_socket(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_seq_packet_socket& - >::type operator=(basic_seq_packet_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the socket. - /** - * This function destroys the socket, cancelling any outstanding asynchronous - * operations associated with the socket as if by calling @c cancel. - */ - ~basic_seq_packet_socket() - { - } - - /// Send some data on the socket. - /** - * This function is used to send data on the sequenced packet socket. The - * function call will block until the data has been sent successfully, or an - * until error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.send(asio::buffer(data, size), 0); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on the socket. - /** - * This function is used to send data on the sequenced packet socket. The - * function call will block the data has been sent successfully, or an until - * error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. Returns 0 if an error occurred. - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref write function if you need to ensure that all data - * is written before the blocking operation completes. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send data on the sequenced packet - * socket. The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_send(asio::buffer(data, size), 0, handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, buffers, flags); - } - - /// Receive some data on the socket. - /** - * This function is used to receive data on the sequenced packet socket. The - * function call will block until data has been received successfully, or - * until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param out_flags After the receive call completes, contains flags - * associated with the received data. For example, if the - * socket_base::message_end_of_record bit is set then the received data marks - * the end of a record. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.receive(asio::buffer(data, size), out_flags); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags& out_flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_with_flags( - this->impl_.get_implementation(), buffers, 0, out_flags, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on the socket. - /** - * This function is used to receive data on the sequenced packet socket. The - * function call will block until data has been received successfully, or - * until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param in_flags Flags specifying how the receive call is to be made. - * - * @param out_flags After the receive call completes, contains flags - * associated with the received data. For example, if the - * socket_base::message_end_of_record bit is set then the received data marks - * the end of a record. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.receive(asio::buffer(data, size), 0, out_flags); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive_with_flags( - this->impl_.get_implementation(), buffers, in_flags, out_flags, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the sequenced packet socket. The - * function call will block until data has been received successfully, or - * until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param in_flags Flags specifying how the receive call is to be made. - * - * @param out_flags After the receive call completes, contains flags - * associated with the received data. For example, if the - * socket_base::message_end_of_record bit is set then the received data marks - * the end of a record. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. Returns 0 if an error occurred. - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, asio::error_code& ec) - { - return this->impl_.get_service().receive_with_flags( - this->impl_.get_implementation(), buffers, in_flags, out_flags, ec); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive data from the sequenced - * packet socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param out_flags Once the asynchronous operation completes, contains flags - * associated with the received data. For example, if the - * socket_base::message_end_of_record bit is set then the received data marks - * the end of a record. The caller must guarantee that the referenced - * variable remains valid until the handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive(asio::buffer(data, size), out_flags, handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags& out_flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_with_flags(this), handler, - buffers, socket_base::message_flags(0), &out_flags); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive data from the sequenced - * data socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param in_flags Flags specifying how the receive call is to be made. - * - * @param out_flags Once the asynchronous operation completes, contains flags - * associated with the received data. For example, if the - * socket_base::message_end_of_record bit is set then the received data marks - * the end of a record. The caller must guarantee that the referenced - * variable remains valid until the handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive( - * asio::buffer(data, size), - * 0, out_flags, handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive_with_flags(this), - handler, buffers, in_flags, &out_flags); - } - -private: - // Disallow copying and assignment. - basic_seq_packet_socket(const basic_seq_packet_socket&) ASIO_DELETED; - basic_seq_packet_socket& operator=( - const basic_seq_packet_socket&) ASIO_DELETED; - - class initiate_async_send - { - public: - typedef Executor executor_type; - - explicit initiate_async_send(basic_seq_packet_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_seq_packet_socket* self_; - }; - - class initiate_async_receive_with_flags - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive_with_flags(basic_seq_packet_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags* out_flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive_with_flags( - self_->impl_.get_implementation(), buffers, in_flags, - *out_flags, handler2.value, self_->impl_.get_executor()); - } - - private: - basic_seq_packet_socket* self_; - }; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_SEQ_PACKET_SOCKET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_serial_port.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_serial_port.hpp deleted file mode 100644 index 1d09c72f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_serial_port.hpp +++ /dev/null @@ -1,907 +0,0 @@ -// -// basic_serial_port.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SERIAL_PORT_HPP -#define ASIO_BASIC_SERIAL_PORT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_SERIAL_PORT) \ - || defined(GENERATING_DOCUMENTATION) - -#include -#include "asio/any_io_executor.hpp" -#include "asio/async_result.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/serial_port_base.hpp" -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_serial_port_service.hpp" -#else -# include "asio/detail/reactive_serial_port_service.hpp" -#endif - -#if defined(ASIO_HAS_MOVE) -# include -#endif // defined(ASIO_HAS_MOVE) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Provides serial port functionality. -/** - * The basic_serial_port class provides a wrapper over serial port - * functionality. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - */ -template -class basic_serial_port - : public serial_port_base -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the serial port type to another executor. - template - struct rebind_executor - { - /// The serial port type when rebound to the specified executor. - typedef basic_serial_port other; - }; - - /// The native representation of a serial port. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#elif defined(ASIO_HAS_IOCP) - typedef detail::win_iocp_serial_port_service::native_handle_type - native_handle_type; -#else - typedef detail::reactive_serial_port_service::native_handle_type - native_handle_type; -#endif - - /// A basic_basic_serial_port is always the lowest layer. - typedef basic_serial_port lowest_layer_type; - - /// Construct a basic_serial_port without opening it. - /** - * This constructor creates a serial port without opening it. - * - * @param ex The I/O executor that the serial port will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * serial port. - */ - explicit basic_serial_port(const executor_type& ex) - : impl_(ex) - { - } - - /// Construct a basic_serial_port without opening it. - /** - * This constructor creates a serial port without opening it. - * - * @param context An execution context which provides the I/O executor that - * the serial port will use, by default, to dispatch handlers for any - * asynchronous operations performed on the serial port. - */ - template - explicit basic_serial_port(ExecutionContext& context, - typename enable_if< - is_convertible::value, - basic_serial_port - >::type* = 0) - : impl_(context) - { - } - - /// Construct and open a basic_serial_port. - /** - * This constructor creates and opens a serial port for the specified device - * name. - * - * @param ex The I/O executor that the serial port will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * serial port. - * - * @param device The platform-specific device name for this serial - * port. - */ - basic_serial_port(const executor_type& ex, const char* device) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), device, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct and open a basic_serial_port. - /** - * This constructor creates and opens a serial port for the specified device - * name. - * - * @param context An execution context which provides the I/O executor that - * the serial port will use, by default, to dispatch handlers for any - * asynchronous operations performed on the serial port. - * - * @param device The platform-specific device name for this serial - * port. - */ - template - basic_serial_port(ExecutionContext& context, const char* device, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), device, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct and open a basic_serial_port. - /** - * This constructor creates and opens a serial port for the specified device - * name. - * - * @param ex The I/O executor that the serial port will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * serial port. - * - * @param device The platform-specific device name for this serial - * port. - */ - basic_serial_port(const executor_type& ex, const std::string& device) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), device, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct and open a basic_serial_port. - /** - * This constructor creates and opens a serial port for the specified device - * name. - * - * @param context An execution context which provides the I/O executor that - * the serial port will use, by default, to dispatch handlers for any - * asynchronous operations performed on the serial port. - * - * @param device The platform-specific device name for this serial - * port. - */ - template - basic_serial_port(ExecutionContext& context, const std::string& device, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), device, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct a basic_serial_port on an existing native serial port. - /** - * This constructor creates a serial port object to hold an existing native - * serial port. - * - * @param ex The I/O executor that the serial port will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * serial port. - * - * @param native_serial_port A native serial port. - * - * @throws asio::system_error Thrown on failure. - */ - basic_serial_port(const executor_type& ex, - const native_handle_type& native_serial_port) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - native_serial_port, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Construct a basic_serial_port on an existing native serial port. - /** - * This constructor creates a serial port object to hold an existing native - * serial port. - * - * @param context An execution context which provides the I/O executor that - * the serial port will use, by default, to dispatch handlers for any - * asynchronous operations performed on the serial port. - * - * @param native_serial_port A native serial port. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_serial_port(ExecutionContext& context, - const native_handle_type& native_serial_port, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - native_serial_port, ec); - asio::detail::throw_error(ec, "assign"); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_serial_port from another. - /** - * This constructor moves a serial port from one object to another. - * - * @param other The other basic_serial_port object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_serial_port(const executor_type&) - * constructor. - */ - basic_serial_port(basic_serial_port&& other) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_serial_port from another. - /** - * This assignment operator moves a serial port from one object to another. - * - * @param other The other basic_serial_port object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_serial_port(const executor_type&) - * constructor. - */ - basic_serial_port& operator=(basic_serial_port&& other) - { - impl_ = std::move(other.impl_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the serial port. - /** - * This function destroys the serial port, cancelling any outstanding - * asynchronous wait operations associated with the serial port as if by - * calling @c cancel. - */ - ~basic_serial_port() - { - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - - /// Get a reference to the lowest layer. - /** - * This function returns a reference to the lowest layer in a stack of - * layers. Since a basic_serial_port cannot contain any further layers, it - * simply returns a reference to itself. - * - * @return A reference to the lowest layer in the stack of layers. Ownership - * is not transferred to the caller. - */ - lowest_layer_type& lowest_layer() - { - return *this; - } - - /// Get a const reference to the lowest layer. - /** - * This function returns a const reference to the lowest layer in a stack of - * layers. Since a basic_serial_port cannot contain any further layers, it - * simply returns a reference to itself. - * - * @return A const reference to the lowest layer in the stack of layers. - * Ownership is not transferred to the caller. - */ - const lowest_layer_type& lowest_layer() const - { - return *this; - } - - /// Open the serial port using the specified device name. - /** - * This function opens the serial port for the specified device name. - * - * @param device The platform-specific device name. - * - * @throws asio::system_error Thrown on failure. - */ - void open(const std::string& device) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), device, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Open the serial port using the specified device name. - /** - * This function opens the serial port using the given platform-specific - * device name. - * - * @param device The platform-specific device name. - * - * @param ec Set the indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID open(const std::string& device, - asio::error_code& ec) - { - impl_.get_service().open(impl_.get_implementation(), device, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Assign an existing native serial port to the serial port. - /* - * This function opens the serial port to hold an existing native serial port. - * - * @param native_serial_port A native serial port. - * - * @throws asio::system_error Thrown on failure. - */ - void assign(const native_handle_type& native_serial_port) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - native_serial_port, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Assign an existing native serial port to the serial port. - /* - * This function opens the serial port to hold an existing native serial port. - * - * @param native_serial_port A native serial port. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID assign(const native_handle_type& native_serial_port, - asio::error_code& ec) - { - impl_.get_service().assign(impl_.get_implementation(), - native_serial_port, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Determine whether the serial port is open. - bool is_open() const - { - return impl_.get_service().is_open(impl_.get_implementation()); - } - - /// Close the serial port. - /** - * This function is used to close the serial port. Any asynchronous read or - * write operations will be cancelled immediately, and will complete with the - * asio::error::operation_aborted error. - * - * @throws asio::system_error Thrown on failure. - */ - void close() - { - asio::error_code ec; - impl_.get_service().close(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "close"); - } - - /// Close the serial port. - /** - * This function is used to close the serial port. Any asynchronous read or - * write operations will be cancelled immediately, and will complete with the - * asio::error::operation_aborted error. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - impl_.get_service().close(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get the native serial port representation. - /** - * This function may be used to obtain the underlying representation of the - * serial port. This is intended to allow access to native serial port - * functionality that is not otherwise provided. - */ - native_handle_type native_handle() - { - return impl_.get_service().native_handle(impl_.get_implementation()); - } - - /// Cancel all asynchronous operations associated with the serial port. - /** - * This function causes all outstanding asynchronous read or write operations - * to finish immediately, and the handlers for cancelled operations will be - * passed the asio::error::operation_aborted error. - * - * @throws asio::system_error Thrown on failure. - */ - void cancel() - { - asio::error_code ec; - impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - } - - /// Cancel all asynchronous operations associated with the serial port. - /** - * This function causes all outstanding asynchronous read or write operations - * to finish immediately, and the handlers for cancelled operations will be - * passed the asio::error::operation_aborted error. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID cancel(asio::error_code& ec) - { - impl_.get_service().cancel(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Send a break sequence to the serial port. - /** - * This function causes a break sequence of platform-specific duration to be - * sent out the serial port. - * - * @throws asio::system_error Thrown on failure. - */ - void send_break() - { - asio::error_code ec; - impl_.get_service().send_break(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "send_break"); - } - - /// Send a break sequence to the serial port. - /** - * This function causes a break sequence of platform-specific duration to be - * sent out the serial port. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID send_break(asio::error_code& ec) - { - impl_.get_service().send_break(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Set an option on the serial port. - /** - * This function is used to set an option on the serial port. - * - * @param option The option value to be set on the serial port. - * - * @throws asio::system_error Thrown on failure. - * - * @sa SettableSerialPortOption @n - * asio::serial_port_base::baud_rate @n - * asio::serial_port_base::flow_control @n - * asio::serial_port_base::parity @n - * asio::serial_port_base::stop_bits @n - * asio::serial_port_base::character_size - */ - template - void set_option(const SettableSerialPortOption& option) - { - asio::error_code ec; - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "set_option"); - } - - /// Set an option on the serial port. - /** - * This function is used to set an option on the serial port. - * - * @param option The option value to be set on the serial port. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa SettableSerialPortOption @n - * asio::serial_port_base::baud_rate @n - * asio::serial_port_base::flow_control @n - * asio::serial_port_base::parity @n - * asio::serial_port_base::stop_bits @n - * asio::serial_port_base::character_size - */ - template - ASIO_SYNC_OP_VOID set_option(const SettableSerialPortOption& option, - asio::error_code& ec) - { - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get an option from the serial port. - /** - * This function is used to get the current value of an option on the serial - * port. - * - * @param option The option value to be obtained from the serial port. - * - * @throws asio::system_error Thrown on failure. - * - * @sa GettableSerialPortOption @n - * asio::serial_port_base::baud_rate @n - * asio::serial_port_base::flow_control @n - * asio::serial_port_base::parity @n - * asio::serial_port_base::stop_bits @n - * asio::serial_port_base::character_size - */ - template - void get_option(GettableSerialPortOption& option) const - { - asio::error_code ec; - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "get_option"); - } - - /// Get an option from the serial port. - /** - * This function is used to get the current value of an option on the serial - * port. - * - * @param option The option value to be obtained from the serial port. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa GettableSerialPortOption @n - * asio::serial_port_base::baud_rate @n - * asio::serial_port_base::flow_control @n - * asio::serial_port_base::parity @n - * asio::serial_port_base::stop_bits @n - * asio::serial_port_base::character_size - */ - template - ASIO_SYNC_OP_VOID get_option(GettableSerialPortOption& option, - asio::error_code& ec) const - { - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Write some data to the serial port. - /** - * This function is used to write data to the serial port. The function call - * will block until one or more bytes of the data has been written - * successfully, or until an error occurs. - * - * @param buffers One or more data buffers to be written to the serial port. - * - * @returns The number of bytes written. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that - * all data is written before the blocking operation completes. - * - * @par Example - * To write a single data buffer use the @ref buffer function as follows: - * @code - * basic_serial_port.write_some(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on writing multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t write_some(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = impl_.get_service().write_some( - impl_.get_implementation(), buffers, ec); - asio::detail::throw_error(ec, "write_some"); - return s; - } - - /// Write some data to the serial port. - /** - * This function is used to write data to the serial port. The function call - * will block until one or more bytes of the data has been written - * successfully, or until an error occurs. - * - * @param buffers One or more data buffers to be written to the serial port. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes written. Returns 0 if an error occurred. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that - * all data is written before the blocking operation completes. - */ - template - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec) - { - return impl_.get_service().write_some( - impl_.get_implementation(), buffers, ec); - } - - /// Start an asynchronous write. - /** - * This function is used to asynchronously write data to the serial port. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be written to the serial port. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the write operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes written. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The write operation may not transmit all of the data to the peer. - * Consider using the @ref async_write function if you need to ensure that all - * data is written before the asynchronous operation completes. - * - * @par Example - * To write a single data buffer use the @ref buffer function as follows: - * @code - * basic_serial_port.async_write_some( - * asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on writing multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_write_some(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_write_some(this), handler, buffers); - } - - /// Read some data from the serial port. - /** - * This function is used to read data from the serial port. The function - * call will block until one or more bytes of data has been read successfully, - * or until an error occurs. - * - * @param buffers One or more buffers into which the data will be read. - * - * @returns The number of bytes read. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that - * the requested amount of data is read before the blocking operation - * completes. - * - * @par Example - * To read into a single data buffer use the @ref buffer function as follows: - * @code - * basic_serial_port.read_some(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on reading into multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t read_some(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = impl_.get_service().read_some( - impl_.get_implementation(), buffers, ec); - asio::detail::throw_error(ec, "read_some"); - return s; - } - - /// Read some data from the serial port. - /** - * This function is used to read data from the serial port. The function - * call will block until one or more bytes of data has been read successfully, - * or until an error occurs. - * - * @param buffers One or more buffers into which the data will be read. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes read. Returns 0 if an error occurred. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that - * the requested amount of data is read before the blocking operation - * completes. - */ - template - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return impl_.get_service().read_some( - impl_.get_implementation(), buffers, ec); - } - - /// Start an asynchronous read. - /** - * This function is used to asynchronously read data from the serial port. - * The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be read. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the read operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes read. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The read operation may not read all of the requested number of bytes. - * Consider using the @ref async_read function if you need to ensure that the - * requested amount of data is read before the asynchronous operation - * completes. - * - * @par Example - * To read into a single data buffer use the @ref buffer function as follows: - * @code - * basic_serial_port.async_read_some( - * asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on reading into multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_read_some(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_read_some(this), handler, buffers); - } - -private: - // Disallow copying and assignment. - basic_serial_port(const basic_serial_port&) ASIO_DELETED; - basic_serial_port& operator=(const basic_serial_port&) ASIO_DELETED; - - class initiate_async_write_some - { - public: - typedef Executor executor_type; - - explicit initiate_async_write_some(basic_serial_port* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_write_some( - self_->impl_.get_implementation(), buffers, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_serial_port* self_; - }; - - class initiate_async_read_some - { - public: - typedef Executor executor_type; - - explicit initiate_async_read_some(basic_serial_port* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_read_some( - self_->impl_.get_implementation(), buffers, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_serial_port* self_; - }; - -#if defined(ASIO_HAS_IOCP) - detail::io_object_impl impl_; -#else - detail::io_object_impl impl_; -#endif -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_SERIAL_PORT) - // || defined(GENERATING_DOCUMENTATION) - -#endif // ASIO_BASIC_SERIAL_PORT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_signal_set.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_signal_set.hpp deleted file mode 100644 index a19d1e3c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_signal_set.hpp +++ /dev/null @@ -1,572 +0,0 @@ -// -// basic_signal_set.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SIGNAL_SET_HPP -#define ASIO_BASIC_SIGNAL_SET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/any_io_executor.hpp" -#include "asio/async_result.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/signal_set_service.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Provides signal functionality. -/** - * The basic_signal_set class provides the ability to perform an asynchronous - * wait for one or more signals to occur. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Example - * Performing an asynchronous wait: - * @code - * void handler( - * const asio::error_code& error, - * int signal_number) - * { - * if (!error) - * { - * // A signal occurred. - * } - * } - * - * ... - * - * // Construct a signal set registered for process termination. - * asio::signal_set signals(my_context, SIGINT, SIGTERM); - * - * // Start an asynchronous wait for one of the signals to occur. - * signals.async_wait(handler); - * @endcode - * - * @par Queueing of signal notifications - * - * If a signal is registered with a signal_set, and the signal occurs when - * there are no waiting handlers, then the signal notification is queued. The - * next async_wait operation on that signal_set will dequeue the notification. - * If multiple notifications are queued, subsequent async_wait operations - * dequeue them one at a time. Signal notifications are dequeued in order of - * ascending signal number. - * - * If a signal number is removed from a signal_set (using the @c remove or @c - * erase member functions) then any queued notifications for that signal are - * discarded. - * - * @par Multiple registration of signals - * - * The same signal number may be registered with different signal_set objects. - * When the signal occurs, one handler is called for each signal_set object. - * - * Note that multiple registration only works for signals that are registered - * using Asio. The application must not also register a signal handler using - * functions such as @c signal() or @c sigaction(). - * - * @par Signal masking on POSIX platforms - * - * POSIX allows signals to be blocked using functions such as @c sigprocmask() - * and @c pthread_sigmask(). For signals to be delivered, programs must ensure - * that any signals registered using signal_set objects are unblocked in at - * least one thread. - */ -template -class basic_signal_set -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the signal set type to another executor. - template - struct rebind_executor - { - /// The signal set type when rebound to the specified executor. - typedef basic_signal_set other; - }; - - /// Construct a signal set without adding any signals. - /** - * This constructor creates a signal set without registering for any signals. - * - * @param ex The I/O executor that the signal set will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * signal set. - */ - explicit basic_signal_set(const executor_type& ex) - : impl_(ex) - { - } - - /// Construct a signal set without adding any signals. - /** - * This constructor creates a signal set without registering for any signals. - * - * @param context An execution context which provides the I/O executor that - * the signal set will use, by default, to dispatch handlers for any - * asynchronous operations performed on the signal set. - */ - template - explicit basic_signal_set(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - } - - /// Construct a signal set and add one signal. - /** - * This constructor creates a signal set and registers for one signal. - * - * @param ex The I/O executor that the signal set will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * signal set. - * - * @param signal_number_1 The signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(ex); - * signals.add(signal_number_1); @endcode - */ - basic_signal_set(const executor_type& ex, int signal_number_1) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Construct a signal set and add one signal. - /** - * This constructor creates a signal set and registers for one signal. - * - * @param context An execution context which provides the I/O executor that - * the signal set will use, by default, to dispatch handlers for any - * asynchronous operations performed on the signal set. - * - * @param signal_number_1 The signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(context); - * signals.add(signal_number_1); @endcode - */ - template - basic_signal_set(ExecutionContext& context, int signal_number_1, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Construct a signal set and add two signals. - /** - * This constructor creates a signal set and registers for two signals. - * - * @param ex The I/O executor that the signal set will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * signal set. - * - * @param signal_number_1 The first signal number to be added. - * - * @param signal_number_2 The second signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(ex); - * signals.add(signal_number_1); - * signals.add(signal_number_2); @endcode - */ - basic_signal_set(const executor_type& ex, int signal_number_1, - int signal_number_2) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_2, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Construct a signal set and add two signals. - /** - * This constructor creates a signal set and registers for two signals. - * - * @param context An execution context which provides the I/O executor that - * the signal set will use, by default, to dispatch handlers for any - * asynchronous operations performed on the signal set. - * - * @param signal_number_1 The first signal number to be added. - * - * @param signal_number_2 The second signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(context); - * signals.add(signal_number_1); - * signals.add(signal_number_2); @endcode - */ - template - basic_signal_set(ExecutionContext& context, int signal_number_1, - int signal_number_2, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_2, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Construct a signal set and add three signals. - /** - * This constructor creates a signal set and registers for three signals. - * - * @param ex The I/O executor that the signal set will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * signal set. - * - * @param signal_number_1 The first signal number to be added. - * - * @param signal_number_2 The second signal number to be added. - * - * @param signal_number_3 The third signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(ex); - * signals.add(signal_number_1); - * signals.add(signal_number_2); - * signals.add(signal_number_3); @endcode - */ - basic_signal_set(const executor_type& ex, int signal_number_1, - int signal_number_2, int signal_number_3) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_2, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_3, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Construct a signal set and add three signals. - /** - * This constructor creates a signal set and registers for three signals. - * - * @param context An execution context which provides the I/O executor that - * the signal set will use, by default, to dispatch handlers for any - * asynchronous operations performed on the signal set. - * - * @param signal_number_1 The first signal number to be added. - * - * @param signal_number_2 The second signal number to be added. - * - * @param signal_number_3 The third signal number to be added. - * - * @note This constructor is equivalent to performing: - * @code asio::signal_set signals(context); - * signals.add(signal_number_1); - * signals.add(signal_number_2); - * signals.add(signal_number_3); @endcode - */ - template - basic_signal_set(ExecutionContext& context, int signal_number_1, - int signal_number_2, int signal_number_3, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number_1, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_2, ec); - asio::detail::throw_error(ec, "add"); - impl_.get_service().add(impl_.get_implementation(), signal_number_3, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Destroys the signal set. - /** - * This function destroys the signal set, cancelling any outstanding - * asynchronous wait operations associated with the signal set as if by - * calling @c cancel. - */ - ~basic_signal_set() - { - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - - /// Add a signal to a signal_set. - /** - * This function adds the specified signal to the set. It has no effect if the - * signal is already in the set. - * - * @param signal_number The signal to be added to the set. - * - * @throws asio::system_error Thrown on failure. - */ - void add(int signal_number) - { - asio::error_code ec; - impl_.get_service().add(impl_.get_implementation(), signal_number, ec); - asio::detail::throw_error(ec, "add"); - } - - /// Add a signal to a signal_set. - /** - * This function adds the specified signal to the set. It has no effect if the - * signal is already in the set. - * - * @param signal_number The signal to be added to the set. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID add(int signal_number, - asio::error_code& ec) - { - impl_.get_service().add(impl_.get_implementation(), signal_number, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Remove a signal from a signal_set. - /** - * This function removes the specified signal from the set. It has no effect - * if the signal is not in the set. - * - * @param signal_number The signal to be removed from the set. - * - * @throws asio::system_error Thrown on failure. - * - * @note Removes any notifications that have been queued for the specified - * signal number. - */ - void remove(int signal_number) - { - asio::error_code ec; - impl_.get_service().remove(impl_.get_implementation(), signal_number, ec); - asio::detail::throw_error(ec, "remove"); - } - - /// Remove a signal from a signal_set. - /** - * This function removes the specified signal from the set. It has no effect - * if the signal is not in the set. - * - * @param signal_number The signal to be removed from the set. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note Removes any notifications that have been queued for the specified - * signal number. - */ - ASIO_SYNC_OP_VOID remove(int signal_number, - asio::error_code& ec) - { - impl_.get_service().remove(impl_.get_implementation(), signal_number, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Remove all signals from a signal_set. - /** - * This function removes all signals from the set. It has no effect if the set - * is already empty. - * - * @throws asio::system_error Thrown on failure. - * - * @note Removes all queued notifications. - */ - void clear() - { - asio::error_code ec; - impl_.get_service().clear(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "clear"); - } - - /// Remove all signals from a signal_set. - /** - * This function removes all signals from the set. It has no effect if the set - * is already empty. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note Removes all queued notifications. - */ - ASIO_SYNC_OP_VOID clear(asio::error_code& ec) - { - impl_.get_service().clear(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Cancel all operations associated with the signal set. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the signal set. The handler for each cancelled - * operation will be invoked with the asio::error::operation_aborted - * error code. - * - * Cancellation does not alter the set of registered signals. - * - * @throws asio::system_error Thrown on failure. - * - * @note If a registered signal occurred before cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - void cancel() - { - asio::error_code ec; - impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - } - - /// Cancel all operations associated with the signal set. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the signal set. The handler for each cancelled - * operation will be invoked with the asio::error::operation_aborted - * error code. - * - * Cancellation does not alter the set of registered signals. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note If a registered signal occurred before cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - ASIO_SYNC_OP_VOID cancel(asio::error_code& ec) - { - impl_.get_service().cancel(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Start an asynchronous operation to wait for a signal to be delivered. - /** - * This function may be used to initiate an asynchronous wait against the - * signal set. It always returns immediately. - * - * For each call to async_wait(), the supplied handler will be called exactly - * once. The handler will be called when: - * - * @li One of the registered signals in the signal set occurs; or - * - * @li The signal set was cancelled, in which case the handler is passed the - * error code asio::error::operation_aborted. - * - * @param handler The handler to be called when the signal occurs. Copies - * will be made of the handler as required. The function signature of the - * handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * int signal_number // Indicates which signal occurred. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, int)) - SignalHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(SignalHandler, - void (asio::error_code, int)) - async_wait( - ASIO_MOVE_ARG(SignalHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_wait(this), handler); - } - -private: - // Disallow copying and assignment. - basic_signal_set(const basic_signal_set&) ASIO_DELETED; - basic_signal_set& operator=(const basic_signal_set&) ASIO_DELETED; - - class initiate_async_wait - { - public: - typedef Executor executor_type; - - explicit initiate_async_wait(basic_signal_set* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(SignalHandler) handler) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a SignalHandler. - ASIO_SIGNAL_HANDLER_CHECK(SignalHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_wait( - self_->impl_.get_implementation(), - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_signal_set* self_; - }; - - detail::io_object_impl impl_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_SIGNAL_SET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket.hpp deleted file mode 100644 index 2504cec0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket.hpp +++ /dev/null @@ -1,1894 +0,0 @@ -// -// basic_socket.hpp -// ~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SOCKET_HPP -#define ASIO_BASIC_SOCKET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/any_io_executor.hpp" -#include "asio/detail/config.hpp" -#include "asio/async_result.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/post.hpp" -#include "asio/socket_base.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include "asio/detail/null_socket_service.hpp" -#elif defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_socket_service.hpp" -#else -# include "asio/detail/reactive_socket_service.hpp" -#endif - -#if defined(ASIO_HAS_MOVE) -# include -#endif // defined(ASIO_HAS_MOVE) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_SOCKET_FWD_DECL) -#define ASIO_BASIC_SOCKET_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_socket; - -#endif // !defined(ASIO_BASIC_SOCKET_FWD_DECL) - -/// Provides socket functionality. -/** - * The basic_socket class template provides functionality that is common to both - * stream-oriented and datagram-oriented sockets. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - */ -template -class basic_socket - : public socket_base -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the socket type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_socket other; - }; - - /// The native representation of a socket. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#elif defined(ASIO_WINDOWS_RUNTIME) - typedef typename detail::null_socket_service< - Protocol>::native_handle_type native_handle_type; -#elif defined(ASIO_HAS_IOCP) - typedef typename detail::win_iocp_socket_service< - Protocol>::native_handle_type native_handle_type; -#else - typedef typename detail::reactive_socket_service< - Protocol>::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - -#if !defined(ASIO_NO_EXTENSIONS) - /// A basic_socket is always the lowest layer. - typedef basic_socket lowest_layer_type; -#endif // !defined(ASIO_NO_EXTENSIONS) - - /// Construct a basic_socket without opening it. - /** - * This constructor creates a socket without opening it. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - */ - explicit basic_socket(const executor_type& ex) - : impl_(ex) - { - } - - /// Construct a basic_socket without opening it. - /** - * This constructor creates a socket without opening it. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - */ - template - explicit basic_socket(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - } - - /// Construct and open a basic_socket. - /** - * This constructor creates and opens a socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_socket(const executor_type& ex, const protocol_type& protocol) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct and open a basic_socket. - /** - * This constructor creates and opens a socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct a basic_socket, opening it and binding it to the given local - /// endpoint. - /** - * This constructor creates a socket and automatically opens it bound to the - * specified endpoint on the local machine. The protocol used is the protocol - * associated with the given endpoint. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the socket will - * be bound. - * - * @throws asio::system_error Thrown on failure. - */ - basic_socket(const executor_type& ex, const endpoint_type& endpoint) - : impl_(ex) - { - asio::error_code ec; - const protocol_type protocol = endpoint.protocol(); - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - } - - /// Construct a basic_socket, opening it and binding it to the given local - /// endpoint. - /** - * This constructor creates a socket and automatically opens it bound to the - * specified endpoint on the local machine. The protocol used is the protocol - * associated with the given endpoint. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the socket will - * be bound. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - const protocol_type protocol = endpoint.protocol(); - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - } - - /// Construct a basic_socket on an existing native socket. - /** - * This constructor creates a socket object to hold an existing native socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket A native socket. - * - * @throws asio::system_error Thrown on failure. - */ - basic_socket(const executor_type& ex, const protocol_type& protocol, - const native_handle_type& native_socket) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_socket, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Construct a basic_socket on an existing native socket. - /** - * This constructor creates a socket object to hold an existing native socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket A native socket. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_socket(ExecutionContext& context, const protocol_type& protocol, - const native_handle_type& native_socket, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_socket, ec); - asio::detail::throw_error(ec, "assign"); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_socket from another. - /** - * This constructor moves a socket from one object to another. - * - * @param other The other basic_socket object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket(const executor_type&) constructor. - */ - basic_socket(basic_socket&& other) ASIO_NOEXCEPT - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_socket from another. - /** - * This assignment operator moves a socket from one object to another. - * - * @param other The other basic_socket object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket(const executor_type&) constructor. - */ - basic_socket& operator=(basic_socket&& other) - { - impl_ = std::move(other.impl_); - return *this; - } - - // All sockets have access to each other's implementations. - template - friend class basic_socket; - - /// Move-construct a basic_socket from a socket of another protocol type. - /** - * This constructor moves a socket from one object to another. - * - * @param other The other basic_socket object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket(const executor_type&) constructor. - */ - template - basic_socket(basic_socket&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_socket from a socket of another protocol type. - /** - * This assignment operator moves a socket from one object to another. - * - * @param other The other basic_socket object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket(const executor_type&) constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_socket& - >::type operator=(basic_socket && other) - { - basic_socket tmp(std::move(other)); - impl_ = std::move(tmp.impl_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - -#if !defined(ASIO_NO_EXTENSIONS) - /// Get a reference to the lowest layer. - /** - * This function returns a reference to the lowest layer in a stack of - * layers. Since a basic_socket cannot contain any further layers, it simply - * returns a reference to itself. - * - * @return A reference to the lowest layer in the stack of layers. Ownership - * is not transferred to the caller. - */ - lowest_layer_type& lowest_layer() - { - return *this; - } - - /// Get a const reference to the lowest layer. - /** - * This function returns a const reference to the lowest layer in a stack of - * layers. Since a basic_socket cannot contain any further layers, it simply - * returns a reference to itself. - * - * @return A const reference to the lowest layer in the stack of layers. - * Ownership is not transferred to the caller. - */ - const lowest_layer_type& lowest_layer() const - { - return *this; - } -#endif // !defined(ASIO_NO_EXTENSIONS) - - /// Open the socket using the specified protocol. - /** - * This function opens the socket so that it will use the specified protocol. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * socket.open(asio::ip::tcp::v4()); - * @endcode - */ - void open(const protocol_type& protocol = protocol_type()) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Open the socket using the specified protocol. - /** - * This function opens the socket so that it will use the specified protocol. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * asio::error_code ec; - * socket.open(asio::ip::tcp::v4(), ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID open(const protocol_type& protocol, - asio::error_code& ec) - { - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Assign an existing native socket to the socket. - /* - * This function opens the socket to hold an existing native socket. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param native_socket A native socket. - * - * @throws asio::system_error Thrown on failure. - */ - void assign(const protocol_type& protocol, - const native_handle_type& native_socket) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_socket, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Assign an existing native socket to the socket. - /* - * This function opens the socket to hold an existing native socket. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param native_socket A native socket. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID assign(const protocol_type& protocol, - const native_handle_type& native_socket, asio::error_code& ec) - { - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_socket, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Determine whether the socket is open. - bool is_open() const - { - return impl_.get_service().is_open(impl_.get_implementation()); - } - - /// Close the socket. - /** - * This function is used to close the socket. Any asynchronous send, receive - * or connect operations will be cancelled immediately, and will complete - * with the asio::error::operation_aborted error. - * - * @throws asio::system_error Thrown on failure. Note that, even if - * the function indicates an error, the underlying descriptor is closed. - * - * @note For portable behaviour with respect to graceful closure of a - * connected socket, call shutdown() before closing the socket. - */ - void close() - { - asio::error_code ec; - impl_.get_service().close(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "close"); - } - - /// Close the socket. - /** - * This function is used to close the socket. Any asynchronous send, receive - * or connect operations will be cancelled immediately, and will complete - * with the asio::error::operation_aborted error. - * - * @param ec Set to indicate what error occurred, if any. Note that, even if - * the function indicates an error, the underlying descriptor is closed. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::error_code ec; - * socket.close(ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - * - * @note For portable behaviour with respect to graceful closure of a - * connected socket, call shutdown() before closing the socket. - */ - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - impl_.get_service().close(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Release ownership of the underlying native socket. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. Ownership - * of the native socket is then transferred to the caller. - * - * @throws asio::system_error Thrown on failure. - * - * @note This function is unsupported on Windows versions prior to Windows - * 8.1, and will fail with asio::error::operation_not_supported on - * these platforms. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603) - __declspec(deprecated("This function always fails with " - "operation_not_supported when used on Windows versions " - "prior to Windows 8.1.")) -#endif - native_handle_type release() - { - asio::error_code ec; - native_handle_type s = impl_.get_service().release( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "release"); - return s; - } - - /// Release ownership of the underlying native socket. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. Ownership - * of the native socket is then transferred to the caller. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note This function is unsupported on Windows versions prior to Windows - * 8.1, and will fail with asio::error::operation_not_supported on - * these platforms. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603) - __declspec(deprecated("This function always fails with " - "operation_not_supported when used on Windows versions " - "prior to Windows 8.1.")) -#endif - native_handle_type release(asio::error_code& ec) - { - return impl_.get_service().release(impl_.get_implementation(), ec); - } - - /// Get the native socket representation. - /** - * This function may be used to obtain the underlying representation of the - * socket. This is intended to allow access to native socket functionality - * that is not otherwise provided. - */ - native_handle_type native_handle() - { - return impl_.get_service().native_handle(impl_.get_implementation()); - } - - /// Cancel all asynchronous operations associated with the socket. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. - * - * @throws asio::system_error Thrown on failure. - * - * @note Calls to cancel() will always fail with - * asio::error::operation_not_supported when run on Windows XP, Windows - * Server 2003, and earlier versions of Windows, unless - * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has - * two issues that should be considered before enabling its use: - * - * @li It will only cancel asynchronous operations that were initiated in the - * current thread. - * - * @li It can appear to complete without error, but the request to cancel the - * unfinished operations may be silently ignored by the operating system. - * Whether it works or not seems to depend on the drivers that are installed. - * - * For portable cancellation, consider using one of the following - * alternatives: - * - * @li Disable asio's I/O completion port backend by defining - * ASIO_DISABLE_IOCP. - * - * @li Use the close() function to simultaneously cancel the outstanding - * operations and close the socket. - * - * When running on Windows Vista, Windows Server 2008, and later, the - * CancelIoEx function is always used. This function does not have the - * problems described above. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \ - && !defined(ASIO_ENABLE_CANCELIO) - __declspec(deprecated("By default, this function always fails with " - "operation_not_supported when used on Windows XP, Windows Server 2003, " - "or earlier. Consult documentation for details.")) -#endif - void cancel() - { - asio::error_code ec; - impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - } - - /// Cancel all asynchronous operations associated with the socket. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note Calls to cancel() will always fail with - * asio::error::operation_not_supported when run on Windows XP, Windows - * Server 2003, and earlier versions of Windows, unless - * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has - * two issues that should be considered before enabling its use: - * - * @li It will only cancel asynchronous operations that were initiated in the - * current thread. - * - * @li It can appear to complete without error, but the request to cancel the - * unfinished operations may be silently ignored by the operating system. - * Whether it works or not seems to depend on the drivers that are installed. - * - * For portable cancellation, consider using one of the following - * alternatives: - * - * @li Disable asio's I/O completion port backend by defining - * ASIO_DISABLE_IOCP. - * - * @li Use the close() function to simultaneously cancel the outstanding - * operations and close the socket. - * - * When running on Windows Vista, Windows Server 2008, and later, the - * CancelIoEx function is always used. This function does not have the - * problems described above. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \ - && !defined(ASIO_ENABLE_CANCELIO) - __declspec(deprecated("By default, this function always fails with " - "operation_not_supported when used on Windows XP, Windows Server 2003, " - "or earlier. Consult documentation for details.")) -#endif - ASIO_SYNC_OP_VOID cancel(asio::error_code& ec) - { - impl_.get_service().cancel(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Determine whether the socket is at the out-of-band data mark. - /** - * This function is used to check whether the socket input is currently - * positioned at the out-of-band data mark. - * - * @return A bool indicating whether the socket is at the out-of-band data - * mark. - * - * @throws asio::system_error Thrown on failure. - */ - bool at_mark() const - { - asio::error_code ec; - bool b = impl_.get_service().at_mark(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "at_mark"); - return b; - } - - /// Determine whether the socket is at the out-of-band data mark. - /** - * This function is used to check whether the socket input is currently - * positioned at the out-of-band data mark. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return A bool indicating whether the socket is at the out-of-band data - * mark. - */ - bool at_mark(asio::error_code& ec) const - { - return impl_.get_service().at_mark(impl_.get_implementation(), ec); - } - - /// Determine the number of bytes available for reading. - /** - * This function is used to determine the number of bytes that may be read - * without blocking. - * - * @return The number of bytes that may be read without blocking, or 0 if an - * error occurs. - * - * @throws asio::system_error Thrown on failure. - */ - std::size_t available() const - { - asio::error_code ec; - std::size_t s = impl_.get_service().available( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "available"); - return s; - } - - /// Determine the number of bytes available for reading. - /** - * This function is used to determine the number of bytes that may be read - * without blocking. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of bytes that may be read without blocking, or 0 if an - * error occurs. - */ - std::size_t available(asio::error_code& ec) const - { - return impl_.get_service().available(impl_.get_implementation(), ec); - } - - /// Bind the socket to the given local endpoint. - /** - * This function binds the socket to the specified endpoint on the local - * machine. - * - * @param endpoint An endpoint on the local machine to which the socket will - * be bound. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * socket.open(asio::ip::tcp::v4()); - * socket.bind(asio::ip::tcp::endpoint( - * asio::ip::tcp::v4(), 12345)); - * @endcode - */ - void bind(const endpoint_type& endpoint) - { - asio::error_code ec; - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - } - - /// Bind the socket to the given local endpoint. - /** - * This function binds the socket to the specified endpoint on the local - * machine. - * - * @param endpoint An endpoint on the local machine to which the socket will - * be bound. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * socket.open(asio::ip::tcp::v4()); - * asio::error_code ec; - * socket.bind(asio::ip::tcp::endpoint( - * asio::ip::tcp::v4(), 12345), ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID bind(const endpoint_type& endpoint, - asio::error_code& ec) - { - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Connect the socket to the specified endpoint. - /** - * This function is used to connect a socket to the specified remote endpoint. - * The function call will block until the connection is successfully made or - * an error occurs. - * - * The socket is automatically opened if it is not already open. If the - * connect fails, and the socket was automatically opened, the socket is - * not returned to the closed state. - * - * @param peer_endpoint The remote endpoint to which the socket will be - * connected. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * asio::ip::tcp::endpoint endpoint( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.connect(endpoint); - * @endcode - */ - void connect(const endpoint_type& peer_endpoint) - { - asio::error_code ec; - if (!is_open()) - { - impl_.get_service().open(impl_.get_implementation(), - peer_endpoint.protocol(), ec); - asio::detail::throw_error(ec, "connect"); - } - impl_.get_service().connect(impl_.get_implementation(), peer_endpoint, ec); - asio::detail::throw_error(ec, "connect"); - } - - /// Connect the socket to the specified endpoint. - /** - * This function is used to connect a socket to the specified remote endpoint. - * The function call will block until the connection is successfully made or - * an error occurs. - * - * The socket is automatically opened if it is not already open. If the - * connect fails, and the socket was automatically opened, the socket is - * not returned to the closed state. - * - * @param peer_endpoint The remote endpoint to which the socket will be - * connected. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * asio::ip::tcp::endpoint endpoint( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * asio::error_code ec; - * socket.connect(endpoint, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID connect(const endpoint_type& peer_endpoint, - asio::error_code& ec) - { - if (!is_open()) - { - impl_.get_service().open(impl_.get_implementation(), - peer_endpoint.protocol(), ec); - if (ec) - { - ASIO_SYNC_OP_VOID_RETURN(ec); - } - } - - impl_.get_service().connect(impl_.get_implementation(), peer_endpoint, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Start an asynchronous connect. - /** - * This function is used to asynchronously connect a socket to the specified - * remote endpoint. The function call always returns immediately. - * - * The socket is automatically opened if it is not already open. If the - * connect fails, and the socket was automatically opened, the socket is - * not returned to the closed state. - * - * @param peer_endpoint The remote endpoint to which the socket will be - * connected. Copies will be made of the endpoint object as required. - * - * @param handler The handler to be called when the connection operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void connect_handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Connect succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::socket socket(my_context); - * asio::ip::tcp::endpoint endpoint( - * asio::ip::address::from_string("1.2.3.4"), 12345); - * socket.async_connect(endpoint, connect_handler); - * @endcode - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code)) - ConnectHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(ConnectHandler, - void (asio::error_code)) - async_connect(const endpoint_type& peer_endpoint, - ASIO_MOVE_ARG(ConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - asio::error_code open_ec; - if (!is_open()) - { - const protocol_type protocol = peer_endpoint.protocol(); - impl_.get_service().open(impl_.get_implementation(), protocol, open_ec); - } - - return async_initiate( - initiate_async_connect(this), handler, peer_endpoint, open_ec); - } - - /// Set an option on the socket. - /** - * This function is used to set an option on the socket. - * - * @param option The new option value to be set on the socket. - * - * @throws asio::system_error Thrown on failure. - * - * @sa SettableSocketOption @n - * asio::socket_base::broadcast @n - * asio::socket_base::do_not_route @n - * asio::socket_base::keep_alive @n - * asio::socket_base::linger @n - * asio::socket_base::receive_buffer_size @n - * asio::socket_base::receive_low_watermark @n - * asio::socket_base::reuse_address @n - * asio::socket_base::send_buffer_size @n - * asio::socket_base::send_low_watermark @n - * asio::ip::multicast::join_group @n - * asio::ip::multicast::leave_group @n - * asio::ip::multicast::enable_loopback @n - * asio::ip::multicast::outbound_interface @n - * asio::ip::multicast::hops @n - * asio::ip::tcp::no_delay - * - * @par Example - * Setting the IPPROTO_TCP/TCP_NODELAY option: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::no_delay option(true); - * socket.set_option(option); - * @endcode - */ - template - void set_option(const SettableSocketOption& option) - { - asio::error_code ec; - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "set_option"); - } - - /// Set an option on the socket. - /** - * This function is used to set an option on the socket. - * - * @param option The new option value to be set on the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa SettableSocketOption @n - * asio::socket_base::broadcast @n - * asio::socket_base::do_not_route @n - * asio::socket_base::keep_alive @n - * asio::socket_base::linger @n - * asio::socket_base::receive_buffer_size @n - * asio::socket_base::receive_low_watermark @n - * asio::socket_base::reuse_address @n - * asio::socket_base::send_buffer_size @n - * asio::socket_base::send_low_watermark @n - * asio::ip::multicast::join_group @n - * asio::ip::multicast::leave_group @n - * asio::ip::multicast::enable_loopback @n - * asio::ip::multicast::outbound_interface @n - * asio::ip::multicast::hops @n - * asio::ip::tcp::no_delay - * - * @par Example - * Setting the IPPROTO_TCP/TCP_NODELAY option: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::no_delay option(true); - * asio::error_code ec; - * socket.set_option(option, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - ASIO_SYNC_OP_VOID set_option(const SettableSocketOption& option, - asio::error_code& ec) - { - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get an option from the socket. - /** - * This function is used to get the current value of an option on the socket. - * - * @param option The option value to be obtained from the socket. - * - * @throws asio::system_error Thrown on failure. - * - * @sa GettableSocketOption @n - * asio::socket_base::broadcast @n - * asio::socket_base::do_not_route @n - * asio::socket_base::keep_alive @n - * asio::socket_base::linger @n - * asio::socket_base::receive_buffer_size @n - * asio::socket_base::receive_low_watermark @n - * asio::socket_base::reuse_address @n - * asio::socket_base::send_buffer_size @n - * asio::socket_base::send_low_watermark @n - * asio::ip::multicast::join_group @n - * asio::ip::multicast::leave_group @n - * asio::ip::multicast::enable_loopback @n - * asio::ip::multicast::outbound_interface @n - * asio::ip::multicast::hops @n - * asio::ip::tcp::no_delay - * - * @par Example - * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::socket::keep_alive option; - * socket.get_option(option); - * bool is_set = option.value(); - * @endcode - */ - template - void get_option(GettableSocketOption& option) const - { - asio::error_code ec; - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "get_option"); - } - - /// Get an option from the socket. - /** - * This function is used to get the current value of an option on the socket. - * - * @param option The option value to be obtained from the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa GettableSocketOption @n - * asio::socket_base::broadcast @n - * asio::socket_base::do_not_route @n - * asio::socket_base::keep_alive @n - * asio::socket_base::linger @n - * asio::socket_base::receive_buffer_size @n - * asio::socket_base::receive_low_watermark @n - * asio::socket_base::reuse_address @n - * asio::socket_base::send_buffer_size @n - * asio::socket_base::send_low_watermark @n - * asio::ip::multicast::join_group @n - * asio::ip::multicast::leave_group @n - * asio::ip::multicast::enable_loopback @n - * asio::ip::multicast::outbound_interface @n - * asio::ip::multicast::hops @n - * asio::ip::tcp::no_delay - * - * @par Example - * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::socket::keep_alive option; - * asio::error_code ec; - * socket.get_option(option, ec); - * if (ec) - * { - * // An error occurred. - * } - * bool is_set = option.value(); - * @endcode - */ - template - ASIO_SYNC_OP_VOID get_option(GettableSocketOption& option, - asio::error_code& ec) const - { - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Perform an IO control command on the socket. - /** - * This function is used to execute an IO control command on the socket. - * - * @param command The IO control command to be performed on the socket. - * - * @throws asio::system_error Thrown on failure. - * - * @sa IoControlCommand @n - * asio::socket_base::bytes_readable @n - * asio::socket_base::non_blocking_io - * - * @par Example - * Getting the number of bytes ready to read: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::socket::bytes_readable command; - * socket.io_control(command); - * std::size_t bytes_readable = command.get(); - * @endcode - */ - template - void io_control(IoControlCommand& command) - { - asio::error_code ec; - impl_.get_service().io_control(impl_.get_implementation(), command, ec); - asio::detail::throw_error(ec, "io_control"); - } - - /// Perform an IO control command on the socket. - /** - * This function is used to execute an IO control command on the socket. - * - * @param command The IO control command to be performed on the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa IoControlCommand @n - * asio::socket_base::bytes_readable @n - * asio::socket_base::non_blocking_io - * - * @par Example - * Getting the number of bytes ready to read: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::socket::bytes_readable command; - * asio::error_code ec; - * socket.io_control(command, ec); - * if (ec) - * { - * // An error occurred. - * } - * std::size_t bytes_readable = command.get(); - * @endcode - */ - template - ASIO_SYNC_OP_VOID io_control(IoControlCommand& command, - asio::error_code& ec) - { - impl_.get_service().io_control(impl_.get_implementation(), command, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Gets the non-blocking mode of the socket. - /** - * @returns @c true if the socket's synchronous operations will fail with - * asio::error::would_block if they are unable to perform the requested - * operation immediately. If @c false, synchronous operations will block - * until complete. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - bool non_blocking() const - { - return impl_.get_service().non_blocking(impl_.get_implementation()); - } - - /// Sets the non-blocking mode of the socket. - /** - * @param mode If @c true, the socket's synchronous operations will fail with - * asio::error::would_block if they are unable to perform the requested - * operation immediately. If @c false, synchronous operations will block - * until complete. - * - * @throws asio::system_error Thrown on failure. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - void non_blocking(bool mode) - { - asio::error_code ec; - impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec); - asio::detail::throw_error(ec, "non_blocking"); - } - - /// Sets the non-blocking mode of the socket. - /** - * @param mode If @c true, the socket's synchronous operations will fail with - * asio::error::would_block if they are unable to perform the requested - * operation immediately. If @c false, synchronous operations will block - * until complete. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - ASIO_SYNC_OP_VOID non_blocking( - bool mode, asio::error_code& ec) - { - impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Gets the non-blocking mode of the native socket implementation. - /** - * This function is used to retrieve the non-blocking mode of the underlying - * native socket. This mode has no effect on the behaviour of the socket - * object's synchronous operations. - * - * @returns @c true if the underlying socket is in non-blocking mode and - * direct system calls may fail with asio::error::would_block (or the - * equivalent system error). - * - * @note The current non-blocking mode is cached by the socket object. - * Consequently, the return value may be incorrect if the non-blocking mode - * was set directly on the native socket. - * - * @par Example - * This function is intended to allow the encapsulation of arbitrary - * non-blocking system calls as asynchronous operations, in a way that is - * transparent to the user of the socket object. The following example - * illustrates how Linux's @c sendfile system call might be encapsulated: - * @code template - * struct sendfile_op - * { - * tcp::socket& sock_; - * int fd_; - * Handler handler_; - * off_t offset_; - * std::size_t total_bytes_transferred_; - * - * // Function call operator meeting WriteHandler requirements. - * // Used as the handler for the async_write_some operation. - * void operator()(asio::error_code ec, std::size_t) - * { - * // Put the underlying socket into non-blocking mode. - * if (!ec) - * if (!sock_.native_non_blocking()) - * sock_.native_non_blocking(true, ec); - * - * if (!ec) - * { - * for (;;) - * { - * // Try the system call. - * errno = 0; - * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); - * ec = asio::error_code(n < 0 ? errno : 0, - * asio::error::get_system_category()); - * total_bytes_transferred_ += ec ? 0 : n; - * - * // Retry operation immediately if interrupted by signal. - * if (ec == asio::error::interrupted) - * continue; - * - * // Check if we need to run the operation again. - * if (ec == asio::error::would_block - * || ec == asio::error::try_again) - * { - * // We have to wait for the socket to become ready again. - * sock_.async_wait(tcp::socket::wait_write, *this); - * return; - * } - * - * if (ec || n == 0) - * { - * // An error occurred, or we have reached the end of the file. - * // Either way we must exit the loop so we can call the handler. - * break; - * } - * - * // Loop around to try calling sendfile again. - * } - * } - * - * // Pass result back to user's handler. - * handler_(ec, total_bytes_transferred_); - * } - * }; - * - * template - * void async_sendfile(tcp::socket& sock, int fd, Handler h) - * { - * sendfile_op op = { sock, fd, h, 0, 0 }; - * sock.async_wait(tcp::socket::wait_write, op); - * } @endcode - */ - bool native_non_blocking() const - { - return impl_.get_service().native_non_blocking(impl_.get_implementation()); - } - - /// Sets the non-blocking mode of the native socket implementation. - /** - * This function is used to modify the non-blocking mode of the underlying - * native socket. It has no effect on the behaviour of the socket object's - * synchronous operations. - * - * @param mode If @c true, the underlying socket is put into non-blocking - * mode and direct system calls may fail with asio::error::would_block - * (or the equivalent system error). - * - * @throws asio::system_error Thrown on failure. If the @c mode is - * @c false, but the current value of @c non_blocking() is @c true, this - * function fails with asio::error::invalid_argument, as the - * combination does not make sense. - * - * @par Example - * This function is intended to allow the encapsulation of arbitrary - * non-blocking system calls as asynchronous operations, in a way that is - * transparent to the user of the socket object. The following example - * illustrates how Linux's @c sendfile system call might be encapsulated: - * @code template - * struct sendfile_op - * { - * tcp::socket& sock_; - * int fd_; - * Handler handler_; - * off_t offset_; - * std::size_t total_bytes_transferred_; - * - * // Function call operator meeting WriteHandler requirements. - * // Used as the handler for the async_write_some operation. - * void operator()(asio::error_code ec, std::size_t) - * { - * // Put the underlying socket into non-blocking mode. - * if (!ec) - * if (!sock_.native_non_blocking()) - * sock_.native_non_blocking(true, ec); - * - * if (!ec) - * { - * for (;;) - * { - * // Try the system call. - * errno = 0; - * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); - * ec = asio::error_code(n < 0 ? errno : 0, - * asio::error::get_system_category()); - * total_bytes_transferred_ += ec ? 0 : n; - * - * // Retry operation immediately if interrupted by signal. - * if (ec == asio::error::interrupted) - * continue; - * - * // Check if we need to run the operation again. - * if (ec == asio::error::would_block - * || ec == asio::error::try_again) - * { - * // We have to wait for the socket to become ready again. - * sock_.async_wait(tcp::socket::wait_write, *this); - * return; - * } - * - * if (ec || n == 0) - * { - * // An error occurred, or we have reached the end of the file. - * // Either way we must exit the loop so we can call the handler. - * break; - * } - * - * // Loop around to try calling sendfile again. - * } - * } - * - * // Pass result back to user's handler. - * handler_(ec, total_bytes_transferred_); - * } - * }; - * - * template - * void async_sendfile(tcp::socket& sock, int fd, Handler h) - * { - * sendfile_op op = { sock, fd, h, 0, 0 }; - * sock.async_wait(tcp::socket::wait_write, op); - * } @endcode - */ - void native_non_blocking(bool mode) - { - asio::error_code ec; - impl_.get_service().native_non_blocking( - impl_.get_implementation(), mode, ec); - asio::detail::throw_error(ec, "native_non_blocking"); - } - - /// Sets the non-blocking mode of the native socket implementation. - /** - * This function is used to modify the non-blocking mode of the underlying - * native socket. It has no effect on the behaviour of the socket object's - * synchronous operations. - * - * @param mode If @c true, the underlying socket is put into non-blocking - * mode and direct system calls may fail with asio::error::would_block - * (or the equivalent system error). - * - * @param ec Set to indicate what error occurred, if any. If the @c mode is - * @c false, but the current value of @c non_blocking() is @c true, this - * function fails with asio::error::invalid_argument, as the - * combination does not make sense. - * - * @par Example - * This function is intended to allow the encapsulation of arbitrary - * non-blocking system calls as asynchronous operations, in a way that is - * transparent to the user of the socket object. The following example - * illustrates how Linux's @c sendfile system call might be encapsulated: - * @code template - * struct sendfile_op - * { - * tcp::socket& sock_; - * int fd_; - * Handler handler_; - * off_t offset_; - * std::size_t total_bytes_transferred_; - * - * // Function call operator meeting WriteHandler requirements. - * // Used as the handler for the async_write_some operation. - * void operator()(asio::error_code ec, std::size_t) - * { - * // Put the underlying socket into non-blocking mode. - * if (!ec) - * if (!sock_.native_non_blocking()) - * sock_.native_non_blocking(true, ec); - * - * if (!ec) - * { - * for (;;) - * { - * // Try the system call. - * errno = 0; - * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); - * ec = asio::error_code(n < 0 ? errno : 0, - * asio::error::get_system_category()); - * total_bytes_transferred_ += ec ? 0 : n; - * - * // Retry operation immediately if interrupted by signal. - * if (ec == asio::error::interrupted) - * continue; - * - * // Check if we need to run the operation again. - * if (ec == asio::error::would_block - * || ec == asio::error::try_again) - * { - * // We have to wait for the socket to become ready again. - * sock_.async_wait(tcp::socket::wait_write, *this); - * return; - * } - * - * if (ec || n == 0) - * { - * // An error occurred, or we have reached the end of the file. - * // Either way we must exit the loop so we can call the handler. - * break; - * } - * - * // Loop around to try calling sendfile again. - * } - * } - * - * // Pass result back to user's handler. - * handler_(ec, total_bytes_transferred_); - * } - * }; - * - * template - * void async_sendfile(tcp::socket& sock, int fd, Handler h) - * { - * sendfile_op op = { sock, fd, h, 0, 0 }; - * sock.async_wait(tcp::socket::wait_write, op); - * } @endcode - */ - ASIO_SYNC_OP_VOID native_non_blocking( - bool mode, asio::error_code& ec) - { - impl_.get_service().native_non_blocking( - impl_.get_implementation(), mode, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get the local endpoint of the socket. - /** - * This function is used to obtain the locally bound endpoint of the socket. - * - * @returns An object that represents the local endpoint of the socket. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::endpoint endpoint = socket.local_endpoint(); - * @endcode - */ - endpoint_type local_endpoint() const - { - asio::error_code ec; - endpoint_type ep = impl_.get_service().local_endpoint( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "local_endpoint"); - return ep; - } - - /// Get the local endpoint of the socket. - /** - * This function is used to obtain the locally bound endpoint of the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns An object that represents the local endpoint of the socket. - * Returns a default-constructed endpoint object if an error occurred. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::error_code ec; - * asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - endpoint_type local_endpoint(asio::error_code& ec) const - { - return impl_.get_service().local_endpoint(impl_.get_implementation(), ec); - } - - /// Get the remote endpoint of the socket. - /** - * This function is used to obtain the remote endpoint of the socket. - * - * @returns An object that represents the remote endpoint of the socket. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(); - * @endcode - */ - endpoint_type remote_endpoint() const - { - asio::error_code ec; - endpoint_type ep = impl_.get_service().remote_endpoint( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "remote_endpoint"); - return ep; - } - - /// Get the remote endpoint of the socket. - /** - * This function is used to obtain the remote endpoint of the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns An object that represents the remote endpoint of the socket. - * Returns a default-constructed endpoint object if an error occurred. - * - * @par Example - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::error_code ec; - * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - endpoint_type remote_endpoint(asio::error_code& ec) const - { - return impl_.get_service().remote_endpoint(impl_.get_implementation(), ec); - } - - /// Disable sends or receives on the socket. - /** - * This function is used to disable send operations, receive operations, or - * both. - * - * @param what Determines what types of operation will no longer be allowed. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * Shutting down the send side of the socket: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * socket.shutdown(asio::ip::tcp::socket::shutdown_send); - * @endcode - */ - void shutdown(shutdown_type what) - { - asio::error_code ec; - impl_.get_service().shutdown(impl_.get_implementation(), what, ec); - asio::detail::throw_error(ec, "shutdown"); - } - - /// Disable sends or receives on the socket. - /** - * This function is used to disable send operations, receive operations, or - * both. - * - * @param what Determines what types of operation will no longer be allowed. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * Shutting down the send side of the socket: - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::error_code ec; - * socket.shutdown(asio::ip::tcp::socket::shutdown_send, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID shutdown(shutdown_type what, - asio::error_code& ec) - { - impl_.get_service().shutdown(impl_.get_implementation(), what, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Wait for the socket to become ready to read, ready to write, or to have - /// pending error conditions. - /** - * This function is used to perform a blocking wait for a socket to enter - * a ready to read, write or error condition state. - * - * @param w Specifies the desired socket state. - * - * @par Example - * Waiting for a socket to become readable. - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * socket.wait(asio::ip::tcp::socket::wait_read); - * @endcode - */ - void wait(wait_type w) - { - asio::error_code ec; - impl_.get_service().wait(impl_.get_implementation(), w, ec); - asio::detail::throw_error(ec, "wait"); - } - - /// Wait for the socket to become ready to read, ready to write, or to have - /// pending error conditions. - /** - * This function is used to perform a blocking wait for a socket to enter - * a ready to read, write or error condition state. - * - * @param w Specifies the desired socket state. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * Waiting for a socket to become readable. - * @code - * asio::ip::tcp::socket socket(my_context); - * ... - * asio::error_code ec; - * socket.wait(asio::ip::tcp::socket::wait_read, ec); - * @endcode - */ - ASIO_SYNC_OP_VOID wait(wait_type w, asio::error_code& ec) - { - impl_.get_service().wait(impl_.get_implementation(), w, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Asynchronously wait for the socket to become ready to read, ready to - /// write, or to have pending error conditions. - /** - * This function is used to perform an asynchronous wait for a socket to enter - * a ready to read, write or error condition state. - * - * @param w Specifies the desired socket state. - * - * @param handler The handler to be called when the wait operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void wait_handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Wait succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::socket socket(my_context); - * ... - * socket.async_wait(asio::ip::tcp::socket::wait_read, wait_handler); - * @endcode - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code)) - WaitHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WaitHandler, - void (asio::error_code)) - async_wait(wait_type w, - ASIO_MOVE_ARG(WaitHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_wait(this), handler, w); - } - -protected: - /// Protected destructor to prevent deletion through this type. - /** - * This function destroys the socket, cancelling any outstanding asynchronous - * operations associated with the socket as if by calling @c cancel. - */ - ~basic_socket() - { - } - -#if defined(ASIO_WINDOWS_RUNTIME) - detail::io_object_impl< - detail::null_socket_service, Executor> impl_; -#elif defined(ASIO_HAS_IOCP) - detail::io_object_impl< - detail::win_iocp_socket_service, Executor> impl_; -#else - detail::io_object_impl< - detail::reactive_socket_service, Executor> impl_; -#endif - -private: - // Disallow copying and assignment. - basic_socket(const basic_socket&) ASIO_DELETED; - basic_socket& operator=(const basic_socket&) ASIO_DELETED; - - class initiate_async_connect - { - public: - typedef Executor executor_type; - - explicit initiate_async_connect(basic_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ConnectHandler) handler, - const endpoint_type& peer_endpoint, - const asio::error_code& open_ec) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ConnectHandler. - ASIO_CONNECT_HANDLER_CHECK(ConnectHandler, handler) type_check; - - if (open_ec) - { - asio::post(self_->impl_.get_executor(), - asio::detail::bind_handler( - ASIO_MOVE_CAST(ConnectHandler)(handler), open_ec)); - } - else - { - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_connect( - self_->impl_.get_implementation(), peer_endpoint, - handler2.value, self_->impl_.get_executor()); - } - } - - private: - basic_socket* self_; - }; - - class initiate_async_wait - { - public: - typedef Executor executor_type; - - explicit initiate_async_wait(basic_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WaitHandler) handler, wait_type w) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WaitHandler. - ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_wait( - self_->impl_.get_implementation(), w, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_socket* self_; - }; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_SOCKET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_acceptor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_acceptor.hpp deleted file mode 100644 index 89a83f30..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_acceptor.hpp +++ /dev/null @@ -1,2501 +0,0 @@ -// -// basic_socket_acceptor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SOCKET_ACCEPTOR_HPP -#define ASIO_BASIC_SOCKET_ACCEPTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/any_io_executor.hpp" -#include "asio/basic_socket.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include "asio/detail/null_socket_service.hpp" -#elif defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_socket_service.hpp" -#else -# include "asio/detail/reactive_socket_service.hpp" -#endif - -#if defined(ASIO_HAS_MOVE) -# include -#endif // defined(ASIO_HAS_MOVE) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL) -#define ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_socket_acceptor; - -#endif // !defined(ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL) - -/// Provides the ability to accept new connections. -/** - * The basic_socket_acceptor class template is used for accepting new socket - * connections. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Example - * Opening a socket acceptor with the SO_REUSEADDR option enabled: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port); - * acceptor.open(endpoint.protocol()); - * acceptor.set_option(asio::ip::tcp::acceptor::reuse_address(true)); - * acceptor.bind(endpoint); - * acceptor.listen(); - * @endcode - */ -template -class basic_socket_acceptor - : public socket_base -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the acceptor type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_socket_acceptor other; - }; - - /// The native representation of an acceptor. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#elif defined(ASIO_WINDOWS_RUNTIME) - typedef typename detail::null_socket_service< - Protocol>::native_handle_type native_handle_type; -#elif defined(ASIO_HAS_IOCP) - typedef typename detail::win_iocp_socket_service< - Protocol>::native_handle_type native_handle_type; -#else - typedef typename detail::reactive_socket_service< - Protocol>::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// Construct an acceptor without opening it. - /** - * This constructor creates an acceptor without opening it to listen for new - * connections. The open() function must be called before the acceptor can - * accept new socket connections. - * - * @param ex The I/O executor that the acceptor will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * acceptor. - */ - explicit basic_socket_acceptor(const executor_type& ex) - : impl_(ex) - { - } - - /// Construct an acceptor without opening it. - /** - * This constructor creates an acceptor without opening it to listen for new - * connections. The open() function must be called before the acceptor can - * accept new socket connections. - * - * @param context An execution context which provides the I/O executor that - * the acceptor will use, by default, to dispatch handlers for any - * asynchronous operations performed on the acceptor. - */ - template - explicit basic_socket_acceptor(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - } - - /// Construct an open acceptor. - /** - * This constructor creates an acceptor and automatically opens it. - * - * @param ex The I/O executor that the acceptor will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * acceptor. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_socket_acceptor(const executor_type& ex, const protocol_type& protocol) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct an open acceptor. - /** - * This constructor creates an acceptor and automatically opens it. - * - * @param context An execution context which provides the I/O executor that - * the acceptor will use, by default, to dispatch handlers for any - * asynchronous operations performed on the acceptor. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_socket_acceptor(ExecutionContext& context, - const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Construct an acceptor opened on the given endpoint. - /** - * This constructor creates an acceptor and automatically opens it to listen - * for new connections on the specified endpoint. - * - * @param ex The I/O executor that the acceptor will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * acceptor. - * - * @param endpoint An endpoint on the local machine on which the acceptor - * will listen for new connections. - * - * @param reuse_addr Whether the constructor should set the socket option - * socket_base::reuse_address. - * - * @throws asio::system_error Thrown on failure. - * - * @note This constructor is equivalent to the following code: - * @code - * basic_socket_acceptor acceptor(my_context); - * acceptor.open(endpoint.protocol()); - * if (reuse_addr) - * acceptor.set_option(socket_base::reuse_address(true)); - * acceptor.bind(endpoint); - * acceptor.listen(); - * @endcode - */ - basic_socket_acceptor(const executor_type& ex, - const endpoint_type& endpoint, bool reuse_addr = true) - : impl_(ex) - { - asio::error_code ec; - const protocol_type protocol = endpoint.protocol(); - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - if (reuse_addr) - { - impl_.get_service().set_option(impl_.get_implementation(), - socket_base::reuse_address(true), ec); - asio::detail::throw_error(ec, "set_option"); - } - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - impl_.get_service().listen(impl_.get_implementation(), - socket_base::max_listen_connections, ec); - asio::detail::throw_error(ec, "listen"); - } - - /// Construct an acceptor opened on the given endpoint. - /** - * This constructor creates an acceptor and automatically opens it to listen - * for new connections on the specified endpoint. - * - * @param context An execution context which provides the I/O executor that - * the acceptor will use, by default, to dispatch handlers for any - * asynchronous operations performed on the acceptor. - * - * @param endpoint An endpoint on the local machine on which the acceptor - * will listen for new connections. - * - * @param reuse_addr Whether the constructor should set the socket option - * socket_base::reuse_address. - * - * @throws asio::system_error Thrown on failure. - * - * @note This constructor is equivalent to the following code: - * @code - * basic_socket_acceptor acceptor(my_context); - * acceptor.open(endpoint.protocol()); - * if (reuse_addr) - * acceptor.set_option(socket_base::reuse_address(true)); - * acceptor.bind(endpoint); - * acceptor.listen(); - * @endcode - */ - template - basic_socket_acceptor(ExecutionContext& context, - const endpoint_type& endpoint, bool reuse_addr = true, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - const protocol_type protocol = endpoint.protocol(); - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - if (reuse_addr) - { - impl_.get_service().set_option(impl_.get_implementation(), - socket_base::reuse_address(true), ec); - asio::detail::throw_error(ec, "set_option"); - } - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - impl_.get_service().listen(impl_.get_implementation(), - socket_base::max_listen_connections, ec); - asio::detail::throw_error(ec, "listen"); - } - - /// Construct a basic_socket_acceptor on an existing native acceptor. - /** - * This constructor creates an acceptor object to hold an existing native - * acceptor. - * - * @param ex The I/O executor that the acceptor will use, by default, to - * dispatch handlers for any asynchronous operations performed on the - * acceptor. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_acceptor A native acceptor. - * - * @throws asio::system_error Thrown on failure. - */ - basic_socket_acceptor(const executor_type& ex, - const protocol_type& protocol, const native_handle_type& native_acceptor) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_acceptor, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Construct a basic_socket_acceptor on an existing native acceptor. - /** - * This constructor creates an acceptor object to hold an existing native - * acceptor. - * - * @param context An execution context which provides the I/O executor that - * the acceptor will use, by default, to dispatch handlers for any - * asynchronous operations performed on the acceptor. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_acceptor A native acceptor. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_socket_acceptor(ExecutionContext& context, - const protocol_type& protocol, const native_handle_type& native_acceptor, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_acceptor, ec); - asio::detail::throw_error(ec, "assign"); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_socket_acceptor from another. - /** - * This constructor moves an acceptor from one object to another. - * - * @param other The other basic_socket_acceptor object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket_acceptor(const executor_type&) - * constructor. - */ - basic_socket_acceptor(basic_socket_acceptor&& other) ASIO_NOEXCEPT - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_socket_acceptor from another. - /** - * This assignment operator moves an acceptor from one object to another. - * - * @param other The other basic_socket_acceptor object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket_acceptor(const executor_type&) - * constructor. - */ - basic_socket_acceptor& operator=(basic_socket_acceptor&& other) - { - impl_ = std::move(other.impl_); - return *this; - } - - // All socket acceptors have access to each other's implementations. - template - friend class basic_socket_acceptor; - - /// Move-construct a basic_socket_acceptor from an acceptor of another - /// protocol type. - /** - * This constructor moves an acceptor from one object to another. - * - * @param other The other basic_socket_acceptor object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket_acceptor(const executor_type&) - * constructor. - */ - template - basic_socket_acceptor(basic_socket_acceptor&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_socket_acceptor from an acceptor of another protocol - /// type. - /** - * This assignment operator moves an acceptor from one object to another. - * - * @param other The other basic_socket_acceptor object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_socket_acceptor(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_socket_acceptor& - >::type operator=(basic_socket_acceptor&& other) - { - basic_socket_acceptor tmp(std::move(other)); - impl_ = std::move(tmp.impl_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the acceptor. - /** - * This function destroys the acceptor, cancelling any outstanding - * asynchronous operations associated with the acceptor as if by calling - * @c cancel. - */ - ~basic_socket_acceptor() - { - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - - /// Open the acceptor using the specified protocol. - /** - * This function opens the socket acceptor so that it will use the specified - * protocol. - * - * @param protocol An object specifying which protocol is to be used. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * acceptor.open(asio::ip::tcp::v4()); - * @endcode - */ - void open(const protocol_type& protocol = protocol_type()) - { - asio::error_code ec; - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - asio::detail::throw_error(ec, "open"); - } - - /// Open the acceptor using the specified protocol. - /** - * This function opens the socket acceptor so that it will use the specified - * protocol. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * asio::error_code ec; - * acceptor.open(asio::ip::tcp::v4(), ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID open(const protocol_type& protocol, - asio::error_code& ec) - { - impl_.get_service().open(impl_.get_implementation(), protocol, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Assigns an existing native acceptor to the acceptor. - /* - * This function opens the acceptor to hold an existing native acceptor. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param native_acceptor A native acceptor. - * - * @throws asio::system_error Thrown on failure. - */ - void assign(const protocol_type& protocol, - const native_handle_type& native_acceptor) - { - asio::error_code ec; - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_acceptor, ec); - asio::detail::throw_error(ec, "assign"); - } - - /// Assigns an existing native acceptor to the acceptor. - /* - * This function opens the acceptor to hold an existing native acceptor. - * - * @param protocol An object specifying which protocol is to be used. - * - * @param native_acceptor A native acceptor. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID assign(const protocol_type& protocol, - const native_handle_type& native_acceptor, asio::error_code& ec) - { - impl_.get_service().assign(impl_.get_implementation(), - protocol, native_acceptor, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Determine whether the acceptor is open. - bool is_open() const - { - return impl_.get_service().is_open(impl_.get_implementation()); - } - - /// Bind the acceptor to the given local endpoint. - /** - * This function binds the socket acceptor to the specified endpoint on the - * local machine. - * - * @param endpoint An endpoint on the local machine to which the socket - * acceptor will be bound. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345); - * acceptor.open(endpoint.protocol()); - * acceptor.bind(endpoint); - * @endcode - */ - void bind(const endpoint_type& endpoint) - { - asio::error_code ec; - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - asio::detail::throw_error(ec, "bind"); - } - - /// Bind the acceptor to the given local endpoint. - /** - * This function binds the socket acceptor to the specified endpoint on the - * local machine. - * - * @param endpoint An endpoint on the local machine to which the socket - * acceptor will be bound. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345); - * acceptor.open(endpoint.protocol()); - * asio::error_code ec; - * acceptor.bind(endpoint, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID bind(const endpoint_type& endpoint, - asio::error_code& ec) - { - impl_.get_service().bind(impl_.get_implementation(), endpoint, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Place the acceptor into the state where it will listen for new - /// connections. - /** - * This function puts the socket acceptor into the state where it may accept - * new connections. - * - * @param backlog The maximum length of the queue of pending connections. - * - * @throws asio::system_error Thrown on failure. - */ - void listen(int backlog = socket_base::max_listen_connections) - { - asio::error_code ec; - impl_.get_service().listen(impl_.get_implementation(), backlog, ec); - asio::detail::throw_error(ec, "listen"); - } - - /// Place the acceptor into the state where it will listen for new - /// connections. - /** - * This function puts the socket acceptor into the state where it may accept - * new connections. - * - * @param backlog The maximum length of the queue of pending connections. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::error_code ec; - * acceptor.listen(asio::socket_base::max_listen_connections, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID listen(int backlog, asio::error_code& ec) - { - impl_.get_service().listen(impl_.get_implementation(), backlog, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Close the acceptor. - /** - * This function is used to close the acceptor. Any asynchronous accept - * operations will be cancelled immediately. - * - * A subsequent call to open() is required before the acceptor can again be - * used to again perform socket accept operations. - * - * @throws asio::system_error Thrown on failure. - */ - void close() - { - asio::error_code ec; - impl_.get_service().close(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "close"); - } - - /// Close the acceptor. - /** - * This function is used to close the acceptor. Any asynchronous accept - * operations will be cancelled immediately. - * - * A subsequent call to open() is required before the acceptor can again be - * used to again perform socket accept operations. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::error_code ec; - * acceptor.close(ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - impl_.get_service().close(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Release ownership of the underlying native acceptor. - /** - * This function causes all outstanding asynchronous accept operations to - * finish immediately, and the handlers for cancelled operations will be - * passed the asio::error::operation_aborted error. Ownership of the - * native acceptor is then transferred to the caller. - * - * @throws asio::system_error Thrown on failure. - * - * @note This function is unsupported on Windows versions prior to Windows - * 8.1, and will fail with asio::error::operation_not_supported on - * these platforms. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603) - __declspec(deprecated("This function always fails with " - "operation_not_supported when used on Windows versions " - "prior to Windows 8.1.")) -#endif - native_handle_type release() - { - asio::error_code ec; - native_handle_type s = impl_.get_service().release( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "release"); - return s; - } - - /// Release ownership of the underlying native acceptor. - /** - * This function causes all outstanding asynchronous accept operations to - * finish immediately, and the handlers for cancelled operations will be - * passed the asio::error::operation_aborted error. Ownership of the - * native acceptor is then transferred to the caller. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note This function is unsupported on Windows versions prior to Windows - * 8.1, and will fail with asio::error::operation_not_supported on - * these platforms. - */ -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \ - && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603) - __declspec(deprecated("This function always fails with " - "operation_not_supported when used on Windows versions " - "prior to Windows 8.1.")) -#endif - native_handle_type release(asio::error_code& ec) - { - return impl_.get_service().release(impl_.get_implementation(), ec); - } - - /// Get the native acceptor representation. - /** - * This function may be used to obtain the underlying representation of the - * acceptor. This is intended to allow access to native acceptor functionality - * that is not otherwise provided. - */ - native_handle_type native_handle() - { - return impl_.get_service().native_handle(impl_.get_implementation()); - } - - /// Cancel all asynchronous operations associated with the acceptor. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. - * - * @throws asio::system_error Thrown on failure. - */ - void cancel() - { - asio::error_code ec; - impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - } - - /// Cancel all asynchronous operations associated with the acceptor. - /** - * This function causes all outstanding asynchronous connect, send and receive - * operations to finish immediately, and the handlers for cancelled operations - * will be passed the asio::error::operation_aborted error. - * - * @param ec Set to indicate what error occurred, if any. - */ - ASIO_SYNC_OP_VOID cancel(asio::error_code& ec) - { - impl_.get_service().cancel(impl_.get_implementation(), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Set an option on the acceptor. - /** - * This function is used to set an option on the acceptor. - * - * @param option The new option value to be set on the acceptor. - * - * @throws asio::system_error Thrown on failure. - * - * @sa SettableSocketOption @n - * asio::socket_base::reuse_address - * asio::socket_base::enable_connection_aborted - * - * @par Example - * Setting the SOL_SOCKET/SO_REUSEADDR option: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::reuse_address option(true); - * acceptor.set_option(option); - * @endcode - */ - template - void set_option(const SettableSocketOption& option) - { - asio::error_code ec; - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "set_option"); - } - - /// Set an option on the acceptor. - /** - * This function is used to set an option on the acceptor. - * - * @param option The new option value to be set on the acceptor. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa SettableSocketOption @n - * asio::socket_base::reuse_address - * asio::socket_base::enable_connection_aborted - * - * @par Example - * Setting the SOL_SOCKET/SO_REUSEADDR option: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::reuse_address option(true); - * asio::error_code ec; - * acceptor.set_option(option, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - ASIO_SYNC_OP_VOID set_option(const SettableSocketOption& option, - asio::error_code& ec) - { - impl_.get_service().set_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get an option from the acceptor. - /** - * This function is used to get the current value of an option on the - * acceptor. - * - * @param option The option value to be obtained from the acceptor. - * - * @throws asio::system_error Thrown on failure. - * - * @sa GettableSocketOption @n - * asio::socket_base::reuse_address - * - * @par Example - * Getting the value of the SOL_SOCKET/SO_REUSEADDR option: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::reuse_address option; - * acceptor.get_option(option); - * bool is_set = option.get(); - * @endcode - */ - template - void get_option(GettableSocketOption& option) const - { - asio::error_code ec; - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - asio::detail::throw_error(ec, "get_option"); - } - - /// Get an option from the acceptor. - /** - * This function is used to get the current value of an option on the - * acceptor. - * - * @param option The option value to be obtained from the acceptor. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa GettableSocketOption @n - * asio::socket_base::reuse_address - * - * @par Example - * Getting the value of the SOL_SOCKET/SO_REUSEADDR option: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::reuse_address option; - * asio::error_code ec; - * acceptor.get_option(option, ec); - * if (ec) - * { - * // An error occurred. - * } - * bool is_set = option.get(); - * @endcode - */ - template - ASIO_SYNC_OP_VOID get_option(GettableSocketOption& option, - asio::error_code& ec) const - { - impl_.get_service().get_option(impl_.get_implementation(), option, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Perform an IO control command on the acceptor. - /** - * This function is used to execute an IO control command on the acceptor. - * - * @param command The IO control command to be performed on the acceptor. - * - * @throws asio::system_error Thrown on failure. - * - * @sa IoControlCommand @n - * asio::socket_base::non_blocking_io - * - * @par Example - * Getting the number of bytes ready to read: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::non_blocking_io command(true); - * socket.io_control(command); - * @endcode - */ - template - void io_control(IoControlCommand& command) - { - asio::error_code ec; - impl_.get_service().io_control(impl_.get_implementation(), command, ec); - asio::detail::throw_error(ec, "io_control"); - } - - /// Perform an IO control command on the acceptor. - /** - * This function is used to execute an IO control command on the acceptor. - * - * @param command The IO control command to be performed on the acceptor. - * - * @param ec Set to indicate what error occurred, if any. - * - * @sa IoControlCommand @n - * asio::socket_base::non_blocking_io - * - * @par Example - * Getting the number of bytes ready to read: - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::acceptor::non_blocking_io command(true); - * asio::error_code ec; - * socket.io_control(command, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - ASIO_SYNC_OP_VOID io_control(IoControlCommand& command, - asio::error_code& ec) - { - impl_.get_service().io_control(impl_.get_implementation(), command, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Gets the non-blocking mode of the acceptor. - /** - * @returns @c true if the acceptor's synchronous operations will fail with - * asio::error::would_block if they are unable to perform the requested - * operation immediately. If @c false, synchronous operations will block - * until complete. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - bool non_blocking() const - { - return impl_.get_service().non_blocking(impl_.get_implementation()); - } - - /// Sets the non-blocking mode of the acceptor. - /** - * @param mode If @c true, the acceptor's synchronous operations will fail - * with asio::error::would_block if they are unable to perform the - * requested operation immediately. If @c false, synchronous operations will - * block until complete. - * - * @throws asio::system_error Thrown on failure. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - void non_blocking(bool mode) - { - asio::error_code ec; - impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec); - asio::detail::throw_error(ec, "non_blocking"); - } - - /// Sets the non-blocking mode of the acceptor. - /** - * @param mode If @c true, the acceptor's synchronous operations will fail - * with asio::error::would_block if they are unable to perform the - * requested operation immediately. If @c false, synchronous operations will - * block until complete. - * - * @param ec Set to indicate what error occurred, if any. - * - * @note The non-blocking mode has no effect on the behaviour of asynchronous - * operations. Asynchronous operations will never fail with the error - * asio::error::would_block. - */ - ASIO_SYNC_OP_VOID non_blocking( - bool mode, asio::error_code& ec) - { - impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Gets the non-blocking mode of the native acceptor implementation. - /** - * This function is used to retrieve the non-blocking mode of the underlying - * native acceptor. This mode has no effect on the behaviour of the acceptor - * object's synchronous operations. - * - * @returns @c true if the underlying acceptor is in non-blocking mode and - * direct system calls may fail with asio::error::would_block (or the - * equivalent system error). - * - * @note The current non-blocking mode is cached by the acceptor object. - * Consequently, the return value may be incorrect if the non-blocking mode - * was set directly on the native acceptor. - */ - bool native_non_blocking() const - { - return impl_.get_service().native_non_blocking(impl_.get_implementation()); - } - - /// Sets the non-blocking mode of the native acceptor implementation. - /** - * This function is used to modify the non-blocking mode of the underlying - * native acceptor. It has no effect on the behaviour of the acceptor object's - * synchronous operations. - * - * @param mode If @c true, the underlying acceptor is put into non-blocking - * mode and direct system calls may fail with asio::error::would_block - * (or the equivalent system error). - * - * @throws asio::system_error Thrown on failure. If the @c mode is - * @c false, but the current value of @c non_blocking() is @c true, this - * function fails with asio::error::invalid_argument, as the - * combination does not make sense. - */ - void native_non_blocking(bool mode) - { - asio::error_code ec; - impl_.get_service().native_non_blocking( - impl_.get_implementation(), mode, ec); - asio::detail::throw_error(ec, "native_non_blocking"); - } - - /// Sets the non-blocking mode of the native acceptor implementation. - /** - * This function is used to modify the non-blocking mode of the underlying - * native acceptor. It has no effect on the behaviour of the acceptor object's - * synchronous operations. - * - * @param mode If @c true, the underlying acceptor is put into non-blocking - * mode and direct system calls may fail with asio::error::would_block - * (or the equivalent system error). - * - * @param ec Set to indicate what error occurred, if any. If the @c mode is - * @c false, but the current value of @c non_blocking() is @c true, this - * function fails with asio::error::invalid_argument, as the - * combination does not make sense. - */ - ASIO_SYNC_OP_VOID native_non_blocking( - bool mode, asio::error_code& ec) - { - impl_.get_service().native_non_blocking( - impl_.get_implementation(), mode, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Get the local endpoint of the acceptor. - /** - * This function is used to obtain the locally bound endpoint of the acceptor. - * - * @returns An object that represents the local endpoint of the acceptor. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(); - * @endcode - */ - endpoint_type local_endpoint() const - { - asio::error_code ec; - endpoint_type ep = impl_.get_service().local_endpoint( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "local_endpoint"); - return ep; - } - - /// Get the local endpoint of the acceptor. - /** - * This function is used to obtain the locally bound endpoint of the acceptor. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns An object that represents the local endpoint of the acceptor. - * Returns a default-constructed endpoint object if an error occurred and the - * error handler did not throw an exception. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::error_code ec; - * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - endpoint_type local_endpoint(asio::error_code& ec) const - { - return impl_.get_service().local_endpoint(impl_.get_implementation(), ec); - } - - /// Wait for the acceptor to become ready to read, ready to write, or to have - /// pending error conditions. - /** - * This function is used to perform a blocking wait for an acceptor to enter - * a ready to read, write or error condition state. - * - * @param w Specifies the desired acceptor state. - * - * @par Example - * Waiting for an acceptor to become readable. - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * acceptor.wait(asio::ip::tcp::acceptor::wait_read); - * @endcode - */ - void wait(wait_type w) - { - asio::error_code ec; - impl_.get_service().wait(impl_.get_implementation(), w, ec); - asio::detail::throw_error(ec, "wait"); - } - - /// Wait for the acceptor to become ready to read, ready to write, or to have - /// pending error conditions. - /** - * This function is used to perform a blocking wait for an acceptor to enter - * a ready to read, write or error condition state. - * - * @param w Specifies the desired acceptor state. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * Waiting for an acceptor to become readable. - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::error_code ec; - * acceptor.wait(asio::ip::tcp::acceptor::wait_read, ec); - * @endcode - */ - ASIO_SYNC_OP_VOID wait(wait_type w, asio::error_code& ec) - { - impl_.get_service().wait(impl_.get_implementation(), w, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Asynchronously wait for the acceptor to become ready to read, ready to - /// write, or to have pending error conditions. - /** - * This function is used to perform an asynchronous wait for an acceptor to - * enter a ready to read, write or error condition state. - * - * @param w Specifies the desired acceptor state. - * - * @param handler The handler to be called when the wait operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void wait_handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Wait succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * acceptor.async_wait( - * asio::ip::tcp::acceptor::wait_read, - * wait_handler); - * @endcode - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code)) - WaitHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WaitHandler, - void (asio::error_code)) - async_wait(wait_type w, - ASIO_MOVE_ARG(WaitHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_wait(this), handler, w); - } - -#if !defined(ASIO_NO_EXTENSIONS) - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer into the - * given socket. The function call will block until a new connection has been - * accepted successfully or an error occurs. - * - * @param peer The socket into which the new connection will be accepted. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(my_context); - * acceptor.accept(socket); - * @endcode - */ - template - void accept(basic_socket& peer, - typename enable_if< - is_convertible::value - >::type* = 0) - { - asio::error_code ec; - impl_.get_service().accept(impl_.get_implementation(), - peer, static_cast(0), ec); - asio::detail::throw_error(ec, "accept"); - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer into the - * given socket. The function call will block until a new connection has been - * accepted successfully or an error occurs. - * - * @param peer The socket into which the new connection will be accepted. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(my_context); - * asio::error_code ec; - * acceptor.accept(socket, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - ASIO_SYNC_OP_VOID accept( - basic_socket& peer, asio::error_code& ec, - typename enable_if< - is_convertible::value - >::type* = 0) - { - impl_.get_service().accept(impl_.get_implementation(), - peer, static_cast(0), ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection into a - * socket. The function call always returns immediately. - * - * @param peer The socket into which the new connection will be accepted. - * Ownership of the peer object is retained by the caller, which must - * guarantee that it is valid until the handler is called. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(my_context); - * acceptor.async_accept(socket, accept_handler); - * @endcode - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(AcceptHandler, - void (asio::error_code)) - async_accept(basic_socket& peer, - ASIO_MOVE_ARG(AcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< - is_convertible::value - >::type* = 0) - { - return async_initiate( - initiate_async_accept(this), handler, - &peer, static_cast(0)); - } - - /// Accept a new connection and obtain the endpoint of the peer - /** - * This function is used to accept a new connection from a peer into the - * given socket, and additionally provide the endpoint of the remote peer. - * The function call will block until a new connection has been accepted - * successfully or an error occurs. - * - * @param peer The socket into which the new connection will be accepted. - * - * @param peer_endpoint An endpoint object which will receive the endpoint of - * the remote peer. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(my_context); - * asio::ip::tcp::endpoint endpoint; - * acceptor.accept(socket, endpoint); - * @endcode - */ - template - void accept(basic_socket& peer, - endpoint_type& peer_endpoint) - { - asio::error_code ec; - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - asio::detail::throw_error(ec, "accept"); - } - - /// Accept a new connection and obtain the endpoint of the peer - /** - * This function is used to accept a new connection from a peer into the - * given socket, and additionally provide the endpoint of the remote peer. - * The function call will block until a new connection has been accepted - * successfully or an error occurs. - * - * @param peer The socket into which the new connection will be accepted. - * - * @param peer_endpoint An endpoint object which will receive the endpoint of - * the remote peer. - * - * @param ec Set to indicate what error occurred, if any. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(my_context); - * asio::ip::tcp::endpoint endpoint; - * asio::error_code ec; - * acceptor.accept(socket, endpoint, ec); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - ASIO_SYNC_OP_VOID accept(basic_socket& peer, - endpoint_type& peer_endpoint, asio::error_code& ec) - { - impl_.get_service().accept( - impl_.get_implementation(), peer, &peer_endpoint, ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection into a - * socket, and additionally obtain the endpoint of the remote peer. The - * function call always returns immediately. - * - * @param peer The socket into which the new connection will be accepted. - * Ownership of the peer object is retained by the caller, which must - * guarantee that it is valid until the handler is called. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. Ownership of the peer_endpoint object is - * retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(AcceptHandler, - void (asio::error_code)) - async_accept(basic_socket& peer, - endpoint_type& peer_endpoint, - ASIO_MOVE_ARG(AcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_accept(this), handler, &peer, &peer_endpoint); - } -#endif // !defined(ASIO_NO_EXTENSIONS) - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept()); - * @endcode - */ - typename Protocol::socket::template rebind_executor::other - accept() - { - asio::error_code ec; - typename Protocol::socket::template rebind_executor< - executor_type>::other peer(impl_.get_executor()); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept(ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - typename Protocol::socket::template rebind_executor::other - accept(asio::error_code& ec) - { - typename Protocol::socket::template rebind_executor< - executor_type>::other peer(impl_.get_executor()); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - return peer; - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. - * const asio::error_code& error, - * // On success, the newly accepted socket. - * typename Protocol::socket::template - * rebind_executor::other peer - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * acceptor.async_accept(accept_handler); - * @endcode - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - typename Protocol::socket::template rebind_executor< - executor_type>::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template - rebind_executor::other)) - async_accept( - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate::other)>( - initiate_async_move_accept(this), handler, - impl_.get_executor(), static_cast(0), - static_cast::other*>(0)); - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly - * accepted socket. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept()); - * @endcode - */ - template - typename Protocol::socket::template rebind_executor::other - accept(const Executor1& ex, - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - asio::error_code ec; - typename Protocol::socket::template - rebind_executor::other peer(ex); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept()); - * @endcode - */ - template - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other - accept(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - { - asio::error_code ec; - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other peer(context); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly accepted - * socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept(my_context2, ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - typename Protocol::socket::template rebind_executor::other - accept(const Executor1& ex, asio::error_code& ec, - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - typename Protocol::socket::template - rebind_executor::other peer(ex); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::socket socket(acceptor.accept(my_context2, ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other - accept(ExecutionContext& context, asio::error_code& ec, - typename enable_if< - is_convertible::value - >::type* = 0) - { - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other peer(context); - impl_.get_service().accept(impl_.get_implementation(), peer, 0, ec); - return peer; - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly accepted - * socket. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * typename Protocol::socket::template rebind_executor< - * Executor1>::other peer // On success, the newly accepted socket. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * acceptor.async_accept(my_context2, accept_handler); - * @endcode - */ - template ::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template rebind_executor< - Executor1>::other)) - async_accept(const Executor1& ex, - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - typedef typename Protocol::socket::template rebind_executor< - Executor1>::other other_socket_type; - - return async_initiate( - initiate_async_move_accept(this), handler, - ex, static_cast(0), - static_cast(0)); - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * typename Protocol::socket::template rebind_executor< - * typename ExecutionContext::executor_type>::other peer - * // On success, the newly accepted socket. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * acceptor.async_accept(my_context2, accept_handler); - * @endcode - */ - template ::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other)) - async_accept(ExecutionContext& context, - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< - is_convertible::value - >::type* = 0) - { - typedef typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other other_socket_type; - - return async_initiate( - initiate_async_move_accept(this), handler, - context.get_executor(), static_cast(0), - static_cast(0)); - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket(acceptor.accept(endpoint)); - * @endcode - */ - typename Protocol::socket::template rebind_executor::other - accept(endpoint_type& peer_endpoint) - { - asio::error_code ec; - typename Protocol::socket::template rebind_executor< - executor_type>::other peer(impl_.get_executor()); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket(acceptor.accept(endpoint, ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - typename Protocol::socket::template rebind_executor::other - accept(endpoint_type& peer_endpoint, asio::error_code& ec) - { - typename Protocol::socket::template rebind_executor< - executor_type>::other peer(impl_.get_executor()); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - return peer; - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. Ownership of the peer_endpoint object is - * retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. - * const asio::error_code& error, - * // On success, the newly accepted socket. - * typename Protocol::socket::template - * rebind_executor::other peer - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * acceptor.async_accept(endpoint, accept_handler); - * @endcode - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - typename Protocol::socket::template rebind_executor< - executor_type>::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template - rebind_executor::other)) - async_accept(endpoint_type& peer_endpoint, - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate::other)>( - initiate_async_move_accept(this), handler, - impl_.get_executor(), &peer_endpoint, - static_cast::other*>(0)); - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly accepted - * socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket( - * acceptor.accept(my_context2, endpoint)); - * @endcode - */ - template - typename Protocol::socket::template rebind_executor::other - accept(const Executor1& ex, endpoint_type& peer_endpoint, - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - asio::error_code ec; - typename Protocol::socket::template - rebind_executor::other peer(ex); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @returns A socket object representing the newly accepted connection. - * - * @throws asio::system_error Thrown on failure. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket( - * acceptor.accept(my_context2, endpoint)); - * @endcode - */ - template - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other - accept(ExecutionContext& context, endpoint_type& peer_endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - { - asio::error_code ec; - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other peer(context); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - asio::detail::throw_error(ec, "accept"); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly accepted - * socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket( - * acceptor.accept(my_context2, endpoint, ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - typename Protocol::socket::template rebind_executor::other - accept(const executor_type& ex, - endpoint_type& peer_endpoint, asio::error_code& ec, - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - typename Protocol::socket::template - rebind_executor::other peer(ex); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - return peer; - } - - /// Accept a new connection. - /** - * This function is used to accept a new connection from a peer. The function - * call will block until a new connection has been accepted successfully or - * an error occurs. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns On success, a socket object representing the newly accepted - * connection. On error, a socket object where is_open() is false. - * - * @par Example - * @code - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * asio::ip::tcp::socket socket( - * acceptor.accept(my_context2, endpoint, ec)); - * if (ec) - * { - * // An error occurred. - * } - * @endcode - */ - template - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other - accept(ExecutionContext& context, - endpoint_type& peer_endpoint, asio::error_code& ec, - typename enable_if< - is_convertible::value - >::type* = 0) - { - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other peer(context); - impl_.get_service().accept(impl_.get_implementation(), - peer, &peer_endpoint, ec); - return peer; - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param ex The I/O executor object to be used for the newly accepted - * socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. Ownership of the peer_endpoint object is - * retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * typename Protocol::socket::template rebind_executor< - * Executor1>::other peer // On success, the newly accepted socket. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * acceptor.async_accept(my_context2, endpoint, accept_handler); - * @endcode - */ - template ::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template rebind_executor< - Executor1>::other)) - async_accept(const Executor1& ex, endpoint_type& peer_endpoint, - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< - is_executor::value - || execution::is_executor::value - >::type* = 0) - { - typedef typename Protocol::socket::template rebind_executor< - Executor1>::other other_socket_type; - - return async_initiate( - initiate_async_move_accept(this), handler, - ex, &peer_endpoint, - static_cast(0)); - } - - /// Start an asynchronous accept. - /** - * This function is used to asynchronously accept a new connection. The - * function call always returns immediately. - * - * This overload requires that the Protocol template parameter satisfy the - * AcceptableProtocol type requirements. - * - * @param context The I/O execution context object to be used for the newly - * accepted socket. - * - * @param peer_endpoint An endpoint object into which the endpoint of the - * remote peer will be written. Ownership of the peer_endpoint object is - * retained by the caller, which must guarantee that it is valid until the - * handler is called. - * - * @param handler The handler to be called when the accept operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * typename Protocol::socket::template rebind_executor< - * typename ExecutionContext::executor_type>::other peer - * // On success, the newly accepted socket. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code - * void accept_handler(const asio::error_code& error, - * asio::ip::tcp::socket peer) - * { - * if (!error) - * { - * // Accept succeeded. - * } - * } - * - * ... - * - * asio::ip::tcp::acceptor acceptor(my_context); - * ... - * asio::ip::tcp::endpoint endpoint; - * acceptor.async_accept(my_context2, endpoint, accept_handler); - * @endcode - */ - template ::other)) MoveAcceptHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(MoveAcceptHandler, - void (asio::error_code, - typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other)) - async_accept(ExecutionContext& context, - endpoint_type& peer_endpoint, - ASIO_MOVE_ARG(MoveAcceptHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type), - typename enable_if< - is_convertible::value - >::type* = 0) - { - typedef typename Protocol::socket::template rebind_executor< - typename ExecutionContext::executor_type>::other other_socket_type; - - return async_initiate( - initiate_async_move_accept(this), handler, - context.get_executor(), &peer_endpoint, - static_cast(0)); - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - -private: - // Disallow copying and assignment. - basic_socket_acceptor(const basic_socket_acceptor&) ASIO_DELETED; - basic_socket_acceptor& operator=( - const basic_socket_acceptor&) ASIO_DELETED; - - class initiate_async_wait - { - public: - typedef Executor executor_type; - - explicit initiate_async_wait(basic_socket_acceptor* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WaitHandler) handler, wait_type w) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WaitHandler. - ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_wait( - self_->impl_.get_implementation(), w, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_socket_acceptor* self_; - }; - - class initiate_async_accept - { - public: - typedef Executor executor_type; - - explicit initiate_async_accept(basic_socket_acceptor* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(AcceptHandler) handler, - basic_socket* peer, - endpoint_type* peer_endpoint) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a AcceptHandler. - ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_accept( - self_->impl_.get_implementation(), *peer, peer_endpoint, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_socket_acceptor* self_; - }; - - class initiate_async_move_accept - { - public: - typedef Executor executor_type; - - explicit initiate_async_move_accept(basic_socket_acceptor* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(MoveAcceptHandler) handler, - const Executor1& peer_ex, endpoint_type* peer_endpoint, Socket*) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a MoveAcceptHandler. - ASIO_MOVE_ACCEPT_HANDLER_CHECK( - MoveAcceptHandler, handler, Socket) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_move_accept( - self_->impl_.get_implementation(), peer_ex, peer_endpoint, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_socket_acceptor* self_; - }; - -#if defined(ASIO_WINDOWS_RUNTIME) - detail::io_object_impl< - detail::null_socket_service, Executor> impl_; -#elif defined(ASIO_HAS_IOCP) - detail::io_object_impl< - detail::win_iocp_socket_service, Executor> impl_; -#else - detail::io_object_impl< - detail::reactive_socket_service, Executor> impl_; -#endif -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_SOCKET_ACCEPTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_iostream.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_iostream.hpp deleted file mode 100644 index abd35a6a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_iostream.hpp +++ /dev/null @@ -1,407 +0,0 @@ -// -// basic_socket_iostream.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SOCKET_IOSTREAM_HPP -#define ASIO_BASIC_SOCKET_IOSTREAM_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_NO_IOSTREAM) - -#include -#include -#include "asio/basic_socket_streambuf.hpp" - -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -# include "asio/detail/variadic_templates.hpp" - -// A macro that should expand to: -// template -// explicit basic_socket_iostream(T1 x1, ..., Tn xn) -// : std::basic_iostream( -// &this->detail::socket_iostream_base< -// Protocol, Clock, WaitTraits>::streambuf_) -// { -// if (rdbuf()->connect(x1, ..., xn) == 0) -// this->setstate(std::ios_base::failbit); -// } -// This macro should only persist within this file. - -# define ASIO_PRIVATE_CTR_DEF(n) \ - template \ - explicit basic_socket_iostream(ASIO_VARIADIC_BYVAL_PARAMS(n)) \ - : std::basic_iostream( \ - &this->detail::socket_iostream_base< \ - Protocol, Clock, WaitTraits>::streambuf_) \ - { \ - this->setf(std::ios_base::unitbuf); \ - if (rdbuf()->connect(ASIO_VARIADIC_BYVAL_ARGS(n)) == 0) \ - this->setstate(std::ios_base::failbit); \ - } \ - /**/ - -// A macro that should expand to: -// template -// void connect(T1 x1, ..., Tn xn) -// { -// if (rdbuf()->connect(x1, ..., xn) == 0) -// this->setstate(std::ios_base::failbit); -// } -// This macro should only persist within this file. - -# define ASIO_PRIVATE_CONNECT_DEF(n) \ - template \ - void connect(ASIO_VARIADIC_BYVAL_PARAMS(n)) \ - { \ - if (rdbuf()->connect(ASIO_VARIADIC_BYVAL_ARGS(n)) == 0) \ - this->setstate(std::ios_base::failbit); \ - } \ - /**/ - -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// A separate base class is used to ensure that the streambuf is initialised -// prior to the basic_socket_iostream's basic_iostream base class. -template -class socket_iostream_base -{ -protected: - socket_iostream_base() - { - } - -#if defined(ASIO_HAS_MOVE) - socket_iostream_base(socket_iostream_base&& other) - : streambuf_(std::move(other.streambuf_)) - { - } - - socket_iostream_base(basic_stream_socket s) - : streambuf_(std::move(s)) - { - } - - socket_iostream_base& operator=(socket_iostream_base&& other) - { - streambuf_ = std::move(other.streambuf_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) - - basic_socket_streambuf streambuf_; -}; - -} // namespace detail - -#if !defined(ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL) -#define ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL - -// Forward declaration with defaulted arguments. -template > -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typename Clock = chrono::steady_clock, - typename WaitTraits = wait_traits > -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) -class basic_socket_iostream; - -#endif // !defined(ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL) - -/// Iostream interface for a socket. -#if defined(GENERATING_DOCUMENTATION) -template > -#else // defined(GENERATING_DOCUMENTATION) -template -#endif // defined(GENERATING_DOCUMENTATION) -class basic_socket_iostream - : private detail::socket_iostream_base, - public std::basic_iostream -{ -private: - // These typedefs are intended keep this class's implementation independent - // of whether it's using Boost.DateClock, Boost.Chrono or std::chrono. -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typedef WaitTraits traits_helper; -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typedef detail::chrono_time_traits traits_helper; -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - -public: - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// The clock type. - typedef Clock clock_type; - -#if defined(GENERATING_DOCUMENTATION) - /// (Deprecated: Use time_point.) The time type. - typedef typename WaitTraits::time_type time_type; - - /// The time type. - typedef typename WaitTraits::time_point time_point; - - /// (Deprecated: Use duration.) The duration type. - typedef typename WaitTraits::duration_type duration_type; - - /// The duration type. - typedef typename WaitTraits::duration duration; -#else -# if !defined(ASIO_NO_DEPRECATED) - typedef typename traits_helper::time_type time_type; - typedef typename traits_helper::duration_type duration_type; -# endif // !defined(ASIO_NO_DEPRECATED) - typedef typename traits_helper::time_type time_point; - typedef typename traits_helper::duration_type duration; -#endif - - /// Construct a basic_socket_iostream without establishing a connection. - basic_socket_iostream() - : std::basic_iostream( - &this->detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::streambuf_) - { - this->setf(std::ios_base::unitbuf); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Construct a basic_socket_iostream from the supplied socket. - explicit basic_socket_iostream(basic_stream_socket s) - : detail::socket_iostream_base< - Protocol, Clock, WaitTraits>(std::move(s)), - std::basic_iostream( - &this->detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::streambuf_) - { - this->setf(std::ios_base::unitbuf); - } - -#if defined(ASIO_HAS_STD_IOSTREAM_MOVE) \ - || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_socket_iostream from another. - basic_socket_iostream(basic_socket_iostream&& other) - : detail::socket_iostream_base< - Protocol, Clock, WaitTraits>(std::move(other)), - std::basic_iostream(std::move(other)) - { - this->set_rdbuf(&this->detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::streambuf_); - } - - /// Move-assign a basic_socket_iostream from another. - basic_socket_iostream& operator=(basic_socket_iostream&& other) - { - std::basic_iostream::operator=(std::move(other)); - detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::operator=(std::move(other)); - return *this; - } -#endif // defined(ASIO_HAS_STD_IOSTREAM_MOVE) - // || defined(GENERATING_DOCUMENTATION) -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - -#if defined(GENERATING_DOCUMENTATION) - /// Establish a connection to an endpoint corresponding to a resolver query. - /** - * This constructor automatically establishes a connection based on the - * supplied resolver query parameters. The arguments are used to construct - * a resolver query object. - */ - template - explicit basic_socket_iostream(T1 t1, ..., TN tn); -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - template - explicit basic_socket_iostream(T... x) - : std::basic_iostream( - &this->detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::streambuf_) - { - this->setf(std::ios_base::unitbuf); - if (rdbuf()->connect(x...) == 0) - this->setstate(std::ios_base::failbit); - } -#else - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CTR_DEF) -#endif - -#if defined(GENERATING_DOCUMENTATION) - /// Establish a connection to an endpoint corresponding to a resolver query. - /** - * This function automatically establishes a connection based on the supplied - * resolver query parameters. The arguments are used to construct a resolver - * query object. - */ - template - void connect(T1 t1, ..., TN tn); -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - template - void connect(T... x) - { - if (rdbuf()->connect(x...) == 0) - this->setstate(std::ios_base::failbit); - } -#else - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF) -#endif - - /// Close the connection. - void close() - { - if (rdbuf()->close() == 0) - this->setstate(std::ios_base::failbit); - } - - /// Return a pointer to the underlying streambuf. - basic_socket_streambuf* rdbuf() const - { - return const_cast*>( - &this->detail::socket_iostream_base< - Protocol, Clock, WaitTraits>::streambuf_); - } - - /// Get a reference to the underlying socket. - basic_socket& socket() - { - return rdbuf()->socket(); - } - - /// Get the last error associated with the stream. - /** - * @return An \c error_code corresponding to the last error from the stream. - * - * @par Example - * To print the error associated with a failure to establish a connection: - * @code tcp::iostream s("www.boost.org", "http"); - * if (!s) - * { - * std::cout << "Error: " << s.error().message() << std::endl; - * } @endcode - */ - const asio::error_code& error() const - { - return rdbuf()->error(); - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use expiry().) Get the stream's expiry time as an absolute - /// time. - /** - * @return An absolute time value representing the stream's expiry time. - */ - time_point expires_at() const - { - return rdbuf()->expires_at(); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Get the stream's expiry time as an absolute time. - /** - * @return An absolute time value representing the stream's expiry time. - */ - time_point expiry() const - { - return rdbuf()->expiry(); - } - - /// Set the stream's expiry time as an absolute time. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the stream. - */ - void expires_at(const time_point& expiry_time) - { - rdbuf()->expires_at(expiry_time); - } - - /// Set the stream's expiry time relative to now. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the timer. - */ - void expires_after(const duration& expiry_time) - { - rdbuf()->expires_after(expiry_time); - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use expiry().) Get the stream's expiry time relative to now. - /** - * @return A relative time value representing the stream's expiry time. - */ - duration expires_from_now() const - { - return rdbuf()->expires_from_now(); - } - - /// (Deprecated: Use expires_after().) Set the stream's expiry time relative - /// to now. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the timer. - */ - void expires_from_now(const duration& expiry_time) - { - rdbuf()->expires_from_now(expiry_time); - } -#endif // !defined(ASIO_NO_DEPRECATED) - -private: - // Disallow copying and assignment. - basic_socket_iostream(const basic_socket_iostream&) ASIO_DELETED; - basic_socket_iostream& operator=( - const basic_socket_iostream&) ASIO_DELETED; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) -# undef ASIO_PRIVATE_CTR_DEF -# undef ASIO_PRIVATE_CONNECT_DEF -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#endif // !defined(ASIO_NO_IOSTREAM) - -#endif // ASIO_BASIC_SOCKET_IOSTREAM_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_streambuf.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_streambuf.hpp deleted file mode 100644 index 2b5aad92..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_socket_streambuf.hpp +++ /dev/null @@ -1,687 +0,0 @@ -// -// basic_socket_streambuf.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_SOCKET_STREAMBUF_HPP -#define ASIO_BASIC_SOCKET_STREAMBUF_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_NO_IOSTREAM) - -#include -#include -#include "asio/basic_socket.hpp" -#include "asio/basic_stream_socket.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/io_context.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) -# include "asio/detail/deadline_timer_service.hpp" -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) -# include "asio/steady_timer.hpp" -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -# include "asio/detail/variadic_templates.hpp" - -// A macro that should expand to: -// template -// basic_socket_streambuf* connect(T1 x1, ..., Tn xn) -// { -// init_buffers(); -// typedef typename Protocol::resolver resolver_type; -// resolver_type resolver(socket().get_executor()); -// connect_to_endpoints( -// resolver.resolve(x1, ..., xn, ec_)); -// return !ec_ ? this : 0; -// } -// This macro should only persist within this file. - -# define ASIO_PRIVATE_CONNECT_DEF(n) \ - template \ - basic_socket_streambuf* connect(ASIO_VARIADIC_BYVAL_PARAMS(n)) \ - { \ - init_buffers(); \ - typedef typename Protocol::resolver resolver_type; \ - resolver_type resolver(socket().get_executor()); \ - connect_to_endpoints( \ - resolver.resolve(ASIO_VARIADIC_BYVAL_ARGS(n), ec_)); \ - return !ec_ ? this : 0; \ - } \ - /**/ - -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// A separate base class is used to ensure that the io_context member is -// initialised prior to the basic_socket_streambuf's basic_socket base class. -class socket_streambuf_io_context -{ -protected: - socket_streambuf_io_context(io_context* ctx) - : default_io_context_(ctx) - { - } - - shared_ptr default_io_context_; -}; - -// A separate base class is used to ensure that the dynamically allocated -// buffers are constructed prior to the basic_socket_streambuf's basic_socket -// base class. This makes moving the socket is the last potentially throwing -// step in the streambuf's move constructor, giving the constructor a strong -// exception safety guarantee. -class socket_streambuf_buffers -{ -protected: - socket_streambuf_buffers() - : get_buffer_(buffer_size), - put_buffer_(buffer_size) - { - } - - enum { buffer_size = 512 }; - std::vector get_buffer_; - std::vector put_buffer_; -}; - -} // namespace detail - -#if !defined(ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL) -#define ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL - -// Forward declaration with defaulted arguments. -template > -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typename Clock = chrono::steady_clock, - typename WaitTraits = wait_traits > -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) -class basic_socket_streambuf; - -#endif // !defined(ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL) - -/// Iostream streambuf for a socket. -#if defined(GENERATING_DOCUMENTATION) -template > -#else // defined(GENERATING_DOCUMENTATION) -template -#endif // defined(GENERATING_DOCUMENTATION) -class basic_socket_streambuf - : public std::streambuf, - private detail::socket_streambuf_io_context, - private detail::socket_streambuf_buffers, -#if defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) - private basic_socket -#else // defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) - public basic_socket -#endif // defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) -{ -private: - // These typedefs are intended keep this class's implementation independent - // of whether it's using Boost.DateClock, Boost.Chrono or std::chrono. -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typedef WaitTraits traits_helper; -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - typedef detail::chrono_time_traits traits_helper; -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - -public: - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// The clock type. - typedef Clock clock_type; - -#if defined(GENERATING_DOCUMENTATION) - /// (Deprecated: Use time_point.) The time type. - typedef typename WaitTraits::time_type time_type; - - /// The time type. - typedef typename WaitTraits::time_point time_point; - - /// (Deprecated: Use duration.) The duration type. - typedef typename WaitTraits::duration_type duration_type; - - /// The duration type. - typedef typename WaitTraits::duration duration; -#else -# if !defined(ASIO_NO_DEPRECATED) - typedef typename traits_helper::time_type time_type; - typedef typename traits_helper::duration_type duration_type; -# endif // !defined(ASIO_NO_DEPRECATED) - typedef typename traits_helper::time_type time_point; - typedef typename traits_helper::duration_type duration; -#endif - - /// Construct a basic_socket_streambuf without establishing a connection. - basic_socket_streambuf() - : detail::socket_streambuf_io_context(new io_context), - basic_socket(*default_io_context_), - expiry_time_(max_expiry_time()) - { - init_buffers(); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Construct a basic_socket_streambuf from the supplied socket. - explicit basic_socket_streambuf(basic_stream_socket s) - : detail::socket_streambuf_io_context(0), - basic_socket(std::move(s)), - expiry_time_(max_expiry_time()) - { - init_buffers(); - } - - /// Move-construct a basic_socket_streambuf from another. - basic_socket_streambuf(basic_socket_streambuf&& other) - : detail::socket_streambuf_io_context(other), - basic_socket(std::move(other.socket())), - ec_(other.ec_), - expiry_time_(other.expiry_time_) - { - get_buffer_.swap(other.get_buffer_); - put_buffer_.swap(other.put_buffer_); - setg(other.eback(), other.gptr(), other.egptr()); - setp(other.pptr(), other.epptr()); - other.ec_ = asio::error_code(); - other.expiry_time_ = max_expiry_time(); - other.init_buffers(); - } - - /// Move-assign a basic_socket_streambuf from another. - basic_socket_streambuf& operator=(basic_socket_streambuf&& other) - { - this->close(); - socket() = std::move(other.socket()); - detail::socket_streambuf_io_context::operator=(other); - ec_ = other.ec_; - expiry_time_ = other.expiry_time_; - get_buffer_.swap(other.get_buffer_); - put_buffer_.swap(other.put_buffer_); - setg(other.eback(), other.gptr(), other.egptr()); - setp(other.pptr(), other.epptr()); - other.ec_ = asio::error_code(); - other.expiry_time_ = max_expiry_time(); - other.put_buffer_.resize(buffer_size); - other.init_buffers(); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destructor flushes buffered data. - virtual ~basic_socket_streambuf() - { - if (pptr() != pbase()) - overflow(traits_type::eof()); - } - - /// Establish a connection. - /** - * This function establishes a connection to the specified endpoint. - * - * @return \c this if a connection was successfully established, a null - * pointer otherwise. - */ - basic_socket_streambuf* connect(const endpoint_type& endpoint) - { - init_buffers(); - ec_ = asio::error_code(); - this->connect_to_endpoints(&endpoint, &endpoint + 1); - return !ec_ ? this : 0; - } - -#if defined(GENERATING_DOCUMENTATION) - /// Establish a connection. - /** - * This function automatically establishes a connection based on the supplied - * resolver query parameters. The arguments are used to construct a resolver - * query object. - * - * @return \c this if a connection was successfully established, a null - * pointer otherwise. - */ - template - basic_socket_streambuf* connect(T1 t1, ..., TN tn); -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - template - basic_socket_streambuf* connect(T... x) - { - init_buffers(); - typedef typename Protocol::resolver resolver_type; - resolver_type resolver(socket().get_executor()); - connect_to_endpoints(resolver.resolve(x..., ec_)); - return !ec_ ? this : 0; - } -#else - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF) -#endif - - /// Close the connection. - /** - * @return \c this if a connection was successfully established, a null - * pointer otherwise. - */ - basic_socket_streambuf* close() - { - sync(); - socket().close(ec_); - if (!ec_) - init_buffers(); - return !ec_ ? this : 0; - } - - /// Get a reference to the underlying socket. - basic_socket& socket() - { - return *this; - } - - /// Get the last error associated with the stream buffer. - /** - * @return An \c error_code corresponding to the last error from the stream - * buffer. - */ - const asio::error_code& error() const - { - return ec_; - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use error().) Get the last error associated with the stream - /// buffer. - /** - * @return An \c error_code corresponding to the last error from the stream - * buffer. - */ - const asio::error_code& puberror() const - { - return error(); - } - - /// (Deprecated: Use expiry().) Get the stream buffer's expiry time as an - /// absolute time. - /** - * @return An absolute time value representing the stream buffer's expiry - * time. - */ - time_point expires_at() const - { - return expiry_time_; - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Get the stream buffer's expiry time as an absolute time. - /** - * @return An absolute time value representing the stream buffer's expiry - * time. - */ - time_point expiry() const - { - return expiry_time_; - } - - /// Set the stream buffer's expiry time as an absolute time. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the stream. - */ - void expires_at(const time_point& expiry_time) - { - expiry_time_ = expiry_time; - } - - /// Set the stream buffer's expiry time relative to now. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the timer. - */ - void expires_after(const duration& expiry_time) - { - expiry_time_ = traits_helper::add(traits_helper::now(), expiry_time); - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use expiry().) Get the stream buffer's expiry time relative - /// to now. - /** - * @return A relative time value representing the stream buffer's expiry time. - */ - duration expires_from_now() const - { - return traits_helper::subtract(expires_at(), traits_helper::now()); - } - - /// (Deprecated: Use expires_after().) Set the stream buffer's expiry time - /// relative to now. - /** - * This function sets the expiry time associated with the stream. Stream - * operations performed after this time (where the operations cannot be - * completed using the internal buffers) will fail with the error - * asio::error::operation_aborted. - * - * @param expiry_time The expiry time to be used for the timer. - */ - void expires_from_now(const duration& expiry_time) - { - expiry_time_ = traits_helper::add(traits_helper::now(), expiry_time); - } -#endif // !defined(ASIO_NO_DEPRECATED) - -protected: - int_type underflow() - { -#if defined(ASIO_WINDOWS_RUNTIME) - ec_ = asio::error::operation_not_supported; - return traits_type::eof(); -#else // defined(ASIO_WINDOWS_RUNTIME) - if (gptr() != egptr()) - return traits_type::eof(); - - for (;;) - { - // Check if we are past the expiry time. - if (traits_helper::less_than(expiry_time_, traits_helper::now())) - { - ec_ = asio::error::timed_out; - return traits_type::eof(); - } - - // Try to complete the operation without blocking. - if (!socket().native_non_blocking()) - socket().native_non_blocking(true, ec_); - detail::buffer_sequence_adapter - bufs(asio::buffer(get_buffer_) + putback_max); - detail::signed_size_type bytes = detail::socket_ops::recv( - socket().native_handle(), bufs.buffers(), bufs.count(), 0, ec_); - - // Check if operation succeeded. - if (bytes > 0) - { - setg(&get_buffer_[0], &get_buffer_[0] + putback_max, - &get_buffer_[0] + putback_max + bytes); - return traits_type::to_int_type(*gptr()); - } - - // Check for EOF. - if (bytes == 0) - { - ec_ = asio::error::eof; - return traits_type::eof(); - } - - // Operation failed. - if (ec_ != asio::error::would_block - && ec_ != asio::error::try_again) - return traits_type::eof(); - - // Wait for socket to become ready. - if (detail::socket_ops::poll_read( - socket().native_handle(), 0, timeout(), ec_) < 0) - return traits_type::eof(); - } -#endif // defined(ASIO_WINDOWS_RUNTIME) - } - - int_type overflow(int_type c) - { -#if defined(ASIO_WINDOWS_RUNTIME) - ec_ = asio::error::operation_not_supported; - return traits_type::eof(); -#else // defined(ASIO_WINDOWS_RUNTIME) - char_type ch = traits_type::to_char_type(c); - - // Determine what needs to be sent. - const_buffer output_buffer; - if (put_buffer_.empty()) - { - if (traits_type::eq_int_type(c, traits_type::eof())) - return traits_type::not_eof(c); // Nothing to do. - output_buffer = asio::buffer(&ch, sizeof(char_type)); - } - else - { - output_buffer = asio::buffer(pbase(), - (pptr() - pbase()) * sizeof(char_type)); - } - - while (output_buffer.size() > 0) - { - // Check if we are past the expiry time. - if (traits_helper::less_than(expiry_time_, traits_helper::now())) - { - ec_ = asio::error::timed_out; - return traits_type::eof(); - } - - // Try to complete the operation without blocking. - if (!socket().native_non_blocking()) - socket().native_non_blocking(true, ec_); - detail::buffer_sequence_adapter< - const_buffer, const_buffer> bufs(output_buffer); - detail::signed_size_type bytes = detail::socket_ops::send( - socket().native_handle(), bufs.buffers(), bufs.count(), 0, ec_); - - // Check if operation succeeded. - if (bytes > 0) - { - output_buffer += static_cast(bytes); - continue; - } - - // Operation failed. - if (ec_ != asio::error::would_block - && ec_ != asio::error::try_again) - return traits_type::eof(); - - // Wait for socket to become ready. - if (detail::socket_ops::poll_write( - socket().native_handle(), 0, timeout(), ec_) < 0) - return traits_type::eof(); - } - - if (!put_buffer_.empty()) - { - setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size()); - - // If the new character is eof then our work here is done. - if (traits_type::eq_int_type(c, traits_type::eof())) - return traits_type::not_eof(c); - - // Add the new character to the output buffer. - *pptr() = ch; - pbump(1); - } - - return c; -#endif // defined(ASIO_WINDOWS_RUNTIME) - } - - int sync() - { - return overflow(traits_type::eof()); - } - - std::streambuf* setbuf(char_type* s, std::streamsize n) - { - if (pptr() == pbase() && s == 0 && n == 0) - { - put_buffer_.clear(); - setp(0, 0); - sync(); - return this; - } - - return 0; - } - -private: - // Disallow copying and assignment. - basic_socket_streambuf(const basic_socket_streambuf&) ASIO_DELETED; - basic_socket_streambuf& operator=( - const basic_socket_streambuf&) ASIO_DELETED; - - void init_buffers() - { - setg(&get_buffer_[0], - &get_buffer_[0] + putback_max, - &get_buffer_[0] + putback_max); - - if (put_buffer_.empty()) - setp(0, 0); - else - setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size()); - } - - int timeout() const - { - int64_t msec = traits_helper::to_posix_duration( - traits_helper::subtract(expiry_time_, - traits_helper::now())).total_milliseconds(); - if (msec > (std::numeric_limits::max)()) - msec = (std::numeric_limits::max)(); - else if (msec < 0) - msec = 0; - return static_cast(msec); - } - - template - void connect_to_endpoints(const EndpointSequence& endpoints) - { - this->connect_to_endpoints(endpoints.begin(), endpoints.end()); - } - - template - void connect_to_endpoints(EndpointIterator begin, EndpointIterator end) - { -#if defined(ASIO_WINDOWS_RUNTIME) - ec_ = asio::error::operation_not_supported; -#else // defined(ASIO_WINDOWS_RUNTIME) - if (ec_) - return; - - ec_ = asio::error::not_found; - for (EndpointIterator i = begin; i != end; ++i) - { - // Check if we are past the expiry time. - if (traits_helper::less_than(expiry_time_, traits_helper::now())) - { - ec_ = asio::error::timed_out; - return; - } - - // Close and reopen the socket. - typename Protocol::endpoint ep(*i); - socket().close(ec_); - socket().open(ep.protocol(), ec_); - if (ec_) - continue; - - // Try to complete the operation without blocking. - if (!socket().native_non_blocking()) - socket().native_non_blocking(true, ec_); - detail::socket_ops::connect(socket().native_handle(), - ep.data(), ep.size(), ec_); - - // Check if operation succeeded. - if (!ec_) - return; - - // Operation failed. - if (ec_ != asio::error::in_progress - && ec_ != asio::error::would_block) - continue; - - // Wait for socket to become ready. - if (detail::socket_ops::poll_connect( - socket().native_handle(), timeout(), ec_) < 0) - continue; - - // Get the error code from the connect operation. - int connect_error = 0; - size_t connect_error_len = sizeof(connect_error); - if (detail::socket_ops::getsockopt(socket().native_handle(), 0, - SOL_SOCKET, SO_ERROR, &connect_error, &connect_error_len, ec_) - == detail::socket_error_retval) - return; - - // Check the result of the connect operation. - ec_ = asio::error_code(connect_error, - asio::error::get_system_category()); - if (!ec_) - return; - } -#endif // defined(ASIO_WINDOWS_RUNTIME) - } - - // Helper function to get the maximum expiry time. - static time_point max_expiry_time() - { -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - return boost::posix_time::pos_infin; -#else // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - return (time_point::max)(); -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // && defined(ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM) - } - - enum { putback_max = 8 }; - asio::error_code ec_; - time_point expiry_time_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) -# undef ASIO_PRIVATE_CONNECT_DEF -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#endif // !defined(ASIO_NO_IOSTREAM) - -#endif // ASIO_BASIC_SOCKET_STREAMBUF_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_stream_socket.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_stream_socket.hpp deleted file mode 100644 index c31655ae..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_stream_socket.hpp +++ /dev/null @@ -1,1053 +0,0 @@ -// -// basic_stream_socket.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_STREAM_SOCKET_HPP -#define ASIO_BASIC_STREAM_SOCKET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/async_result.hpp" -#include "asio/basic_socket.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_STREAM_SOCKET_FWD_DECL) -#define ASIO_BASIC_STREAM_SOCKET_FWD_DECL - -// Forward declaration with defaulted arguments. -template -class basic_stream_socket; - -#endif // !defined(ASIO_BASIC_STREAM_SOCKET_FWD_DECL) - -/// Provides stream-oriented socket functionality. -/** - * The basic_stream_socket class template provides asynchronous and blocking - * stream-oriented socket functionality. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. - */ -template -class basic_stream_socket - : public basic_socket -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the socket type to another executor. - template - struct rebind_executor - { - /// The socket type when rebound to the specified executor. - typedef basic_stream_socket other; - }; - - /// The native representation of a socket. -#if defined(GENERATING_DOCUMENTATION) - typedef implementation_defined native_handle_type; -#else - typedef typename basic_socket::native_handle_type native_handle_type; -#endif - - /// The protocol type. - typedef Protocol protocol_type; - - /// The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - /// Construct a basic_stream_socket without opening it. - /** - * This constructor creates a stream socket without opening it. The socket - * needs to be opened and then connected or accepted before data can be sent - * or received on it. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - */ - explicit basic_stream_socket(const executor_type& ex) - : basic_socket(ex) - { - } - - /// Construct a basic_stream_socket without opening it. - /** - * This constructor creates a stream socket without opening it. The socket - * needs to be opened and then connected or accepted before data can be sent - * or received on it. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - */ - template - explicit basic_stream_socket(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context) - { - } - - /// Construct and open a basic_stream_socket. - /** - * This constructor creates and opens a stream socket. The socket needs to be - * connected or accepted before data can be sent or received on it. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - basic_stream_socket(const executor_type& ex, const protocol_type& protocol) - : basic_socket(ex, protocol) - { - } - - /// Construct and open a basic_stream_socket. - /** - * This constructor creates and opens a stream socket. The socket needs to be - * connected or accepted before data can be sent or received on it. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_stream_socket(ExecutionContext& context, const protocol_type& protocol, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol) - { - } - - /// Construct a basic_stream_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a stream socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the stream - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - basic_stream_socket(const executor_type& ex, const endpoint_type& endpoint) - : basic_socket(ex, endpoint) - { - } - - /// Construct a basic_stream_socket, opening it and binding it to the given - /// local endpoint. - /** - * This constructor creates a stream socket and automatically opens it bound - * to the specified endpoint on the local machine. The protocol used is the - * protocol associated with the given endpoint. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param endpoint An endpoint on the local machine to which the stream - * socket will be bound. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_stream_socket(ExecutionContext& context, const endpoint_type& endpoint, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, endpoint) - { - } - - /// Construct a basic_stream_socket on an existing native socket. - /** - * This constructor creates a stream socket object to hold an existing native - * socket. - * - * @param ex The I/O executor that the socket will use, by default, to - * dispatch handlers for any asynchronous operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - basic_stream_socket(const executor_type& ex, - const protocol_type& protocol, const native_handle_type& native_socket) - : basic_socket(ex, protocol, native_socket) - { - } - - /// Construct a basic_stream_socket on an existing native socket. - /** - * This constructor creates a stream socket object to hold an existing native - * socket. - * - * @param context An execution context which provides the I/O executor that - * the socket will use, by default, to dispatch handlers for any asynchronous - * operations performed on the socket. - * - * @param protocol An object specifying protocol parameters to be used. - * - * @param native_socket The new underlying socket implementation. - * - * @throws asio::system_error Thrown on failure. - */ - template - basic_stream_socket(ExecutionContext& context, - const protocol_type& protocol, const native_handle_type& native_socket, - typename enable_if< - is_convertible::value - >::type* = 0) - : basic_socket(context, protocol, native_socket) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_stream_socket from another. - /** - * This constructor moves a stream socket from one object to another. - * - * @param other The other basic_stream_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_stream_socket(const executor_type&) - * constructor. - */ - basic_stream_socket(basic_stream_socket&& other) ASIO_NOEXCEPT - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_stream_socket from another. - /** - * This assignment operator moves a stream socket from one object to another. - * - * @param other The other basic_stream_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_stream_socket(const executor_type&) - * constructor. - */ - basic_stream_socket& operator=(basic_stream_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } - - /// Move-construct a basic_stream_socket from a socket of another protocol - /// type. - /** - * This constructor moves a stream socket from one object to another. - * - * @param other The other basic_stream_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_stream_socket(const executor_type&) - * constructor. - */ - template - basic_stream_socket(basic_stream_socket&& other, - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0) - : basic_socket(std::move(other)) - { - } - - /// Move-assign a basic_stream_socket from a socket of another protocol type. - /** - * This assignment operator moves a stream socket from one object to another. - * - * @param other The other basic_stream_socket object from which the move - * will occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_stream_socket(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value - && is_convertible::value, - basic_stream_socket& - >::type operator=(basic_stream_socket&& other) - { - basic_socket::operator=(std::move(other)); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the socket. - /** - * This function destroys the socket, cancelling any outstanding asynchronous - * operations associated with the socket as if by calling @c cancel. - */ - ~basic_stream_socket() - { - } - - /// Send some data on the socket. - /** - * This function is used to send data on the stream socket. The function - * call will block until one or more bytes of the data has been sent - * successfully, or an until error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref write function if you need to ensure that all data - * is written before the blocking operation completes. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.send(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on the socket. - /** - * This function is used to send data on the stream socket. The function - * call will block until one or more bytes of the data has been sent - * successfully, or an until error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @returns The number of bytes sent. - * - * @throws asio::system_error Thrown on failure. - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref write function if you need to ensure that all data - * is written before the blocking operation completes. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.send(asio::buffer(data, size), 0); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "send"); - return s; - } - - /// Send some data on the socket. - /** - * This function is used to send data on the stream socket. The function - * call will block until one or more bytes of the data has been sent - * successfully, or an until error occurs. - * - * @param buffers One or more data buffers to be sent on the socket. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes sent. Returns 0 if an error occurred. - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref write function if you need to ensure that all data - * is written before the blocking operation completes. - */ - template - std::size_t send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send data on the stream socket. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref async_write function if you need to ensure that all - * data is written before the asynchronous operation completes. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_send(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous send. - /** - * This function is used to asynchronously send data on the stream socket. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be sent on the socket. Although - * the buffers object may be copied as necessary, ownership of the underlying - * memory blocks is retained by the caller, which must guarantee that they - * remain valid until the handler is called. - * - * @param flags Flags specifying how the send call is to be made. - * - * @param handler The handler to be called when the send operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes sent. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The send operation may not transmit all of the data to the peer. - * Consider using the @ref async_write function if you need to ensure that all - * data is written before the asynchronous operation completes. - * - * @par Example - * To send a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_send(asio::buffer(data, size), 0, handler); - * @endcode - * See the @ref buffer documentation for information on sending multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, buffers, flags); - } - - /// Receive some data on the socket. - /** - * This function is used to receive data on the stream socket. The function - * call will block until one or more bytes of data has been received - * successfully, or until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.receive(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on the socket. - /** - * This function is used to receive data on the stream socket. The function - * call will block until one or more bytes of data has been received - * successfully, or until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @returns The number of bytes received. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.receive(asio::buffer(data, size), 0); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - asio::detail::throw_error(ec, "receive"); - return s; - } - - /// Receive some data on a connected socket. - /** - * This function is used to receive data on the stream socket. The function - * call will block until one or more bytes of data has been received - * successfully, or until an error occurs. - * - * @param buffers One or more buffers into which the data will be received. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes received. Returns 0 if an error occurred. - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that the - * requested amount of data is read before the blocking operation completes. - */ - template - std::size_t receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, flags, ec); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive data from the stream - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref async_read function if you need to ensure - * that the requested amount of data is received before the asynchronous - * operation completes. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Start an asynchronous receive. - /** - * This function is used to asynchronously receive data from the stream - * socket. The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be received. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param flags Flags specifying how the receive call is to be made. - * - * @param handler The handler to be called when the receive operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes received. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The receive operation may not receive all of the requested number of - * bytes. Consider using the @ref async_read function if you need to ensure - * that the requested amount of data is received before the asynchronous - * operation completes. - * - * @par Example - * To receive into a single data buffer use the @ref buffer function as - * follows: - * @code - * socket.async_receive(asio::buffer(data, size), 0, handler); - * @endcode - * See the @ref buffer documentation for information on receiving into - * multiple buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, buffers, flags); - } - - /// Write some data to the socket. - /** - * This function is used to write data to the stream socket. The function call - * will block until one or more bytes of the data has been written - * successfully, or until an error occurs. - * - * @param buffers One or more data buffers to be written to the socket. - * - * @returns The number of bytes written. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that - * all data is written before the blocking operation completes. - * - * @par Example - * To write a single data buffer use the @ref buffer function as follows: - * @code - * socket.write_some(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on writing multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t write_some(const ConstBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "write_some"); - return s; - } - - /// Write some data to the socket. - /** - * This function is used to write data to the stream socket. The function call - * will block until one or more bytes of the data has been written - * successfully, or until an error occurs. - * - * @param buffers One or more data buffers to be written to the socket. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes written. Returns 0 if an error occurred. - * - * @note The write_some operation may not transmit all of the data to the - * peer. Consider using the @ref write function if you need to ensure that - * all data is written before the blocking operation completes. - */ - template - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec) - { - return this->impl_.get_service().send( - this->impl_.get_implementation(), buffers, 0, ec); - } - - /// Start an asynchronous write. - /** - * This function is used to asynchronously write data to the stream socket. - * The function call always returns immediately. - * - * @param buffers One or more data buffers to be written to the socket. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the write operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes written. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The write operation may not transmit all of the data to the peer. - * Consider using the @ref async_write function if you need to ensure that all - * data is written before the asynchronous operation completes. - * - * @par Example - * To write a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_write_some(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on writing multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_write_some(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_send(this), handler, - buffers, socket_base::message_flags(0)); - } - - /// Read some data from the socket. - /** - * This function is used to read data from the stream socket. The function - * call will block until one or more bytes of data has been read successfully, - * or until an error occurs. - * - * @param buffers One or more buffers into which the data will be read. - * - * @returns The number of bytes read. - * - * @throws asio::system_error Thrown on failure. An error code of - * asio::error::eof indicates that the connection was closed by the - * peer. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that - * the requested amount of data is read before the blocking operation - * completes. - * - * @par Example - * To read into a single data buffer use the @ref buffer function as follows: - * @code - * socket.read_some(asio::buffer(data, size)); - * @endcode - * See the @ref buffer documentation for information on reading into multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - std::size_t read_some(const MutableBufferSequence& buffers) - { - asio::error_code ec; - std::size_t s = this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, 0, ec); - asio::detail::throw_error(ec, "read_some"); - return s; - } - - /// Read some data from the socket. - /** - * This function is used to read data from the stream socket. The function - * call will block until one or more bytes of data has been read successfully, - * or until an error occurs. - * - * @param buffers One or more buffers into which the data will be read. - * - * @param ec Set to indicate what error occurred, if any. - * - * @returns The number of bytes read. Returns 0 if an error occurred. - * - * @note The read_some operation may not read all of the requested number of - * bytes. Consider using the @ref read function if you need to ensure that - * the requested amount of data is read before the blocking operation - * completes. - */ - template - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return this->impl_.get_service().receive( - this->impl_.get_implementation(), buffers, 0, ec); - } - - /// Start an asynchronous read. - /** - * This function is used to asynchronously read data from the stream socket. - * The function call always returns immediately. - * - * @param buffers One or more buffers into which the data will be read. - * Although the buffers object may be copied as necessary, ownership of the - * underlying memory blocks is retained by the caller, which must guarantee - * that they remain valid until the handler is called. - * - * @param handler The handler to be called when the read operation completes. - * Copies will be made of the handler as required. The function signature of - * the handler must be: - * @code void handler( - * const asio::error_code& error, // Result of operation. - * std::size_t bytes_transferred // Number of bytes read. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note The read operation may not read all of the requested number of bytes. - * Consider using the @ref async_read function if you need to ensure that the - * requested amount of data is read before the asynchronous operation - * completes. - * - * @par Example - * To read into a single data buffer use the @ref buffer function as follows: - * @code - * socket.async_read_some(asio::buffer(data, size), handler); - * @endcode - * See the @ref buffer documentation for information on reading into multiple - * buffers in one go, and how to use it with arrays, boost::array or - * std::vector. - */ - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_read_some(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_receive(this), handler, - buffers, socket_base::message_flags(0)); - } - -private: - // Disallow copying and assignment. - basic_stream_socket(const basic_stream_socket&) ASIO_DELETED; - basic_stream_socket& operator=(const basic_stream_socket&) ASIO_DELETED; - - class initiate_async_send - { - public: - typedef Executor executor_type; - - explicit initiate_async_send(basic_stream_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WriteHandler) handler, - const ConstBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WriteHandler. - ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_send( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_stream_socket* self_; - }; - - class initiate_async_receive - { - public: - typedef Executor executor_type; - - explicit initiate_async_receive(basic_stream_socket* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(ReadHandler) handler, - const MutableBufferSequence& buffers, - socket_base::message_flags flags) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a ReadHandler. - ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_receive( - self_->impl_.get_implementation(), buffers, flags, - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_stream_socket* self_; - }; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_STREAM_SOCKET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf.hpp deleted file mode 100644 index 5b22070f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf.hpp +++ /dev/null @@ -1,452 +0,0 @@ -// -// basic_streambuf.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_STREAMBUF_HPP -#define ASIO_BASIC_STREAMBUF_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_NO_IOSTREAM) - -#include -#include -#include -#include -#include -#include "asio/basic_streambuf_fwd.hpp" -#include "asio/buffer.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/throw_exception.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Automatically resizable buffer class based on std::streambuf. -/** - * The @c basic_streambuf class is derived from @c std::streambuf to associate - * the streambuf's input and output sequences with one or more character - * arrays. These character arrays are internal to the @c basic_streambuf - * object, but direct access to the array elements is provided to permit them - * to be used efficiently with I/O operations. Characters written to the output - * sequence of a @c basic_streambuf object are appended to the input sequence - * of the same object. - * - * The @c basic_streambuf class's public interface is intended to permit the - * following implementation strategies: - * - * @li A single contiguous character array, which is reallocated as necessary - * to accommodate changes in the size of the character sequence. This is the - * implementation approach currently used in Asio. - * - * @li A sequence of one or more character arrays, where each array is of the - * same size. Additional character array objects are appended to the sequence - * to accommodate changes in the size of the character sequence. - * - * @li A sequence of one or more character arrays of varying sizes. Additional - * character array objects are appended to the sequence to accommodate changes - * in the size of the character sequence. - * - * The constructor for basic_streambuf accepts a @c size_t argument specifying - * the maximum of the sum of the sizes of the input sequence and output - * sequence. During the lifetime of the @c basic_streambuf object, the following - * invariant holds: - * @code size() <= max_size()@endcode - * Any member function that would, if successful, cause the invariant to be - * violated shall throw an exception of class @c std::length_error. - * - * The constructor for @c basic_streambuf takes an Allocator argument. A copy - * of this argument is used for any memory allocation performed, by the - * constructor and by all member functions, during the lifetime of each @c - * basic_streambuf object. - * - * @par Examples - * Writing directly from an streambuf to a socket: - * @code - * asio::streambuf b; - * std::ostream os(&b); - * os << "Hello, World!\n"; - * - * // try sending some data in input sequence - * size_t n = sock.send(b.data()); - * - * b.consume(n); // sent data is removed from input sequence - * @endcode - * - * Reading from a socket directly into a streambuf: - * @code - * asio::streambuf b; - * - * // reserve 512 bytes in output sequence - * asio::streambuf::mutable_buffers_type bufs = b.prepare(512); - * - * size_t n = sock.receive(bufs); - * - * // received data is "committed" from output sequence to input sequence - * b.commit(n); - * - * std::istream is(&b); - * std::string s; - * is >> s; - * @endcode - */ -#if defined(GENERATING_DOCUMENTATION) -template > -#else -template -#endif -class basic_streambuf - : public std::streambuf, - private noncopyable -{ -public: -#if defined(GENERATING_DOCUMENTATION) - /// The type used to represent the input sequence as a list of buffers. - typedef implementation_defined const_buffers_type; - - /// The type used to represent the output sequence as a list of buffers. - typedef implementation_defined mutable_buffers_type; -#else - typedef ASIO_CONST_BUFFER const_buffers_type; - typedef ASIO_MUTABLE_BUFFER mutable_buffers_type; -#endif - - /// Construct a basic_streambuf object. - /** - * Constructs a streambuf with the specified maximum size. The initial size - * of the streambuf's input sequence is 0. - */ - explicit basic_streambuf( - std::size_t maximum_size = (std::numeric_limits::max)(), - const Allocator& allocator = Allocator()) - : max_size_(maximum_size), - buffer_(allocator) - { - std::size_t pend = (std::min)(max_size_, buffer_delta); - buffer_.resize((std::max)(pend, 1)); - setg(&buffer_[0], &buffer_[0], &buffer_[0]); - setp(&buffer_[0], &buffer_[0] + pend); - } - - /// Get the size of the input sequence. - /** - * @returns The size of the input sequence. The value is equal to that - * calculated for @c s in the following code: - * @code - * size_t s = 0; - * const_buffers_type bufs = data(); - * const_buffers_type::const_iterator i = bufs.begin(); - * while (i != bufs.end()) - * { - * const_buffer buf(*i++); - * s += buf.size(); - * } - * @endcode - */ - std::size_t size() const ASIO_NOEXCEPT - { - return pptr() - gptr(); - } - - /// Get the maximum size of the basic_streambuf. - /** - * @returns The allowed maximum of the sum of the sizes of the input sequence - * and output sequence. - */ - std::size_t max_size() const ASIO_NOEXCEPT - { - return max_size_; - } - - /// Get the current capacity of the basic_streambuf. - /** - * @returns The current total capacity of the streambuf, i.e. for both the - * input sequence and output sequence. - */ - std::size_t capacity() const ASIO_NOEXCEPT - { - return buffer_.capacity(); - } - - /// Get a list of buffers that represents the input sequence. - /** - * @returns An object of type @c const_buffers_type that satisfies - * ConstBufferSequence requirements, representing all character arrays in the - * input sequence. - * - * @note The returned object is invalidated by any @c basic_streambuf member - * function that modifies the input sequence or output sequence. - */ - const_buffers_type data() const ASIO_NOEXCEPT - { - return asio::buffer(asio::const_buffer(gptr(), - (pptr() - gptr()) * sizeof(char_type))); - } - - /// Get a list of buffers that represents the output sequence, with the given - /// size. - /** - * Ensures that the output sequence can accommodate @c n characters, - * reallocating character array objects as necessary. - * - * @returns An object of type @c mutable_buffers_type that satisfies - * MutableBufferSequence requirements, representing character array objects - * at the start of the output sequence such that the sum of the buffer sizes - * is @c n. - * - * @throws std::length_error If size() + n > max_size(). - * - * @note The returned object is invalidated by any @c basic_streambuf member - * function that modifies the input sequence or output sequence. - */ - mutable_buffers_type prepare(std::size_t n) - { - reserve(n); - return asio::buffer(asio::mutable_buffer( - pptr(), n * sizeof(char_type))); - } - - /// Move characters from the output sequence to the input sequence. - /** - * Appends @c n characters from the start of the output sequence to the input - * sequence. The beginning of the output sequence is advanced by @c n - * characters. - * - * Requires a preceding call prepare(x) where x >= n, and - * no intervening operations that modify the input or output sequence. - * - * @note If @c n is greater than the size of the output sequence, the entire - * output sequence is moved to the input sequence and no error is issued. - */ - void commit(std::size_t n) - { - n = std::min(n, epptr() - pptr()); - pbump(static_cast(n)); - setg(eback(), gptr(), pptr()); - } - - /// Remove characters from the input sequence. - /** - * Removes @c n characters from the beginning of the input sequence. - * - * @note If @c n is greater than the size of the input sequence, the entire - * input sequence is consumed and no error is issued. - */ - void consume(std::size_t n) - { - if (egptr() < pptr()) - setg(&buffer_[0], gptr(), pptr()); - if (gptr() + n > pptr()) - n = pptr() - gptr(); - gbump(static_cast(n)); - } - -protected: - enum { buffer_delta = 128 }; - - /// Override std::streambuf behaviour. - /** - * Behaves according to the specification of @c std::streambuf::underflow(). - */ - int_type underflow() - { - if (gptr() < pptr()) - { - setg(&buffer_[0], gptr(), pptr()); - return traits_type::to_int_type(*gptr()); - } - else - { - return traits_type::eof(); - } - } - - /// Override std::streambuf behaviour. - /** - * Behaves according to the specification of @c std::streambuf::overflow(), - * with the specialisation that @c std::length_error is thrown if appending - * the character to the input sequence would require the condition - * size() > max_size() to be true. - */ - int_type overflow(int_type c) - { - if (!traits_type::eq_int_type(c, traits_type::eof())) - { - if (pptr() == epptr()) - { - std::size_t buffer_size = pptr() - gptr(); - if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta) - { - reserve(max_size_ - buffer_size); - } - else - { - reserve(buffer_delta); - } - } - - *pptr() = traits_type::to_char_type(c); - pbump(1); - return c; - } - - return traits_type::not_eof(c); - } - - void reserve(std::size_t n) - { - // Get current stream positions as offsets. - std::size_t gnext = gptr() - &buffer_[0]; - std::size_t pnext = pptr() - &buffer_[0]; - std::size_t pend = epptr() - &buffer_[0]; - - // Check if there is already enough space in the put area. - if (n <= pend - pnext) - { - return; - } - - // Shift existing contents of get area to start of buffer. - if (gnext > 0) - { - pnext -= gnext; - std::memmove(&buffer_[0], &buffer_[0] + gnext, pnext); - } - - // Ensure buffer is large enough to hold at least the specified size. - if (n > pend - pnext) - { - if (n <= max_size_ && pnext <= max_size_ - n) - { - pend = pnext + n; - buffer_.resize((std::max)(pend, 1)); - } - else - { - std::length_error ex("asio::streambuf too long"); - asio::detail::throw_exception(ex); - } - } - - // Update stream positions. - setg(&buffer_[0], &buffer_[0], &buffer_[0] + pnext); - setp(&buffer_[0] + pnext, &buffer_[0] + pend); - } - -private: - std::size_t max_size_; - std::vector buffer_; - - // Helper function to get the preferred size for reading data. - friend std::size_t read_size_helper( - basic_streambuf& sb, std::size_t max_size) - { - return std::min( - std::max(512, sb.buffer_.capacity() - sb.size()), - std::min(max_size, sb.max_size() - sb.size())); - } -}; - -/// Adapts basic_streambuf to the dynamic buffer sequence type requirements. -#if defined(GENERATING_DOCUMENTATION) -template > -#else -template -#endif -class basic_streambuf_ref -{ -public: - /// The type used to represent the input sequence as a list of buffers. - typedef typename basic_streambuf::const_buffers_type - const_buffers_type; - - /// The type used to represent the output sequence as a list of buffers. - typedef typename basic_streambuf::mutable_buffers_type - mutable_buffers_type; - - /// Construct a basic_streambuf_ref for the given basic_streambuf object. - explicit basic_streambuf_ref(basic_streambuf& sb) - : sb_(sb) - { - } - - /// Copy construct a basic_streambuf_ref. - basic_streambuf_ref(const basic_streambuf_ref& other) ASIO_NOEXCEPT - : sb_(other.sb_) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move construct a basic_streambuf_ref. - basic_streambuf_ref(basic_streambuf_ref&& other) ASIO_NOEXCEPT - : sb_(other.sb_) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Get the size of the input sequence. - std::size_t size() const ASIO_NOEXCEPT - { - return sb_.size(); - } - - /// Get the maximum size of the dynamic buffer. - std::size_t max_size() const ASIO_NOEXCEPT - { - return sb_.max_size(); - } - - /// Get the current capacity of the dynamic buffer. - std::size_t capacity() const ASIO_NOEXCEPT - { - return sb_.capacity(); - } - - /// Get a list of buffers that represents the input sequence. - const_buffers_type data() const ASIO_NOEXCEPT - { - return sb_.data(); - } - - /// Get a list of buffers that represents the output sequence, with the given - /// size. - mutable_buffers_type prepare(std::size_t n) - { - return sb_.prepare(n); - } - - /// Move bytes from the output sequence to the input sequence. - void commit(std::size_t n) - { - return sb_.commit(n); - } - - /// Remove characters from the input sequence. - void consume(std::size_t n) - { - return sb_.consume(n); - } - -private: - basic_streambuf& sb_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_NO_IOSTREAM) - -#endif // ASIO_BASIC_STREAMBUF_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf_fwd.hpp deleted file mode 100644 index df9961d9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_streambuf_fwd.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// -// basic_streambuf_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_STREAMBUF_FWD_HPP -#define ASIO_BASIC_STREAMBUF_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_NO_IOSTREAM) - -#include - -namespace asio { - -template > -class basic_streambuf; - -template > -class basic_streambuf_ref; - -} // namespace asio - -#endif // !defined(ASIO_NO_IOSTREAM) - -#endif // ASIO_BASIC_STREAMBUF_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_waitable_timer.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_waitable_timer.hpp deleted file mode 100644 index 28452ef1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/basic_waitable_timer.hpp +++ /dev/null @@ -1,811 +0,0 @@ -// -// basic_waitable_timer.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BASIC_WAITABLE_TIMER_HPP -#define ASIO_BASIC_WAITABLE_TIMER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/any_io_executor.hpp" -#include "asio/detail/chrono_time_traits.hpp" -#include "asio/detail/deadline_timer_service.hpp" -#include "asio/detail/handler_type_requirements.hpp" -#include "asio/detail/io_object_impl.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" -#include "asio/wait_traits.hpp" - -#if defined(ASIO_HAS_MOVE) -# include -#endif // defined(ASIO_HAS_MOVE) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if !defined(ASIO_BASIC_WAITABLE_TIMER_FWD_DECL) -#define ASIO_BASIC_WAITABLE_TIMER_FWD_DECL - -// Forward declaration with defaulted arguments. -template , - typename Executor = any_io_executor> -class basic_waitable_timer; - -#endif // !defined(ASIO_BASIC_WAITABLE_TIMER_FWD_DECL) - -/// Provides waitable timer functionality. -/** - * The basic_waitable_timer class template provides the ability to perform a - * blocking or asynchronous wait for a timer to expire. - * - * A waitable timer is always in one of two states: "expired" or "not expired". - * If the wait() or async_wait() function is called on an expired timer, the - * wait operation will complete immediately. - * - * Most applications will use one of the asio::steady_timer, - * asio::system_timer or asio::high_resolution_timer typedefs. - * - * @note This waitable timer functionality is for use with the C++11 standard - * library's @c <chrono> facility, or with the Boost.Chrono library. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Examples - * Performing a blocking wait (C++11): - * @code - * // Construct a timer without setting an expiry time. - * asio::steady_timer timer(my_context); - * - * // Set an expiry time relative to now. - * timer.expires_after(std::chrono::seconds(5)); - * - * // Wait for the timer to expire. - * timer.wait(); - * @endcode - * - * @par - * Performing an asynchronous wait (C++11): - * @code - * void handler(const asio::error_code& error) - * { - * if (!error) - * { - * // Timer expired. - * } - * } - * - * ... - * - * // Construct a timer with an absolute expiry time. - * asio::steady_timer timer(my_context, - * std::chrono::steady_clock::now() + std::chrono::seconds(60)); - * - * // Start an asynchronous wait. - * timer.async_wait(handler); - * @endcode - * - * @par Changing an active waitable timer's expiry time - * - * Changing the expiry time of a timer while there are pending asynchronous - * waits causes those wait operations to be cancelled. To ensure that the action - * associated with the timer is performed only once, use something like this: - * used: - * - * @code - * void on_some_event() - * { - * if (my_timer.expires_after(seconds(5)) > 0) - * { - * // We managed to cancel the timer. Start new asynchronous wait. - * my_timer.async_wait(on_timeout); - * } - * else - * { - * // Too late, timer has already expired! - * } - * } - * - * void on_timeout(const asio::error_code& e) - * { - * if (e != asio::error::operation_aborted) - * { - * // Timer was not cancelled, take necessary action. - * } - * } - * @endcode - * - * @li The asio::basic_waitable_timer::expires_after() function - * cancels any pending asynchronous waits, and returns the number of - * asynchronous waits that were cancelled. If it returns 0 then you were too - * late and the wait handler has already been executed, or will soon be - * executed. If it returns 1 then the wait handler was successfully cancelled. - * - * @li If a wait handler is cancelled, the asio::error_code passed to - * it contains the value asio::error::operation_aborted. - */ -template -class basic_waitable_timer -{ -public: - /// The type of the executor associated with the object. - typedef Executor executor_type; - - /// Rebinds the timer type to another executor. - template - struct rebind_executor - { - /// The timer type when rebound to the specified executor. - typedef basic_waitable_timer other; - }; - - /// The clock type. - typedef Clock clock_type; - - /// The duration type of the clock. - typedef typename clock_type::duration duration; - - /// The time point type of the clock. - typedef typename clock_type::time_point time_point; - - /// The wait traits type. - typedef WaitTraits traits_type; - - /// Constructor. - /** - * This constructor creates a timer without setting an expiry time. The - * expires_at() or expires_after() functions must be called to set an expiry - * time before the timer can be waited on. - * - * @param ex The I/O executor that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - */ - explicit basic_waitable_timer(const executor_type& ex) - : impl_(ex) - { - } - - /// Constructor. - /** - * This constructor creates a timer without setting an expiry time. The - * expires_at() or expires_after() functions must be called to set an expiry - * time before the timer can be waited on. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - */ - template - explicit basic_waitable_timer(ExecutionContext& context, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - } - - /// Constructor to set a particular expiry time as an absolute time. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param ex The I/O executor object that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, expressed - * as an absolute time. - */ - basic_waitable_timer(const executor_type& ex, const time_point& expiry_time) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - } - - /// Constructor to set a particular expiry time as an absolute time. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, expressed - * as an absolute time. - */ - template - explicit basic_waitable_timer(ExecutionContext& context, - const time_point& expiry_time, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().expires_at(impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - } - - /// Constructor to set a particular expiry time relative to now. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param ex The I/O executor that the timer will use, by default, to - * dispatch handlers for any asynchronous operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, relative to - * now. - */ - basic_waitable_timer(const executor_type& ex, const duration& expiry_time) - : impl_(ex) - { - asio::error_code ec; - impl_.get_service().expires_after( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_after"); - } - - /// Constructor to set a particular expiry time relative to now. - /** - * This constructor creates a timer and sets the expiry time. - * - * @param context An execution context which provides the I/O executor that - * the timer will use, by default, to dispatch handlers for any asynchronous - * operations performed on the timer. - * - * @param expiry_time The expiry time to be used for the timer, relative to - * now. - */ - template - explicit basic_waitable_timer(ExecutionContext& context, - const duration& expiry_time, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(context) - { - asio::error_code ec; - impl_.get_service().expires_after( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_after"); - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move-construct a basic_waitable_timer from another. - /** - * This constructor moves a timer from one object to another. - * - * @param other The other basic_waitable_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_waitable_timer(const executor_type&) - * constructor. - */ - basic_waitable_timer(basic_waitable_timer&& other) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_waitable_timer from another. - /** - * This assignment operator moves a timer from one object to another. Cancels - * any outstanding asynchronous operations associated with the target object. - * - * @param other The other basic_waitable_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_waitable_timer(const executor_type&) - * constructor. - */ - basic_waitable_timer& operator=(basic_waitable_timer&& other) - { - impl_ = std::move(other.impl_); - return *this; - } - - // All timers have access to each other's implementations. - template - friend class basic_waitable_timer; - - /// Move-construct a basic_waitable_timer from another. - /** - * This constructor moves a timer from one object to another. - * - * @param other The other basic_waitable_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_waitable_timer(const executor_type&) - * constructor. - */ - template - basic_waitable_timer( - basic_waitable_timer&& other, - typename enable_if< - is_convertible::value - >::type* = 0) - : impl_(std::move(other.impl_)) - { - } - - /// Move-assign a basic_waitable_timer from another. - /** - * This assignment operator moves a timer from one object to another. Cancels - * any outstanding asynchronous operations associated with the target object. - * - * @param other The other basic_waitable_timer object from which the move will - * occur. - * - * @note Following the move, the moved-from object is in the same state as if - * constructed using the @c basic_waitable_timer(const executor_type&) - * constructor. - */ - template - typename enable_if< - is_convertible::value, - basic_waitable_timer& - >::type operator=(basic_waitable_timer&& other) - { - basic_waitable_timer tmp(std::move(other)); - impl_ = std::move(tmp.impl_); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destroys the timer. - /** - * This function destroys the timer, cancelling any outstanding asynchronous - * wait operations associated with the timer as if by calling @c cancel. - */ - ~basic_waitable_timer() - { - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return impl_.get_executor(); - } - - /// Cancel any asynchronous operations that are waiting on the timer. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the timer. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel() - { - asio::error_code ec; - std::size_t s = impl_.get_service().cancel(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel"); - return s; - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use non-error_code overload.) Cancel any asynchronous - /// operations that are waiting on the timer. - /** - * This function forces the completion of any pending asynchronous wait - * operations against the timer. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when cancel() is called, then the - * handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel(asio::error_code& ec) - { - return impl_.get_service().cancel(impl_.get_implementation(), ec); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Cancels one asynchronous operation that is waiting on the timer. - /** - * This function forces the completion of one pending asynchronous wait - * operation against the timer. Handlers are cancelled in FIFO order. The - * handler for the cancelled operation will be invoked with the - * asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @return The number of asynchronous operations that were cancelled. That is, - * either 0 or 1. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when cancel_one() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel_one() - { - asio::error_code ec; - std::size_t s = impl_.get_service().cancel_one( - impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "cancel_one"); - return s; - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use non-error_code overload.) Cancels one asynchronous - /// operation that is waiting on the timer. - /** - * This function forces the completion of one pending asynchronous wait - * operation against the timer. Handlers are cancelled in FIFO order. The - * handler for the cancelled operation will be invoked with the - * asio::error::operation_aborted error code. - * - * Cancelling the timer does not change the expiry time. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. That is, - * either 0 or 1. - * - * @note If the timer has already expired when cancel_one() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t cancel_one(asio::error_code& ec) - { - return impl_.get_service().cancel_one(impl_.get_implementation(), ec); - } - - /// (Deprecated: Use expiry().) Get the timer's expiry time as an absolute - /// time. - /** - * This function may be used to obtain the timer's current expiry time. - * Whether the timer has expired or not does not affect this value. - */ - time_point expires_at() const - { - return impl_.get_service().expires_at(impl_.get_implementation()); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Get the timer's expiry time as an absolute time. - /** - * This function may be used to obtain the timer's current expiry time. - * Whether the timer has expired or not does not affect this value. - */ - time_point expiry() const - { - return impl_.get_service().expiry(impl_.get_implementation()); - } - - /// Set the timer's expiry time as an absolute time. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when expires_at() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_at(const time_point& expiry_time) - { - asio::error_code ec; - std::size_t s = impl_.get_service().expires_at( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_at"); - return s; - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use non-error_code overload.) Set the timer's expiry time as - /// an absolute time. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when expires_at() is called, then - * the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_at(const time_point& expiry_time, - asio::error_code& ec) - { - return impl_.get_service().expires_at( - impl_.get_implementation(), expiry_time, ec); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Set the timer's expiry time relative to now. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when expires_after() is called, - * then the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_after(const duration& expiry_time) - { - asio::error_code ec; - std::size_t s = impl_.get_service().expires_after( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_after"); - return s; - } - -#if !defined(ASIO_NO_DEPRECATED) - /// (Deprecated: Use expiry().) Get the timer's expiry time relative to now. - /** - * This function may be used to obtain the timer's current expiry time. - * Whether the timer has expired or not does not affect this value. - */ - duration expires_from_now() const - { - return impl_.get_service().expires_from_now(impl_.get_implementation()); - } - - /// (Deprecated: Use expires_after().) Set the timer's expiry time relative - /// to now. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @return The number of asynchronous operations that were cancelled. - * - * @throws asio::system_error Thrown on failure. - * - * @note If the timer has already expired when expires_from_now() is called, - * then the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_from_now(const duration& expiry_time) - { - asio::error_code ec; - std::size_t s = impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - asio::detail::throw_error(ec, "expires_from_now"); - return s; - } - - /// (Deprecated: Use expires_after().) Set the timer's expiry time relative - /// to now. - /** - * This function sets the expiry time. Any pending asynchronous wait - * operations will be cancelled. The handler for each cancelled operation will - * be invoked with the asio::error::operation_aborted error code. - * - * @param expiry_time The expiry time to be used for the timer. - * - * @param ec Set to indicate what error occurred, if any. - * - * @return The number of asynchronous operations that were cancelled. - * - * @note If the timer has already expired when expires_from_now() is called, - * then the handlers for asynchronous wait operations will: - * - * @li have already been invoked; or - * - * @li have been queued for invocation in the near future. - * - * These handlers can no longer be cancelled, and therefore are passed an - * error code that indicates the successful completion of the wait operation. - */ - std::size_t expires_from_now(const duration& expiry_time, - asio::error_code& ec) - { - return impl_.get_service().expires_from_now( - impl_.get_implementation(), expiry_time, ec); - } -#endif // !defined(ASIO_NO_DEPRECATED) - - /// Perform a blocking wait on the timer. - /** - * This function is used to wait for the timer to expire. This function - * blocks and does not return until the timer has expired. - * - * @throws asio::system_error Thrown on failure. - */ - void wait() - { - asio::error_code ec; - impl_.get_service().wait(impl_.get_implementation(), ec); - asio::detail::throw_error(ec, "wait"); - } - - /// Perform a blocking wait on the timer. - /** - * This function is used to wait for the timer to expire. This function - * blocks and does not return until the timer has expired. - * - * @param ec Set to indicate what error occurred, if any. - */ - void wait(asio::error_code& ec) - { - impl_.get_service().wait(impl_.get_implementation(), ec); - } - - /// Start an asynchronous wait on the timer. - /** - * This function may be used to initiate an asynchronous wait against the - * timer. It always returns immediately. - * - * For each call to async_wait(), the supplied handler will be called exactly - * once. The handler will be called when: - * - * @li The timer has expired. - * - * @li The timer was cancelled, in which case the handler is passed the error - * code asio::error::operation_aborted. - * - * @param handler The handler to be called when the timer expires. Copies - * will be made of the handler as required. The function signature of the - * handler must be: - * @code void handler( - * const asio::error_code& error // Result of operation. - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - */ - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code)) - WaitHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WaitHandler, - void (asio::error_code)) - async_wait( - ASIO_MOVE_ARG(WaitHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return async_initiate( - initiate_async_wait(this), handler); - } - -private: - // Disallow copying and assignment. - basic_waitable_timer(const basic_waitable_timer&) ASIO_DELETED; - basic_waitable_timer& operator=( - const basic_waitable_timer&) ASIO_DELETED; - - class initiate_async_wait - { - public: - typedef Executor executor_type; - - explicit initiate_async_wait(basic_waitable_timer* self) - : self_(self) - { - } - - executor_type get_executor() const ASIO_NOEXCEPT - { - return self_->get_executor(); - } - - template - void operator()(ASIO_MOVE_ARG(WaitHandler) handler) const - { - // If you get an error on the following line it means that your handler - // does not meet the documented type requirements for a WaitHandler. - ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check; - - detail::non_const_lvalue handler2(handler); - self_->impl_.get_service().async_wait( - self_->impl_.get_implementation(), - handler2.value, self_->impl_.get_executor()); - } - - private: - basic_waitable_timer* self_; - }; - - detail::io_object_impl< - detail::deadline_timer_service< - detail::chrono_time_traits >, - executor_type > impl_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BASIC_WAITABLE_TIMER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/bind_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/bind_executor.hpp deleted file mode 100644 index db30db6a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/bind_executor.hpp +++ /dev/null @@ -1,575 +0,0 @@ -// -// bind_executor.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BIND_EXECUTOR_HPP -#define ASIO_BIND_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/variadic_templates.hpp" -#include "asio/associated_executor.hpp" -#include "asio/associated_allocator.hpp" -#include "asio/async_result.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution_context.hpp" -#include "asio/is_executor.hpp" -#include "asio/uses_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper to automatically define nested typedef result_type. - -template -struct executor_binder_result_type -{ -protected: - typedef void result_type_or_void; -}; - -template -struct executor_binder_result_type::type> -{ - typedef typename T::result_type result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -template -struct executor_binder_result_type -{ - typedef R result_type; -protected: - typedef result_type result_type_or_void; -}; - -// Helper to automatically define nested typedef argument_type. - -template -struct executor_binder_argument_type {}; - -template -struct executor_binder_argument_type::type> -{ - typedef typename T::argument_type argument_type; -}; - -template -struct executor_binder_argument_type -{ - typedef A1 argument_type; -}; - -template -struct executor_binder_argument_type -{ - typedef A1 argument_type; -}; - -// Helper to automatically define nested typedefs first_argument_type and -// second_argument_type. - -template -struct executor_binder_argument_types {}; - -template -struct executor_binder_argument_types::type> -{ - typedef typename T::first_argument_type first_argument_type; - typedef typename T::second_argument_type second_argument_type; -}; - -template -struct executor_binder_argument_type -{ - typedef A1 first_argument_type; - typedef A2 second_argument_type; -}; - -template -struct executor_binder_argument_type -{ - typedef A1 first_argument_type; - typedef A2 second_argument_type; -}; - -// Helper to perform uses_executor construction of the target type, if -// required. - -template -class executor_binder_base; - -template -class executor_binder_base -{ -protected: - template - executor_binder_base(ASIO_MOVE_ARG(E) e, ASIO_MOVE_ARG(U) u) - : executor_(ASIO_MOVE_CAST(E)(e)), - target_(executor_arg_t(), executor_, ASIO_MOVE_CAST(U)(u)) - { - } - - Executor executor_; - T target_; -}; - -template -class executor_binder_base -{ -protected: - template - executor_binder_base(ASIO_MOVE_ARG(E) e, ASIO_MOVE_ARG(U) u) - : executor_(ASIO_MOVE_CAST(E)(e)), - target_(ASIO_MOVE_CAST(U)(u)) - { - } - - Executor executor_; - T target_; -}; - -// Helper to enable SFINAE on zero-argument operator() below. - -template -struct executor_binder_result_of0 -{ - typedef void type; -}; - -template -struct executor_binder_result_of0::type>::type> -{ - typedef typename result_of::type type; -}; - -} // namespace detail - -/// A call wrapper type to bind an executor of type @c Executor to an object of -/// type @c T. -template -class executor_binder -#if !defined(GENERATING_DOCUMENTATION) - : public detail::executor_binder_result_type, - public detail::executor_binder_argument_type, - public detail::executor_binder_argument_types, - private detail::executor_binder_base< - T, Executor, uses_executor::value> -#endif // !defined(GENERATING_DOCUMENTATION) -{ -public: - /// The type of the target object. - typedef T target_type; - - /// The type of the associated executor. - typedef Executor executor_type; - -#if defined(GENERATING_DOCUMENTATION) - /// The return type if a function. - /** - * The type of @c result_type is based on the type @c T of the wrapper's - * target object: - * - * @li if @c T is a pointer to function type, @c result_type is a synonym for - * the return type of @c T; - * - * @li if @c T is a class type with a member type @c result_type, then @c - * result_type is a synonym for @c T::result_type; - * - * @li otherwise @c result_type is not defined. - */ - typedef see_below result_type; - - /// The type of the function's argument. - /** - * The type of @c argument_type is based on the type @c T of the wrapper's - * target object: - * - * @li if @c T is a pointer to a function type accepting a single argument, - * @c argument_type is a synonym for the return type of @c T; - * - * @li if @c T is a class type with a member type @c argument_type, then @c - * argument_type is a synonym for @c T::argument_type; - * - * @li otherwise @c argument_type is not defined. - */ - typedef see_below argument_type; - - /// The type of the function's first argument. - /** - * The type of @c first_argument_type is based on the type @c T of the - * wrapper's target object: - * - * @li if @c T is a pointer to a function type accepting two arguments, @c - * first_argument_type is a synonym for the return type of @c T; - * - * @li if @c T is a class type with a member type @c first_argument_type, - * then @c first_argument_type is a synonym for @c T::first_argument_type; - * - * @li otherwise @c first_argument_type is not defined. - */ - typedef see_below first_argument_type; - - /// The type of the function's second argument. - /** - * The type of @c second_argument_type is based on the type @c T of the - * wrapper's target object: - * - * @li if @c T is a pointer to a function type accepting two arguments, @c - * second_argument_type is a synonym for the return type of @c T; - * - * @li if @c T is a class type with a member type @c first_argument_type, - * then @c second_argument_type is a synonym for @c T::second_argument_type; - * - * @li otherwise @c second_argument_type is not defined. - */ - typedef see_below second_argument_type; -#endif // defined(GENERATING_DOCUMENTATION) - - /// Construct an executor wrapper for the specified object. - /** - * This constructor is only valid if the type @c T is constructible from type - * @c U. - */ - template - executor_binder(executor_arg_t, const executor_type& e, - ASIO_MOVE_ARG(U) u) - : base_type(e, ASIO_MOVE_CAST(U)(u)) - { - } - - /// Copy constructor. - executor_binder(const executor_binder& other) - : base_type(other.get_executor(), other.get()) - { - } - - /// Construct a copy, but specify a different executor. - executor_binder(executor_arg_t, const executor_type& e, - const executor_binder& other) - : base_type(e, other.get()) - { - } - - /// Construct a copy of a different executor wrapper type. - /** - * This constructor is only valid if the @c Executor type is constructible - * from type @c OtherExecutor, and the type @c T is constructible from type - * @c U. - */ - template - executor_binder(const executor_binder& other) - : base_type(other.get_executor(), other.get()) - { - } - - /// Construct a copy of a different executor wrapper type, but specify a - /// different executor. - /** - * This constructor is only valid if the type @c T is constructible from type - * @c U. - */ - template - executor_binder(executor_arg_t, const executor_type& e, - const executor_binder& other) - : base_type(e, other.get()) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Move constructor. - executor_binder(executor_binder&& other) - : base_type(ASIO_MOVE_CAST(executor_type)(other.get_executor()), - ASIO_MOVE_CAST(T)(other.get())) - { - } - - /// Move construct the target object, but specify a different executor. - executor_binder(executor_arg_t, const executor_type& e, - executor_binder&& other) - : base_type(e, ASIO_MOVE_CAST(T)(other.get())) - { - } - - /// Move construct from a different executor wrapper type. - template - executor_binder(executor_binder&& other) - : base_type(ASIO_MOVE_CAST(OtherExecutor)(other.get_executor()), - ASIO_MOVE_CAST(U)(other.get())) - { - } - - /// Move construct from a different executor wrapper type, but specify a - /// different executor. - template - executor_binder(executor_arg_t, const executor_type& e, - executor_binder&& other) - : base_type(e, ASIO_MOVE_CAST(U)(other.get())) - { - } - -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Destructor. - ~executor_binder() - { - } - - /// Obtain a reference to the target object. - target_type& get() ASIO_NOEXCEPT - { - return this->target_; - } - - /// Obtain a reference to the target object. - const target_type& get() const ASIO_NOEXCEPT - { - return this->target_; - } - - /// Obtain the associated executor. - executor_type get_executor() const ASIO_NOEXCEPT - { - return this->executor_; - } - -#if defined(GENERATING_DOCUMENTATION) - - template auto operator()(Args&& ...); - template auto operator()(Args&& ...) const; - -#elif defined(ASIO_HAS_VARIADIC_TEMPLATES) - - /// Forwarding function call operator. - template - typename result_of::type operator()( - ASIO_MOVE_ARG(Args)... args) - { - return this->target_(ASIO_MOVE_CAST(Args)(args)...); - } - - /// Forwarding function call operator. - template - typename result_of::type operator()( - ASIO_MOVE_ARG(Args)... args) const - { - return this->target_(ASIO_MOVE_CAST(Args)(args)...); - } - -#elif defined(ASIO_HAS_STD_TYPE_TRAITS) && !defined(_MSC_VER) - - typename detail::executor_binder_result_of0::type operator()() - { - return this->target_(); - } - - typename detail::executor_binder_result_of0::type operator()() const - { - return this->target_(); - } - -#define ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF(n) \ - template \ - typename result_of::type operator()( \ - ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return this->target_(ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - typename result_of::type operator()( \ - ASIO_VARIADIC_MOVE_PARAMS(n)) const \ - { \ - return this->target_(ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF) -#undef ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF - -#else // defined(ASIO_HAS_STD_TYPE_TRAITS) && !defined(_MSC_VER) - - typedef typename detail::executor_binder_result_type::result_type_or_void - result_type_or_void; - - result_type_or_void operator()() - { - return this->target_(); - } - - result_type_or_void operator()() const - { - return this->target_(); - } - -#define ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF(n) \ - template \ - result_type_or_void operator()( \ - ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return this->target_(ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - result_type_or_void operator()( \ - ASIO_VARIADIC_MOVE_PARAMS(n)) const \ - { \ - return this->target_(ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF) -#undef ASIO_PRIVATE_BIND_EXECUTOR_CALL_DEF - -#endif // defined(ASIO_HAS_STD_TYPE_TRAITS) && !defined(_MSC_VER) - -private: - typedef detail::executor_binder_base::value> base_type; -}; - -/// Associate an object of type @c T with an executor of type @c Executor. -template -inline executor_binder::type, Executor> -bind_executor(const Executor& ex, ASIO_MOVE_ARG(T) t, - typename enable_if< - is_executor::value || execution::is_executor::value - >::type* = 0) -{ - return executor_binder::type, Executor>( - executor_arg_t(), ex, ASIO_MOVE_CAST(T)(t)); -} - -/// Associate an object of type @c T with an execution context's executor. -template -inline executor_binder::type, - typename ExecutionContext::executor_type> -bind_executor(ExecutionContext& ctx, ASIO_MOVE_ARG(T) t, - typename enable_if::value>::type* = 0) -{ - return executor_binder::type, - typename ExecutionContext::executor_type>( - executor_arg_t(), ctx.get_executor(), ASIO_MOVE_CAST(T)(t)); -} - -#if !defined(GENERATING_DOCUMENTATION) - -template -struct uses_executor, Executor> - : true_type {}; - -template -class async_result, Signature> -{ -public: - typedef executor_binder< - typename async_result::completion_handler_type, Executor> - completion_handler_type; - - typedef typename async_result::return_type return_type; - - explicit async_result(executor_binder& b) - : target_(b.get()) - { - } - - return_type get() - { - return target_.get(); - } - -private: - async_result(const async_result&) ASIO_DELETED; - async_result& operator=(const async_result&) ASIO_DELETED; - - async_result target_; -}; - -template -struct associated_allocator, Allocator> -{ - typedef typename associated_allocator::type type; - - static type get(const executor_binder& b, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(b.get(), a); - } -}; - -template -struct associated_executor, Executor1> -{ - typedef Executor type; - - static type get(const executor_binder& b, - const Executor1& = Executor1()) ASIO_NOEXCEPT - { - return b.get_executor(); - } -}; - -#endif // !defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BIND_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffer.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffer.hpp deleted file mode 100644 index 65e85c4b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffer.hpp +++ /dev/null @@ -1,2496 +0,0 @@ -// -// buffer.hpp -// ~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFER_HPP -#define ASIO_BUFFER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include -#include -#include -#include -#include "asio/detail/array_fwd.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/string_view.hpp" -#include "asio/detail/throw_exception.hpp" -#include "asio/detail/type_traits.hpp" - -#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1700) -# if defined(_HAS_ITERATOR_DEBUGGING) && (_HAS_ITERATOR_DEBUGGING != 0) -# if !defined(ASIO_DISABLE_BUFFER_DEBUGGING) -# define ASIO_ENABLE_BUFFER_DEBUGGING -# endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING) -# endif // defined(_HAS_ITERATOR_DEBUGGING) -#endif // defined(ASIO_MSVC) && (ASIO_MSVC >= 1700) - -#if defined(__GNUC__) -# if defined(_GLIBCXX_DEBUG) -# if !defined(ASIO_DISABLE_BUFFER_DEBUGGING) -# define ASIO_ENABLE_BUFFER_DEBUGGING -# endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING) -# endif // defined(_GLIBCXX_DEBUG) -#endif // defined(__GNUC__) - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) -# include "asio/detail/functional.hpp" -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - -#if defined(ASIO_HAS_BOOST_WORKAROUND) -# include -# if !defined(__clang__) -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) -# define ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND -# endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) -# elif BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) -# define ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND -# endif // BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) -#endif // defined(ASIO_HAS_BOOST_WORKAROUND) - -#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND) -# include "asio/detail/type_traits.hpp" -#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -class mutable_buffer; -class const_buffer; - -/// Holds a buffer that can be modified. -/** - * The mutable_buffer class provides a safe representation of a buffer that can - * be modified. It does not own the underlying data, and so is cheap to copy or - * assign. - * - * @par Accessing Buffer Contents - * - * The contents of a buffer may be accessed using the @c data() and @c size() - * member functions: - * - * @code asio::mutable_buffer b1 = ...; - * std::size_t s1 = b1.size(); - * unsigned char* p1 = static_cast(b1.data()); - * @endcode - * - * The @c data() member function permits violations of type safety, so uses of - * it in application code should be carefully considered. - */ -class mutable_buffer -{ -public: - /// Construct an empty buffer. - mutable_buffer() ASIO_NOEXCEPT - : data_(0), - size_(0) - { - } - - /// Construct a buffer to represent a given memory range. - mutable_buffer(void* data, std::size_t size) ASIO_NOEXCEPT - : data_(data), - size_(size) - { - } - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - mutable_buffer(void* data, std::size_t size, - asio::detail::function debug_check) - : data_(data), - size_(size), - debug_check_(debug_check) - { - } - - const asio::detail::function& get_debug_check() const - { - return debug_check_; - } -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - - /// Get a pointer to the beginning of the memory range. - void* data() const ASIO_NOEXCEPT - { -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - if (size_ && debug_check_) - debug_check_(); -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - return data_; - } - - /// Get the size of the memory range. - std::size_t size() const ASIO_NOEXCEPT - { - return size_; - } - - /// Move the start of the buffer by the specified number of bytes. - mutable_buffer& operator+=(std::size_t n) ASIO_NOEXCEPT - { - std::size_t offset = n < size_ ? n : size_; - data_ = static_cast(data_) + offset; - size_ -= offset; - return *this; - } - -private: - void* data_; - std::size_t size_; - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - asio::detail::function debug_check_; -#endif // ASIO_ENABLE_BUFFER_DEBUGGING -}; - -#if !defined(ASIO_NO_DEPRECATED) - -/// (Deprecated: Use mutable_buffer.) Adapts a single modifiable buffer so that -/// it meets the requirements of the MutableBufferSequence concept. -class mutable_buffers_1 - : public mutable_buffer -{ -public: - /// The type for each element in the list of buffers. - typedef mutable_buffer value_type; - - /// A random-access iterator type that may be used to read elements. - typedef const mutable_buffer* const_iterator; - - /// Construct to represent a given memory range. - mutable_buffers_1(void* data, std::size_t size) ASIO_NOEXCEPT - : mutable_buffer(data, size) - { - } - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - mutable_buffers_1(void* data, std::size_t size, - asio::detail::function debug_check) - : mutable_buffer(data, size, debug_check) - { - } -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - - /// Construct to represent a single modifiable buffer. - explicit mutable_buffers_1(const mutable_buffer& b) ASIO_NOEXCEPT - : mutable_buffer(b) - { - } - - /// Get a random-access iterator to the first element. - const_iterator begin() const ASIO_NOEXCEPT - { - return this; - } - - /// Get a random-access iterator for one past the last element. - const_iterator end() const ASIO_NOEXCEPT - { - return begin() + 1; - } -}; - -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Holds a buffer that cannot be modified. -/** - * The const_buffer class provides a safe representation of a buffer that cannot - * be modified. It does not own the underlying data, and so is cheap to copy or - * assign. - * - * @par Accessing Buffer Contents - * - * The contents of a buffer may be accessed using the @c data() and @c size() - * member functions: - * - * @code asio::const_buffer b1 = ...; - * std::size_t s1 = b1.size(); - * const unsigned char* p1 = static_cast(b1.data()); - * @endcode - * - * The @c data() member function permits violations of type safety, so uses of - * it in application code should be carefully considered. - */ -class const_buffer -{ -public: - /// Construct an empty buffer. - const_buffer() ASIO_NOEXCEPT - : data_(0), - size_(0) - { - } - - /// Construct a buffer to represent a given memory range. - const_buffer(const void* data, std::size_t size) ASIO_NOEXCEPT - : data_(data), - size_(size) - { - } - - /// Construct a non-modifiable buffer from a modifiable one. - const_buffer(const mutable_buffer& b) ASIO_NOEXCEPT - : data_(b.data()), - size_(b.size()) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , debug_check_(b.get_debug_check()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - { - } - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - const_buffer(const void* data, std::size_t size, - asio::detail::function debug_check) - : data_(data), - size_(size), - debug_check_(debug_check) - { - } - - const asio::detail::function& get_debug_check() const - { - return debug_check_; - } -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - - /// Get a pointer to the beginning of the memory range. - const void* data() const ASIO_NOEXCEPT - { -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - if (size_ && debug_check_) - debug_check_(); -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - return data_; - } - - /// Get the size of the memory range. - std::size_t size() const ASIO_NOEXCEPT - { - return size_; - } - - /// Move the start of the buffer by the specified number of bytes. - const_buffer& operator+=(std::size_t n) ASIO_NOEXCEPT - { - std::size_t offset = n < size_ ? n : size_; - data_ = static_cast(data_) + offset; - size_ -= offset; - return *this; - } - -private: - const void* data_; - std::size_t size_; - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - asio::detail::function debug_check_; -#endif // ASIO_ENABLE_BUFFER_DEBUGGING -}; - -#if !defined(ASIO_NO_DEPRECATED) - -/// (Deprecated: Use const_buffer.) Adapts a single non-modifiable buffer so -/// that it meets the requirements of the ConstBufferSequence concept. -class const_buffers_1 - : public const_buffer -{ -public: - /// The type for each element in the list of buffers. - typedef const_buffer value_type; - - /// A random-access iterator type that may be used to read elements. - typedef const const_buffer* const_iterator; - - /// Construct to represent a given memory range. - const_buffers_1(const void* data, std::size_t size) ASIO_NOEXCEPT - : const_buffer(data, size) - { - } - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - const_buffers_1(const void* data, std::size_t size, - asio::detail::function debug_check) - : const_buffer(data, size, debug_check) - { - } -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - - /// Construct to represent a single non-modifiable buffer. - explicit const_buffers_1(const const_buffer& b) ASIO_NOEXCEPT - : const_buffer(b) - { - } - - /// Get a random-access iterator to the first element. - const_iterator begin() const ASIO_NOEXCEPT - { - return this; - } - - /// Get a random-access iterator for one past the last element. - const_iterator end() const ASIO_NOEXCEPT - { - return begin() + 1; - } -}; - -#endif // !defined(ASIO_NO_DEPRECATED) - -/// (Deprecated: Use the socket/descriptor wait() and async_wait() member -/// functions.) An implementation of both the ConstBufferSequence and -/// MutableBufferSequence concepts to represent a null buffer sequence. -class null_buffers -{ -public: - /// The type for each element in the list of buffers. - typedef mutable_buffer value_type; - - /// A random-access iterator type that may be used to read elements. - typedef const mutable_buffer* const_iterator; - - /// Get a random-access iterator to the first element. - const_iterator begin() const ASIO_NOEXCEPT - { - return &buf_; - } - - /// Get a random-access iterator for one past the last element. - const_iterator end() const ASIO_NOEXCEPT - { - return &buf_; - } - -private: - mutable_buffer buf_; -}; - -/** @defgroup buffer_sequence_begin asio::buffer_sequence_begin - * - * @brief The asio::buffer_sequence_begin function returns an iterator - * pointing to the first element in a buffer sequence. - */ -/*@{*/ - -/// Get an iterator to the first element in a buffer sequence. -template -inline const mutable_buffer* buffer_sequence_begin(const MutableBuffer& b, - typename enable_if< - is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return static_cast(detail::addressof(b)); -} - -/// Get an iterator to the first element in a buffer sequence. -template -inline const const_buffer* buffer_sequence_begin(const ConstBuffer& b, - typename enable_if< - is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return static_cast(detail::addressof(b)); -} - -#if defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -/// Get an iterator to the first element in a buffer sequence. -template -inline auto buffer_sequence_begin(C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -> decltype(c.begin()) -{ - return c.begin(); -} - -/// Get an iterator to the first element in a buffer sequence. -template -inline auto buffer_sequence_begin(const C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -> decltype(c.begin()) -{ - return c.begin(); -} - -#else // defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -template -inline typename C::iterator buffer_sequence_begin(C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return c.begin(); -} - -template -inline typename C::const_iterator buffer_sequence_begin(const C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return c.begin(); -} - -#endif // defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -/*@}*/ - -/** @defgroup buffer_sequence_end asio::buffer_sequence_end - * - * @brief The asio::buffer_sequence_end function returns an iterator - * pointing to one past the end element in a buffer sequence. - */ -/*@{*/ - -/// Get an iterator to one past the end element in a buffer sequence. -template -inline const mutable_buffer* buffer_sequence_end(const MutableBuffer& b, - typename enable_if< - is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return static_cast(detail::addressof(b)) + 1; -} - -/// Get an iterator to one past the end element in a buffer sequence. -template -inline const const_buffer* buffer_sequence_end(const ConstBuffer& b, - typename enable_if< - is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return static_cast(detail::addressof(b)) + 1; -} - -#if defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -/// Get an iterator to one past the end element in a buffer sequence. -template -inline auto buffer_sequence_end(C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -> decltype(c.end()) -{ - return c.end(); -} - -/// Get an iterator to one past the end element in a buffer sequence. -template -inline auto buffer_sequence_end(const C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -> decltype(c.end()) -{ - return c.end(); -} - -#else // defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -template -inline typename C::iterator buffer_sequence_end(C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return c.end(); -} - -template -inline typename C::const_iterator buffer_sequence_end(const C& c, - typename enable_if< - !is_convertible::value - && !is_convertible::value - >::type* = 0) ASIO_NOEXCEPT -{ - return c.end(); -} - -#endif // defined(ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION) - -/*@}*/ - -namespace detail { - -// Tag types used to select appropriately optimised overloads. -struct one_buffer {}; -struct multiple_buffers {}; - -// Helper trait to detect single buffers. -template -struct buffer_sequence_cardinality : - conditional< - is_same::value -#if !defined(ASIO_NO_DEPRECATED) - || is_same::value - || is_same::value -#endif // !defined(ASIO_NO_DEPRECATED) - || is_same::value, - one_buffer, multiple_buffers>::type {}; - -template -inline std::size_t buffer_size(one_buffer, - Iterator begin, Iterator) ASIO_NOEXCEPT -{ - return const_buffer(*begin).size(); -} - -template -inline std::size_t buffer_size(multiple_buffers, - Iterator begin, Iterator end) ASIO_NOEXCEPT -{ - std::size_t total_buffer_size = 0; - - Iterator iter = begin; - for (; iter != end; ++iter) - { - const_buffer b(*iter); - total_buffer_size += b.size(); - } - - return total_buffer_size; -} - -} // namespace detail - -/// Get the total number of bytes in a buffer sequence. -/** - * The @c buffer_size function determines the total size of all buffers in the - * buffer sequence, as if computed as follows: - * - * @code size_t total_size = 0; - * auto i = asio::buffer_sequence_begin(buffers); - * auto end = asio::buffer_sequence_end(buffers); - * for (; i != end; ++i) - * { - * const_buffer b(*i); - * total_size += b.size(); - * } - * return total_size; @endcode - * - * The @c BufferSequence template parameter may meet either of the @c - * ConstBufferSequence or @c MutableBufferSequence type requirements. - */ -template -inline std::size_t buffer_size(const BufferSequence& b) ASIO_NOEXCEPT -{ - return detail::buffer_size( - detail::buffer_sequence_cardinality(), - asio::buffer_sequence_begin(b), - asio::buffer_sequence_end(b)); -} - -#if !defined(ASIO_NO_DEPRECATED) - -/** @defgroup buffer_cast asio::buffer_cast - * - * @brief (Deprecated: Use the @c data() member function.) The - * asio::buffer_cast function is used to obtain a pointer to the - * underlying memory region associated with a buffer. - * - * @par Examples: - * - * To access the memory of a non-modifiable buffer, use: - * @code asio::const_buffer b1 = ...; - * const unsigned char* p1 = asio::buffer_cast(b1); - * @endcode - * - * To access the memory of a modifiable buffer, use: - * @code asio::mutable_buffer b2 = ...; - * unsigned char* p2 = asio::buffer_cast(b2); - * @endcode - * - * The asio::buffer_cast function permits violations of type safety, so - * uses of it in application code should be carefully considered. - */ -/*@{*/ - -/// Cast a non-modifiable buffer to a specified pointer to POD type. -template -inline PointerToPodType buffer_cast(const mutable_buffer& b) ASIO_NOEXCEPT -{ - return static_cast(b.data()); -} - -/// Cast a non-modifiable buffer to a specified pointer to POD type. -template -inline PointerToPodType buffer_cast(const const_buffer& b) ASIO_NOEXCEPT -{ - return static_cast(b.data()); -} - -/*@}*/ - -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Create a new modifiable buffer that is offset from the start of another. -/** - * @relates mutable_buffer - */ -inline mutable_buffer operator+(const mutable_buffer& b, - std::size_t n) ASIO_NOEXCEPT -{ - std::size_t offset = n < b.size() ? n : b.size(); - char* new_data = static_cast(b.data()) + offset; - std::size_t new_size = b.size() - offset; - return mutable_buffer(new_data, new_size -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , b.get_debug_check() -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new modifiable buffer that is offset from the start of another. -/** - * @relates mutable_buffer - */ -inline mutable_buffer operator+(std::size_t n, - const mutable_buffer& b) ASIO_NOEXCEPT -{ - return b + n; -} - -/// Create a new non-modifiable buffer that is offset from the start of another. -/** - * @relates const_buffer - */ -inline const_buffer operator+(const const_buffer& b, - std::size_t n) ASIO_NOEXCEPT -{ - std::size_t offset = n < b.size() ? n : b.size(); - const char* new_data = static_cast(b.data()) + offset; - std::size_t new_size = b.size() - offset; - return const_buffer(new_data, new_size -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , b.get_debug_check() -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that is offset from the start of another. -/** - * @relates const_buffer - */ -inline const_buffer operator+(std::size_t n, - const const_buffer& b) ASIO_NOEXCEPT -{ - return b + n; -} - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) -namespace detail { - -template -class buffer_debug_check -{ -public: - buffer_debug_check(Iterator iter) - : iter_(iter) - { - } - - ~buffer_debug_check() - { -#if defined(ASIO_MSVC) && (ASIO_MSVC == 1400) - // MSVC 8's string iterator checking may crash in a std::string::iterator - // object's destructor when the iterator points to an already-destroyed - // std::string object, unless the iterator is cleared first. - iter_ = Iterator(); -#endif // defined(ASIO_MSVC) && (ASIO_MSVC == 1400) - } - - void operator()() - { - (void)*iter_; - } - -private: - Iterator iter_; -}; - -} // namespace detail -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - -/** @defgroup buffer asio::buffer - * - * @brief The asio::buffer function is used to create a buffer object to - * represent raw memory, an array of POD elements, a vector of POD elements, - * or a std::string. - * - * A buffer object represents a contiguous region of memory as a 2-tuple - * consisting of a pointer and size in bytes. A tuple of the form {void*, - * size_t} specifies a mutable (modifiable) region of memory. Similarly, a - * tuple of the form {const void*, size_t} specifies a const - * (non-modifiable) region of memory. These two forms correspond to the classes - * mutable_buffer and const_buffer, respectively. To mirror C++'s conversion - * rules, a mutable_buffer is implicitly convertible to a const_buffer, and the - * opposite conversion is not permitted. - * - * The simplest use case involves reading or writing a single buffer of a - * specified size: - * - * @code sock.send(asio::buffer(data, size)); @endcode - * - * In the above example, the return value of asio::buffer meets the - * requirements of the ConstBufferSequence concept so that it may be directly - * passed to the socket's write function. A buffer created for modifiable - * memory also meets the requirements of the MutableBufferSequence concept. - * - * An individual buffer may be created from a builtin array, std::vector, - * std::array or boost::array of POD elements. This helps prevent buffer - * overruns by automatically determining the size of the buffer: - * - * @code char d1[128]; - * size_t bytes_transferred = sock.receive(asio::buffer(d1)); - * - * std::vector d2(128); - * bytes_transferred = sock.receive(asio::buffer(d2)); - * - * std::array d3; - * bytes_transferred = sock.receive(asio::buffer(d3)); - * - * boost::array d4; - * bytes_transferred = sock.receive(asio::buffer(d4)); @endcode - * - * In all three cases above, the buffers created are exactly 128 bytes long. - * Note that a vector is @e never automatically resized when creating or using - * a buffer. The buffer size is determined using the vector's size() - * member function, and not its capacity. - * - * @par Accessing Buffer Contents - * - * The contents of a buffer may be accessed using the @c data() and @c size() - * member functions: - * - * @code asio::mutable_buffer b1 = ...; - * std::size_t s1 = b1.size(); - * unsigned char* p1 = static_cast(b1.data()); - * - * asio::const_buffer b2 = ...; - * std::size_t s2 = b2.size(); - * const void* p2 = b2.data(); @endcode - * - * The @c data() member function permits violations of type safety, so - * uses of it in application code should be carefully considered. - * - * For convenience, a @ref buffer_size function is provided that works with - * both buffers and buffer sequences (that is, types meeting the - * ConstBufferSequence or MutableBufferSequence type requirements). In this - * case, the function returns the total size of all buffers in the sequence. - * - * @par Buffer Copying - * - * The @ref buffer_copy function may be used to copy raw bytes between - * individual buffers and buffer sequences. -* - * In particular, when used with the @ref buffer_size function, the @ref - * buffer_copy function can be used to linearise a sequence of buffers. For - * example: - * - * @code vector buffers = ...; - * - * vector data(asio::buffer_size(buffers)); - * asio::buffer_copy(asio::buffer(data), buffers); @endcode - * - * Note that @ref buffer_copy is implemented in terms of @c memcpy, and - * consequently it cannot be used to copy between overlapping memory regions. - * - * @par Buffer Invalidation - * - * A buffer object does not have any ownership of the memory it refers to. It - * is the responsibility of the application to ensure the memory region remains - * valid until it is no longer required for an I/O operation. When the memory - * is no longer available, the buffer is said to have been invalidated. - * - * For the asio::buffer overloads that accept an argument of type - * std::vector, the buffer objects returned are invalidated by any vector - * operation that also invalidates all references, pointers and iterators - * referring to the elements in the sequence (C++ Std, 23.2.4) - * - * For the asio::buffer overloads that accept an argument of type - * std::basic_string, the buffer objects returned are invalidated according to - * the rules defined for invalidation of references, pointers and iterators - * referring to elements of the sequence (C++ Std, 21.3). - * - * @par Buffer Arithmetic - * - * Buffer objects may be manipulated using simple arithmetic in a safe way - * which helps prevent buffer overruns. Consider an array initialised as - * follows: - * - * @code boost::array a = { 'a', 'b', 'c', 'd', 'e' }; @endcode - * - * A buffer object @c b1 created using: - * - * @code b1 = asio::buffer(a); @endcode - * - * represents the entire array, { 'a', 'b', 'c', 'd', 'e' }. An - * optional second argument to the asio::buffer function may be used to - * limit the size, in bytes, of the buffer: - * - * @code b2 = asio::buffer(a, 3); @endcode - * - * such that @c b2 represents the data { 'a', 'b', 'c' }. Even if the - * size argument exceeds the actual size of the array, the size of the buffer - * object created will be limited to the array size. - * - * An offset may be applied to an existing buffer to create a new one: - * - * @code b3 = b1 + 2; @endcode - * - * where @c b3 will set to represent { 'c', 'd', 'e' }. If the offset - * exceeds the size of the existing buffer, the newly created buffer will be - * empty. - * - * Both an offset and size may be specified to create a buffer that corresponds - * to a specific range of bytes within an existing buffer: - * - * @code b4 = asio::buffer(b1 + 1, 3); @endcode - * - * so that @c b4 will refer to the bytes { 'b', 'c', 'd' }. - * - * @par Buffers and Scatter-Gather I/O - * - * To read or write using multiple buffers (i.e. scatter-gather I/O), multiple - * buffer objects may be assigned into a container that supports the - * MutableBufferSequence (for read) or ConstBufferSequence (for write) concepts: - * - * @code - * char d1[128]; - * std::vector d2(128); - * boost::array d3; - * - * boost::array bufs1 = { - * asio::buffer(d1), - * asio::buffer(d2), - * asio::buffer(d3) }; - * bytes_transferred = sock.receive(bufs1); - * - * std::vector bufs2; - * bufs2.push_back(asio::buffer(d1)); - * bufs2.push_back(asio::buffer(d2)); - * bufs2.push_back(asio::buffer(d3)); - * bytes_transferred = sock.send(bufs2); @endcode - */ -/*@{*/ - -#if defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) -# define ASIO_MUTABLE_BUFFER mutable_buffer -# define ASIO_CONST_BUFFER const_buffer -#else // defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) -# define ASIO_MUTABLE_BUFFER mutable_buffers_1 -# define ASIO_CONST_BUFFER const_buffers_1 -#endif // defined(ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION) - -/// Create a new modifiable buffer from an existing buffer. -/** - * @returns mutable_buffer(b). - */ -inline ASIO_MUTABLE_BUFFER buffer( - const mutable_buffer& b) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(b); -} - -/// Create a new modifiable buffer from an existing buffer. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * b.data(), - * min(b.size(), max_size_in_bytes)); @endcode - */ -inline ASIO_MUTABLE_BUFFER buffer(const mutable_buffer& b, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER( - mutable_buffer(b.data(), - b.size() < max_size_in_bytes - ? b.size() : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , b.get_debug_check() -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - )); -} - -/// Create a new non-modifiable buffer from an existing buffer. -/** - * @returns const_buffer(b). - */ -inline ASIO_CONST_BUFFER buffer( - const const_buffer& b) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(b); -} - -/// Create a new non-modifiable buffer from an existing buffer. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * b.data(), - * min(b.size(), max_size_in_bytes)); @endcode - */ -inline ASIO_CONST_BUFFER buffer(const const_buffer& b, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(b.data(), - b.size() < max_size_in_bytes - ? b.size() : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , b.get_debug_check() -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new modifiable buffer that represents the given memory range. -/** - * @returns mutable_buffer(data, size_in_bytes). - */ -inline ASIO_MUTABLE_BUFFER buffer(void* data, - std::size_t size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data, size_in_bytes); -} - -/// Create a new non-modifiable buffer that represents the given memory range. -/** - * @returns const_buffer(data, size_in_bytes). - */ -inline ASIO_CONST_BUFFER buffer(const void* data, - std::size_t size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data, size_in_bytes); -} - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * static_cast(data), - * N * sizeof(PodType)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer(PodType (&data)[N]) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data, N * sizeof(PodType)); -} - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * static_cast(data), - * min(N * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer(PodType (&data)[N], - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data, - N * sizeof(PodType) < max_size_in_bytes - ? N * sizeof(PodType) : max_size_in_bytes); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * static_cast(data), - * N * sizeof(PodType)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - const PodType (&data)[N]) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data, N * sizeof(PodType)); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * static_cast(data), - * min(N * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer(const PodType (&data)[N], - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data, - N * sizeof(PodType) < max_size_in_bytes - ? N * sizeof(PodType) : max_size_in_bytes); -} - -#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND) - -// Borland C++ and Sun Studio think the overloads: -// -// unspecified buffer(boost::array& array ...); -// -// and -// -// unspecified buffer(boost::array& array ...); -// -// are ambiguous. This will be worked around by using a buffer_types traits -// class that contains typedefs for the appropriate buffer and container -// classes, based on whether PodType is const or non-const. - -namespace detail { - -template -struct buffer_types_base; - -template <> -struct buffer_types_base -{ - typedef mutable_buffer buffer_type; - typedef ASIO_MUTABLE_BUFFER container_type; -}; - -template <> -struct buffer_types_base -{ - typedef const_buffer buffer_type; - typedef ASIO_CONST_BUFFER container_type; -}; - -template -struct buffer_types - : public buffer_types_base::value> -{ -}; - -} // namespace detail - -template -inline typename detail::buffer_types::container_type -buffer(boost::array& data) ASIO_NOEXCEPT -{ - typedef typename asio::detail::buffer_types::buffer_type - buffer_type; - typedef typename asio::detail::buffer_types::container_type - container_type; - return container_type( - buffer_type(data.c_array(), data.size() * sizeof(PodType))); -} - -template -inline typename detail::buffer_types::container_type -buffer(boost::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - typedef typename asio::detail::buffer_types::buffer_type - buffer_type; - typedef typename asio::detail::buffer_types::container_type - container_type; - return container_type( - buffer_type(data.c_array(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes)); -} - -#else // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND) - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer( - boost::array& data) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER( - data.c_array(), data.size() * sizeof(PodType)); -} - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer(boost::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.c_array(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - boost::array& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType)); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer(boost::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND) - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - const boost::array& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType)); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer(const boost::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -#if defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION) - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer( - std::array& data) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.data(), data.size() * sizeof(PodType)); -} - -/// Create a new modifiable buffer that represents the given POD array. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_MUTABLE_BUFFER buffer(std::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.data(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - std::array& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType)); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer(std::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * data.size() * sizeof(PodType)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - const std::array& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType)); -} - -/// Create a new non-modifiable buffer that represents the given POD array. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer(const std::array& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes); -} - -#endif // defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION) - -/// Create a new modifiable buffer that represents the given POD vector. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.size() ? &data[0] : 0, - * data.size() * sizeof(PodType)); @endcode - * - * @note The buffer is invalidated by any vector operation that would also - * invalidate iterators. - */ -template -inline ASIO_MUTABLE_BUFFER buffer( - std::vector& data) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER( - data.size() ? &data[0] : 0, data.size() * sizeof(PodType) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::vector::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new modifiable buffer that represents the given POD vector. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.size() ? &data[0] : 0, - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - * - * @note The buffer is invalidated by any vector operation that would also - * invalidate iterators. - */ -template -inline ASIO_MUTABLE_BUFFER buffer(std::vector& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::vector::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that represents the given POD vector. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.size() ? &data[0] : 0, - * data.size() * sizeof(PodType)); @endcode - * - * @note The buffer is invalidated by any vector operation that would also - * invalidate iterators. - */ -template -inline ASIO_CONST_BUFFER buffer( - const std::vector& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER( - data.size() ? &data[0] : 0, data.size() * sizeof(PodType) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::vector::const_iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that represents the given POD vector. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.size() ? &data[0] : 0, - * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode - * - * @note The buffer is invalidated by any vector operation that would also - * invalidate iterators. - */ -template -inline ASIO_CONST_BUFFER buffer( - const std::vector& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(PodType) < max_size_in_bytes - ? data.size() * sizeof(PodType) : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::vector::const_iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new modifiable buffer that represents the given string. -/** - * @returns mutable_buffer(data.size() ? &data[0] : 0, - * data.size() * sizeof(Elem)). - * - * @note The buffer is invalidated by any non-const operation called on the - * given string object. - */ -template -inline ASIO_MUTABLE_BUFFER buffer( - std::basic_string& data) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(Elem) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::basic_string::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new modifiable buffer that represents the given string. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.size() ? &data[0] : 0, - * min(data.size() * sizeof(Elem), max_size_in_bytes)); @endcode - * - * @note The buffer is invalidated by any non-const operation called on the - * given string object. - */ -template -inline ASIO_MUTABLE_BUFFER buffer( - std::basic_string& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(Elem) < max_size_in_bytes - ? data.size() * sizeof(Elem) : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::basic_string::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that represents the given string. -/** - * @returns const_buffer(data.data(), data.size() * sizeof(Elem)). - * - * @note The buffer is invalidated by any non-const operation called on the - * given string object. - */ -template -inline ASIO_CONST_BUFFER buffer( - const std::basic_string& data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(Elem) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::basic_string::const_iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that represents the given string. -/** - * @returns A const_buffer value equivalent to: - * @code const_buffer( - * data.data(), - * min(data.size() * sizeof(Elem), max_size_in_bytes)); @endcode - * - * @note The buffer is invalidated by any non-const operation called on the - * given string object. - */ -template -inline ASIO_CONST_BUFFER buffer( - const std::basic_string& data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.data(), - data.size() * sizeof(Elem) < max_size_in_bytes - ? data.size() * sizeof(Elem) : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename std::basic_string::const_iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -#if defined(ASIO_HAS_STRING_VIEW) \ - || defined(GENERATING_DOCUMENTATION) - -/// Create a new modifiable buffer that represents the given string_view. -/** - * @returns mutable_buffer(data.size() ? &data[0] : 0, - * data.size() * sizeof(Elem)). - */ -template -inline ASIO_CONST_BUFFER buffer( - basic_string_view data) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(Elem) -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename basic_string_view::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -/// Create a new non-modifiable buffer that represents the given string. -/** - * @returns A mutable_buffer value equivalent to: - * @code mutable_buffer( - * data.size() ? &data[0] : 0, - * min(data.size() * sizeof(Elem), max_size_in_bytes)); @endcode - */ -template -inline ASIO_CONST_BUFFER buffer( - basic_string_view data, - std::size_t max_size_in_bytes) ASIO_NOEXCEPT -{ - return ASIO_CONST_BUFFER(data.size() ? &data[0] : 0, - data.size() * sizeof(Elem) < max_size_in_bytes - ? data.size() * sizeof(Elem) : max_size_in_bytes -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - , detail::buffer_debug_check< - typename basic_string_view::iterator - >(data.begin()) -#endif // ASIO_ENABLE_BUFFER_DEBUGGING - ); -} - -#endif // defined(ASIO_HAS_STRING_VIEW) - // || defined(GENERATING_DOCUMENTATION) - -/*@}*/ - -/// Adapt a basic_string to the DynamicBuffer requirements. -/** - * Requires that sizeof(Elem) == 1. - */ -template -class dynamic_string_buffer -{ -public: - /// The type used to represent a sequence of constant buffers that refers to - /// the underlying memory. - typedef ASIO_CONST_BUFFER const_buffers_type; - - /// The type used to represent a sequence of mutable buffers that refers to - /// the underlying memory. - typedef ASIO_MUTABLE_BUFFER mutable_buffers_type; - - /// Construct a dynamic buffer from a string. - /** - * @param s The string to be used as backing storage for the dynamic buffer. - * The object stores a reference to the string and the user is responsible - * for ensuring that the string object remains valid while the - * dynamic_string_buffer object, and copies of the object, are in use. - * - * @b DynamicBuffer_v1: Any existing data in the string is treated as the - * dynamic buffer's input sequence. - * - * @param maximum_size Specifies a maximum size for the buffer, in bytes. - */ - explicit dynamic_string_buffer(std::basic_string& s, - std::size_t maximum_size = - (std::numeric_limits::max)()) ASIO_NOEXCEPT - : string_(s), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_((std::numeric_limits::max)()), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(maximum_size) - { - } - - /// @b DynamicBuffer_v2: Copy construct a dynamic buffer. - dynamic_string_buffer(const dynamic_string_buffer& other) ASIO_NOEXCEPT - : string_(other.string_), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_(other.size_), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(other.max_size_) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move construct a dynamic buffer. - dynamic_string_buffer(dynamic_string_buffer&& other) ASIO_NOEXCEPT - : string_(other.string_), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_(other.size_), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(other.max_size_) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// @b DynamicBuffer_v1: Get the size of the input sequence. - /// @b DynamicBuffer_v2: Get the current size of the underlying memory. - /** - * @returns @b DynamicBuffer_v1 The current size of the input sequence. - * @b DynamicBuffer_v2: The current size of the underlying string if less than - * max_size(). Otherwise returns max_size(). - */ - std::size_t size() const ASIO_NOEXCEPT - { -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - if (size_ != (std::numeric_limits::max)()) - return size_; -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - return (std::min)(string_.size(), max_size()); - } - - /// Get the maximum size of the dynamic buffer. - /** - * @returns The allowed maximum size of the underlying memory. - */ - std::size_t max_size() const ASIO_NOEXCEPT - { - return max_size_; - } - - /// Get the maximum size that the buffer may grow to without triggering - /// reallocation. - /** - * @returns The current capacity of the underlying string if less than - * max_size(). Otherwise returns max_size(). - */ - std::size_t capacity() const ASIO_NOEXCEPT - { - return (std::min)(string_.capacity(), max_size()); - } - -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - /// @b DynamicBuffer_v1: Get a list of buffers that represents the input - /// sequence. - /** - * @returns An object of type @c const_buffers_type that satisfies - * ConstBufferSequence requirements, representing the basic_string memory in - * the input sequence. - * - * @note The returned object is invalidated by any @c dynamic_string_buffer - * or @c basic_string member function that resizes or erases the string. - */ - const_buffers_type data() const ASIO_NOEXCEPT - { - return const_buffers_type(asio::buffer(string_, size_)); - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - - /// @b DynamicBuffer_v2: Get a sequence of buffers that represents the - /// underlying memory. - /** - * @param pos Position of the first byte to represent in the buffer sequence - * - * @param n The number of bytes to return in the buffer sequence. If the - * underlying memory is shorter, the buffer sequence represents as many bytes - * as are available. - * - * @returns An object of type @c mutable_buffers_type that satisfies - * MutableBufferSequence requirements, representing the basic_string memory. - * - * @note The returned object is invalidated by any @c dynamic_string_buffer - * or @c basic_string member function that resizes or erases the string. - */ - mutable_buffers_type data(std::size_t pos, std::size_t n) ASIO_NOEXCEPT - { - return mutable_buffers_type(asio::buffer( - asio::buffer(string_, max_size_) + pos, n)); - } - - /// @b DynamicBuffer_v2: Get a sequence of buffers that represents the - /// underlying memory. - /** - * @param pos Position of the first byte to represent in the buffer sequence - * - * @param n The number of bytes to return in the buffer sequence. If the - * underlying memory is shorter, the buffer sequence represents as many bytes - * as are available. - * - * @note The returned object is invalidated by any @c dynamic_string_buffer - * or @c basic_string member function that resizes or erases the string. - */ - const_buffers_type data(std::size_t pos, - std::size_t n) const ASIO_NOEXCEPT - { - return const_buffers_type(asio::buffer( - asio::buffer(string_, max_size_) + pos, n)); - } - -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - /// @b DynamicBuffer_v1: Get a list of buffers that represents the output - /// sequence, with the given size. - /** - * Ensures that the output sequence can accommodate @c n bytes, resizing the - * basic_string object as necessary. - * - * @returns An object of type @c mutable_buffers_type that satisfies - * MutableBufferSequence requirements, representing basic_string memory - * at the start of the output sequence of size @c n. - * - * @throws std::length_error If size() + n > max_size(). - * - * @note The returned object is invalidated by any @c dynamic_string_buffer - * or @c basic_string member function that modifies the input sequence or - * output sequence. - */ - mutable_buffers_type prepare(std::size_t n) - { - if (size() > max_size() || max_size() - size() < n) - { - std::length_error ex("dynamic_string_buffer too long"); - asio::detail::throw_exception(ex); - } - - if (size_ == (std::numeric_limits::max)()) - size_ = string_.size(); // Enable v1 behaviour. - - string_.resize(size_ + n); - - return asio::buffer(asio::buffer(string_) + size_, n); - } - - /// @b DynamicBuffer_v1: Move bytes from the output sequence to the input - /// sequence. - /** - * @param n The number of bytes to append from the start of the output - * sequence to the end of the input sequence. The remainder of the output - * sequence is discarded. - * - * Requires a preceding call prepare(x) where x >= n, and - * no intervening operations that modify the input or output sequence. - * - * @note If @c n is greater than the size of the output sequence, the entire - * output sequence is moved to the input sequence and no error is issued. - */ - void commit(std::size_t n) - { - size_ += (std::min)(n, string_.size() - size_); - string_.resize(size_); - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - - /// @b DynamicBuffer_v2: Grow the underlying memory by the specified number of - /// bytes. - /** - * Resizes the string to accommodate an additional @c n bytes at the end. - * - * @throws std::length_error If size() + n > max_size(). - */ - void grow(std::size_t n) - { - if (size() > max_size() || max_size() - size() < n) - { - std::length_error ex("dynamic_string_buffer too long"); - asio::detail::throw_exception(ex); - } - - string_.resize(size() + n); - } - - /// @b DynamicBuffer_v2: Shrink the underlying memory by the specified number - /// of bytes. - /** - * Erases @c n bytes from the end of the string by resizing the basic_string - * object. If @c n is greater than the current size of the string, the string - * is emptied. - */ - void shrink(std::size_t n) - { - string_.resize(n > size() ? 0 : size() - n); - } - - /// @b DynamicBuffer_v1: Remove characters from the input sequence. - /// @b DynamicBuffer_v2: Consume the specified number of bytes from the - /// beginning of the underlying memory. - /** - * @b DynamicBuffer_v1: Removes @c n characters from the beginning of the - * input sequence. @note If @c n is greater than the size of the input - * sequence, the entire input sequence is consumed and no error is issued. - * - * @b DynamicBuffer_v2: Erases @c n bytes from the beginning of the string. - * If @c n is greater than the current size of the string, the string is - * emptied. - */ - void consume(std::size_t n) - { -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - if (size_ != (std::numeric_limits::max)()) - { - std::size_t consume_length = (std::min)(n, size_); - string_.erase(0, consume_length); - size_ -= consume_length; - return; - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - string_.erase(0, n); - } - -private: - std::basic_string& string_; -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - std::size_t size_; -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - const std::size_t max_size_; -}; - -/// Adapt a vector to the DynamicBuffer requirements. -/** - * Requires that sizeof(Elem) == 1. - */ -template -class dynamic_vector_buffer -{ -public: - /// The type used to represent a sequence of constant buffers that refers to - /// the underlying memory. - typedef ASIO_CONST_BUFFER const_buffers_type; - - /// The type used to represent a sequence of mutable buffers that refers to - /// the underlying memory. - typedef ASIO_MUTABLE_BUFFER mutable_buffers_type; - - /// Construct a dynamic buffer from a vector. - /** - * @param v The vector to be used as backing storage for the dynamic buffer. - * The object stores a reference to the vector and the user is responsible - * for ensuring that the vector object remains valid while the - * dynamic_vector_buffer object, and copies of the object, are in use. - * - * @param maximum_size Specifies a maximum size for the buffer, in bytes. - */ - explicit dynamic_vector_buffer(std::vector& v, - std::size_t maximum_size = - (std::numeric_limits::max)()) ASIO_NOEXCEPT - : vector_(v), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_((std::numeric_limits::max)()), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(maximum_size) - { - } - - /// @b DynamicBuffer_v2: Copy construct a dynamic buffer. - dynamic_vector_buffer(const dynamic_vector_buffer& other) ASIO_NOEXCEPT - : vector_(other.vector_), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_(other.size_), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(other.max_size_) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move construct a dynamic buffer. - dynamic_vector_buffer(dynamic_vector_buffer&& other) ASIO_NOEXCEPT - : vector_(other.vector_), -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - size_(other.size_), -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - max_size_(other.max_size_) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// @b DynamicBuffer_v1: Get the size of the input sequence. - /// @b DynamicBuffer_v2: Get the current size of the underlying memory. - /** - * @returns @b DynamicBuffer_v1 The current size of the input sequence. - * @b DynamicBuffer_v2: The current size of the underlying vector if less than - * max_size(). Otherwise returns max_size(). - */ - std::size_t size() const ASIO_NOEXCEPT - { -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - if (size_ != (std::numeric_limits::max)()) - return size_; -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - return (std::min)(vector_.size(), max_size()); - } - - /// Get the maximum size of the dynamic buffer. - /** - * @returns @b DynamicBuffer_v1: The allowed maximum of the sum of the sizes - * of the input sequence and output sequence. @b DynamicBuffer_v2: The allowed - * maximum size of the underlying memory. - */ - std::size_t max_size() const ASIO_NOEXCEPT - { - return max_size_; - } - - /// Get the maximum size that the buffer may grow to without triggering - /// reallocation. - /** - * @returns @b DynamicBuffer_v1: The current total capacity of the buffer, - * i.e. for both the input sequence and output sequence. @b DynamicBuffer_v2: - * The current capacity of the underlying vector if less than max_size(). - * Otherwise returns max_size(). - */ - std::size_t capacity() const ASIO_NOEXCEPT - { - return (std::min)(vector_.capacity(), max_size()); - } - -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - /// @b DynamicBuffer_v1: Get a list of buffers that represents the input - /// sequence. - /** - * @returns An object of type @c const_buffers_type that satisfies - * ConstBufferSequence requirements, representing the vector memory in the - * input sequence. - * - * @note The returned object is invalidated by any @c dynamic_vector_buffer - * or @c vector member function that modifies the input sequence or output - * sequence. - */ - const_buffers_type data() const ASIO_NOEXCEPT - { - return const_buffers_type(asio::buffer(vector_, size_)); - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - - /// @b DynamicBuffer_v2: Get a sequence of buffers that represents the - /// underlying memory. - /** - * @param pos Position of the first byte to represent in the buffer sequence - * - * @param n The number of bytes to return in the buffer sequence. If the - * underlying memory is shorter, the buffer sequence represents as many bytes - * as are available. - * - * @returns An object of type @c mutable_buffers_type that satisfies - * MutableBufferSequence requirements, representing the vector memory. - * - * @note The returned object is invalidated by any @c dynamic_vector_buffer - * or @c vector member function that resizes or erases the vector. - */ - mutable_buffers_type data(std::size_t pos, std::size_t n) ASIO_NOEXCEPT - { - return mutable_buffers_type(asio::buffer( - asio::buffer(vector_, max_size_) + pos, n)); - } - - /// @b DynamicBuffer_v2: Get a sequence of buffers that represents the - /// underlying memory. - /** - * @param pos Position of the first byte to represent in the buffer sequence - * - * @param n The number of bytes to return in the buffer sequence. If the - * underlying memory is shorter, the buffer sequence represents as many bytes - * as are available. - * - * @note The returned object is invalidated by any @c dynamic_vector_buffer - * or @c vector member function that resizes or erases the vector. - */ - const_buffers_type data(std::size_t pos, - std::size_t n) const ASIO_NOEXCEPT - { - return const_buffers_type(asio::buffer( - asio::buffer(vector_, max_size_) + pos, n)); - } - -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - /// @b DynamicBuffer_v1: Get a list of buffers that represents the output - /// sequence, with the given size. - /** - * Ensures that the output sequence can accommodate @c n bytes, resizing the - * vector object as necessary. - * - * @returns An object of type @c mutable_buffers_type that satisfies - * MutableBufferSequence requirements, representing vector memory at the - * start of the output sequence of size @c n. - * - * @throws std::length_error If size() + n > max_size(). - * - * @note The returned object is invalidated by any @c dynamic_vector_buffer - * or @c vector member function that modifies the input sequence or output - * sequence. - */ - mutable_buffers_type prepare(std::size_t n) - { - if (size () > max_size() || max_size() - size() < n) - { - std::length_error ex("dynamic_vector_buffer too long"); - asio::detail::throw_exception(ex); - } - - if (size_ == (std::numeric_limits::max)()) - size_ = vector_.size(); // Enable v1 behaviour. - - vector_.resize(size_ + n); - - return asio::buffer(asio::buffer(vector_) + size_, n); - } - - /// @b DynamicBuffer_v1: Move bytes from the output sequence to the input - /// sequence. - /** - * @param n The number of bytes to append from the start of the output - * sequence to the end of the input sequence. The remainder of the output - * sequence is discarded. - * - * Requires a preceding call prepare(x) where x >= n, and - * no intervening operations that modify the input or output sequence. - * - * @note If @c n is greater than the size of the output sequence, the entire - * output sequence is moved to the input sequence and no error is issued. - */ - void commit(std::size_t n) - { - size_ += (std::min)(n, vector_.size() - size_); - vector_.resize(size_); - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - - /// @b DynamicBuffer_v2: Grow the underlying memory by the specified number of - /// bytes. - /** - * Resizes the vector to accommodate an additional @c n bytes at the end. - * - * @throws std::length_error If size() + n > max_size(). - */ - void grow(std::size_t n) - { - if (size() > max_size() || max_size() - size() < n) - { - std::length_error ex("dynamic_vector_buffer too long"); - asio::detail::throw_exception(ex); - } - - vector_.resize(size() + n); - } - - /// @b DynamicBuffer_v2: Shrink the underlying memory by the specified number - /// of bytes. - /** - * Erases @c n bytes from the end of the vector by resizing the vector - * object. If @c n is greater than the current size of the vector, the vector - * is emptied. - */ - void shrink(std::size_t n) - { - vector_.resize(n > size() ? 0 : size() - n); - } - - /// @b DynamicBuffer_v1: Remove characters from the input sequence. - /// @b DynamicBuffer_v2: Consume the specified number of bytes from the - /// beginning of the underlying memory. - /** - * @b DynamicBuffer_v1: Removes @c n characters from the beginning of the - * input sequence. @note If @c n is greater than the size of the input - * sequence, the entire input sequence is consumed and no error is issued. - * - * @b DynamicBuffer_v2: Erases @c n bytes from the beginning of the vector. - * If @c n is greater than the current size of the vector, the vector is - * emptied. - */ - void consume(std::size_t n) - { -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - if (size_ != (std::numeric_limits::max)()) - { - std::size_t consume_length = (std::min)(n, size_); - vector_.erase(vector_.begin(), vector_.begin() + consume_length); - size_ -= consume_length; - return; - } -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - vector_.erase(vector_.begin(), vector_.begin() + (std::min)(size(), n)); - } - -private: - std::vector& vector_; -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - std::size_t size_; -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - const std::size_t max_size_; -}; - -/** @defgroup dynamic_buffer asio::dynamic_buffer - * - * @brief The asio::dynamic_buffer function is used to create a - * dynamically resized buffer from a @c std::basic_string or @c std::vector. - */ -/*@{*/ - -/// Create a new dynamic buffer that represents the given string. -/** - * @returns dynamic_string_buffer(data). - */ -template -inline dynamic_string_buffer dynamic_buffer( - std::basic_string& data) ASIO_NOEXCEPT -{ - return dynamic_string_buffer(data); -} - -/// Create a new dynamic buffer that represents the given string. -/** - * @returns dynamic_string_buffer(data, - * max_size). - */ -template -inline dynamic_string_buffer dynamic_buffer( - std::basic_string& data, - std::size_t max_size) ASIO_NOEXCEPT -{ - return dynamic_string_buffer(data, max_size); -} - -/// Create a new dynamic buffer that represents the given vector. -/** - * @returns dynamic_vector_buffer(data). - */ -template -inline dynamic_vector_buffer dynamic_buffer( - std::vector& data) ASIO_NOEXCEPT -{ - return dynamic_vector_buffer(data); -} - -/// Create a new dynamic buffer that represents the given vector. -/** - * @returns dynamic_vector_buffer(data, max_size). - */ -template -inline dynamic_vector_buffer dynamic_buffer( - std::vector& data, - std::size_t max_size) ASIO_NOEXCEPT -{ - return dynamic_vector_buffer(data, max_size); -} - -/*@}*/ - -/** @defgroup buffer_copy asio::buffer_copy - * - * @brief The asio::buffer_copy function is used to copy bytes from a - * source buffer (or buffer sequence) to a target buffer (or buffer sequence). - * - * The @c buffer_copy function is available in two forms: - * - * @li A 2-argument form: @c buffer_copy(target, source) - * - * @li A 3-argument form: @c buffer_copy(target, source, max_bytes_to_copy) - * - * Both forms return the number of bytes actually copied. The number of bytes - * copied is the lesser of: - * - * @li @c buffer_size(target) - * - * @li @c buffer_size(source) - * - * @li @c If specified, @c max_bytes_to_copy. - * - * This prevents buffer overflow, regardless of the buffer sizes used in the - * copy operation. - * - * Note that @ref buffer_copy is implemented in terms of @c memcpy, and - * consequently it cannot be used to copy between overlapping memory regions. - */ -/*@{*/ - -namespace detail { - -inline std::size_t buffer_copy_1(const mutable_buffer& target, - const const_buffer& source) -{ - using namespace std; // For memcpy. - std::size_t target_size = target.size(); - std::size_t source_size = source.size(); - std::size_t n = target_size < source_size ? target_size : source_size; - if (n > 0) - memcpy(target.data(), source.data(), n); - return n; -} - -template -inline std::size_t buffer_copy(one_buffer, one_buffer, - TargetIterator target_begin, TargetIterator, - SourceIterator source_begin, SourceIterator) ASIO_NOEXCEPT -{ - return (buffer_copy_1)(*target_begin, *source_begin); -} - -template -inline std::size_t buffer_copy(one_buffer, one_buffer, - TargetIterator target_begin, TargetIterator, - SourceIterator source_begin, SourceIterator, - std::size_t max_bytes_to_copy) ASIO_NOEXCEPT -{ - return (buffer_copy_1)(*target_begin, - asio::buffer(*source_begin, max_bytes_to_copy)); -} - -template -std::size_t buffer_copy(one_buffer, multiple_buffers, - TargetIterator target_begin, TargetIterator, - SourceIterator source_begin, SourceIterator source_end, - std::size_t max_bytes_to_copy - = (std::numeric_limits::max)()) ASIO_NOEXCEPT -{ - std::size_t total_bytes_copied = 0; - SourceIterator source_iter = source_begin; - - for (mutable_buffer target_buffer( - asio::buffer(*target_begin, max_bytes_to_copy)); - target_buffer.size() && source_iter != source_end; ++source_iter) - { - const_buffer source_buffer(*source_iter); - std::size_t bytes_copied = (buffer_copy_1)(target_buffer, source_buffer); - total_bytes_copied += bytes_copied; - target_buffer += bytes_copied; - } - - return total_bytes_copied; -} - -template -std::size_t buffer_copy(multiple_buffers, one_buffer, - TargetIterator target_begin, TargetIterator target_end, - SourceIterator source_begin, SourceIterator, - std::size_t max_bytes_to_copy - = (std::numeric_limits::max)()) ASIO_NOEXCEPT -{ - std::size_t total_bytes_copied = 0; - TargetIterator target_iter = target_begin; - - for (const_buffer source_buffer( - asio::buffer(*source_begin, max_bytes_to_copy)); - source_buffer.size() && target_iter != target_end; ++target_iter) - { - mutable_buffer target_buffer(*target_iter); - std::size_t bytes_copied = (buffer_copy_1)(target_buffer, source_buffer); - total_bytes_copied += bytes_copied; - source_buffer += bytes_copied; - } - - return total_bytes_copied; -} - -template -std::size_t buffer_copy(multiple_buffers, multiple_buffers, - TargetIterator target_begin, TargetIterator target_end, - SourceIterator source_begin, SourceIterator source_end) ASIO_NOEXCEPT -{ - std::size_t total_bytes_copied = 0; - - TargetIterator target_iter = target_begin; - std::size_t target_buffer_offset = 0; - - SourceIterator source_iter = source_begin; - std::size_t source_buffer_offset = 0; - - while (target_iter != target_end && source_iter != source_end) - { - mutable_buffer target_buffer = - mutable_buffer(*target_iter) + target_buffer_offset; - - const_buffer source_buffer = - const_buffer(*source_iter) + source_buffer_offset; - - std::size_t bytes_copied = (buffer_copy_1)(target_buffer, source_buffer); - total_bytes_copied += bytes_copied; - - if (bytes_copied == target_buffer.size()) - { - ++target_iter; - target_buffer_offset = 0; - } - else - target_buffer_offset += bytes_copied; - - if (bytes_copied == source_buffer.size()) - { - ++source_iter; - source_buffer_offset = 0; - } - else - source_buffer_offset += bytes_copied; - } - - return total_bytes_copied; -} - -template -std::size_t buffer_copy(multiple_buffers, multiple_buffers, - TargetIterator target_begin, TargetIterator target_end, - SourceIterator source_begin, SourceIterator source_end, - std::size_t max_bytes_to_copy) ASIO_NOEXCEPT -{ - std::size_t total_bytes_copied = 0; - - TargetIterator target_iter = target_begin; - std::size_t target_buffer_offset = 0; - - SourceIterator source_iter = source_begin; - std::size_t source_buffer_offset = 0; - - while (total_bytes_copied != max_bytes_to_copy - && target_iter != target_end && source_iter != source_end) - { - mutable_buffer target_buffer = - mutable_buffer(*target_iter) + target_buffer_offset; - - const_buffer source_buffer = - const_buffer(*source_iter) + source_buffer_offset; - - std::size_t bytes_copied = (buffer_copy_1)( - target_buffer, asio::buffer(source_buffer, - max_bytes_to_copy - total_bytes_copied)); - total_bytes_copied += bytes_copied; - - if (bytes_copied == target_buffer.size()) - { - ++target_iter; - target_buffer_offset = 0; - } - else - target_buffer_offset += bytes_copied; - - if (bytes_copied == source_buffer.size()) - { - ++source_iter; - source_buffer_offset = 0; - } - else - source_buffer_offset += bytes_copied; - } - - return total_bytes_copied; -} - -} // namespace detail - -/// Copies bytes from a source buffer sequence to a target buffer sequence. -/** - * @param target A modifiable buffer sequence representing the memory regions to - * which the bytes will be copied. - * - * @param source A non-modifiable buffer sequence representing the memory - * regions from which the bytes will be copied. - * - * @returns The number of bytes copied. - * - * @note The number of bytes copied is the lesser of: - * - * @li @c buffer_size(target) - * - * @li @c buffer_size(source) - * - * This function is implemented in terms of @c memcpy, and consequently it - * cannot be used to copy between overlapping memory regions. - */ -template -inline std::size_t buffer_copy(const MutableBufferSequence& target, - const ConstBufferSequence& source) ASIO_NOEXCEPT -{ - return detail::buffer_copy( - detail::buffer_sequence_cardinality(), - detail::buffer_sequence_cardinality(), - asio::buffer_sequence_begin(target), - asio::buffer_sequence_end(target), - asio::buffer_sequence_begin(source), - asio::buffer_sequence_end(source)); -} - -/// Copies a limited number of bytes from a source buffer sequence to a target -/// buffer sequence. -/** - * @param target A modifiable buffer sequence representing the memory regions to - * which the bytes will be copied. - * - * @param source A non-modifiable buffer sequence representing the memory - * regions from which the bytes will be copied. - * - * @param max_bytes_to_copy The maximum number of bytes to be copied. - * - * @returns The number of bytes copied. - * - * @note The number of bytes copied is the lesser of: - * - * @li @c buffer_size(target) - * - * @li @c buffer_size(source) - * - * @li @c max_bytes_to_copy - * - * This function is implemented in terms of @c memcpy, and consequently it - * cannot be used to copy between overlapping memory regions. - */ -template -inline std::size_t buffer_copy(const MutableBufferSequence& target, - const ConstBufferSequence& source, - std::size_t max_bytes_to_copy) ASIO_NOEXCEPT -{ - return detail::buffer_copy( - detail::buffer_sequence_cardinality(), - detail::buffer_sequence_cardinality(), - asio::buffer_sequence_begin(target), - asio::buffer_sequence_end(target), - asio::buffer_sequence_begin(source), - asio::buffer_sequence_end(source), max_bytes_to_copy); -} - -/*@}*/ - -} // namespace asio - -#include "asio/detail/pop_options.hpp" -#include "asio/detail/is_buffer_sequence.hpp" -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Trait to determine whether a type satisfies the MutableBufferSequence -/// requirements. -template -struct is_mutable_buffer_sequence -#if defined(GENERATING_DOCUMENTATION) - : integral_constant -#else // defined(GENERATING_DOCUMENTATION) - : asio::detail::is_buffer_sequence -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -/// Trait to determine whether a type satisfies the ConstBufferSequence -/// requirements. -template -struct is_const_buffer_sequence -#if defined(GENERATING_DOCUMENTATION) - : integral_constant -#else // defined(GENERATING_DOCUMENTATION) - : asio::detail::is_buffer_sequence -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1) -/// Trait to determine whether a type satisfies the DynamicBuffer_v1 -/// requirements. -template -struct is_dynamic_buffer_v1 -#if defined(GENERATING_DOCUMENTATION) - : integral_constant -#else // defined(GENERATING_DOCUMENTATION) - : asio::detail::is_dynamic_buffer_v1 -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; -#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1) - -/// Trait to determine whether a type satisfies the DynamicBuffer_v2 -/// requirements. -template -struct is_dynamic_buffer_v2 -#if defined(GENERATING_DOCUMENTATION) - : integral_constant -#else // defined(GENERATING_DOCUMENTATION) - : asio::detail::is_dynamic_buffer_v2 -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -/// Trait to determine whether a type satisfies the DynamicBuffer requirements. -/** - * If @c ASIO_NO_DYNAMIC_BUFFER_V1 is not defined, determines whether the - * type satisfies the DynamicBuffer_v1 requirements. Otherwise, if @c - * ASIO_NO_DYNAMIC_BUFFER_V1 is defined, determines whether the type - * satisfies the DynamicBuffer_v2 requirements. - */ -template -struct is_dynamic_buffer -#if defined(GENERATING_DOCUMENTATION) - : integral_constant -#elif defined(ASIO_NO_DYNAMIC_BUFFER_V1) - : asio::is_dynamic_buffer_v2 -#else // defined(ASIO_NO_DYNAMIC_BUFFER_V1) - : asio::is_dynamic_buffer_v1 -#endif // defined(ASIO_NO_DYNAMIC_BUFFER_V1) -{ -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BUFFER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream.hpp deleted file mode 100644 index 7280a547..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream.hpp +++ /dev/null @@ -1,253 +0,0 @@ -// -// buffered_read_stream.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_READ_STREAM_HPP -#define ASIO_BUFFERED_READ_STREAM_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/async_result.hpp" -#include "asio/buffered_read_stream_fwd.hpp" -#include "asio/buffer.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_resize_guard.hpp" -#include "asio/detail/buffered_stream_storage.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Adds buffering to the read-related operations of a stream. -/** - * The buffered_read_stream class template can be used to add buffering to the - * synchronous and asynchronous read operations of a stream. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. - */ -template -class buffered_read_stream - : private noncopyable -{ -public: - /// The type of the next layer. - typedef typename remove_reference::type next_layer_type; - - /// The type of the lowest layer. - typedef typename next_layer_type::lowest_layer_type lowest_layer_type; - - /// The type of the executor associated with the object. - typedef typename lowest_layer_type::executor_type executor_type; - -#if defined(GENERATING_DOCUMENTATION) - /// The default buffer size. - static const std::size_t default_buffer_size = implementation_defined; -#else - ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024); -#endif - - /// Construct, passing the specified argument to initialise the next layer. - template - explicit buffered_read_stream(Arg& a) - : next_layer_(a), - storage_(default_buffer_size) - { - } - - /// Construct, passing the specified argument to initialise the next layer. - template - buffered_read_stream(Arg& a, std::size_t buffer_size) - : next_layer_(a), - storage_(buffer_size) - { - } - - /// Get a reference to the next layer. - next_layer_type& next_layer() - { - return next_layer_; - } - - /// Get a reference to the lowest layer. - lowest_layer_type& lowest_layer() - { - return next_layer_.lowest_layer(); - } - - /// Get a const reference to the lowest layer. - const lowest_layer_type& lowest_layer() const - { - return next_layer_.lowest_layer(); - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return next_layer_.lowest_layer().get_executor(); - } - - /// Close the stream. - void close() - { - next_layer_.close(); - } - - /// Close the stream. - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - next_layer_.close(ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Write the given data to the stream. Returns the number of bytes written. - /// Throws an exception on failure. - template - std::size_t write_some(const ConstBufferSequence& buffers) - { - return next_layer_.write_some(buffers); - } - - /// Write the given data to the stream. Returns the number of bytes written, - /// or 0 if an error occurred. - template - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec) - { - return next_layer_.write_some(buffers, ec); - } - - /// Start an asynchronous write. The data being written must be valid for the - /// lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_write_some(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return next_layer_.async_write_some(buffers, - ASIO_MOVE_CAST(WriteHandler)(handler)); - } - - /// Fill the buffer with some data. Returns the number of bytes placed in the - /// buffer as a result of the operation. Throws an exception on failure. - std::size_t fill(); - - /// Fill the buffer with some data. Returns the number of bytes placed in the - /// buffer as a result of the operation, or 0 if an error occurred. - std::size_t fill(asio::error_code& ec); - - /// Start an asynchronous fill. - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - std::size_t)) ReadHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_fill( - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)); - - /// Read some data from the stream. Returns the number of bytes read. Throws - /// an exception on failure. - template - std::size_t read_some(const MutableBufferSequence& buffers); - - /// Read some data from the stream. Returns the number of bytes read or 0 if - /// an error occurred. - template - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec); - - /// Start an asynchronous read. The buffer into which the data will be read - /// must be valid for the lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_read_some(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)); - - /// Peek at the incoming data on the stream. Returns the number of bytes read. - /// Throws an exception on failure. - template - std::size_t peek(const MutableBufferSequence& buffers); - - /// Peek at the incoming data on the stream. Returns the number of bytes read, - /// or 0 if an error occurred. - template - std::size_t peek(const MutableBufferSequence& buffers, - asio::error_code& ec); - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail() - { - return storage_.size(); - } - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail(asio::error_code& ec) - { - ec = asio::error_code(); - return storage_.size(); - } - -private: - /// Copy data out of the internal buffer to the specified target buffer. - /// Returns the number of bytes copied. - template - std::size_t copy(const MutableBufferSequence& buffers) - { - std::size_t bytes_copied = asio::buffer_copy( - buffers, storage_.data(), storage_.size()); - storage_.consume(bytes_copied); - return bytes_copied; - } - - /// Copy data from the internal buffer to the specified target buffer, without - /// removing the data from the internal buffer. Returns the number of bytes - /// copied. - template - std::size_t peek_copy(const MutableBufferSequence& buffers) - { - return asio::buffer_copy(buffers, storage_.data(), storage_.size()); - } - - /// The next layer. - Stream next_layer_; - - // The data in the buffer. - detail::buffered_stream_storage storage_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/buffered_read_stream.hpp" - -#endif // ASIO_BUFFERED_READ_STREAM_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream_fwd.hpp deleted file mode 100644 index 301f68a4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_read_stream_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// buffered_read_stream_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_READ_STREAM_FWD_HPP -#define ASIO_BUFFERED_READ_STREAM_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace asio { - -template -class buffered_read_stream; - -} // namespace asio - -#endif // ASIO_BUFFERED_READ_STREAM_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream.hpp deleted file mode 100644 index 63f8253a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream.hpp +++ /dev/null @@ -1,279 +0,0 @@ -// -// buffered_stream.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_STREAM_HPP -#define ASIO_BUFFERED_STREAM_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/async_result.hpp" -#include "asio/buffered_read_stream.hpp" -#include "asio/buffered_write_stream.hpp" -#include "asio/buffered_stream_fwd.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Adds buffering to the read- and write-related operations of a stream. -/** - * The buffered_stream class template can be used to add buffering to the - * synchronous and asynchronous read and write operations of a stream. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. - */ -template -class buffered_stream - : private noncopyable -{ -public: - /// The type of the next layer. - typedef typename remove_reference::type next_layer_type; - - /// The type of the lowest layer. - typedef typename next_layer_type::lowest_layer_type lowest_layer_type; - - /// The type of the executor associated with the object. - typedef typename lowest_layer_type::executor_type executor_type; - - /// Construct, passing the specified argument to initialise the next layer. - template - explicit buffered_stream(Arg& a) - : inner_stream_impl_(a), - stream_impl_(inner_stream_impl_) - { - } - - /// Construct, passing the specified argument to initialise the next layer. - template - explicit buffered_stream(Arg& a, std::size_t read_buffer_size, - std::size_t write_buffer_size) - : inner_stream_impl_(a, write_buffer_size), - stream_impl_(inner_stream_impl_, read_buffer_size) - { - } - - /// Get a reference to the next layer. - next_layer_type& next_layer() - { - return stream_impl_.next_layer().next_layer(); - } - - /// Get a reference to the lowest layer. - lowest_layer_type& lowest_layer() - { - return stream_impl_.lowest_layer(); - } - - /// Get a const reference to the lowest layer. - const lowest_layer_type& lowest_layer() const - { - return stream_impl_.lowest_layer(); - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return stream_impl_.lowest_layer().get_executor(); - } - - /// Close the stream. - void close() - { - stream_impl_.close(); - } - - /// Close the stream. - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - stream_impl_.close(ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Flush all data from the buffer to the next layer. Returns the number of - /// bytes written to the next layer on the last write operation. Throws an - /// exception on failure. - std::size_t flush() - { - return stream_impl_.next_layer().flush(); - } - - /// Flush all data from the buffer to the next layer. Returns the number of - /// bytes written to the next layer on the last write operation, or 0 if an - /// error occurred. - std::size_t flush(asio::error_code& ec) - { - return stream_impl_.next_layer().flush(ec); - } - - /// Start an asynchronous flush. - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - std::size_t)) WriteHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_flush( - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return stream_impl_.next_layer().async_flush( - ASIO_MOVE_CAST(WriteHandler)(handler)); - } - - /// Write the given data to the stream. Returns the number of bytes written. - /// Throws an exception on failure. - template - std::size_t write_some(const ConstBufferSequence& buffers) - { - return stream_impl_.write_some(buffers); - } - - /// Write the given data to the stream. Returns the number of bytes written, - /// or 0 if an error occurred. - template - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec) - { - return stream_impl_.write_some(buffers, ec); - } - - /// Start an asynchronous write. The data being written must be valid for the - /// lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_write_some(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return stream_impl_.async_write_some(buffers, - ASIO_MOVE_CAST(WriteHandler)(handler)); - } - - /// Fill the buffer with some data. Returns the number of bytes placed in the - /// buffer as a result of the operation. Throws an exception on failure. - std::size_t fill() - { - return stream_impl_.fill(); - } - - /// Fill the buffer with some data. Returns the number of bytes placed in the - /// buffer as a result of the operation, or 0 if an error occurred. - std::size_t fill(asio::error_code& ec) - { - return stream_impl_.fill(ec); - } - - /// Start an asynchronous fill. - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - std::size_t)) ReadHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_fill( - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return stream_impl_.async_fill(ASIO_MOVE_CAST(ReadHandler)(handler)); - } - - /// Read some data from the stream. Returns the number of bytes read. Throws - /// an exception on failure. - template - std::size_t read_some(const MutableBufferSequence& buffers) - { - return stream_impl_.read_some(buffers); - } - - /// Read some data from the stream. Returns the number of bytes read or 0 if - /// an error occurred. - template - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return stream_impl_.read_some(buffers, ec); - } - - /// Start an asynchronous read. The buffer into which the data will be read - /// must be valid for the lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_read_some(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return stream_impl_.async_read_some(buffers, - ASIO_MOVE_CAST(ReadHandler)(handler)); - } - - /// Peek at the incoming data on the stream. Returns the number of bytes read. - /// Throws an exception on failure. - template - std::size_t peek(const MutableBufferSequence& buffers) - { - return stream_impl_.peek(buffers); - } - - /// Peek at the incoming data on the stream. Returns the number of bytes read, - /// or 0 if an error occurred. - template - std::size_t peek(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return stream_impl_.peek(buffers, ec); - } - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail() - { - return stream_impl_.in_avail(); - } - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail(asio::error_code& ec) - { - return stream_impl_.in_avail(ec); - } - -private: - // The buffered write stream. - typedef buffered_write_stream write_stream_type; - write_stream_type inner_stream_impl_; - - // The buffered read stream. - typedef buffered_read_stream read_stream_type; - read_stream_type stream_impl_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BUFFERED_STREAM_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream_fwd.hpp deleted file mode 100644 index a9f350c5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_stream_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// buffered_stream_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_STREAM_FWD_HPP -#define ASIO_BUFFERED_STREAM_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace asio { - -template -class buffered_stream; - -} // namespace asio - -#endif // ASIO_BUFFERED_STREAM_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream.hpp deleted file mode 100644 index 96e0ec8a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream.hpp +++ /dev/null @@ -1,245 +0,0 @@ -// -// buffered_write_stream.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_WRITE_STREAM_HPP -#define ASIO_BUFFERED_WRITE_STREAM_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/buffered_write_stream_fwd.hpp" -#include "asio/buffer.hpp" -#include "asio/completion_condition.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffered_stream_storage.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" -#include "asio/write.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Adds buffering to the write-related operations of a stream. -/** - * The buffered_write_stream class template can be used to add buffering to the - * synchronous and asynchronous write operations of a stream. - * - * @par Thread Safety - * @e Distinct @e objects: Safe.@n - * @e Shared @e objects: Unsafe. - * - * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. - */ -template -class buffered_write_stream - : private noncopyable -{ -public: - /// The type of the next layer. - typedef typename remove_reference::type next_layer_type; - - /// The type of the lowest layer. - typedef typename next_layer_type::lowest_layer_type lowest_layer_type; - - /// The type of the executor associated with the object. - typedef typename lowest_layer_type::executor_type executor_type; - -#if defined(GENERATING_DOCUMENTATION) - /// The default buffer size. - static const std::size_t default_buffer_size = implementation_defined; -#else - ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024); -#endif - - /// Construct, passing the specified argument to initialise the next layer. - template - explicit buffered_write_stream(Arg& a) - : next_layer_(a), - storage_(default_buffer_size) - { - } - - /// Construct, passing the specified argument to initialise the next layer. - template - buffered_write_stream(Arg& a, std::size_t buffer_size) - : next_layer_(a), - storage_(buffer_size) - { - } - - /// Get a reference to the next layer. - next_layer_type& next_layer() - { - return next_layer_; - } - - /// Get a reference to the lowest layer. - lowest_layer_type& lowest_layer() - { - return next_layer_.lowest_layer(); - } - - /// Get a const reference to the lowest layer. - const lowest_layer_type& lowest_layer() const - { - return next_layer_.lowest_layer(); - } - - /// Get the executor associated with the object. - executor_type get_executor() ASIO_NOEXCEPT - { - return next_layer_.lowest_layer().get_executor(); - } - - /// Close the stream. - void close() - { - next_layer_.close(); - } - - /// Close the stream. - ASIO_SYNC_OP_VOID close(asio::error_code& ec) - { - next_layer_.close(ec); - ASIO_SYNC_OP_VOID_RETURN(ec); - } - - /// Flush all data from the buffer to the next layer. Returns the number of - /// bytes written to the next layer on the last write operation. Throws an - /// exception on failure. - std::size_t flush(); - - /// Flush all data from the buffer to the next layer. Returns the number of - /// bytes written to the next layer on the last write operation, or 0 if an - /// error occurred. - std::size_t flush(asio::error_code& ec); - - /// Start an asynchronous flush. - template < - ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code, - std::size_t)) WriteHandler - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_flush( - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)); - - /// Write the given data to the stream. Returns the number of bytes written. - /// Throws an exception on failure. - template - std::size_t write_some(const ConstBufferSequence& buffers); - - /// Write the given data to the stream. Returns the number of bytes written, - /// or 0 if an error occurred and the error handler did not throw. - template - std::size_t write_some(const ConstBufferSequence& buffers, - asio::error_code& ec); - - /// Start an asynchronous write. The data being written must be valid for the - /// lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, - void (asio::error_code, std::size_t)) - async_write_some(const ConstBufferSequence& buffers, - ASIO_MOVE_ARG(WriteHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)); - - /// Read some data from the stream. Returns the number of bytes read. Throws - /// an exception on failure. - template - std::size_t read_some(const MutableBufferSequence& buffers) - { - return next_layer_.read_some(buffers); - } - - /// Read some data from the stream. Returns the number of bytes read or 0 if - /// an error occurred. - template - std::size_t read_some(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return next_layer_.read_some(buffers, ec); - } - - /// Start an asynchronous read. The buffer into which the data will be read - /// must be valid for the lifetime of the asynchronous operation. - template - ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, - void (asio::error_code, std::size_t)) - async_read_some(const MutableBufferSequence& buffers, - ASIO_MOVE_ARG(ReadHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) - { - return next_layer_.async_read_some(buffers, - ASIO_MOVE_CAST(ReadHandler)(handler)); - } - - /// Peek at the incoming data on the stream. Returns the number of bytes read. - /// Throws an exception on failure. - template - std::size_t peek(const MutableBufferSequence& buffers) - { - return next_layer_.peek(buffers); - } - - /// Peek at the incoming data on the stream. Returns the number of bytes read, - /// or 0 if an error occurred. - template - std::size_t peek(const MutableBufferSequence& buffers, - asio::error_code& ec) - { - return next_layer_.peek(buffers, ec); - } - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail() - { - return next_layer_.in_avail(); - } - - /// Determine the amount of data that may be read without blocking. - std::size_t in_avail(asio::error_code& ec) - { - return next_layer_.in_avail(ec); - } - -private: - /// Copy data into the internal buffer from the specified source buffer. - /// Returns the number of bytes copied. - template - std::size_t copy(const ConstBufferSequence& buffers); - - /// The next layer. - Stream next_layer_; - - // The data in the buffer. - detail::buffered_stream_storage storage_; -}; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/buffered_write_stream.hpp" - -#endif // ASIO_BUFFERED_WRITE_STREAM_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream_fwd.hpp deleted file mode 100644 index 0b3a4b0e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffered_write_stream_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// buffered_write_stream_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERED_WRITE_STREAM_FWD_HPP -#define ASIO_BUFFERED_WRITE_STREAM_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace asio { - -template -class buffered_write_stream; - -} // namespace asio - -#endif // ASIO_BUFFERED_WRITE_STREAM_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffers_iterator.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffers_iterator.hpp deleted file mode 100644 index 5cc7ba32..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/buffers_iterator.hpp +++ /dev/null @@ -1,521 +0,0 @@ -// -// buffers_iterator.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_BUFFERS_ITERATOR_HPP -#define ASIO_BUFFERS_ITERATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/buffer.hpp" -#include "asio/detail/assert.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -namespace detail -{ - template - struct buffers_iterator_types_helper; - - template <> - struct buffers_iterator_types_helper - { - typedef const_buffer buffer_type; - template - struct byte_type - { - typedef typename add_const::type type; - }; - }; - - template <> - struct buffers_iterator_types_helper - { - typedef mutable_buffer buffer_type; - template - struct byte_type - { - typedef ByteType type; - }; - }; - - template - struct buffers_iterator_types - { - enum - { - is_mutable = is_convertible< - typename BufferSequence::value_type, - mutable_buffer>::value - }; - typedef buffers_iterator_types_helper helper; - typedef typename helper::buffer_type buffer_type; - typedef typename helper::template byte_type::type byte_type; - typedef typename BufferSequence::const_iterator const_iterator; - }; - - template - struct buffers_iterator_types - { - typedef mutable_buffer buffer_type; - typedef ByteType byte_type; - typedef const mutable_buffer* const_iterator; - }; - - template - struct buffers_iterator_types - { - typedef const_buffer buffer_type; - typedef typename add_const::type byte_type; - typedef const const_buffer* const_iterator; - }; - -#if !defined(ASIO_NO_DEPRECATED) - - template - struct buffers_iterator_types - { - typedef mutable_buffer buffer_type; - typedef ByteType byte_type; - typedef const mutable_buffer* const_iterator; - }; - - template - struct buffers_iterator_types - { - typedef const_buffer buffer_type; - typedef typename add_const::type byte_type; - typedef const const_buffer* const_iterator; - }; - -#endif // !defined(ASIO_NO_DEPRECATED) -} - -/// A random access iterator over the bytes in a buffer sequence. -template -class buffers_iterator -{ -private: - typedef typename detail::buffers_iterator_types< - BufferSequence, ByteType>::buffer_type buffer_type; - - typedef typename detail::buffers_iterator_types::const_iterator buffer_sequence_iterator_type; - -public: - /// The type used for the distance between two iterators. - typedef std::ptrdiff_t difference_type; - - /// The type of the value pointed to by the iterator. - typedef ByteType value_type; - -#if defined(GENERATING_DOCUMENTATION) - /// The type of the result of applying operator->() to the iterator. - /** - * If the buffer sequence stores buffer objects that are convertible to - * mutable_buffer, this is a pointer to a non-const ByteType. Otherwise, a - * pointer to a const ByteType. - */ - typedef const_or_non_const_ByteType* pointer; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::buffers_iterator_types< - BufferSequence, ByteType>::byte_type* pointer; -#endif // defined(GENERATING_DOCUMENTATION) - -#if defined(GENERATING_DOCUMENTATION) - /// The type of the result of applying operator*() to the iterator. - /** - * If the buffer sequence stores buffer objects that are convertible to - * mutable_buffer, this is a reference to a non-const ByteType. Otherwise, a - * reference to a const ByteType. - */ - typedef const_or_non_const_ByteType& reference; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::buffers_iterator_types< - BufferSequence, ByteType>::byte_type& reference; -#endif // defined(GENERATING_DOCUMENTATION) - - /// The iterator category. - typedef std::random_access_iterator_tag iterator_category; - - /// Default constructor. Creates an iterator in an undefined state. - buffers_iterator() - : current_buffer_(), - current_buffer_position_(0), - begin_(), - current_(), - end_(), - position_(0) - { - } - - /// Construct an iterator representing the beginning of the buffers' data. - static buffers_iterator begin(const BufferSequence& buffers) -#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) - __attribute__ ((__noinline__)) -#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) - { - buffers_iterator new_iter; - new_iter.begin_ = asio::buffer_sequence_begin(buffers); - new_iter.current_ = asio::buffer_sequence_begin(buffers); - new_iter.end_ = asio::buffer_sequence_end(buffers); - while (new_iter.current_ != new_iter.end_) - { - new_iter.current_buffer_ = *new_iter.current_; - if (new_iter.current_buffer_.size() > 0) - break; - ++new_iter.current_; - } - return new_iter; - } - - /// Construct an iterator representing the end of the buffers' data. - static buffers_iterator end(const BufferSequence& buffers) -#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) - __attribute__ ((__noinline__)) -#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) - { - buffers_iterator new_iter; - new_iter.begin_ = asio::buffer_sequence_begin(buffers); - new_iter.current_ = asio::buffer_sequence_begin(buffers); - new_iter.end_ = asio::buffer_sequence_end(buffers); - while (new_iter.current_ != new_iter.end_) - { - buffer_type buffer = *new_iter.current_; - new_iter.position_ += buffer.size(); - ++new_iter.current_; - } - return new_iter; - } - - /// Dereference an iterator. - reference operator*() const - { - return dereference(); - } - - /// Dereference an iterator. - pointer operator->() const - { - return &dereference(); - } - - /// Access an individual element. - reference operator[](std::ptrdiff_t difference) const - { - buffers_iterator tmp(*this); - tmp.advance(difference); - return *tmp; - } - - /// Increment operator (prefix). - buffers_iterator& operator++() - { - increment(); - return *this; - } - - /// Increment operator (postfix). - buffers_iterator operator++(int) - { - buffers_iterator tmp(*this); - ++*this; - return tmp; - } - - /// Decrement operator (prefix). - buffers_iterator& operator--() - { - decrement(); - return *this; - } - - /// Decrement operator (postfix). - buffers_iterator operator--(int) - { - buffers_iterator tmp(*this); - --*this; - return tmp; - } - - /// Addition operator. - buffers_iterator& operator+=(std::ptrdiff_t difference) - { - advance(difference); - return *this; - } - - /// Subtraction operator. - buffers_iterator& operator-=(std::ptrdiff_t difference) - { - advance(-difference); - return *this; - } - - /// Addition operator. - friend buffers_iterator operator+(const buffers_iterator& iter, - std::ptrdiff_t difference) - { - buffers_iterator tmp(iter); - tmp.advance(difference); - return tmp; - } - - /// Addition operator. - friend buffers_iterator operator+(std::ptrdiff_t difference, - const buffers_iterator& iter) - { - buffers_iterator tmp(iter); - tmp.advance(difference); - return tmp; - } - - /// Subtraction operator. - friend buffers_iterator operator-(const buffers_iterator& iter, - std::ptrdiff_t difference) - { - buffers_iterator tmp(iter); - tmp.advance(-difference); - return tmp; - } - - /// Subtraction operator. - friend std::ptrdiff_t operator-(const buffers_iterator& a, - const buffers_iterator& b) - { - return b.distance_to(a); - } - - /// Test two iterators for equality. - friend bool operator==(const buffers_iterator& a, const buffers_iterator& b) - { - return a.equal(b); - } - - /// Test two iterators for inequality. - friend bool operator!=(const buffers_iterator& a, const buffers_iterator& b) - { - return !a.equal(b); - } - - /// Compare two iterators. - friend bool operator<(const buffers_iterator& a, const buffers_iterator& b) - { - return a.distance_to(b) > 0; - } - - /// Compare two iterators. - friend bool operator<=(const buffers_iterator& a, const buffers_iterator& b) - { - return !(b < a); - } - - /// Compare two iterators. - friend bool operator>(const buffers_iterator& a, const buffers_iterator& b) - { - return b < a; - } - - /// Compare two iterators. - friend bool operator>=(const buffers_iterator& a, const buffers_iterator& b) - { - return !(a < b); - } - -private: - // Dereference the iterator. - reference dereference() const - { - return static_cast( - current_buffer_.data())[current_buffer_position_]; - } - - // Compare two iterators for equality. - bool equal(const buffers_iterator& other) const - { - return position_ == other.position_; - } - - // Increment the iterator. - void increment() - { - ASIO_ASSERT(current_ != end_ && "iterator out of bounds"); - ++position_; - - // Check if the increment can be satisfied by the current buffer. - ++current_buffer_position_; - if (current_buffer_position_ != current_buffer_.size()) - return; - - // Find the next non-empty buffer. - ++current_; - current_buffer_position_ = 0; - while (current_ != end_) - { - current_buffer_ = *current_; - if (current_buffer_.size() > 0) - return; - ++current_; - } - } - - // Decrement the iterator. - void decrement() - { - ASIO_ASSERT(position_ > 0 && "iterator out of bounds"); - --position_; - - // Check if the decrement can be satisfied by the current buffer. - if (current_buffer_position_ != 0) - { - --current_buffer_position_; - return; - } - - // Find the previous non-empty buffer. - buffer_sequence_iterator_type iter = current_; - while (iter != begin_) - { - --iter; - buffer_type buffer = *iter; - std::size_t buffer_size = buffer.size(); - if (buffer_size > 0) - { - current_ = iter; - current_buffer_ = buffer; - current_buffer_position_ = buffer_size - 1; - return; - } - } - } - - // Advance the iterator by the specified distance. - void advance(std::ptrdiff_t n) - { - if (n > 0) - { - ASIO_ASSERT(current_ != end_ && "iterator out of bounds"); - for (;;) - { - std::ptrdiff_t current_buffer_balance - = current_buffer_.size() - current_buffer_position_; - - // Check if the advance can be satisfied by the current buffer. - if (current_buffer_balance > n) - { - position_ += n; - current_buffer_position_ += n; - return; - } - - // Update position. - n -= current_buffer_balance; - position_ += current_buffer_balance; - - // Move to next buffer. If it is empty then it will be skipped on the - // next iteration of this loop. - if (++current_ == end_) - { - ASIO_ASSERT(n == 0 && "iterator out of bounds"); - current_buffer_ = buffer_type(); - current_buffer_position_ = 0; - return; - } - current_buffer_ = *current_; - current_buffer_position_ = 0; - } - } - else if (n < 0) - { - std::size_t abs_n = -n; - ASIO_ASSERT(position_ >= abs_n && "iterator out of bounds"); - for (;;) - { - // Check if the advance can be satisfied by the current buffer. - if (current_buffer_position_ >= abs_n) - { - position_ -= abs_n; - current_buffer_position_ -= abs_n; - return; - } - - // Update position. - abs_n -= current_buffer_position_; - position_ -= current_buffer_position_; - - // Check if we've reached the beginning of the buffers. - if (current_ == begin_) - { - ASIO_ASSERT(abs_n == 0 && "iterator out of bounds"); - current_buffer_position_ = 0; - return; - } - - // Find the previous non-empty buffer. - buffer_sequence_iterator_type iter = current_; - while (iter != begin_) - { - --iter; - buffer_type buffer = *iter; - std::size_t buffer_size = buffer.size(); - if (buffer_size > 0) - { - current_ = iter; - current_buffer_ = buffer; - current_buffer_position_ = buffer_size; - break; - } - } - } - } - } - - // Determine the distance between two iterators. - std::ptrdiff_t distance_to(const buffers_iterator& other) const - { - return other.position_ - position_; - } - - buffer_type current_buffer_; - std::size_t current_buffer_position_; - buffer_sequence_iterator_type begin_; - buffer_sequence_iterator_type current_; - buffer_sequence_iterator_type end_; - std::size_t position_; -}; - -/// Construct an iterator representing the beginning of the buffers' data. -template -inline buffers_iterator buffers_begin( - const BufferSequence& buffers) -{ - return buffers_iterator::begin(buffers); -} - -/// Construct an iterator representing the end of the buffers' data. -template -inline buffers_iterator buffers_end( - const BufferSequence& buffers) -{ - return buffers_iterator::end(buffers); -} - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_BUFFERS_ITERATOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/co_spawn.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/co_spawn.hpp deleted file mode 100644 index 38ee7ff4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/co_spawn.hpp +++ /dev/null @@ -1,471 +0,0 @@ -// -// co_spawn.hpp -// ~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_CO_SPAWN_HPP -#define ASIO_CO_SPAWN_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_CO_AWAIT) || defined(GENERATING_DOCUMENTATION) - -#include "asio/awaitable.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution_context.hpp" -#include "asio/is_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct awaitable_signature; - -template -struct awaitable_signature> -{ - typedef void type(std::exception_ptr, T); -}; - -template -struct awaitable_signature> -{ - typedef void type(std::exception_ptr); -}; - -} // namespace detail - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ex The executor that will be used to schedule the new thread of - * execution. - * - * @param a The asio::awaitable object that is the result of calling the - * coroutine's entry point function. - * - * @param token The completion token that will handle the notification that - * the thread of execution has completed. The function signature of the - * completion handler must be: - * @code void handler(std::exception_ptr, T); @endcode - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * std::size_t bytes_transferred = 0; - * - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * - * bytes_transferred += n; - * } - * } - * catch (const std::exception&) - * { - * } - * - * co_return bytes_transferred; - * } - * - * // ... - * - * asio::co_spawn(my_executor, - * echo(std::move(my_tcp_socket)), - * [](std::exception_ptr e, std::size_t n) - * { - * std::cout << "transferred " << n << "\n"; - * }); - * @endcode - */ -template -inline ASIO_INITFN_AUTO_RESULT_TYPE( - CompletionToken, void(std::exception_ptr, T)) -co_spawn(const Executor& ex, awaitable a, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< - (is_executor::value || execution::is_executor::value) - && is_convertible::value - >::type* = 0); - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ex The executor that will be used to schedule the new thread of - * execution. - * - * @param a The asio::awaitable object that is the result of calling the - * coroutine's entry point function. - * - * @param token The completion token that will handle the notification that - * the thread of execution has completed. The function signature of the - * completion handler must be: - * @code void handler(std::exception_ptr); @endcode - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * } - * } - * catch (const std::exception& e) - * { - * std::cerr << "Exception: " << e.what() << "\n"; - * } - * } - * - * // ... - * - * asio::co_spawn(my_executor, - * echo(std::move(my_tcp_socket)), - * asio::detached); - * @endcode - */ -template -inline ASIO_INITFN_AUTO_RESULT_TYPE( - CompletionToken, void(std::exception_ptr)) -co_spawn(const Executor& ex, awaitable a, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< - (is_executor::value || execution::is_executor::value) - && is_convertible::value - >::type* = 0); - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ctx An execution context that will provide the executor to be used to - * schedule the new thread of execution. - * - * @param a The asio::awaitable object that is the result of calling the - * coroutine's entry point function. - * - * @param token The completion token that will handle the notification that - * the thread of execution has completed. The function signature of the - * completion handler must be: - * @code void handler(std::exception_ptr); @endcode - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * std::size_t bytes_transferred = 0; - * - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * - * bytes_transferred += n; - * } - * } - * catch (const std::exception&) - * { - * } - * - * co_return bytes_transferred; - * } - * - * // ... - * - * asio::co_spawn(my_io_context, - * echo(std::move(my_tcp_socket)), - * [](std::exception_ptr e, std::size_t n) - * { - * std::cout << "transferred " << n << "\n"; - * }); - * @endcode - */ -template -inline ASIO_INITFN_AUTO_RESULT_TYPE( - CompletionToken, void(std::exception_ptr, T)) -co_spawn(ExecutionContext& ctx, awaitable a, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN( - typename ExecutionContext::executor_type), - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0); - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ctx An execution context that will provide the executor to be used to - * schedule the new thread of execution. - * - * @param a The asio::awaitable object that is the result of calling the - * coroutine's entry point function. - * - * @param token The completion token that will handle the notification that - * the thread of execution has completed. The function signature of the - * completion handler must be: - * @code void handler(std::exception_ptr); @endcode - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * } - * } - * catch (const std::exception& e) - * { - * std::cerr << "Exception: " << e.what() << "\n"; - * } - * } - * - * // ... - * - * asio::co_spawn(my_io_context, - * echo(std::move(my_tcp_socket)), - * asio::detached); - * @endcode - */ -template -inline ASIO_INITFN_AUTO_RESULT_TYPE( - CompletionToken, void(std::exception_ptr)) -co_spawn(ExecutionContext& ctx, awaitable a, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN( - typename ExecutionContext::executor_type), - typename enable_if< - is_convertible::value - && is_convertible::value - >::type* = 0); - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ex The executor that will be used to schedule the new thread of - * execution. - * - * @param f A nullary function object with a return type of the form - * @c asio::awaitable that will be used as the coroutine's entry - * point. - * - * @param token The completion token that will handle the notification that the - * thread of execution has completed. If @c R is @c void, the function - * signature of the completion handler must be: - * - * @code void handler(std::exception_ptr); @endcode - * Otherwise, the function signature of the completion handler must be: - * @code void handler(std::exception_ptr, R); @endcode - * - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * std::size_t bytes_transferred = 0; - * - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * - * bytes_transferred += n; - * } - * } - * catch (const std::exception&) - * { - * } - * - * co_return bytes_transferred; - * } - * - * // ... - * - * asio::co_spawn(my_executor, - * [socket = std::move(my_tcp_socket)]() mutable - * -> asio::awaitable - * { - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * } - * } - * catch (const std::exception& e) - * { - * std::cerr << "Exception: " << e.what() << "\n"; - * } - * }, asio::detached); - * @endcode - */ -template ::type>::type) CompletionToken - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(Executor)> -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, - typename detail::awaitable_signature::type>::type) -co_spawn(const Executor& ex, F&& f, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< - is_executor::value || execution::is_executor::value - >::type* = 0); - -/// Spawn a new coroutined-based thread of execution. -/** - * @param ctx An execution context that will provide the executor to be used to - * schedule the new thread of execution. - * - * @param f A nullary function object with a return type of the form - * @c asio::awaitable that will be used as the coroutine's entry - * point. - * - * @param token The completion token that will handle the notification that the - * thread of execution has completed. If @c R is @c void, the function - * signature of the completion handler must be: - * - * @code void handler(std::exception_ptr); @endcode - * Otherwise, the function signature of the completion handler must be: - * @code void handler(std::exception_ptr, R); @endcode - * - * - * @par Example - * @code - * asio::awaitable echo(tcp::socket socket) - * { - * std::size_t bytes_transferred = 0; - * - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * - * bytes_transferred += n; - * } - * } - * catch (const std::exception&) - * { - * } - * - * co_return bytes_transferred; - * } - * - * // ... - * - * asio::co_spawn(my_io_context, - * [socket = std::move(my_tcp_socket)]() mutable - * -> asio::awaitable - * { - * try - * { - * char data[1024]; - * for (;;) - * { - * std::size_t n = co_await socket.async_read_some( - * asio::buffer(data), asio::use_awaitable); - * - * co_await asio::async_write(socket, - * asio::buffer(data, n), asio::use_awaitable); - * } - * } - * catch (const std::exception& e) - * { - * std::cerr << "Exception: " << e.what() << "\n"; - * } - * }, asio::detached); - * @endcode - */ -template ::type>::type) CompletionToken - ASIO_DEFAULT_COMPLETION_TOKEN_TYPE( - typename ExecutionContext::executor_type)> -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, - typename detail::awaitable_signature::type>::type) -co_spawn(ExecutionContext& ctx, F&& f, - CompletionToken&& token - ASIO_DEFAULT_COMPLETION_TOKEN( - typename ExecutionContext::executor_type), - typename enable_if< - is_convertible::value - >::type* = 0); - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/co_spawn.hpp" - -#endif // defined(ASIO_HAS_CO_AWAIT) || defined(GENERATING_DOCUMENTATION) - -#endif // ASIO_CO_SPAWN_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/completion_condition.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/completion_condition.hpp deleted file mode 100644 index 3df57893..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/completion_condition.hpp +++ /dev/null @@ -1,218 +0,0 @@ -// -// completion_condition.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_COMPLETION_CONDITION_HPP -#define ASIO_COMPLETION_CONDITION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { - -namespace detail { - -// The default maximum number of bytes to transfer in a single operation. -enum default_max_transfer_size_t { default_max_transfer_size = 65536 }; - -// Adapt result of old-style completion conditions (which had a bool result -// where true indicated that the operation was complete). -inline std::size_t adapt_completion_condition_result(bool result) -{ - return result ? 0 : default_max_transfer_size; -} - -// Adapt result of current completion conditions (which have a size_t result -// where 0 means the operation is complete, and otherwise the result is the -// maximum number of bytes to transfer on the next underlying operation). -inline std::size_t adapt_completion_condition_result(std::size_t result) -{ - return result; -} - -class transfer_all_t -{ -public: - typedef std::size_t result_type; - - template - std::size_t operator()(const Error& err, std::size_t) - { - return !!err ? 0 : default_max_transfer_size; - } -}; - -class transfer_at_least_t -{ -public: - typedef std::size_t result_type; - - explicit transfer_at_least_t(std::size_t minimum) - : minimum_(minimum) - { - } - - template - std::size_t operator()(const Error& err, std::size_t bytes_transferred) - { - return (!!err || bytes_transferred >= minimum_) - ? 0 : default_max_transfer_size; - } - -private: - std::size_t minimum_; -}; - -class transfer_exactly_t -{ -public: - typedef std::size_t result_type; - - explicit transfer_exactly_t(std::size_t size) - : size_(size) - { - } - - template - std::size_t operator()(const Error& err, std::size_t bytes_transferred) - { - return (!!err || bytes_transferred >= size_) ? 0 : - (size_ - bytes_transferred < default_max_transfer_size - ? size_ - bytes_transferred : std::size_t(default_max_transfer_size)); - } - -private: - std::size_t size_; -}; - -} // namespace detail - -/** - * @defgroup completion_condition Completion Condition Function Objects - * - * Function objects used for determining when a read or write operation should - * complete. - */ -/*@{*/ - -/// Return a completion condition function object that indicates that a read or -/// write operation should continue until all of the data has been transferred, -/// or until an error occurs. -/** - * This function is used to create an object, of unspecified type, that meets - * CompletionCondition requirements. - * - * @par Example - * Reading until a buffer is full: - * @code - * boost::array buf; - * asio::error_code ec; - * std::size_t n = asio::read( - * sock, asio::buffer(buf), - * asio::transfer_all(), ec); - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * // n == 128 - * } - * @endcode - */ -#if defined(GENERATING_DOCUMENTATION) -unspecified transfer_all(); -#else -inline detail::transfer_all_t transfer_all() -{ - return detail::transfer_all_t(); -} -#endif - -/// Return a completion condition function object that indicates that a read or -/// write operation should continue until a minimum number of bytes has been -/// transferred, or until an error occurs. -/** - * This function is used to create an object, of unspecified type, that meets - * CompletionCondition requirements. - * - * @par Example - * Reading until a buffer is full or contains at least 64 bytes: - * @code - * boost::array buf; - * asio::error_code ec; - * std::size_t n = asio::read( - * sock, asio::buffer(buf), - * asio::transfer_at_least(64), ec); - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * // n >= 64 && n <= 128 - * } - * @endcode - */ -#if defined(GENERATING_DOCUMENTATION) -unspecified transfer_at_least(std::size_t minimum); -#else -inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum) -{ - return detail::transfer_at_least_t(minimum); -} -#endif - -/// Return a completion condition function object that indicates that a read or -/// write operation should continue until an exact number of bytes has been -/// transferred, or until an error occurs. -/** - * This function is used to create an object, of unspecified type, that meets - * CompletionCondition requirements. - * - * @par Example - * Reading until a buffer is full or contains exactly 64 bytes: - * @code - * boost::array buf; - * asio::error_code ec; - * std::size_t n = asio::read( - * sock, asio::buffer(buf), - * asio::transfer_exactly(64), ec); - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * // n == 64 - * } - * @endcode - */ -#if defined(GENERATING_DOCUMENTATION) -unspecified transfer_exactly(std::size_t size); -#else -inline detail::transfer_exactly_t transfer_exactly(std::size_t size) -{ - return detail::transfer_exactly_t(size); -} -#endif - -/*@}*/ - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_COMPLETION_CONDITION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/compose.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/compose.hpp deleted file mode 100644 index fbbb4fe4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/compose.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// -// compose.hpp -// ~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_COMPOSE_HPP -#define ASIO_COMPOSE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/async_result.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - -/// Launch an asynchronous operation with a stateful implementation. -/** - * The async_compose function simplifies the implementation of composed - * asynchronous operations automatically wrapping a stateful function object - * with a conforming intermediate completion handler. - * - * @param implementation A function object that contains the implementation of - * the composed asynchronous operation. The first argument to the function - * object is a non-const reference to the enclosing intermediate completion - * handler. The remaining arguments are any arguments that originate from the - * completion handlers of any asynchronous operations performed by the - * implementation. - - * @param token The completion token. - * - * @param io_objects_or_executors Zero or more I/O objects or I/O executors for - * which outstanding work must be maintained. - * - * @par Example: - * - * @code struct async_echo_implementation - * { - * tcp::socket& socket_; - * asio::mutable_buffer buffer_; - * enum { starting, reading, writing } state_; - * - * template - * void operator()(Self& self, - * asio::error_code error = {}, - * std::size_t n = 0) - * { - * switch (state_) - * { - * case starting: - * state_ = reading; - * socket_.async_read_some( - * buffer_, std::move(self)); - * break; - * case reading: - * if (error) - * { - * self.complete(error, 0); - * } - * else - * { - * state_ = writing; - * asio::async_write(socket_, buffer_, - * asio::transfer_exactly(n), - * std::move(self)); - * } - * break; - * case writing: - * self.complete(error, n); - * break; - * } - * } - * }; - * - * template - * auto async_echo(tcp::socket& socket, - * asio::mutable_buffer buffer, - * CompletionToken&& token) -> - * typename asio::async_result< - * typename std::decay::type, - * void(asio::error_code, std::size_t)>::return_type - * { - * return asio::async_compose( - * async_echo_implementation{socket, buffer, - * async_echo_implementation::starting}, - * token, socket); - * } @endcode - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, Signature) -async_compose(ASIO_MOVE_ARG(Implementation) implementation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, - ASIO_MOVE_ARG(IoObjectsOrExecutors)... io_objects_or_executors); - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, Signature) -async_compose(ASIO_MOVE_ARG(Implementation) implementation, - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token); - -#define ASIO_PRIVATE_ASYNC_COMPOSE_DEF(n) \ - template \ - ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, Signature) \ - async_compose(ASIO_MOVE_ARG(Implementation) implementation, \ - ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - ASIO_VARIADIC_MOVE_PARAMS(n)); - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ASYNC_COMPOSE_DEF) -#undef ASIO_PRIVATE_ASYNC_COMPOSE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/compose.hpp" - -#endif // ASIO_COMPOSE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/connect.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/connect.hpp deleted file mode 100644 index 46a890c5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/connect.hpp +++ /dev/null @@ -1,1076 +0,0 @@ -// -// connect.hpp -// ~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_CONNECT_HPP -#define ASIO_CONNECT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/async_result.hpp" -#include "asio/basic_socket.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -namespace detail -{ - char (&has_iterator_helper(...))[2]; - - template - char has_iterator_helper(T*, typename T::iterator* = 0); - - template - struct has_iterator_typedef - { - enum { value = (sizeof((has_iterator_helper)((T*)(0))) == 1) }; - }; -} // namespace detail - -/// Type trait used to determine whether a type is an endpoint sequence that can -/// be used with with @c connect and @c async_connect. -template -struct is_endpoint_sequence -{ -#if defined(GENERATING_DOCUMENTATION) - /// The value member is true if the type may be used as an endpoint sequence. - static const bool value; -#else - enum - { - value = detail::has_iterator_typedef::value - }; -#endif -}; - -/** - * @defgroup connect asio::connect - * - * @brief The @c connect function is a composed operation that establishes a - * socket connection by trying each endpoint in a sequence. - */ -/*@{*/ - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @returns The successfully connected endpoint. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @par Example - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * asio::connect(s, r.resolve(q)); @endcode - */ -template -typename Protocol::endpoint connect(basic_socket& s, - const EndpointSequence& endpoints, - typename enable_if::value>::type* = 0); - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, the successfully connected endpoint. Otherwise, a - * default-constructed endpoint. - * - * @par Example - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * asio::error_code ec; - * asio::connect(s, r.resolve(q), ec); - * if (ec) - * { - * // An error occurred. - * } @endcode - */ -template -typename Protocol::endpoint connect(basic_socket& s, - const EndpointSequence& endpoints, asio::error_code& ec, - typename enable_if::value>::type* = 0); - -#if !defined(ASIO_NO_DEPRECATED) -/// (Deprecated: Use range overload.) Establishes a socket connection by trying -/// each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -Iterator connect(basic_socket& s, Iterator begin, - typename enable_if::value>::type* = 0); - -/// (Deprecated: Use range overload.) Establishes a socket connection by trying -/// each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -Iterator connect(basic_socket& s, - Iterator begin, asio::error_code& ec, - typename enable_if::value>::type* = 0); -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @returns An iterator denoting the successfully connected endpoint. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @par Example - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::resolver::results_type e = r.resolve(q); - * tcp::socket s(my_context); - * asio::connect(s, e.begin(), e.end()); @endcode - */ -template -Iterator connect(basic_socket& s, - Iterator begin, Iterator end); - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @par Example - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::resolver::results_type e = r.resolve(q); - * tcp::socket s(my_context); - * asio::error_code ec; - * asio::connect(s, e.begin(), e.end(), ec); - * if (ec) - * { - * // An error occurred. - * } @endcode - */ -template -Iterator connect(basic_socket& s, - Iterator begin, Iterator end, asio::error_code& ec); - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @returns The successfully connected endpoint. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * tcp::endpoint e = asio::connect(s, - * r.resolve(q), my_connect_condition()); - * std::cout << "Connected to: " << e << std::endl; @endcode - */ -template -typename Protocol::endpoint connect(basic_socket& s, - const EndpointSequence& endpoints, ConnectCondition connect_condition, - typename enable_if::value>::type* = 0); - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, the successfully connected endpoint. Otherwise, a - * default-constructed endpoint. - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * asio::error_code ec; - * tcp::endpoint e = asio::connect(s, - * r.resolve(q), my_connect_condition(), ec); - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * std::cout << "Connected to: " << e << std::endl; - * } @endcode - */ -template -typename Protocol::endpoint connect(basic_socket& s, - const EndpointSequence& endpoints, ConnectCondition connect_condition, - asio::error_code& ec, - typename enable_if::value>::type* = 0); - -#if !defined(ASIO_NO_DEPRECATED) -/// (Deprecated: Use range overload.) Establishes a socket connection by trying -/// each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -Iterator connect(basic_socket& s, - Iterator begin, ConnectCondition connect_condition, - typename enable_if::value>::type* = 0); - -/// (Deprecated: Use range overload.) Establishes a socket connection by trying -/// each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -Iterator connect(basic_socket& s, Iterator begin, - ConnectCondition connect_condition, asio::error_code& ec, - typename enable_if::value>::type* = 0); -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @returns An iterator denoting the successfully connected endpoint. - * - * @throws asio::system_error Thrown on failure. If the sequence is - * empty, the associated @c error_code is asio::error::not_found. - * Otherwise, contains the error from the last connection attempt. - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::resolver::results_type e = r.resolve(q); - * tcp::socket s(my_context); - * tcp::resolver::results_type::iterator i = asio::connect( - * s, e.begin(), e.end(), my_connect_condition()); - * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode - */ -template -Iterator connect(basic_socket& s, Iterator begin, - Iterator end, ConnectCondition connect_condition); - -/// Establishes a socket connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c connect member - * function, once for each endpoint in the sequence, until a connection is - * successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param ec Set to indicate what error occurred, if any. If the sequence is - * empty, set to asio::error::not_found. Otherwise, contains the error - * from the last connection attempt. - * - * @returns On success, an iterator denoting the successfully connected - * endpoint. Otherwise, the end iterator. - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::resolver::results_type e = r.resolve(q); - * tcp::socket s(my_context); - * asio::error_code ec; - * tcp::resolver::results_type::iterator i = asio::connect( - * s, e.begin(), e.end(), my_connect_condition()); - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * std::cout << "Connected to: " << i->endpoint() << std::endl; - * } @endcode - */ -template -Iterator connect(basic_socket& s, - Iterator begin, Iterator end, ConnectCondition connect_condition, - asio::error_code& ec); - -/*@}*/ - -/** - * @defgroup async_connect asio::async_connect - * - * @brief The @c async_connect function is a composed asynchronous operation - * that establishes a socket connection by trying each endpoint in a sequence. - */ -/*@{*/ - -/// Asynchronously establishes a socket connection by trying each endpoint in a -/// sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, the successfully connected endpoint. - * // Otherwise, a default-constructed endpoint. - * const typename Protocol::endpoint& endpoint - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * - * // ... - * - * r.async_resolve(q, resolve_handler); - * - * // ... - * - * void resolve_handler( - * const asio::error_code& ec, - * tcp::resolver::results_type results) - * { - * if (!ec) - * { - * asio::async_connect(s, results, connect_handler); - * } - * } - * - * // ... - * - * void connect_handler( - * const asio::error_code& ec, - * const tcp::endpoint& endpoint) - * { - * // ... - * } @endcode - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler, - void (asio::error_code, typename Protocol::endpoint)) -async_connect(basic_socket& s, - const EndpointSequence& endpoints, - ASIO_MOVE_ARG(RangeConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); - -#if !defined(ASIO_NO_DEPRECATED) -/// (Deprecated: Use range overload.) Asynchronously establishes a socket -/// connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, an iterator denoting the successfully - * // connected endpoint. Otherwise, the end iterator. - * Iterator iterator - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, - void (asio::error_code, Iterator)) -async_connect(basic_socket& s, Iterator begin, - ASIO_MOVE_ARG(IteratorConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Asynchronously establishes a socket connection by trying each endpoint in a -/// sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, an iterator denoting the successfully - * // connected endpoint. Otherwise, the end iterator. - * Iterator iterator - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * @code std::vector endpoints = ...; - * tcp::socket s(my_context); - * asio::async_connect(s, - * endpoints.begin(), endpoints.end(), - * connect_handler); - * - * // ... - * - * void connect_handler( - * const asio::error_code& ec, - * std::vector::iterator i) - * { - * // ... - * } @endcode - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, - void (asio::error_code, Iterator)) -async_connect(basic_socket& s, Iterator begin, Iterator end, - ASIO_MOVE_ARG(IteratorConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor)); - -/// Asynchronously establishes a socket connection by trying each endpoint in a -/// sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param endpoints A sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, an iterator denoting the successfully - * // connected endpoint. Otherwise, the end iterator. - * Iterator iterator - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * - * // ... - * - * r.async_resolve(q, resolve_handler); - * - * // ... - * - * void resolve_handler( - * const asio::error_code& ec, - * tcp::resolver::results_type results) - * { - * if (!ec) - * { - * asio::async_connect(s, results, - * my_connect_condition(), - * connect_handler); - * } - * } - * - * // ... - * - * void connect_handler( - * const asio::error_code& ec, - * const tcp::endpoint& endpoint) - * { - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * std::cout << "Connected to: " << endpoint << std::endl; - * } - * } @endcode - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler, - void (asio::error_code, typename Protocol::endpoint)) -async_connect(basic_socket& s, - const EndpointSequence& endpoints, ConnectCondition connect_condition, - ASIO_MOVE_ARG(RangeConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); - -#if !defined(ASIO_NO_DEPRECATED) -/// (Deprecated: Use range overload.) Asynchronously establishes a socket -/// connection by trying each endpoint in a sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, an iterator denoting the successfully - * // connected endpoint. Otherwise, the end iterator. - * Iterator iterator - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @note This overload assumes that a default constructed object of type @c - * Iterator represents the end of the sequence. This is a valid assumption for - * iterator types such as @c asio::ip::tcp::resolver::iterator. - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, - void (asio::error_code, Iterator)) -async_connect(basic_socket& s, Iterator begin, - ConnectCondition connect_condition, - ASIO_MOVE_ARG(IteratorConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if::value>::type* = 0); -#endif // !defined(ASIO_NO_DEPRECATED) - -/// Asynchronously establishes a socket connection by trying each endpoint in a -/// sequence. -/** - * This function attempts to connect a socket to one of a sequence of - * endpoints. It does this by repeated calls to the socket's @c async_connect - * member function, once for each endpoint in the sequence, until a connection - * is successfully established. - * - * @param s The socket to be connected. If the socket is already open, it will - * be closed. - * - * @param begin An iterator pointing to the start of a sequence of endpoints. - * - * @param end An iterator pointing to the end of a sequence of endpoints. - * - * @param connect_condition A function object that is called prior to each - * connection attempt. The signature of the function object must be: - * @code bool connect_condition( - * const asio::error_code& ec, - * const typename Protocol::endpoint& next); @endcode - * The @c ec parameter contains the result from the most recent connect - * operation. Before the first connection attempt, @c ec is always set to - * indicate success. The @c next parameter is the next endpoint to be tried. - * The function object should return true if the next endpoint should be tried, - * and false if it should be skipped. - * - * @param handler The handler to be called when the connect operation - * completes. Copies will be made of the handler as required. The function - * signature of the handler must be: - * @code void handler( - * // Result of operation. if the sequence is empty, set to - * // asio::error::not_found. Otherwise, contains the - * // error from the last connection attempt. - * const asio::error_code& error, - * - * // On success, an iterator denoting the successfully - * // connected endpoint. Otherwise, the end iterator. - * Iterator iterator - * ); @endcode - * Regardless of whether the asynchronous operation completes immediately or - * not, the handler will not be invoked from within this function. On - * immediate completion, invocation of the handler will be performed in a - * manner equivalent to using asio::post(). - * - * @par Example - * The following connect condition function object can be used to output - * information about the individual connection attempts: - * @code struct my_connect_condition - * { - * bool operator()( - * const asio::error_code& ec, - * const::tcp::endpoint& next) - * { - * if (ec) std::cout << "Error: " << ec.message() << std::endl; - * std::cout << "Trying: " << next << std::endl; - * return true; - * } - * }; @endcode - * It would be used with the asio::connect function as follows: - * @code tcp::resolver r(my_context); - * tcp::resolver::query q("host", "service"); - * tcp::socket s(my_context); - * - * // ... - * - * r.async_resolve(q, resolve_handler); - * - * // ... - * - * void resolve_handler( - * const asio::error_code& ec, - * tcp::resolver::iterator i) - * { - * if (!ec) - * { - * tcp::resolver::iterator end; - * asio::async_connect(s, i, end, - * my_connect_condition(), - * connect_handler); - * } - * } - * - * // ... - * - * void connect_handler( - * const asio::error_code& ec, - * tcp::resolver::iterator i) - * { - * if (ec) - * { - * // An error occurred. - * } - * else - * { - * std::cout << "Connected to: " << i->endpoint() << std::endl; - * } - * } @endcode - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler, - void (asio::error_code, Iterator)) -async_connect(basic_socket& s, Iterator begin, - Iterator end, ConnectCondition connect_condition, - ASIO_MOVE_ARG(IteratorConnectHandler) handler - ASIO_DEFAULT_COMPLETION_TOKEN(Executor)); - -/*@}*/ - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/connect.hpp" - -#endif diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/coroutine.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/coroutine.hpp deleted file mode 100644 index b970bbad..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/coroutine.hpp +++ /dev/null @@ -1,328 +0,0 @@ -// -// coroutine.hpp -// ~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_COROUTINE_HPP -#define ASIO_COROUTINE_HPP - -namespace asio { -namespace detail { - -class coroutine_ref; - -} // namespace detail - -/// Provides support for implementing stackless coroutines. -/** - * The @c coroutine class may be used to implement stackless coroutines. The - * class itself is used to store the current state of the coroutine. - * - * Coroutines are copy-constructible and assignable, and the space overhead is - * a single int. They can be used as a base class: - * - * @code class session : coroutine - * { - * ... - * }; @endcode - * - * or as a data member: - * - * @code class session - * { - * ... - * coroutine coro_; - * }; @endcode - * - * or even bound in as a function argument using lambdas or @c bind(). The - * important thing is that as the application maintains a copy of the object - * for as long as the coroutine must be kept alive. - * - * @par Pseudo-keywords - * - * A coroutine is used in conjunction with certain "pseudo-keywords", which - * are implemented as macros. These macros are defined by a header file: - * - * @code #include @endcode - * - * and may conversely be undefined as follows: - * - * @code #include @endcode - * - * reenter - * - * The @c reenter macro is used to define the body of a coroutine. It takes a - * single argument: a pointer or reference to a coroutine object. For example, - * if the base class is a coroutine object you may write: - * - * @code reenter (this) - * { - * ... coroutine body ... - * } @endcode - * - * and if a data member or other variable you can write: - * - * @code reenter (coro_) - * { - * ... coroutine body ... - * } @endcode - * - * When @c reenter is executed at runtime, control jumps to the location of the - * last @c yield or @c fork. - * - * The coroutine body may also be a single statement, such as: - * - * @code reenter (this) for (;;) - * { - * ... - * } @endcode - * - * @b Limitation: The @c reenter macro is implemented using a switch. This - * means that you must take care when using local variables within the - * coroutine body. The local variable is not allowed in a position where - * reentering the coroutine could bypass the variable definition. - * - * yield statement - * - * This form of the @c yield keyword is often used with asynchronous operations: - * - * @code yield socket_->async_read_some(buffer(*buffer_), *this); @endcode - * - * This divides into four logical steps: - * - * @li @c yield saves the current state of the coroutine. - * @li The statement initiates the asynchronous operation. - * @li The resume point is defined immediately following the statement. - * @li Control is transferred to the end of the coroutine body. - * - * When the asynchronous operation completes, the function object is invoked - * and @c reenter causes control to transfer to the resume point. It is - * important to remember to carry the coroutine state forward with the - * asynchronous operation. In the above snippet, the current class is a - * function object object with a coroutine object as base class or data member. - * - * The statement may also be a compound statement, and this permits us to - * define local variables with limited scope: - * - * @code yield - * { - * mutable_buffers_1 b = buffer(*buffer_); - * socket_->async_read_some(b, *this); - * } @endcode - * - * yield return expression ; - * - * This form of @c yield is often used in generators or coroutine-based parsers. - * For example, the function object: - * - * @code struct interleave : coroutine - * { - * istream& is1; - * istream& is2; - * char operator()(char c) - * { - * reenter (this) for (;;) - * { - * yield return is1.get(); - * yield return is2.get(); - * } - * } - * }; @endcode - * - * defines a trivial coroutine that interleaves the characters from two input - * streams. - * - * This type of @c yield divides into three logical steps: - * - * @li @c yield saves the current state of the coroutine. - * @li The resume point is defined immediately following the semicolon. - * @li The value of the expression is returned from the function. - * - * yield ; - * - * This form of @c yield is equivalent to the following steps: - * - * @li @c yield saves the current state of the coroutine. - * @li The resume point is defined immediately following the semicolon. - * @li Control is transferred to the end of the coroutine body. - * - * This form might be applied when coroutines are used for cooperative - * threading and scheduling is explicitly managed. For example: - * - * @code struct task : coroutine - * { - * ... - * void operator()() - * { - * reenter (this) - * { - * while (... not finished ...) - * { - * ... do something ... - * yield; - * ... do some more ... - * yield; - * } - * } - * } - * ... - * }; - * ... - * task t1, t2; - * for (;;) - * { - * t1(); - * t2(); - * } @endcode - * - * yield break ; - * - * The final form of @c yield is used to explicitly terminate the coroutine. - * This form is comprised of two steps: - * - * @li @c yield sets the coroutine state to indicate termination. - * @li Control is transferred to the end of the coroutine body. - * - * Once terminated, calls to is_complete() return true and the coroutine cannot - * be reentered. - * - * Note that a coroutine may also be implicitly terminated if the coroutine - * body is exited without a yield, e.g. by return, throw or by running to the - * end of the body. - * - * fork statement - * - * The @c fork pseudo-keyword is used when "forking" a coroutine, i.e. splitting - * it into two (or more) copies. One use of @c fork is in a server, where a new - * coroutine is created to handle each client connection: - * - * @code reenter (this) - * { - * do - * { - * socket_.reset(new tcp::socket(my_context_)); - * yield acceptor->async_accept(*socket_, *this); - * fork server(*this)(); - * } while (is_parent()); - * ... client-specific handling follows ... - * } @endcode - * - * The logical steps involved in a @c fork are: - * - * @li @c fork saves the current state of the coroutine. - * @li The statement creates a copy of the coroutine and either executes it - * immediately or schedules it for later execution. - * @li The resume point is defined immediately following the semicolon. - * @li For the "parent", control immediately continues from the next line. - * - * The functions is_parent() and is_child() can be used to differentiate - * between parent and child. You would use these functions to alter subsequent - * control flow. - * - * Note that @c fork doesn't do the actual forking by itself. It is the - * application's responsibility to create a clone of the coroutine and call it. - * The clone can be called immediately, as above, or scheduled for delayed - * execution using something like asio::post(). - * - * @par Alternate macro names - * - * If preferred, an application can use macro names that follow a more typical - * naming convention, rather than the pseudo-keywords. These are: - * - * @li @c ASIO_CORO_REENTER instead of @c reenter - * @li @c ASIO_CORO_YIELD instead of @c yield - * @li @c ASIO_CORO_FORK instead of @c fork - */ -class coroutine -{ -public: - /// Constructs a coroutine in its initial state. - coroutine() : value_(0) {} - - /// Returns true if the coroutine is the child of a fork. - bool is_child() const { return value_ < 0; } - - /// Returns true if the coroutine is the parent of a fork. - bool is_parent() const { return !is_child(); } - - /// Returns true if the coroutine has reached its terminal state. - bool is_complete() const { return value_ == -1; } - -private: - friend class detail::coroutine_ref; - int value_; -}; - - -namespace detail { - -class coroutine_ref -{ -public: - coroutine_ref(coroutine& c) : value_(c.value_), modified_(false) {} - coroutine_ref(coroutine* c) : value_(c->value_), modified_(false) {} - ~coroutine_ref() { if (!modified_) value_ = -1; } - operator int() const { return value_; } - int& operator=(int v) { modified_ = true; return value_ = v; } -private: - void operator=(const coroutine_ref&); - int& value_; - bool modified_; -}; - -} // namespace detail -} // namespace asio - -#define ASIO_CORO_REENTER(c) \ - switch (::asio::detail::coroutine_ref _coro_value = c) \ - case -1: if (_coro_value) \ - { \ - goto terminate_coroutine; \ - terminate_coroutine: \ - _coro_value = -1; \ - goto bail_out_of_coroutine; \ - bail_out_of_coroutine: \ - break; \ - } \ - else /* fall-through */ case 0: - -#define ASIO_CORO_YIELD_IMPL(n) \ - for (_coro_value = (n);;) \ - if (_coro_value == 0) \ - { \ - case (n): ; \ - break; \ - } \ - else \ - switch (_coro_value ? 0 : 1) \ - for (;;) \ - /* fall-through */ case -1: if (_coro_value) \ - goto terminate_coroutine; \ - else for (;;) \ - /* fall-through */ case 1: if (_coro_value) \ - goto bail_out_of_coroutine; \ - else /* fall-through */ case 0: - -#define ASIO_CORO_FORK_IMPL(n) \ - for (_coro_value = -(n);; _coro_value = (n)) \ - if (_coro_value == (n)) \ - { \ - case -(n): ; \ - break; \ - } \ - else - -#if defined(_MSC_VER) -# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__COUNTER__ + 1) -# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__COUNTER__ + 1) -#else // defined(_MSC_VER) -# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__LINE__) -# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__LINE__) -#endif // defined(_MSC_VER) - -#endif // ASIO_COROUTINE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/deadline_timer.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/deadline_timer.hpp deleted file mode 100644 index 22880278..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/deadline_timer.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// -// deadline_timer.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DEADLINE_TIMER_HPP -#define ASIO_DEADLINE_TIMER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) \ - || defined(GENERATING_DOCUMENTATION) - -#include "asio/detail/socket_types.hpp" // Must come before posix_time. -#include "asio/basic_deadline_timer.hpp" - -#include - -namespace asio { - -/// Typedef for the typical usage of timer. Uses a UTC clock. -typedef basic_deadline_timer deadline_timer; - -} // namespace asio - -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - // || defined(GENERATING_DOCUMENTATION) - -#endif // ASIO_DEADLINE_TIMER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/defer.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/defer.hpp deleted file mode 100644 index a034ff0b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/defer.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// -// defer.hpp -// ~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DEFER_HPP -#define ASIO_DEFER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/async_result.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution_context.hpp" -#include "asio/execution/executor.hpp" -#include "asio/is_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Submits a completion token or function object for execution. -/** - * This function submits an object for execution using the object's associated - * executor. The function object is queued for execution, and is never called - * from the current thread prior to returning from defer(). - * - * The use of @c defer(), rather than @ref post(), indicates the caller's - * preference that the executor defer the queueing of the function object. This - * may allow the executor to optimise queueing for cases when the function - * object represents a continuation of the current call context. - * - * This function has the following effects: - * - * @li Constructs a function object handler of type @c Handler, initialized - * with handler(forward(token)). - * - * @li Constructs an object @c result of type async_result, - * initializing the object as result(handler). - * - * @li Obtains the handler's associated executor object @c ex by performing - * get_associated_executor(handler). - * - * @li Obtains the handler's associated allocator object @c alloc by performing - * get_associated_allocator(handler). - * - * @li Performs ex.defer(std::move(handler), alloc). - * - * @li Returns result.get(). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( - ASIO_MOVE_ARG(CompletionToken) token); - -/// Submits a completion token or function object for execution. -/** - * This function submits an object for execution using the specified executor. - * The function object is queued for execution, and is never called from the - * current thread prior to returning from defer(). - * - * The use of @c defer(), rather than @ref post(), indicates the caller's - * preference that the executor defer the queueing of the function object. This - * may allow the executor to optimise queueing for cases when the function - * object represents a continuation of the current call context. - * - * This function has the following effects: - * - * @li Constructs a function object handler of type @c Handler, initialized - * with handler(forward(token)). - * - * @li Constructs an object @c result of type async_result, - * initializing the object as result(handler). - * - * @li Obtains the handler's associated executor object @c ex1 by performing - * get_associated_executor(handler). - * - * @li Creates a work object @c w by performing make_work(ex1). - * - * @li Obtains the handler's associated allocator object @c alloc by performing - * get_associated_allocator(handler). - * - * @li Constructs a function object @c f with a function call operator that - * performs ex1.dispatch(std::move(handler), alloc) followed by - * w.reset(). - * - * @li Performs Executor(ex).defer(std::move(f), alloc). - * - * @li Returns result.get(). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( - const Executor& ex, - ASIO_MOVE_ARG(CompletionToken) token - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< - execution::is_executor::value || is_executor::value - >::type* = 0); - -/// Submits a completion token or function object for execution. -/** - * @returns defer(ctx.get_executor(), forward(token)). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) defer( - ExecutionContext& ctx, - ASIO_MOVE_ARG(CompletionToken) token - ASIO_DEFAULT_COMPLETION_TOKEN( - typename ExecutionContext::executor_type), - typename enable_if::value>::type* = 0); - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/defer.hpp" - -#endif // ASIO_DEFER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detached.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detached.hpp deleted file mode 100644 index d53879d9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detached.hpp +++ /dev/null @@ -1,112 +0,0 @@ -// -// detached.hpp -// ~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETACHED_HPP -#define ASIO_DETACHED_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Class used to specify that an asynchronous operation is detached. -/** - - * The detached_t class is used to indicate that an asynchronous operation is - * detached. That is, there is no completion handler waiting for the - * operation's result. A detached_t object may be passed as a handler to an - * asynchronous operation, typically using the special value - * @c asio::detached. For example: - - * @code my_socket.async_send(my_buffer, asio::detached); - * @endcode - */ -class detached_t -{ -public: - /// Constructor. - ASIO_CONSTEXPR detached_t() - { - } - - /// Adapts an executor to add the @c detached_t completion token as the - /// default. - template - struct executor_with_default : InnerExecutor - { - /// Specify @c detached_t as the default completion token type. - typedef detached_t default_completion_token_type; - - /// Construct the adapted executor from the inner executor type. - executor_with_default(const InnerExecutor& ex) ASIO_NOEXCEPT - : InnerExecutor(ex) - { - } - - /// Convert the specified executor to the inner executor type, then use - /// that to construct the adapted executor. - template - executor_with_default(const OtherExecutor& ex, - typename enable_if< - is_convertible::value - >::type* = 0) ASIO_NOEXCEPT - : InnerExecutor(ex) - { - } - }; - - /// Type alias to adapt an I/O object to use @c detached_t as its - /// default completion token type. -#if defined(ASIO_HAS_ALIAS_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - template - using as_default_on_t = typename T::template rebind_executor< - executor_with_default >::other; -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - - /// Function helper to adapt an I/O object to use @c detached_t as its - /// default completion token type. - template - static typename decay::type::template rebind_executor< - executor_with_default::type::executor_type> - >::other - as_default_on(ASIO_MOVE_ARG(T) object) - { - return typename decay::type::template rebind_executor< - executor_with_default::type::executor_type> - >::other(ASIO_MOVE_CAST(T)(object)); - } -}; - -/// A special value, similar to std::nothrow. -/** - * See the documentation for asio::detached_t for a usage example. - */ -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr detached_t detached; -#elif defined(ASIO_MSVC) -__declspec(selectany) detached_t detached; -#endif - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/detached.hpp" - -#endif // ASIO_DETACHED_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array.hpp deleted file mode 100644 index dbc9c30b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// -// detail/array.hpp -// ~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_ARRAY_HPP -#define ASIO_DETAIL_ARRAY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_ARRAY) -# include -#else // defined(ASIO_HAS_STD_ARRAY) -# include -#endif // defined(ASIO_HAS_STD_ARRAY) - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_STD_ARRAY) -using std::array; -#else // defined(ASIO_HAS_STD_ARRAY) -using boost::array; -#endif // defined(ASIO_HAS_STD_ARRAY) - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_ARRAY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array_fwd.hpp deleted file mode 100644 index b7f81ecb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/array_fwd.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// detail/array_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_ARRAY_FWD_HPP -#define ASIO_DETAIL_ARRAY_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -namespace boost { - -template -class array; - -} // namespace boost - -// Standard library components can't be forward declared, so we'll have to -// include the array header. Fortunately, it's fairly lightweight and doesn't -// add significantly to the compile time. -#if defined(ASIO_HAS_STD_ARRAY) -# include -#endif // defined(ASIO_HAS_STD_ARRAY) - -#endif // ASIO_DETAIL_ARRAY_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/assert.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/assert.hpp deleted file mode 100644 index 6f93e381..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/assert.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// detail/assert.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_ASSERT_HPP -#define ASIO_DETAIL_ASSERT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_ASSERT) -# include -#else // defined(ASIO_HAS_BOOST_ASSERT) -# include -#endif // defined(ASIO_HAS_BOOST_ASSERT) - -#if defined(ASIO_HAS_BOOST_ASSERT) -# define ASIO_ASSERT(expr) BOOST_ASSERT(expr) -#else // defined(ASIO_HAS_BOOST_ASSERT) -# define ASIO_ASSERT(expr) assert(expr) -#endif // defined(ASIO_HAS_BOOST_ASSERT) - -#endif // ASIO_DETAIL_ASSERT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/atomic_count.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/atomic_count.hpp deleted file mode 100644 index b1d257d1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/atomic_count.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -// detail/atomic_count.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_ATOMIC_COUNT_HPP -#define ASIO_DETAIL_ATOMIC_COUNT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -// Nothing to include. -#elif defined(ASIO_HAS_STD_ATOMIC) -# include -#else // defined(ASIO_HAS_STD_ATOMIC) -# include -#endif // defined(ASIO_HAS_STD_ATOMIC) - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) -typedef long atomic_count; -inline void increment(atomic_count& a, long b) { a += b; } -inline void ref_count_up(atomic_count& a) { ++a; } -inline bool ref_count_down(atomic_count& a) { return --a == 0; } -#elif defined(ASIO_HAS_STD_ATOMIC) -typedef std::atomic atomic_count; -inline void increment(atomic_count& a, long b) { a += b; } - -inline void ref_count_up(atomic_count& a) -{ - a.fetch_add(1, std::memory_order_relaxed); -} - -inline bool ref_count_down(atomic_count& a) -{ - if (a.fetch_sub(1, std::memory_order_release) == 1) - { - std::atomic_thread_fence(std::memory_order_acquire); - return true; - } - return false; -} -#else // defined(ASIO_HAS_STD_ATOMIC) -typedef boost::detail::atomic_count atomic_count; -inline void increment(atomic_count& a, long b) { while (b > 0) ++a, --b; } -inline void ref_count_up(atomic_count& a) { ++a; } -inline bool ref_count_down(atomic_count& a) { return --a == 0; } -#endif // defined(ASIO_HAS_STD_ATOMIC) - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_ATOMIC_COUNT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/base_from_completion_cond.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/base_from_completion_cond.hpp deleted file mode 100644 index 37b8626a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/base_from_completion_cond.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// -// detail/base_from_completion_cond.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP -#define ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/completion_condition.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class base_from_completion_cond -{ -protected: - explicit base_from_completion_cond(CompletionCondition& completion_condition) - : completion_condition_( - ASIO_MOVE_CAST(CompletionCondition)(completion_condition)) - { - } - - std::size_t check_for_completion( - const asio::error_code& ec, - std::size_t total_transferred) - { - return detail::adapt_completion_condition_result( - completion_condition_(ec, total_transferred)); - } - -private: - CompletionCondition completion_condition_; -}; - -template <> -class base_from_completion_cond -{ -protected: - explicit base_from_completion_cond(transfer_all_t) - { - } - - static std::size_t check_for_completion( - const asio::error_code& ec, - std::size_t total_transferred) - { - return transfer_all_t()(ec, total_transferred); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bind_handler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bind_handler.hpp deleted file mode 100644 index fb3654cd..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bind_handler.hpp +++ /dev/null @@ -1,938 +0,0 @@ -// -// detail/bind_handler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BIND_HANDLER_HPP -#define ASIO_DETAIL_BIND_HANDLER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/associated_allocator.hpp" -#include "asio/associated_executor.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_cont_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class binder1 -{ -public: - template - binder1(int, ASIO_MOVE_ARG(T) handler, const Arg1& arg1) - : handler_(ASIO_MOVE_CAST(T)(handler)), - arg1_(arg1) - { - } - - binder1(Handler& handler, const Arg1& arg1) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1) - { - } - -#if defined(ASIO_HAS_MOVE) - binder1(const binder1& other) - : handler_(other.handler_), - arg1_(other.arg1_) - { - } - - binder1(binder1&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(static_cast(arg1_)); - } - - void operator()() const - { - handler_(arg1_); - } - -//private: - Handler handler_; - Arg1 arg1_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - binder1* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - binder1* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - binder1* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - binder1* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - binder1* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline binder1::type, Arg1> bind_handler( - ASIO_MOVE_ARG(Handler) handler, const Arg1& arg1) -{ - return binder1::type, Arg1>(0, - ASIO_MOVE_CAST(Handler)(handler), arg1); -} - -template -class binder2 -{ -public: - template - binder2(int, ASIO_MOVE_ARG(T) handler, - const Arg1& arg1, const Arg2& arg2) - : handler_(ASIO_MOVE_CAST(T)(handler)), - arg1_(arg1), - arg2_(arg2) - { - } - - binder2(Handler& handler, const Arg1& arg1, const Arg2& arg2) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1), - arg2_(arg2) - { - } - -#if defined(ASIO_HAS_MOVE) - binder2(const binder2& other) - : handler_(other.handler_), - arg1_(other.arg1_), - arg2_(other.arg2_) - { - } - - binder2(binder2&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)), - arg2_(ASIO_MOVE_CAST(Arg2)(other.arg2_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(static_cast(arg1_), - static_cast(arg2_)); - } - - void operator()() const - { - handler_(arg1_, arg2_); - } - -//private: - Handler handler_; - Arg1 arg1_; - Arg2 arg2_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - binder2* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - binder2* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - binder2* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - binder2* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - binder2* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline binder2::type, Arg1, Arg2> bind_handler( - ASIO_MOVE_ARG(Handler) handler, const Arg1& arg1, const Arg2& arg2) -{ - return binder2::type, Arg1, Arg2>(0, - ASIO_MOVE_CAST(Handler)(handler), arg1, arg2); -} - -template -class binder3 -{ -public: - template - binder3(int, ASIO_MOVE_ARG(T) handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3) - : handler_(ASIO_MOVE_CAST(T)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3) - { - } - - binder3(Handler& handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3) - { - } - -#if defined(ASIO_HAS_MOVE) - binder3(const binder3& other) - : handler_(other.handler_), - arg1_(other.arg1_), - arg2_(other.arg2_), - arg3_(other.arg3_) - { - } - - binder3(binder3&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)), - arg2_(ASIO_MOVE_CAST(Arg2)(other.arg2_)), - arg3_(ASIO_MOVE_CAST(Arg3)(other.arg3_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(static_cast(arg1_), - static_cast(arg2_), static_cast(arg3_)); - } - - void operator()() const - { - handler_(arg1_, arg2_, arg3_); - } - -//private: - Handler handler_; - Arg1 arg1_; - Arg2 arg2_; - Arg3 arg3_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - binder3* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - binder3* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - binder3* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - binder3* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - binder3* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline binder3::type, Arg1, Arg2, Arg3> bind_handler( - ASIO_MOVE_ARG(Handler) handler, const Arg1& arg1, const Arg2& arg2, - const Arg3& arg3) -{ - return binder3::type, Arg1, Arg2, Arg3>(0, - ASIO_MOVE_CAST(Handler)(handler), arg1, arg2, arg3); -} - -template -class binder4 -{ -public: - template - binder4(int, ASIO_MOVE_ARG(T) handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3, const Arg4& arg4) - : handler_(ASIO_MOVE_CAST(T)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3), - arg4_(arg4) - { - } - - binder4(Handler& handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3, const Arg4& arg4) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3), - arg4_(arg4) - { - } - -#if defined(ASIO_HAS_MOVE) - binder4(const binder4& other) - : handler_(other.handler_), - arg1_(other.arg1_), - arg2_(other.arg2_), - arg3_(other.arg3_), - arg4_(other.arg4_) - { - } - - binder4(binder4&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)), - arg2_(ASIO_MOVE_CAST(Arg2)(other.arg2_)), - arg3_(ASIO_MOVE_CAST(Arg3)(other.arg3_)), - arg4_(ASIO_MOVE_CAST(Arg4)(other.arg4_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(static_cast(arg1_), - static_cast(arg2_), static_cast(arg3_), - static_cast(arg4_)); - } - - void operator()() const - { - handler_(arg1_, arg2_, arg3_, arg4_); - } - -//private: - Handler handler_; - Arg1 arg1_; - Arg2 arg2_; - Arg3 arg3_; - Arg4 arg4_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - binder4* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - binder4* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - binder4* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - binder4* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - binder4* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline binder4::type, Arg1, Arg2, Arg3, Arg4> -bind_handler(ASIO_MOVE_ARG(Handler) handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3, const Arg4& arg4) -{ - return binder4::type, Arg1, Arg2, Arg3, Arg4>(0, - ASIO_MOVE_CAST(Handler)(handler), arg1, arg2, arg3, arg4); -} - -template -class binder5 -{ -public: - template - binder5(int, ASIO_MOVE_ARG(T) handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3, const Arg4& arg4, const Arg5& arg5) - : handler_(ASIO_MOVE_CAST(T)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3), - arg4_(arg4), - arg5_(arg5) - { - } - - binder5(Handler& handler, const Arg1& arg1, const Arg2& arg2, - const Arg3& arg3, const Arg4& arg4, const Arg5& arg5) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1), - arg2_(arg2), - arg3_(arg3), - arg4_(arg4), - arg5_(arg5) - { - } - -#if defined(ASIO_HAS_MOVE) - binder5(const binder5& other) - : handler_(other.handler_), - arg1_(other.arg1_), - arg2_(other.arg2_), - arg3_(other.arg3_), - arg4_(other.arg4_), - arg5_(other.arg5_) - { - } - - binder5(binder5&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)), - arg2_(ASIO_MOVE_CAST(Arg2)(other.arg2_)), - arg3_(ASIO_MOVE_CAST(Arg3)(other.arg3_)), - arg4_(ASIO_MOVE_CAST(Arg4)(other.arg4_)), - arg5_(ASIO_MOVE_CAST(Arg5)(other.arg5_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(static_cast(arg1_), - static_cast(arg2_), static_cast(arg3_), - static_cast(arg4_), static_cast(arg5_)); - } - - void operator()() const - { - handler_(arg1_, arg2_, arg3_, arg4_, arg5_); - } - -//private: - Handler handler_; - Arg1 arg1_; - Arg2 arg2_; - Arg3 arg3_; - Arg4 arg4_; - Arg5 arg5_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - binder5* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - binder5* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - binder5* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - binder5* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - binder5* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline binder5::type, Arg1, Arg2, Arg3, Arg4, Arg5> -bind_handler(ASIO_MOVE_ARG(Handler) handler, const Arg1& arg1, - const Arg2& arg2, const Arg3& arg3, const Arg4& arg4, const Arg5& arg5) -{ - return binder5::type, Arg1, Arg2, Arg3, Arg4, Arg5>(0, - ASIO_MOVE_CAST(Handler)(handler), arg1, arg2, arg3, arg4, arg5); -} - -#if defined(ASIO_HAS_MOVE) - -template -class move_binder1 -{ -public: - move_binder1(int, ASIO_MOVE_ARG(Handler) handler, - ASIO_MOVE_ARG(Arg1) arg1) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(ASIO_MOVE_CAST(Arg1)(arg1)) - { - } - - move_binder1(move_binder1&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)) - { - } - - void operator()() - { - handler_(ASIO_MOVE_CAST(Arg1)(arg1_)); - } - -//private: - Handler handler_; - Arg1 arg1_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - move_binder1* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - move_binder1* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - move_binder1* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(ASIO_MOVE_ARG(Function) function, - move_binder1* this_handler) -{ - asio_handler_invoke_helpers::invoke( - ASIO_MOVE_CAST(Function)(function), this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -class move_binder2 -{ -public: - move_binder2(int, ASIO_MOVE_ARG(Handler) handler, - const Arg1& arg1, ASIO_MOVE_ARG(Arg2) arg2) - : handler_(ASIO_MOVE_CAST(Handler)(handler)), - arg1_(arg1), - arg2_(ASIO_MOVE_CAST(Arg2)(arg2)) - { - } - - move_binder2(move_binder2&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - arg1_(ASIO_MOVE_CAST(Arg1)(other.arg1_)), - arg2_(ASIO_MOVE_CAST(Arg2)(other.arg2_)) - { - } - - void operator()() - { - handler_(static_cast(arg1_), - ASIO_MOVE_CAST(Arg2)(arg2_)); - } - -//private: - Handler handler_; - Arg1 arg1_; - Arg2 arg2_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - move_binder2* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - move_binder2* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - move_binder2* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(ASIO_MOVE_ARG(Function) function, - move_binder2* this_handler) -{ - asio_handler_invoke_helpers::invoke( - ASIO_MOVE_CAST(Function)(function), this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -#endif // defined(ASIO_HAS_MOVE) - -} // namespace detail - -template -struct associated_allocator, Allocator> -{ - typedef typename associated_allocator::type type; - - static type get(const detail::binder1& h, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(h.handler_, a); - } -}; - -template -struct associated_allocator, Allocator> -{ - typedef typename associated_allocator::type type; - - static type get(const detail::binder2& h, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(h.handler_, a); - } -}; - -template -struct associated_executor, Executor> - : detail::associated_executor_forwarding_base -{ - typedef typename associated_executor::type type; - - static type get(const detail::binder1& h, - const Executor& ex = Executor()) ASIO_NOEXCEPT - { - return associated_executor::get(h.handler_, ex); - } -}; - -template -struct associated_executor, Executor> - : detail::associated_executor_forwarding_base -{ - typedef typename associated_executor::type type; - - static type get(const detail::binder2& h, - const Executor& ex = Executor()) ASIO_NOEXCEPT - { - return associated_executor::get(h.handler_, ex); - } -}; - -#if defined(ASIO_HAS_MOVE) - -template -struct associated_allocator, Allocator> -{ - typedef typename associated_allocator::type type; - - static type get(const detail::move_binder1& h, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(h.handler_, a); - } -}; - -template -struct associated_allocator< - detail::move_binder2, Allocator> -{ - typedef typename associated_allocator::type type; - - static type get(const detail::move_binder2& h, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(h.handler_, a); - } -}; - -template -struct associated_executor, Executor> - : detail::associated_executor_forwarding_base -{ - typedef typename associated_executor::type type; - - static type get(const detail::move_binder1& h, - const Executor& ex = Executor()) ASIO_NOEXCEPT - { - return associated_executor::get(h.handler_, ex); - } -}; - -template -struct associated_executor, Executor> - : detail::associated_executor_forwarding_base -{ - typedef typename associated_executor::type type; - - static type get(const detail::move_binder2& h, - const Executor& ex = Executor()) ASIO_NOEXCEPT - { - return associated_executor::get(h.handler_, ex); - } -}; - -#endif // defined(ASIO_HAS_MOVE) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BIND_HANDLER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/blocking_executor_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/blocking_executor_op.hpp deleted file mode 100644 index 7ea3cc42..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/blocking_executor_op.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// -// detail/blocking_executor_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BLOCKING_EXECUTOR_OP_HPP -#define ASIO_DETAIL_BLOCKING_EXECUTOR_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/event.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/scheduler_operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class blocking_executor_op_base : public Operation -{ -public: - blocking_executor_op_base(typename Operation::func_type complete_func) - : Operation(complete_func), - is_complete_(false) - { - } - - void wait() - { - asio::detail::mutex::scoped_lock lock(mutex_); - while (!is_complete_) - event_.wait(lock); - } - -protected: - struct do_complete_cleanup - { - ~do_complete_cleanup() - { - asio::detail::mutex::scoped_lock lock(op_->mutex_); - op_->is_complete_ = true; - op_->event_.unlock_and_signal_one_for_destruction(lock); - } - - blocking_executor_op_base* op_; - }; - -private: - asio::detail::mutex mutex_; - asio::detail::event event_; - bool is_complete_; -}; - -template -class blocking_executor_op : public blocking_executor_op_base -{ -public: - blocking_executor_op(Handler& h) - : blocking_executor_op_base(&blocking_executor_op::do_complete), - handler_(h) - { - } - - static void do_complete(void* owner, Operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - blocking_executor_op* o(static_cast(base)); - - typename blocking_executor_op_base::do_complete_cleanup - on_exit = { o }; - (void)on_exit; - - ASIO_HANDLER_COMPLETION((*o)); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN(()); - asio_handler_invoke_helpers::invoke(o->handler_, o->handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler& handler_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BLOCKING_EXECUTOR_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_resize_guard.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_resize_guard.hpp deleted file mode 100644 index c4473685..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_resize_guard.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -// detail/buffer_resize_guard.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP -#define ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/limits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper class to manage buffer resizing in an exception safe way. -template -class buffer_resize_guard -{ -public: - // Constructor. - buffer_resize_guard(Buffer& buffer) - : buffer_(buffer), - old_size_(buffer.size()) - { - } - - // Destructor rolls back the buffer resize unless commit was called. - ~buffer_resize_guard() - { - if (old_size_ != (std::numeric_limits::max)()) - { - buffer_.resize(old_size_); - } - } - - // Commit the resize transaction. - void commit() - { - old_size_ = (std::numeric_limits::max)(); - } - -private: - // The buffer being managed. - Buffer& buffer_; - - // The size of the buffer at the time the guard was constructed. - size_t old_size_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp deleted file mode 100644 index 2044bd5d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +++ /dev/null @@ -1,650 +0,0 @@ -// -// detail/buffer_sequence_adapter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP -#define ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/buffer.hpp" -#include "asio/detail/array_fwd.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class buffer_sequence_adapter_base -{ -#if defined(ASIO_WINDOWS_RUNTIME) -public: - // The maximum number of buffers to support in a single operation. - enum { max_buffers = 1 }; - -protected: - typedef Windows::Storage::Streams::IBuffer^ native_buffer_type; - - ASIO_DECL static void init_native_buffer( - native_buffer_type& buf, - const asio::mutable_buffer& buffer); - - ASIO_DECL static void init_native_buffer( - native_buffer_type& buf, - const asio::const_buffer& buffer); -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) -public: - // The maximum number of buffers to support in a single operation. - enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len }; - -protected: - typedef WSABUF native_buffer_type; - - static void init_native_buffer(WSABUF& buf, - const asio::mutable_buffer& buffer) - { - buf.buf = static_cast(buffer.data()); - buf.len = static_cast(buffer.size()); - } - - static void init_native_buffer(WSABUF& buf, - const asio::const_buffer& buffer) - { - buf.buf = const_cast(static_cast(buffer.data())); - buf.len = static_cast(buffer.size()); - } -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -public: - // The maximum number of buffers to support in a single operation. - enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len }; - -protected: - typedef iovec native_buffer_type; - - static void init_iov_base(void*& base, void* addr) - { - base = addr; - } - - template - static void init_iov_base(T& base, void* addr) - { - base = static_cast(addr); - } - - static void init_native_buffer(iovec& iov, - const asio::mutable_buffer& buffer) - { - init_iov_base(iov.iov_base, buffer.data()); - iov.iov_len = buffer.size(); - } - - static void init_native_buffer(iovec& iov, - const asio::const_buffer& buffer) - { - init_iov_base(iov.iov_base, const_cast(buffer.data())); - iov.iov_len = buffer.size(); - } -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -}; - -// Helper class to translate buffers into the native buffer representation. -template -class buffer_sequence_adapter - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = false }; - - explicit buffer_sequence_adapter(const Buffers& buffer_sequence) - : count_(0), total_buffer_size_(0) - { - buffer_sequence_adapter::init( - asio::buffer_sequence_begin(buffer_sequence), - asio::buffer_sequence_end(buffer_sequence)); - } - - native_buffer_type* buffers() - { - return buffers_; - } - - std::size_t count() const - { - return count_; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const Buffers& buffer_sequence) - { - return buffer_sequence_adapter::all_empty( - asio::buffer_sequence_begin(buffer_sequence), - asio::buffer_sequence_end(buffer_sequence)); - } - - static void validate(const Buffers& buffer_sequence) - { - buffer_sequence_adapter::validate( - asio::buffer_sequence_begin(buffer_sequence), - asio::buffer_sequence_end(buffer_sequence)); - } - - static Buffer first(const Buffers& buffer_sequence) - { - return buffer_sequence_adapter::first( - asio::buffer_sequence_begin(buffer_sequence), - asio::buffer_sequence_end(buffer_sequence)); - } - - enum { linearisation_storage_size = 8192 }; - - static Buffer linearise(const Buffers& buffer_sequence, - const asio::mutable_buffer& storage) - { - return buffer_sequence_adapter::linearise( - asio::buffer_sequence_begin(buffer_sequence), - asio::buffer_sequence_end(buffer_sequence), storage); - } - -private: - template - void init(Iterator begin, Iterator end) - { - Iterator iter = begin; - for (; iter != end && count_ < max_buffers; ++iter, ++count_) - { - Buffer buffer(*iter); - init_native_buffer(buffers_[count_], buffer); - total_buffer_size_ += buffer.size(); - } - } - - template - static bool all_empty(Iterator begin, Iterator end) - { - Iterator iter = begin; - std::size_t i = 0; - for (; iter != end && i < max_buffers; ++iter, ++i) - if (Buffer(*iter).size() > 0) - return false; - return true; - } - - template - static void validate(Iterator begin, Iterator end) - { - Iterator iter = begin; - for (; iter != end; ++iter) - { - Buffer buffer(*iter); - buffer.data(); - } - } - - template - static Buffer first(Iterator begin, Iterator end) - { - Iterator iter = begin; - for (; iter != end; ++iter) - { - Buffer buffer(*iter); - if (buffer.size() != 0) - return buffer; - } - return Buffer(); - } - - template - static Buffer linearise(Iterator begin, Iterator end, - const asio::mutable_buffer& storage) - { - asio::mutable_buffer unused_storage = storage; - Iterator iter = begin; - while (iter != end && unused_storage.size() != 0) - { - Buffer buffer(*iter); - ++iter; - if (buffer.size() == 0) - continue; - if (unused_storage.size() == storage.size()) - { - if (iter == end) - return buffer; - if (buffer.size() >= unused_storage.size()) - return buffer; - } - unused_storage += asio::buffer_copy(unused_storage, buffer); - } - return Buffer(storage.data(), storage.size() - unused_storage.size()); - } - - native_buffer_type buffers_[max_buffers]; - std::size_t count_; - std::size_t total_buffer_size_; -}; - -template -class buffer_sequence_adapter - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = true }; - - explicit buffer_sequence_adapter( - const asio::mutable_buffer& buffer_sequence) - { - init_native_buffer(buffer_, Buffer(buffer_sequence)); - total_buffer_size_ = buffer_sequence.size(); - } - - native_buffer_type* buffers() - { - return &buffer_; - } - - std::size_t count() const - { - return 1; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const asio::mutable_buffer& buffer_sequence) - { - return buffer_sequence.size() == 0; - } - - static void validate(const asio::mutable_buffer& buffer_sequence) - { - buffer_sequence.data(); - } - - static Buffer first(const asio::mutable_buffer& buffer_sequence) - { - return Buffer(buffer_sequence); - } - - enum { linearisation_storage_size = 1 }; - - static Buffer linearise(const asio::mutable_buffer& buffer_sequence, - const Buffer&) - { - return Buffer(buffer_sequence); - } - -private: - native_buffer_type buffer_; - std::size_t total_buffer_size_; -}; - -template -class buffer_sequence_adapter - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = true }; - - explicit buffer_sequence_adapter( - const asio::const_buffer& buffer_sequence) - { - init_native_buffer(buffer_, Buffer(buffer_sequence)); - total_buffer_size_ = buffer_sequence.size(); - } - - native_buffer_type* buffers() - { - return &buffer_; - } - - std::size_t count() const - { - return 1; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const asio::const_buffer& buffer_sequence) - { - return buffer_sequence.size() == 0; - } - - static void validate(const asio::const_buffer& buffer_sequence) - { - buffer_sequence.data(); - } - - static Buffer first(const asio::const_buffer& buffer_sequence) - { - return Buffer(buffer_sequence); - } - - enum { linearisation_storage_size = 1 }; - - static Buffer linearise(const asio::const_buffer& buffer_sequence, - const Buffer&) - { - return Buffer(buffer_sequence); - } - -private: - native_buffer_type buffer_; - std::size_t total_buffer_size_; -}; - -#if !defined(ASIO_NO_DEPRECATED) - -template -class buffer_sequence_adapter - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = true }; - - explicit buffer_sequence_adapter( - const asio::mutable_buffers_1& buffer_sequence) - { - init_native_buffer(buffer_, Buffer(buffer_sequence)); - total_buffer_size_ = buffer_sequence.size(); - } - - native_buffer_type* buffers() - { - return &buffer_; - } - - std::size_t count() const - { - return 1; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const asio::mutable_buffers_1& buffer_sequence) - { - return buffer_sequence.size() == 0; - } - - static void validate(const asio::mutable_buffers_1& buffer_sequence) - { - buffer_sequence.data(); - } - - static Buffer first(const asio::mutable_buffers_1& buffer_sequence) - { - return Buffer(buffer_sequence); - } - - enum { linearisation_storage_size = 1 }; - - static Buffer linearise(const asio::mutable_buffers_1& buffer_sequence, - const Buffer&) - { - return Buffer(buffer_sequence); - } - -private: - native_buffer_type buffer_; - std::size_t total_buffer_size_; -}; - -template -class buffer_sequence_adapter - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = true }; - - explicit buffer_sequence_adapter( - const asio::const_buffers_1& buffer_sequence) - { - init_native_buffer(buffer_, Buffer(buffer_sequence)); - total_buffer_size_ = buffer_sequence.size(); - } - - native_buffer_type* buffers() - { - return &buffer_; - } - - std::size_t count() const - { - return 1; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const asio::const_buffers_1& buffer_sequence) - { - return buffer_sequence.size() == 0; - } - - static void validate(const asio::const_buffers_1& buffer_sequence) - { - buffer_sequence.data(); - } - - static Buffer first(const asio::const_buffers_1& buffer_sequence) - { - return Buffer(buffer_sequence); - } - - enum { linearisation_storage_size = 1 }; - - static Buffer linearise(const asio::const_buffers_1& buffer_sequence, - const Buffer&) - { - return Buffer(buffer_sequence); - } - -private: - native_buffer_type buffer_; - std::size_t total_buffer_size_; -}; - -#endif // !defined(ASIO_NO_DEPRECATED) - -template -class buffer_sequence_adapter > - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = false }; - - explicit buffer_sequence_adapter( - const boost::array& buffer_sequence) - { - init_native_buffer(buffers_[0], Buffer(buffer_sequence[0])); - init_native_buffer(buffers_[1], Buffer(buffer_sequence[1])); - total_buffer_size_ = buffer_sequence[0].size() + buffer_sequence[1].size(); - } - - native_buffer_type* buffers() - { - return buffers_; - } - - std::size_t count() const - { - return 2; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const boost::array& buffer_sequence) - { - return buffer_sequence[0].size() == 0 && buffer_sequence[1].size() == 0; - } - - static void validate(const boost::array& buffer_sequence) - { - buffer_sequence[0].data(); - buffer_sequence[1].data(); - } - - static Buffer first(const boost::array& buffer_sequence) - { - return Buffer(buffer_sequence[0].size() != 0 - ? buffer_sequence[0] : buffer_sequence[1]); - } - - enum { linearisation_storage_size = 8192 }; - - static Buffer linearise(const boost::array& buffer_sequence, - const asio::mutable_buffer& storage) - { - if (buffer_sequence[0].size() == 0) - return Buffer(buffer_sequence[1]); - if (buffer_sequence[1].size() == 0) - return Buffer(buffer_sequence[0]); - return Buffer(storage.data(), - asio::buffer_copy(storage, buffer_sequence)); - } - -private: - native_buffer_type buffers_[2]; - std::size_t total_buffer_size_; -}; - -#if defined(ASIO_HAS_STD_ARRAY) - -template -class buffer_sequence_adapter > - : buffer_sequence_adapter_base -{ -public: - enum { is_single_buffer = false }; - - explicit buffer_sequence_adapter( - const std::array& buffer_sequence) - { - init_native_buffer(buffers_[0], Buffer(buffer_sequence[0])); - init_native_buffer(buffers_[1], Buffer(buffer_sequence[1])); - total_buffer_size_ = buffer_sequence[0].size() + buffer_sequence[1].size(); - } - - native_buffer_type* buffers() - { - return buffers_; - } - - std::size_t count() const - { - return 2; - } - - std::size_t total_size() const - { - return total_buffer_size_; - } - - bool all_empty() const - { - return total_buffer_size_ == 0; - } - - static bool all_empty(const std::array& buffer_sequence) - { - return buffer_sequence[0].size() == 0 && buffer_sequence[1].size() == 0; - } - - static void validate(const std::array& buffer_sequence) - { - buffer_sequence[0].data(); - buffer_sequence[1].data(); - } - - static Buffer first(const std::array& buffer_sequence) - { - return Buffer(buffer_sequence[0].size() != 0 - ? buffer_sequence[0] : buffer_sequence[1]); - } - - enum { linearisation_storage_size = 8192 }; - - static Buffer linearise(const std::array& buffer_sequence, - const asio::mutable_buffer& storage) - { - if (buffer_sequence[0].size() == 0) - return Buffer(buffer_sequence[1]); - if (buffer_sequence[1].size() == 0) - return Buffer(buffer_sequence[0]); - return Buffer(storage.data(), - asio::buffer_copy(storage, buffer_sequence)); - } - -private: - native_buffer_type buffers_[2]; - std::size_t total_buffer_size_; -}; - -#endif // defined(ASIO_HAS_STD_ARRAY) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/buffer_sequence_adapter.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffered_stream_storage.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffered_stream_storage.hpp deleted file mode 100644 index ea5882db..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/buffered_stream_storage.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// -// detail/buffered_stream_storage.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP -#define ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/buffer.hpp" -#include "asio/detail/assert.hpp" -#include -#include -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class buffered_stream_storage -{ -public: - // The type of the bytes stored in the buffer. - typedef unsigned char byte_type; - - // The type used for offsets into the buffer. - typedef std::size_t size_type; - - // Constructor. - explicit buffered_stream_storage(std::size_t buffer_capacity) - : begin_offset_(0), - end_offset_(0), - buffer_(buffer_capacity) - { - } - - /// Clear the buffer. - void clear() - { - begin_offset_ = 0; - end_offset_ = 0; - } - - // Return a pointer to the beginning of the unread data. - mutable_buffer data() - { - return asio::buffer(buffer_) + begin_offset_; - } - - // Return a pointer to the beginning of the unread data. - const_buffer data() const - { - return asio::buffer(buffer_) + begin_offset_; - } - - // Is there no unread data in the buffer. - bool empty() const - { - return begin_offset_ == end_offset_; - } - - // Return the amount of unread data the is in the buffer. - size_type size() const - { - return end_offset_ - begin_offset_; - } - - // Resize the buffer to the specified length. - void resize(size_type length) - { - ASIO_ASSERT(length <= capacity()); - if (begin_offset_ + length <= capacity()) - { - end_offset_ = begin_offset_ + length; - } - else - { - using namespace std; // For memmove. - memmove(&buffer_[0], &buffer_[0] + begin_offset_, size()); - end_offset_ = length; - begin_offset_ = 0; - } - } - - // Return the maximum size for data in the buffer. - size_type capacity() const - { - return buffer_.size(); - } - - // Consume multiple bytes from the beginning of the buffer. - void consume(size_type count) - { - ASIO_ASSERT(begin_offset_ + count <= end_offset_); - begin_offset_ += count; - if (empty()) - clear(); - } - -private: - // The offset to the beginning of the unread data. - size_type begin_offset_; - - // The offset to the end of the unread data. - size_type end_offset_; - - // The data in the buffer. - std::vector buffer_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bulk_executor_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bulk_executor_op.hpp deleted file mode 100644 index dc417533..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/bulk_executor_op.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// -// detail/bulk_executor_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_BULK_EXECUTOR_OP_HPP -#define ASIO_DETAIL_BULK_EXECUTOR_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/scheduler_operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class bulk_executor_op : public Operation -{ -public: - ASIO_DEFINE_HANDLER_ALLOCATOR_PTR(bulk_executor_op); - - template - bulk_executor_op(ASIO_MOVE_ARG(H) h, - const Alloc& allocator, std::size_t i) - : Operation(&bulk_executor_op::do_complete), - handler_(ASIO_MOVE_CAST(H)(h)), - allocator_(allocator), - index_(i) - { - } - - static void do_complete(void* owner, Operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - bulk_executor_op* o(static_cast(base)); - Alloc allocator(o->allocator_); - ptr p = { detail::addressof(allocator), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 handler(o->handler_, o->index_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN(()); - asio_handler_invoke_helpers::invoke(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - Alloc allocator_; - std::size_t index_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_BULK_EXECUTOR_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/call_stack.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/call_stack.hpp deleted file mode 100644 index 15945895..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/call_stack.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// detail/call_stack.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CALL_STACK_HPP -#define ASIO_DETAIL_CALL_STACK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/tss_ptr.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper class to determine whether or not the current thread is inside an -// invocation of io_context::run() for a specified io_context object. -template -class call_stack -{ -public: - // Context class automatically pushes the key/value pair on to the stack. - class context - : private noncopyable - { - public: - // Push the key on to the stack. - explicit context(Key* k) - : key_(k), - next_(call_stack::top_) - { - value_ = reinterpret_cast(this); - call_stack::top_ = this; - } - - // Push the key/value pair on to the stack. - context(Key* k, Value& v) - : key_(k), - value_(&v), - next_(call_stack::top_) - { - call_stack::top_ = this; - } - - // Pop the key/value pair from the stack. - ~context() - { - call_stack::top_ = next_; - } - - // Find the next context with the same key. - Value* next_by_key() const - { - context* elem = next_; - while (elem) - { - if (elem->key_ == key_) - return elem->value_; - elem = elem->next_; - } - return 0; - } - - private: - friend class call_stack; - - // The key associated with the context. - Key* key_; - - // The value associated with the context. - Value* value_; - - // The next element in the stack. - context* next_; - }; - - friend class context; - - // Determine whether the specified owner is on the stack. Returns address of - // key if present, 0 otherwise. - static Value* contains(Key* k) - { - context* elem = top_; - while (elem) - { - if (elem->key_ == k) - return elem->value_; - elem = elem->next_; - } - return 0; - } - - // Obtain the value at the top of the stack. - static Value* top() - { - context* elem = top_; - return elem ? elem->value_ : 0; - } - -private: - // The top of the stack of calls for the current thread. - static tss_ptr top_; -}; - -template -tss_ptr::context> -call_stack::top_; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_CALL_STACK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono.hpp deleted file mode 100644 index f2df56f3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -// detail/chrono.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CHRONO_HPP -#define ASIO_DETAIL_CHRONO_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_CHRONO) -# include -#elif defined(ASIO_HAS_BOOST_CHRONO) -# include -#endif // defined(ASIO_HAS_BOOST_CHRONO) - -namespace asio { -namespace chrono { - -#if defined(ASIO_HAS_STD_CHRONO) -using std::chrono::duration; -using std::chrono::time_point; -using std::chrono::duration_cast; -using std::chrono::nanoseconds; -using std::chrono::microseconds; -using std::chrono::milliseconds; -using std::chrono::seconds; -using std::chrono::minutes; -using std::chrono::hours; -using std::chrono::time_point_cast; -#if defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK) -typedef std::chrono::monotonic_clock steady_clock; -#else // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK) -using std::chrono::steady_clock; -#endif // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK) -using std::chrono::system_clock; -using std::chrono::high_resolution_clock; -#elif defined(ASIO_HAS_BOOST_CHRONO) -using boost::chrono::duration; -using boost::chrono::time_point; -using boost::chrono::duration_cast; -using boost::chrono::nanoseconds; -using boost::chrono::microseconds; -using boost::chrono::milliseconds; -using boost::chrono::seconds; -using boost::chrono::minutes; -using boost::chrono::hours; -using boost::chrono::time_point_cast; -using boost::chrono::system_clock; -using boost::chrono::steady_clock; -using boost::chrono::high_resolution_clock; -#endif // defined(ASIO_HAS_BOOST_CHRONO) - -} // namespace chrono -} // namespace asio - -#endif // ASIO_DETAIL_CHRONO_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono_time_traits.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono_time_traits.hpp deleted file mode 100644 index 47355c9f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/chrono_time_traits.hpp +++ /dev/null @@ -1,190 +0,0 @@ -// -// detail/chrono_time_traits.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP -#define ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/cstdint.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper template to compute the greatest common divisor. -template -struct gcd { enum { value = gcd::value }; }; - -template -struct gcd { enum { value = v1 }; }; - -// Adapts std::chrono clocks for use with a deadline timer. -template -struct chrono_time_traits -{ - // The clock type. - typedef Clock clock_type; - - // The duration type of the clock. - typedef typename clock_type::duration duration_type; - - // The time point type of the clock. - typedef typename clock_type::time_point time_type; - - // The period of the clock. - typedef typename duration_type::period period_type; - - // Get the current time. - static time_type now() - { - return clock_type::now(); - } - - // Add a duration to a time. - static time_type add(const time_type& t, const duration_type& d) - { - const time_type epoch; - if (t >= epoch) - { - if ((time_type::max)() - t < d) - return (time_type::max)(); - } - else // t < epoch - { - if (-(t - (time_type::min)()) > d) - return (time_type::min)(); - } - - return t + d; - } - - // Subtract one time from another. - static duration_type subtract(const time_type& t1, const time_type& t2) - { - const time_type epoch; - if (t1 >= epoch) - { - if (t2 >= epoch) - { - return t1 - t2; - } - else if (t2 == (time_type::min)()) - { - return (duration_type::max)(); - } - else if ((time_type::max)() - t1 < epoch - t2) - { - return (duration_type::max)(); - } - else - { - return t1 - t2; - } - } - else // t1 < epoch - { - if (t2 < epoch) - { - return t1 - t2; - } - else if (t1 == (time_type::min)()) - { - return (duration_type::min)(); - } - else if ((time_type::max)() - t2 < epoch - t1) - { - return (duration_type::min)(); - } - else - { - return -(t2 - t1); - } - } - } - - // Test whether one time is less than another. - static bool less_than(const time_type& t1, const time_type& t2) - { - return t1 < t2; - } - - // Implement just enough of the posix_time::time_duration interface to supply - // what the timer_queue requires. - class posix_time_duration - { - public: - explicit posix_time_duration(const duration_type& d) - : d_(d) - { - } - - int64_t ticks() const - { - return d_.count(); - } - - int64_t total_seconds() const - { - return duration_cast<1, 1>(); - } - - int64_t total_milliseconds() const - { - return duration_cast<1, 1000>(); - } - - int64_t total_microseconds() const - { - return duration_cast<1, 1000000>(); - } - - private: - template - int64_t duration_cast() const - { - const int64_t num1 = period_type::num / gcd::value; - const int64_t num2 = Num / gcd::value; - - const int64_t den1 = period_type::den / gcd::value; - const int64_t den2 = Den / gcd::value; - - const int64_t num = num1 * den2; - const int64_t den = num2 * den1; - - if (num == 1 && den == 1) - return ticks(); - else if (num != 1 && den == 1) - return ticks() * num; - else if (num == 1 && period_type::den != 1) - return ticks() / den; - else - return ticks() * num / den; - } - - duration_type d_; - }; - - // Convert to POSIX duration type. - static posix_time_duration to_posix_duration(const duration_type& d) - { - return posix_time_duration(WaitTraits::to_wait_duration(d)); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/completion_handler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/completion_handler.hpp deleted file mode 100644 index 1de45f87..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/completion_handler.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// -// detail/completion_handler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_COMPLETION_HANDLER_HPP -#define ASIO_DETAIL_COMPLETION_HANDLER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class completion_handler : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(completion_handler); - - completion_handler(Handler& h, const IoExecutor& io_ex) - : operation(&completion_handler::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(h)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - completion_handler* h(static_cast(base)); - ptr p = { asio::detail::addressof(h->handler_), h, h }; - - ASIO_HANDLER_COMPLETION((*h)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - h->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - Handler handler(ASIO_MOVE_CAST(Handler)(h->handler_)); - p.h = asio::detail::addressof(handler); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN(()); - w.complete(handler, handler); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_COMPLETION_HANDLER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/concurrency_hint.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/concurrency_hint.hpp deleted file mode 100644 index 04eaa90e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/concurrency_hint.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// -// detail/concurrency_hint.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CONCURRENCY_HINT_HPP -#define ASIO_DETAIL_CONCURRENCY_HINT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/noncopyable.hpp" - -// The concurrency hint ID and mask are used to identify when a "well-known" -// concurrency hint value has been passed to the io_context. -#define ASIO_CONCURRENCY_HINT_ID 0xA5100000u -#define ASIO_CONCURRENCY_HINT_ID_MASK 0xFFFF0000u - -// If set, this bit indicates that the scheduler should perform locking. -#define ASIO_CONCURRENCY_HINT_LOCKING_SCHEDULER 0x1u - -// If set, this bit indicates that the reactor should perform locking when -// managing descriptor registrations. -#define ASIO_CONCURRENCY_HINT_LOCKING_REACTOR_REGISTRATION 0x2u - -// If set, this bit indicates that the reactor should perform locking for I/O. -#define ASIO_CONCURRENCY_HINT_LOCKING_REACTOR_IO 0x4u - -// Helper macro to determine if we have a special concurrency hint. -#define ASIO_CONCURRENCY_HINT_IS_SPECIAL(hint) \ - ((static_cast(hint) \ - & ASIO_CONCURRENCY_HINT_ID_MASK) \ - == ASIO_CONCURRENCY_HINT_ID) - -// Helper macro to determine if locking is enabled for a given facility. -#define ASIO_CONCURRENCY_HINT_IS_LOCKING(facility, hint) \ - (((static_cast(hint) \ - & (ASIO_CONCURRENCY_HINT_ID_MASK \ - | ASIO_CONCURRENCY_HINT_LOCKING_ ## facility)) \ - ^ ASIO_CONCURRENCY_HINT_ID) != 0) - -// This special concurrency hint disables locking in both the scheduler and -// reactor I/O. This hint has the following restrictions: -// -// - Care must be taken to ensure that all operations on the io_context and any -// of its associated I/O objects (such as sockets and timers) occur in only -// one thread at a time. -// -// - Asynchronous resolve operations fail with operation_not_supported. -// -// - If a signal_set is used with the io_context, signal_set objects cannot be -// used with any other io_context in the program. -#define ASIO_CONCURRENCY_HINT_UNSAFE \ - static_cast(ASIO_CONCURRENCY_HINT_ID) - -// This special concurrency hint disables locking in the reactor I/O. This hint -// has the following restrictions: -// -// - Care must be taken to ensure that run functions on the io_context, and all -// operations on the io_context's associated I/O objects (such as sockets and -// timers), occur in only one thread at a time. -#define ASIO_CONCURRENCY_HINT_UNSAFE_IO \ - static_cast(ASIO_CONCURRENCY_HINT_ID \ - | ASIO_CONCURRENCY_HINT_LOCKING_SCHEDULER \ - | ASIO_CONCURRENCY_HINT_LOCKING_REACTOR_REGISTRATION) - -// The special concurrency hint provides full thread safety. -#define ASIO_CONCURRENCY_HINT_SAFE \ - static_cast(ASIO_CONCURRENCY_HINT_ID \ - | ASIO_CONCURRENCY_HINT_LOCKING_SCHEDULER \ - | ASIO_CONCURRENCY_HINT_LOCKING_REACTOR_REGISTRATION \ - | ASIO_CONCURRENCY_HINT_LOCKING_REACTOR_IO) - -// This #define may be overridden at compile time to specify a program-wide -// default concurrency hint, used by the zero-argument io_context constructor. -#if !defined(ASIO_CONCURRENCY_HINT_DEFAULT) -# define ASIO_CONCURRENCY_HINT_DEFAULT -1 -#endif // !defined(ASIO_CONCURRENCY_HINT_DEFAULT) - -// This #define may be overridden at compile time to specify a program-wide -// concurrency hint, used by the one-argument io_context constructor when -// passed a value of 1. -#if !defined(ASIO_CONCURRENCY_HINT_1) -# define ASIO_CONCURRENCY_HINT_1 1 -#endif // !defined(ASIO_CONCURRENCY_HINT_DEFAULT) - -#endif // ASIO_DETAIL_CONCURRENCY_HINT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_event.hpp deleted file mode 100644 index d40263e5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +++ /dev/null @@ -1,120 +0,0 @@ -// -// detail/conditionally_enabled_event.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CONDITIONALLY_ENABLED_EVENT_HPP -#define ASIO_DETAIL_CONDITIONALLY_ENABLED_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/conditionally_enabled_mutex.hpp" -#include "asio/detail/event.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/null_event.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Mutex adapter used to conditionally enable or disable locking. -class conditionally_enabled_event - : private noncopyable -{ -public: - // Constructor. - conditionally_enabled_event() - { - } - - // Destructor. - ~conditionally_enabled_event() - { - } - - // Signal the event. (Retained for backward compatibility.) - void signal(conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.signal(lock); - } - - // Signal all waiters. - void signal_all(conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.signal_all(lock); - } - - // Unlock the mutex and signal one waiter. - void unlock_and_signal_one( - conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.unlock_and_signal_one(lock); - } - - // Unlock the mutex and signal one waiter who may destroy us. - void unlock_and_signal_one_for_destruction( - conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.unlock_and_signal_one(lock); - } - - // If there's a waiter, unlock the mutex and signal it. - bool maybe_unlock_and_signal_one( - conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - return event_.maybe_unlock_and_signal_one(lock); - else - return false; - } - - // Reset the event. - void clear(conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.clear(lock); - } - - // Wait for the event to become signalled. - void wait(conditionally_enabled_mutex::scoped_lock& lock) - { - if (lock.mutex_.enabled_) - event_.wait(lock); - else - null_event().wait(lock); - } - - // Timed wait for the event to become signalled. - bool wait_for_usec( - conditionally_enabled_mutex::scoped_lock& lock, long usec) - { - if (lock.mutex_.enabled_) - return event_.wait_for_usec(lock, usec); - else - return null_event().wait_for_usec(lock, usec); - } - -private: - asio::detail::event event_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_CONDITIONALLY_ENABLED_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp deleted file mode 100644 index 185fbe97..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// -// detail/conditionally_enabled_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CONDITIONALLY_ENABLED_MUTEX_HPP -#define ASIO_DETAIL_CONDITIONALLY_ENABLED_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Mutex adapter used to conditionally enable or disable locking. -class conditionally_enabled_mutex - : private noncopyable -{ -public: - // Helper class to lock and unlock a mutex automatically. - class scoped_lock - : private noncopyable - { - public: - // Tag type used to distinguish constructors. - enum adopt_lock_t { adopt_lock }; - - // Constructor adopts a lock that is already held. - scoped_lock(conditionally_enabled_mutex& m, adopt_lock_t) - : mutex_(m), - locked_(m.enabled_) - { - } - - // Constructor acquires the lock. - explicit scoped_lock(conditionally_enabled_mutex& m) - : mutex_(m) - { - if (m.enabled_) - { - mutex_.mutex_.lock(); - locked_ = true; - } - else - locked_ = false; - } - - // Destructor releases the lock. - ~scoped_lock() - { - if (locked_) - mutex_.mutex_.unlock(); - } - - // Explicitly acquire the lock. - void lock() - { - if (mutex_.enabled_ && !locked_) - { - mutex_.mutex_.lock(); - locked_ = true; - } - } - - // Explicitly release the lock. - void unlock() - { - if (locked_) - { - mutex_.unlock(); - locked_ = false; - } - } - - // Test whether the lock is held. - bool locked() const - { - return locked_; - } - - // Get the underlying mutex. - asio::detail::mutex& mutex() - { - return mutex_.mutex_; - } - - private: - friend class conditionally_enabled_event; - conditionally_enabled_mutex& mutex_; - bool locked_; - }; - - // Constructor. - explicit conditionally_enabled_mutex(bool enabled) - : enabled_(enabled) - { - } - - // Destructor. - ~conditionally_enabled_mutex() - { - } - - // Determine whether locking is enabled. - bool enabled() const - { - return enabled_; - } - - // Lock the mutex. - void lock() - { - if (enabled_) - mutex_.lock(); - } - - // Unlock the mutex. - void unlock() - { - if (enabled_) - mutex_.unlock(); - } - -private: - friend class scoped_lock; - friend class conditionally_enabled_event; - asio::detail::mutex mutex_; - const bool enabled_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_CONDITIONALLY_ENABLED_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/config.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/config.hpp deleted file mode 100644 index 1bb3acba..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/config.hpp +++ /dev/null @@ -1,1836 +0,0 @@ -// -// detail/config.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CONFIG_HPP -#define ASIO_DETAIL_CONFIG_HPP - -// boostify: non-boost code starts here -#if !defined(ASIO_STANDALONE) -# if !defined(ASIO_ENABLE_BOOST) -# if (__cplusplus >= 201103) -# define ASIO_STANDALONE 1 -# elif defined(_MSC_VER) && defined(_MSVC_LANG) -# if (_MSC_VER >= 1900) && (_MSVC_LANG >= 201103) -# define ASIO_STANDALONE 1 -# endif // (_MSC_VER >= 1900) && (_MSVC_LANG >= 201103) -# endif // defined(_MSC_VER) && defined(_MSVC_LANG) -# endif // !defined(ASIO_ENABLE_BOOST) -#endif // !defined(ASIO_STANDALONE) - -// boostify: non-boost code ends here -#if defined(ASIO_STANDALONE) -# define ASIO_DISABLE_BOOST_ARRAY 1 -# define ASIO_DISABLE_BOOST_ASSERT 1 -# define ASIO_DISABLE_BOOST_BIND 1 -# define ASIO_DISABLE_BOOST_CHRONO 1 -# define ASIO_DISABLE_BOOST_DATE_TIME 1 -# define ASIO_DISABLE_BOOST_LIMITS 1 -# define ASIO_DISABLE_BOOST_REGEX 1 -# define ASIO_DISABLE_BOOST_STATIC_CONSTANT 1 -# define ASIO_DISABLE_BOOST_THROW_EXCEPTION 1 -# define ASIO_DISABLE_BOOST_WORKAROUND 1 -#else // defined(ASIO_STANDALONE) -# include -# include -# define ASIO_HAS_BOOST_CONFIG 1 -#endif // defined(ASIO_STANDALONE) - -// Default to a header-only implementation. The user must specifically request -// separate compilation by defining either ASIO_SEPARATE_COMPILATION or -// ASIO_DYN_LINK (as a DLL/shared library implies separate compilation). -#if !defined(ASIO_HEADER_ONLY) -# if !defined(ASIO_SEPARATE_COMPILATION) -# if !defined(ASIO_DYN_LINK) -# define ASIO_HEADER_ONLY 1 -# endif // !defined(ASIO_DYN_LINK) -# endif // !defined(ASIO_SEPARATE_COMPILATION) -#endif // !defined(ASIO_HEADER_ONLY) - -#if defined(ASIO_HEADER_ONLY) -# define ASIO_DECL inline -#else // defined(ASIO_HEADER_ONLY) -# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__) -// We need to import/export our code only if the user has specifically asked -// for it by defining ASIO_DYN_LINK. -# if defined(ASIO_DYN_LINK) -// Export if this is our own source, otherwise import. -# if defined(ASIO_SOURCE) -# define ASIO_DECL __declspec(dllexport) -# else // defined(ASIO_SOURCE) -# define ASIO_DECL __declspec(dllimport) -# endif // defined(ASIO_SOURCE) -# endif // defined(ASIO_DYN_LINK) -# endif // defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__) -#endif // defined(ASIO_HEADER_ONLY) - -// If ASIO_DECL isn't defined yet define it now. -#if !defined(ASIO_DECL) -# define ASIO_DECL -#endif // !defined(ASIO_DECL) - -// Helper macro for documentation. -#define ASIO_UNSPECIFIED(e) e - -// Microsoft Visual C++ detection. -#if !defined(ASIO_MSVC) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC) -# define ASIO_MSVC BOOST_MSVC -# elif defined(_MSC_VER) && (defined(__INTELLISENSE__) \ - || (!defined(__MWERKS__) && !defined(__EDG_VERSION__))) -# define ASIO_MSVC _MSC_VER -# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC) -#endif // !defined(ASIO_MSVC) - -// Clang / libc++ detection. -#if defined(__clang__) -# if (__cplusplus >= 201103) -# if __has_include(<__config>) -# include <__config> -# if defined(_LIBCPP_VERSION) -# define ASIO_HAS_CLANG_LIBCXX 1 -# endif // defined(_LIBCPP_VERSION) -# endif // __has_include(<__config>) -# endif // (__cplusplus >= 201103) -#endif // defined(__clang__) - -// Android platform detection. -#if defined(__ANDROID__) -# include -#endif // defined(__ANDROID__) - -// Support move construction and assignment on compilers known to allow it. -#if !defined(ASIO_HAS_MOVE) -# if !defined(ASIO_DISABLE_MOVE) -# if defined(__clang__) -# if __has_feature(__cxx_rvalue_references__) -# define ASIO_HAS_MOVE 1 -# endif // __has_feature(__cxx_rvalue_references__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_MOVE 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_MOVE 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# if defined(__INTEL_CXX11_MODE__) -# if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) -# define ASIO_HAS_MOVE 1 -# endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) -# if defined(__ICL) && (__ICL >= 1500) -# define ASIO_HAS_MOVE 1 -# endif // defined(__ICL) && (__ICL >= 1500) -# endif // defined(__INTEL_CXX11_MODE__) -# endif // !defined(ASIO_DISABLE_MOVE) -#endif // !defined(ASIO_HAS_MOVE) - -// If ASIO_MOVE_CAST isn't defined, and move support is available, define -// * ASIO_MOVE_ARG, -// * ASIO_NONDEDUCED_MOVE_ARG, and -// * ASIO_MOVE_CAST -// to take advantage of rvalue references and perfect forwarding. -#if defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST) -# define ASIO_MOVE_ARG(type) type&& -# define ASIO_MOVE_ARG2(type1, type2) type1, type2&& -# define ASIO_NONDEDUCED_MOVE_ARG(type) type& -# define ASIO_MOVE_CAST(type) static_cast -# define ASIO_MOVE_CAST2(type1, type2) static_cast -# define ASIO_MOVE_OR_LVALUE(type) static_cast -# define ASIO_MOVE_OR_LVALUE_TYPE(type) type -#endif // defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST) - -// If ASIO_MOVE_CAST still isn't defined, default to a C++03-compatible -// implementation. Note that older g++ and MSVC versions don't like it when you -// pass a non-member function through a const reference, so for most compilers -// we'll play it safe and stick with the old approach of passing the handler by -// value. -#if !defined(ASIO_MOVE_CAST) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4) -# define ASIO_MOVE_ARG(type) const type& -# else // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4) -# define ASIO_MOVE_ARG(type) type -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4) -# elif defined(ASIO_MSVC) -# if (_MSC_VER >= 1400) -# define ASIO_MOVE_ARG(type) const type& -# else // (_MSC_VER >= 1400) -# define ASIO_MOVE_ARG(type) type -# endif // (_MSC_VER >= 1400) -# else -# define ASIO_MOVE_ARG(type) type -# endif -# define ASIO_NONDEDUCED_MOVE_ARG(type) const type& -# define ASIO_MOVE_CAST(type) static_cast -# define ASIO_MOVE_CAST2(type1, type2) static_cast -# define ASIO_MOVE_OR_LVALUE(type) -# define ASIO_MOVE_OR_LVALUE_TYPE(type) type& -#endif // !defined(ASIO_MOVE_CAST) - -// Support variadic templates on compilers known to allow it. -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) -# if !defined(ASIO_DISABLE_VARIADIC_TEMPLATES) -# if defined(__clang__) -# if __has_feature(__cxx_variadic_templates__) -# define ASIO_HAS_VARIADIC_TEMPLATES 1 -# endif // __has_feature(__cxx_variadic_templates__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_VARIADIC_TEMPLATES 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_VARIADIC_TEMPLATES 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) -#if !defined(ASIO_ELLIPSIS) -# if defined(ASIO_HAS_VARIADIC_TEMPLATES) -# define ASIO_ELLIPSIS ... -# else // defined(ASIO_HAS_VARIADIC_TEMPLATES) -# define ASIO_ELLIPSIS -# endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_ELLIPSIS) - -// Support deleted functions on compilers known to allow it. -#if !defined(ASIO_DELETED) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_DELETED = delete -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(__clang__) -# if __has_feature(__cxx_deleted_functions__) -# define ASIO_DELETED = delete -# endif // __has_feature(__cxx_deleted_functions__) -# endif // defined(__clang__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_DELETED = delete -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# if !defined(ASIO_DELETED) -# define ASIO_DELETED -# endif // !defined(ASIO_DELETED) -#endif // !defined(ASIO_DELETED) - -// Support constexpr on compilers known to allow it. -#if !defined(ASIO_HAS_CONSTEXPR) -# if !defined(ASIO_DISABLE_CONSTEXPR) -# if defined(__clang__) -# if __has_feature(__cxx_constexpr__) -# define ASIO_HAS_CONSTEXPR 1 -# endif // __has_feature(__cxx_constexpr__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_CONSTEXPR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_CONSTEXPR 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_CONSTEXPR) -#endif // !defined(ASIO_HAS_CONSTEXPR) -#if !defined(ASIO_CONSTEXPR) -# if defined(ASIO_HAS_CONSTEXPR) -# define ASIO_CONSTEXPR constexpr -# else // defined(ASIO_HAS_CONSTEXPR) -# define ASIO_CONSTEXPR -# endif // defined(ASIO_HAS_CONSTEXPR) -#endif // !defined(ASIO_CONSTEXPR) -#if !defined(ASIO_STATIC_CONSTEXPR) -# if defined(ASIO_HAS_CONSTEXPR) -# define ASIO_STATIC_CONSTEXPR(type, assignment) \ - static constexpr type assignment -# else // defined(ASIO_HAS_CONSTEXPR) -# define ASIO_STATIC_CONSTEXPR(type, assignment) \ - static const type assignment -# endif // defined(ASIO_HAS_CONSTEXPR) -#endif // !defined(ASIO_STATIC_CONSTEXPR) -#if !defined(ASIO_STATIC_CONSTEXPR_DEFAULT_INIT) -# if defined(ASIO_HAS_CONSTEXPR) -# if defined(__GNUC__) -# if (__GNUC__ >= 8) -# define ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(type, name) \ - static constexpr const type name{} -# else // (__GNUC__ >= 8) -# define ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(type, name) \ - static const type name -# endif // (__GNUC__ >= 8) -# elif defined(ASIO_MSVC) -# define ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(type, name) \ - static const type name -# else // defined(ASIO_MSVC) -# define ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(type, name) \ - static constexpr const type name{} -# endif // defined(ASIO_MSVC) -# else // defined(ASIO_HAS_CONSTEXPR) -# define ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(type, name) \ - static const type name -# endif // defined(ASIO_HAS_CONSTEXPR) -#endif // !defined(ASIO_STATIC_CONSTEXPR_DEFAULT_INIT) - -// Support noexcept on compilers known to allow it. -#if !defined(ASIO_HAS_NOEXCEPT) -# if !defined(ASIO_DISABLE_NOEXCEPT) -# if defined(ASIO_HAS_BOOST_CONFIG) && (BOOST_VERSION >= 105300) -# if !defined(BOOST_NO_NOEXCEPT) -# define ASIO_HAS_NOEXCEPT 1 -# endif // !defined(BOOST_NO_NOEXCEPT) -# define ASIO_NOEXCEPT BOOST_NOEXCEPT -# define ASIO_NOEXCEPT_OR_NOTHROW BOOST_NOEXCEPT_OR_NOTHROW -# define ASIO_NOEXCEPT_IF(c) BOOST_NOEXCEPT_IF(c) -# elif defined(__clang__) -# if __has_feature(__cxx_noexcept__) -# define ASIO_HAS_NOEXCEPT 1 -# endif // __has_feature(__cxx_noexcept__) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_NOEXCEPT 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# elif defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_NOEXCEPT 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_NOEXCEPT) -# if !defined(ASIO_NOEXCEPT) -# endif // !defined(ASIO_NOEXCEPT) -# if !defined(ASIO_NOEXCEPT_OR_NOTHROW) -# endif // !defined(ASIO_NOEXCEPT_OR_NOTHROW) -#endif // !defined(ASIO_HAS_NOEXCEPT) -#if !defined(ASIO_NOEXCEPT) -# if defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT noexcept(true) -# else // defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT -# endif // defined(ASIO_HAS_NOEXCEPT) -#endif // !defined(ASIO_NOEXCEPT) -#if !defined(ASIO_NOEXCEPT_OR_NOTHROW) -# if defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT_OR_NOTHROW noexcept(true) -# else // defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT_OR_NOTHROW throw() -# endif // defined(ASIO_HAS_NOEXCEPT) -#endif // !defined(ASIO_NOEXCEPT_OR_NOTHROW) -#if !defined(ASIO_NOEXCEPT_IF) -# if defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT_IF(c) noexcept(c) -# else // defined(ASIO_HAS_NOEXCEPT) -# define ASIO_NOEXCEPT_IF(c) -# endif // defined(ASIO_HAS_NOEXCEPT) -#endif // !defined(ASIO_NOEXCEPT_IF) - -// Support automatic type deduction on compilers known to support it. -#if !defined(ASIO_HAS_DECLTYPE) -# if !defined(ASIO_DISABLE_DECLTYPE) -# if defined(__clang__) -# if __has_feature(__cxx_decltype__) -# define ASIO_HAS_DECLTYPE 1 -# endif // __has_feature(__cxx_decltype__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_DECLTYPE 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1800) -# define ASIO_HAS_DECLTYPE 1 -# endif // (_MSC_VER >= 1800) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_DECLTYPE) -#endif // !defined(ASIO_HAS_DECLTYPE) - -// Support alias templates on compilers known to allow it. -#if !defined(ASIO_HAS_ALIAS_TEMPLATES) -# if !defined(ASIO_DISABLE_ALIAS_TEMPLATES) -# if defined(__clang__) -# if __has_feature(__cxx_alias_templates__) -# define ASIO_HAS_ALIAS_TEMPLATES 1 -# endif // __has_feature(__cxx_alias_templates__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_ALIAS_TEMPLATES 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_ALIAS_TEMPLATES 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_ALIAS_TEMPLATES) -#endif // !defined(ASIO_HAS_ALIAS_TEMPLATES) - -// Support return type deduction on compilers known to allow it. -#if !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION) -# if !defined(ASIO_DISABLE_RETURN_TYPE_DEDUCTION) -# if defined(__clang__) -# if __has_feature(__cxx_return_type_deduction__) -# define ASIO_HAS_RETURN_TYPE_DEDUCTION 1 -# endif // __has_feature(__cxx_return_type_deduction__) -# elif (__cplusplus >= 201402) -# define ASIO_HAS_RETURN_TYPE_DEDUCTION 1 -# elif defined(__cpp_return_type_deduction) -# if (__cpp_return_type_deduction >= 201304) -# define ASIO_HAS_RETURN_TYPE_DEDUCTION 1 -# endif // (__cpp_return_type_deduction >= 201304) -# endif // defined(__cpp_return_type_deduction) -# endif // !defined(ASIO_DISABLE_RETURN_TYPE_DEDUCTION) -#endif // !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION) - -// Support default function template arguments on compilers known to allow it. -#if !defined(ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) -# if !defined(ASIO_DISABLE_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) -# if (__cplusplus >= 201103) -# define ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS 1 -# endif // (__cplusplus >= 201103) -# endif // !defined(ASIO_DISABLE_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) -#endif // !defined(ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS) - -// Support concepts on compilers known to allow them. -#if !defined(ASIO_HAS_CONCEPTS) -# if !defined(ASIO_DISABLE_CONCEPTS) -# if defined(__cpp_concepts) -# define ASIO_HAS_CONCEPTS 1 -# if (__cpp_concepts >= 201707) -# define ASIO_CONCEPT concept -# else // (__cpp_concepts >= 201707) -# define ASIO_CONCEPT concept bool -# endif // (__cpp_concepts >= 201707) -# endif // defined(__cpp_concepts) -# endif // !defined(ASIO_DISABLE_CONCEPTS) -#endif // !defined(ASIO_HAS_CONCEPTS) - -// Support template variables on compilers known to allow it. -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) -# if !defined(ASIO_DISABLE_VARIABLE_TEMPLATES) -# if defined(__clang__) -# if (__cplusplus >= 201402) -# if __has_feature(__cxx_variable_templates__) -# define ASIO_HAS_VARIABLE_TEMPLATES 1 -# endif // __has_feature(__cxx_variable_templates__) -# endif // (__cplusplus >= 201402) -# endif // defined(__clang__) -# if defined(__GNUC__) && !defined(__INTEL_COMPILER) -# if (__GNUC__ >= 6) -# if (__cplusplus >= 201402) -# define ASIO_HAS_VARIABLE_TEMPLATES 1 -# endif // (__cplusplus >= 201402) -# endif // (__GNUC__ >= 6) -# endif // defined(__GNUC__) && !defined(__INTEL_COMPILER) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1901) -# define ASIO_HAS_VARIABLE_TEMPLATES 1 -# endif // (_MSC_VER >= 1901) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_VARIABLE_TEMPLATES) -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -// Support SFINAEd template variables on compilers known to allow it. -#if !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -# if !defined(ASIO_DISABLE_SFINAE_VARIABLE_TEMPLATES) -# if defined(__clang__) -# if (__cplusplus >= 201703) -# if __has_feature(__cxx_variable_templates__) -# define ASIO_HAS_SFINAE_VARIABLE_TEMPLATES 1 -# endif // __has_feature(__cxx_variable_templates__) -# endif // (__cplusplus >= 201703) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 8) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 8) -# if (__cplusplus >= 201402) -# define ASIO_HAS_SFINAE_VARIABLE_TEMPLATES 1 -# endif // (__cplusplus >= 201402) -# endif // ((__GNUC__ == 8) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 8) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1901) -# define ASIO_HAS_SFINAE_VARIABLE_TEMPLATES 1 -# endif // (_MSC_VER >= 1901) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_SFINAE_VARIABLE_TEMPLATES) -#endif // !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -// Support SFINAE use of constant expressions on compilers known to allow it. -#if !defined(ASIO_HAS_CONSTANT_EXPRESSION_SFINAE) -# if !defined(ASIO_DISABLE_CONSTANT_EXPRESSION_SFINAE) -# if defined(__clang__) -# if (__cplusplus >= 201402) -# define ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 -# endif // (__cplusplus >= 201402) -# endif // defined(__clang__) -# if defined(__GNUC__) && !defined(__INTEL_COMPILER) -# if (__GNUC__ >= 7) -# if (__cplusplus >= 201402) -# define ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 -# endif // (__cplusplus >= 201402) -# endif // (__GNUC__ >= 7) -# endif // defined(__GNUC__) && !defined(__INTEL_COMPILER) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1901) -# define ASIO_HAS_CONSTANT_EXPRESSION_SFINAE 1 -# endif // (_MSC_VER >= 1901) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_CONSTANT_EXPRESSION_SFINAE) -#endif // !defined(ASIO_HAS_CONSTANT_EXPRESSION_SFINAE) - -// Enable workarounds for lack of working expression SFINAE. -#if !defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) -# if !defined(ASIO_DISABLE_WORKING_EXPRESSION_SFINAE) -# if !defined(ASIO_MSVC) && !defined(__INTEL_COMPILER) -# if (__cplusplus >= 201103) -# define ASIO_HAS_WORKING_EXPRESSION_SFINAE 1 -# endif // (__cplusplus >= 201103) -# endif // !defined(ASIO_MSVC) && !defined(__INTEL_COMPILER) -# endif // !defined(ASIO_DISABLE_WORKING_EXPRESSION_SFINAE) -#endif // !defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) - -// Support ref-qualified functions on compilers known to allow it. -#if !defined(ASIO_HAS_REF_QUALIFIED_FUNCTIONS) -# if !defined(ASIO_DISABLE_REF_QUALIFIED_FUNCTIONS) -# if defined(__clang__) -# if __has_feature(__cxx_reference_qualified_functions__) -# define ASIO_HAS_REF_QUALIFIED_FUNCTIONS 1 -# endif // __has_feature(__cxx_reference_qualified_functions__) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_REF_QUALIFIED_FUNCTIONS 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_REF_QUALIFIED_FUNCTIONS 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_REF_QUALIFIED_FUNCTIONS) -#endif // !defined(ASIO_HAS_REF_QUALIFIED_FUNCTIONS) -#if defined(ASIO_HAS_REF_QUALIFIED_FUNCTIONS) -# if !defined(ASIO_LVALUE_REF_QUAL) -# define ASIO_LVALUE_REF_QUAL & -# endif // !defined(ASIO_LVALUE_REF_QUAL) -# if !defined(ASIO_RVALUE_REF_QUAL) -# define ASIO_RVALUE_REF_QUAL && -# endif // !defined(ASIO_RVALUE_REF_QUAL) -#else // defined(ASIO_HAS_REF_QUALIFIED_FUNCTIONS) -# if !defined(ASIO_LVALUE_REF_QUAL) -# define ASIO_LVALUE_REF_QUAL -# endif // !defined(ASIO_LVALUE_REF_QUAL) -# if !defined(ASIO_RVALUE_REF_QUAL) -# define ASIO_RVALUE_REF_QUAL -# endif // !defined(ASIO_RVALUE_REF_QUAL) -#endif // defined(ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -// Standard library support for system errors. -#if !defined(ASIO_HAS_STD_SYSTEM_ERROR) -# if !defined(ASIO_DISABLE_STD_SYSTEM_ERROR) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_SYSTEM_ERROR 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_SYSTEM_ERROR 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_SYSTEM_ERROR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_SYSTEM_ERROR 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_SYSTEM_ERROR) -#endif // !defined(ASIO_HAS_STD_SYSTEM_ERROR) - -// Compliant C++11 compilers put noexcept specifiers on error_category members. -#if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT) -# if defined(ASIO_HAS_BOOST_CONFIG) && (BOOST_VERSION >= 105300) -# define ASIO_ERROR_CATEGORY_NOEXCEPT BOOST_NOEXCEPT -# elif defined(__clang__) -# if __has_feature(__cxx_noexcept__) -# define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true) -# endif // __has_feature(__cxx_noexcept__) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true) -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# elif defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true) -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT) -# define ASIO_ERROR_CATEGORY_NOEXCEPT -# endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT) -#endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT) - -// Standard library support for arrays. -#if !defined(ASIO_HAS_STD_ARRAY) -# if !defined(ASIO_DISABLE_STD_ARRAY) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_ARRAY 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_ARRAY 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_ARRAY 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1600) -# define ASIO_HAS_STD_ARRAY 1 -# endif // (_MSC_VER >= 1600) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_ARRAY) -#endif // !defined(ASIO_HAS_STD_ARRAY) - -// Standard library support for shared_ptr and weak_ptr. -#if !defined(ASIO_HAS_STD_SHARED_PTR) -# if !defined(ASIO_DISABLE_STD_SHARED_PTR) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_SHARED_PTR 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_SHARED_PTR 1 -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_SHARED_PTR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1600) -# define ASIO_HAS_STD_SHARED_PTR 1 -# endif // (_MSC_VER >= 1600) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_SHARED_PTR) -#endif // !defined(ASIO_HAS_STD_SHARED_PTR) - -// Standard library support for allocator_arg_t. -#if !defined(ASIO_HAS_STD_ALLOCATOR_ARG) -# if !defined(ASIO_DISABLE_STD_ALLOCATOR_ARG) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_ALLOCATOR_ARG 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_ALLOCATOR_ARG 1 -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_ALLOCATOR_ARG 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1600) -# define ASIO_HAS_STD_ALLOCATOR_ARG 1 -# endif // (_MSC_VER >= 1600) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_ALLOCATOR_ARG) -#endif // !defined(ASIO_HAS_STD_ALLOCATOR_ARG) - -// Standard library support for atomic operations. -#if !defined(ASIO_HAS_STD_ATOMIC) -# if !defined(ASIO_DISABLE_STD_ATOMIC) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_ATOMIC 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_ATOMIC 1 -# endif // __has_include() -# elif defined(__apple_build_version__) && defined(_LIBCPP_VERSION) -# if (__clang_major__ >= 10) -# if __has_include() -# define ASIO_HAS_STD_ATOMIC 1 -# endif // __has_include() -# endif // (__clang_major__ >= 10) -# endif // defined(__apple_build_version__) && defined(_LIBCPP_VERSION) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_ATOMIC 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_ATOMIC 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_ATOMIC) -#endif // !defined(ASIO_HAS_STD_ATOMIC) - -// Standard library support for chrono. Some standard libraries (such as the -// libstdc++ shipped with gcc 4.6) provide monotonic_clock as per early C++0x -// drafts, rather than the eventually standardised name of steady_clock. -#if !defined(ASIO_HAS_STD_CHRONO) -# if !defined(ASIO_DISABLE_STD_CHRONO) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_CHRONO 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_CHRONO 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_CHRONO 1 -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6)) -# define ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK 1 -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6)) -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_CHRONO 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_CHRONO) -#endif // !defined(ASIO_HAS_STD_CHRONO) - -// Boost support for chrono. -#if !defined(ASIO_HAS_BOOST_CHRONO) -# if !defined(ASIO_DISABLE_BOOST_CHRONO) -# if defined(ASIO_HAS_BOOST_CONFIG) && (BOOST_VERSION >= 104700) -# define ASIO_HAS_BOOST_CHRONO 1 -# endif // defined(ASIO_HAS_BOOST_CONFIG) && (BOOST_VERSION >= 104700) -# endif // !defined(ASIO_DISABLE_BOOST_CHRONO) -#endif // !defined(ASIO_HAS_BOOST_CHRONO) - -// Some form of chrono library is available. -#if !defined(ASIO_HAS_CHRONO) -# if defined(ASIO_HAS_STD_CHRONO) \ - || defined(ASIO_HAS_BOOST_CHRONO) -# define ASIO_HAS_CHRONO 1 -# endif // defined(ASIO_HAS_STD_CHRONO) - // || defined(ASIO_HAS_BOOST_CHRONO) -#endif // !defined(ASIO_HAS_CHRONO) - -// Boost support for the DateTime library. -#if !defined(ASIO_HAS_BOOST_DATE_TIME) -# if !defined(ASIO_DISABLE_BOOST_DATE_TIME) -# define ASIO_HAS_BOOST_DATE_TIME 1 -# endif // !defined(ASIO_DISABLE_BOOST_DATE_TIME) -#endif // !defined(ASIO_HAS_BOOST_DATE_TIME) - -// Standard library support for addressof. -#if !defined(ASIO_HAS_STD_ADDRESSOF) -# if !defined(ASIO_DISABLE_STD_ADDRESSOF) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_ADDRESSOF 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_ADDRESSOF 1 -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_ADDRESSOF 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_ADDRESSOF 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_ADDRESSOF) -#endif // !defined(ASIO_HAS_STD_ADDRESSOF) - -// Standard library support for the function class. -#if !defined(ASIO_HAS_STD_FUNCTION) -# if !defined(ASIO_DISABLE_STD_FUNCTION) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_FUNCTION 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_FUNCTION 1 -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_FUNCTION 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_FUNCTION 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_FUNCTION) -#endif // !defined(ASIO_HAS_STD_FUNCTION) - -// Standard library support for type traits. -#if !defined(ASIO_HAS_STD_TYPE_TRAITS) -# if !defined(ASIO_DISABLE_STD_TYPE_TRAITS) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_TYPE_TRAITS 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_TYPE_TRAITS 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_TYPE_TRAITS 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_TYPE_TRAITS 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_TYPE_TRAITS) -#endif // !defined(ASIO_HAS_STD_TYPE_TRAITS) - -// Standard library support for the nullptr_t type. -#if !defined(ASIO_HAS_NULLPTR) -# if !defined(ASIO_DISABLE_NULLPTR) -# if defined(__clang__) -# if __has_feature(__cxx_nullptr__) -# define ASIO_HAS_NULLPTR 1 -# endif // __has_feature(__cxx_nullptr__) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_NULLPTR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_NULLPTR 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_NULLPTR) -#endif // !defined(ASIO_HAS_NULLPTR) - -// Standard library support for the C++11 allocator additions. -#if !defined(ASIO_HAS_CXX11_ALLOCATORS) -# if !defined(ASIO_DISABLE_CXX11_ALLOCATORS) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_CXX11_ALLOCATORS 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_CXX11_ALLOCATORS 1 -# endif // (__cplusplus >= 201103) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_CXX11_ALLOCATORS 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1800) -# define ASIO_HAS_CXX11_ALLOCATORS 1 -# endif // (_MSC_VER >= 1800) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_CXX11_ALLOCATORS) -#endif // !defined(ASIO_HAS_CXX11_ALLOCATORS) - -// Standard library support for the cstdint header. -#if !defined(ASIO_HAS_CSTDINT) -# if !defined(ASIO_DISABLE_CSTDINT) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_CSTDINT 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_CSTDINT 1 -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_CSTDINT 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_CSTDINT 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_CSTDINT) -#endif // !defined(ASIO_HAS_CSTDINT) - -// Standard library support for the thread class. -#if !defined(ASIO_HAS_STD_THREAD) -# if !defined(ASIO_DISABLE_STD_THREAD) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_THREAD 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_THREAD 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_THREAD 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_THREAD 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_THREAD) -#endif // !defined(ASIO_HAS_STD_THREAD) - -// Standard library support for the mutex and condition variable classes. -#if !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -# if !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR) -#endif // !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -// Standard library support for the call_once function. -#if !defined(ASIO_HAS_STD_CALL_ONCE) -# if !defined(ASIO_DISABLE_STD_CALL_ONCE) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_CALL_ONCE 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_CALL_ONCE 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_CALL_ONCE 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_CALL_ONCE 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_CALL_ONCE) -#endif // !defined(ASIO_HAS_STD_CALL_ONCE) - -// Standard library support for futures. -#if !defined(ASIO_HAS_STD_FUTURE) -# if !defined(ASIO_DISABLE_STD_FUTURE) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_FUTURE 1 -# elif (__cplusplus >= 201103) -# if __has_include() -# define ASIO_HAS_STD_FUTURE 1 -# endif // __has_include() -# endif // (__cplusplus >= 201103) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_FUTURE 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_FUTURE 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_FUTURE) -#endif // !defined(ASIO_HAS_STD_FUTURE) - -// Standard library support for std::string_view. -#if !defined(ASIO_HAS_STD_STRING_VIEW) -# if !defined(ASIO_DISABLE_STD_STRING_VIEW) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# if (__cplusplus >= 201402) -# if __has_include() -# define ASIO_HAS_STD_STRING_VIEW 1 -# endif // __has_include() -# endif // (__cplusplus >= 201402) -# else // defined(ASIO_HAS_CLANG_LIBCXX) -# if (__cplusplus >= 201703) -# if __has_include() -# define ASIO_HAS_STD_STRING_VIEW 1 -# endif // __has_include() -# endif // (__cplusplus >= 201703) -# endif // defined(ASIO_HAS_CLANG_LIBCXX) -# elif defined(__GNUC__) -# if (__GNUC__ >= 7) -# if (__cplusplus >= 201703) -# define ASIO_HAS_STD_STRING_VIEW 1 -# endif // (__cplusplus >= 201703) -# endif // (__GNUC__ >= 7) -# elif defined(ASIO_MSVC) -# if (_MSC_VER >= 1910 && _MSVC_LANG >= 201703) -# define ASIO_HAS_STD_STRING_VIEW 1 -# endif // (_MSC_VER >= 1910 && _MSVC_LANG >= 201703) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_STRING_VIEW) -#endif // !defined(ASIO_HAS_STD_STRING_VIEW) - -// Standard library support for std::experimental::string_view. -#if !defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -# if !defined(ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# if (_LIBCPP_VERSION < 7000) -# if (__cplusplus >= 201402) -# if __has_include() -# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 -# endif // __has_include() -# endif // (__cplusplus >= 201402) -# endif // (_LIBCPP_VERSION < 7000) -# else // defined(ASIO_HAS_CLANG_LIBCXX) -# if (__cplusplus >= 201402) -# if __has_include() -# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 -# endif // __has_include() -# endif // (__cplusplus >= 201402) -# endif // // defined(ASIO_HAS_CLANG_LIBCXX) -# endif // defined(__clang__) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) -# if (__cplusplus >= 201402) -# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 -# endif // (__cplusplus >= 201402) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# endif // !defined(ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW) -#endif // !defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) - -// Standard library has a string_view that we can use. -#if !defined(ASIO_HAS_STRING_VIEW) -# if !defined(ASIO_DISABLE_STRING_VIEW) -# if defined(ASIO_HAS_STD_STRING_VIEW) -# define ASIO_HAS_STRING_VIEW 1 -# elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -# define ASIO_HAS_STRING_VIEW 1 -# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -# endif // !defined(ASIO_DISABLE_STRING_VIEW) -#endif // !defined(ASIO_HAS_STRING_VIEW) - -// Standard library support for iostream move construction and assignment. -#if !defined(ASIO_HAS_STD_IOSTREAM_MOVE) -# if !defined(ASIO_DISABLE_STD_IOSTREAM_MOVE) -# if defined(__GNUC__) -# if (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_IOSTREAM_MOVE 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_STD_IOSTREAM_MOVE 1 -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_IOSTREAM_MOVE) -#endif // !defined(ASIO_HAS_STD_IOSTREAM_MOVE) - -// Standard library has invoke_result (which supersedes result_of). -#if !defined(ASIO_HAS_STD_INVOKE_RESULT) -# if !defined(ASIO_DISABLE_STD_INVOKE_RESULT) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1911 && _MSVC_LANG >= 201703) -# define ASIO_HAS_STD_INVOKE_RESULT 1 -# endif // (_MSC_VER >= 1911 && _MSVC_LANG >= 201703) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_INVOKE_RESULT) -#endif // !defined(ASIO_HAS_STD_INVOKE_RESULT) - -// Standard library support for std::exception_ptr and std::current_exception. -#if !defined(ASIO_HAS_STD_EXCEPTION_PTR) -# if !defined(ASIO_DISABLE_STD_EXCEPTION_PTR) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_EXCEPTION_PTR 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_EXCEPTION_PTR 1 -# endif // (__cplusplus >= 201103) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_EXCEPTION_PTR 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1800) -# define ASIO_HAS_STD_EXCEPTION_PTR 1 -# endif // (_MSC_VER >= 1800) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_EXCEPTION_PTR) -#endif // !defined(ASIO_HAS_STD_EXCEPTION_PTR) - -// Standard library support for std::nested_exception. -#if !defined(ASIO_HAS_STD_NESTED_EXCEPTION) -# if !defined(ASIO_DISABLE_STD_NESTED_EXCEPTION) -# if defined(__clang__) -# if defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_NESTED_EXCEPTION 1 -# elif (__cplusplus >= 201103) -# define ASIO_HAS_STD_NESTED_EXCEPTION 1 -# endif // (__cplusplus >= 201103) -# elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# if (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_HAS_STD_NESTED_EXCEPTION 1 -# endif // (__cplusplus >= 201103) || defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1900) -# define ASIO_HAS_STD_NESTED_EXCEPTION 1 -# endif // (_MSC_VER >= 1900) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_NESTED_EXCEPTION) -#endif // !defined(ASIO_HAS_STD_NESTED_EXCEPTION) - -// Standard library support for std::any. -#if !defined(ASIO_HAS_STD_ANY) -# if !defined(ASIO_DISABLE_STD_ANY) -# if defined(__clang__) -# if (__cplusplus >= 201703) -# if __has_include() -# define ASIO_HAS_STD_ANY 1 -# endif // __has_include() -# endif // (__cplusplus >= 201703) -# elif defined(__GNUC__) -# if (__GNUC__ >= 7) -# if (__cplusplus >= 201703) -# define ASIO_HAS_STD_ANY 1 -# endif // (__cplusplus >= 201703) -# endif // (__GNUC__ >= 7) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1910) && (_MSVC_LANG >= 201703) -# define ASIO_HAS_STD_ANY 1 -# endif // (_MSC_VER >= 1910) && (_MSVC_LANG >= 201703) -# endif // defined(ASIO_MSVC) -# endif // !defined(ASIO_DISABLE_STD_ANY) -#endif // !defined(ASIO_HAS_STD_ANY) - -// Standard library support for std::source_location. -#if !defined(ASIO_HAS_STD_SOURCE_LOCATION) -# if !defined(ASIO_DISABLE_STD_SOURCE_LOCATION) -// ... -# endif // !defined(ASIO_DISABLE_STD_SOURCE_LOCATION) -#endif // !defined(ASIO_HAS_STD_SOURCE_LOCATION) - -// Standard library support for std::experimental::source_location. -#if !defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -# if !defined(ASIO_DISABLE_STD_EXPERIMENTAL_SOURCE_LOCATION) -# if defined(__GNUC__) -# if (__cplusplus >= 201709) -# if __has_include() -# define ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION 1 -# endif // __has_include() -# endif // (__cplusplus >= 201709) -# endif // defined(__GNUC__) -# endif // !defined(ASIO_DISABLE_STD_EXPERIMENTAL_SOURCE_LOCATION) -#endif // !defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) - -// Standard library has a source_location that we can use. -#if !defined(ASIO_HAS_SOURCE_LOCATION) -# if !defined(ASIO_DISABLE_SOURCE_LOCATION) -# if defined(ASIO_HAS_STD_SOURCE_LOCATION) -# define ASIO_HAS_SOURCE_LOCATION 1 -# elif defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -# define ASIO_HAS_SOURCE_LOCATION 1 -# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -# endif // !defined(ASIO_DISABLE_SOURCE_LOCATION) -#endif // !defined(ASIO_HAS_SOURCE_LOCATION) - -// Windows App target. Windows but with a limited API. -#if !defined(ASIO_WINDOWS_APP) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0603) -# include -# if (WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \ - || WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)) \ - && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# define ASIO_WINDOWS_APP 1 -# endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0603) -#endif // !defined(ASIO_WINDOWS_APP) - -// Legacy WinRT target. Windows App is preferred. -#if !defined(ASIO_WINDOWS_RUNTIME) -# if !defined(ASIO_WINDOWS_APP) -# if defined(__cplusplus_winrt) -# include -# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \ - && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# define ASIO_WINDOWS_RUNTIME 1 -# endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -# endif // defined(__cplusplus_winrt) -# endif // !defined(ASIO_WINDOWS_APP) -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -// Windows target. Excludes WinRT but includes Windows App targets. -#if !defined(ASIO_WINDOWS) -# if !defined(ASIO_WINDOWS_RUNTIME) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) -# define ASIO_WINDOWS 1 -# elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) -# define ASIO_WINDOWS 1 -# elif defined(ASIO_WINDOWS_APP) -# define ASIO_WINDOWS 1 -# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) -# endif // !defined(ASIO_WINDOWS_RUNTIME) -#endif // !defined(ASIO_WINDOWS) - -// Windows: target OS version. -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS) -# if defined(_MSC_VER) || (defined(__BORLANDC__) && !defined(__clang__)) -# pragma message( \ - "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\ - "- add -D_WIN32_WINNT=0x0601 to the compiler command line; or\n"\ - "- add _WIN32_WINNT=0x0601 to your project's Preprocessor Definitions.\n"\ - "Assuming _WIN32_WINNT=0x0601 (i.e. Windows 7 target).") -# else // defined(_MSC_VER) || (defined(__BORLANDC__) && !defined(__clang__)) -# warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. -# warning For example, add -D_WIN32_WINNT=0x0601 to the compiler command line. -# warning Assuming _WIN32_WINNT=0x0601 (i.e. Windows 7 target). -# endif // defined(_MSC_VER) || (defined(__BORLANDC__) && !defined(__clang__)) -# define _WIN32_WINNT 0x0601 -# endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS) -# if defined(_MSC_VER) -# if defined(_WIN32) && !defined(WIN32) -# if !defined(_WINSOCK2API_) -# define WIN32 // Needed for correct types in winsock2.h -# else // !defined(_WINSOCK2API_) -# error Please define the macro WIN32 in your compiler options -# endif // !defined(_WINSOCK2API_) -# endif // defined(_WIN32) && !defined(WIN32) -# endif // defined(_MSC_VER) -# if defined(__BORLANDC__) -# if defined(__WIN32__) && !defined(WIN32) -# if !defined(_WINSOCK2API_) -# define WIN32 // Needed for correct types in winsock2.h -# else // !defined(_WINSOCK2API_) -# error Please define the macro WIN32 in your compiler options -# endif // !defined(_WINSOCK2API_) -# endif // defined(__WIN32__) && !defined(WIN32) -# endif // defined(__BORLANDC__) -# if defined(__CYGWIN__) -# if !defined(__USE_W32_SOCKETS) -# error You must add -D__USE_W32_SOCKETS to your compiler options. -# endif // !defined(__USE_W32_SOCKETS) -# endif // defined(__CYGWIN__) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -// Windows: minimise header inclusion. -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if !defined(ASIO_NO_WIN32_LEAN_AND_MEAN) -# if !defined(WIN32_LEAN_AND_MEAN) -# define WIN32_LEAN_AND_MEAN -# endif // !defined(WIN32_LEAN_AND_MEAN) -# endif // !defined(ASIO_NO_WIN32_LEAN_AND_MEAN) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -// Windows: suppress definition of "min" and "max" macros. -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if !defined(ASIO_NO_NOMINMAX) -# if !defined(NOMINMAX) -# define NOMINMAX 1 -# endif // !defined(NOMINMAX) -# endif // !defined(ASIO_NO_NOMINMAX) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -// Windows: IO Completion Ports. -#if !defined(ASIO_HAS_IOCP) -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) -# if !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) -# if !defined(ASIO_DISABLE_IOCP) -# define ASIO_HAS_IOCP 1 -# endif // !defined(ASIO_DISABLE_IOCP) -# endif // !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) -# endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -#endif // !defined(ASIO_HAS_IOCP) - -// On POSIX (and POSIX-like) platforms we need to include unistd.h in order to -// get access to the various platform feature macros, e.g. to be able to test -// for threads support. -#if !defined(ASIO_HAS_UNISTD_H) -# if !defined(ASIO_HAS_BOOST_CONFIG) -# if defined(unix) \ - || defined(__unix) \ - || defined(_XOPEN_SOURCE) \ - || defined(_POSIX_SOURCE) \ - || (defined(__MACH__) && defined(__APPLE__)) \ - || defined(__FreeBSD__) \ - || defined(__NetBSD__) \ - || defined(__OpenBSD__) \ - || defined(__linux__) \ - || defined(__HAIKU__) -# define ASIO_HAS_UNISTD_H 1 -# endif -# endif // !defined(ASIO_HAS_BOOST_CONFIG) -#endif // !defined(ASIO_HAS_UNISTD_H) -#if defined(ASIO_HAS_UNISTD_H) -# include -#endif // defined(ASIO_HAS_UNISTD_H) - -// Linux: epoll, eventfd and timerfd. -#if defined(__linux__) -# include -# if !defined(ASIO_HAS_EPOLL) -# if !defined(ASIO_DISABLE_EPOLL) -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45) -# define ASIO_HAS_EPOLL 1 -# endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45) -# endif // !defined(ASIO_DISABLE_EPOLL) -# endif // !defined(ASIO_HAS_EPOLL) -# if !defined(ASIO_HAS_EVENTFD) -# if !defined(ASIO_DISABLE_EVENTFD) -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) -# define ASIO_HAS_EVENTFD 1 -# endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) -# endif // !defined(ASIO_DISABLE_EVENTFD) -# endif // !defined(ASIO_HAS_EVENTFD) -# if !defined(ASIO_HAS_TIMERFD) -# if defined(ASIO_HAS_EPOLL) -# if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8) -# define ASIO_HAS_TIMERFD 1 -# endif // (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8) -# endif // defined(ASIO_HAS_EPOLL) -# endif // !defined(ASIO_HAS_TIMERFD) -#endif // defined(__linux__) - -// Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue. -#if (defined(__MACH__) && defined(__APPLE__)) \ - || defined(__FreeBSD__) \ - || defined(__NetBSD__) \ - || defined(__OpenBSD__) -# if !defined(ASIO_HAS_KQUEUE) -# if !defined(ASIO_DISABLE_KQUEUE) -# define ASIO_HAS_KQUEUE 1 -# endif // !defined(ASIO_DISABLE_KQUEUE) -# endif // !defined(ASIO_HAS_KQUEUE) -#endif // (defined(__MACH__) && defined(__APPLE__)) - // || defined(__FreeBSD__) - // || defined(__NetBSD__) - // || defined(__OpenBSD__) - -// Solaris: /dev/poll. -#if defined(__sun) -# if !defined(ASIO_HAS_DEV_POLL) -# if !defined(ASIO_DISABLE_DEV_POLL) -# define ASIO_HAS_DEV_POLL 1 -# endif // !defined(ASIO_DISABLE_DEV_POLL) -# endif // !defined(ASIO_HAS_DEV_POLL) -#endif // defined(__sun) - -// Serial ports. -#if !defined(ASIO_HAS_SERIAL_PORT) -# if defined(ASIO_HAS_IOCP) \ - || !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) -# if !defined(__SYMBIAN32__) -# if !defined(ASIO_DISABLE_SERIAL_PORT) -# define ASIO_HAS_SERIAL_PORT 1 -# endif // !defined(ASIO_DISABLE_SERIAL_PORT) -# endif // !defined(__SYMBIAN32__) -# endif // defined(ASIO_HAS_IOCP) - // || !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -#endif // !defined(ASIO_HAS_SERIAL_PORT) - -// Windows: stream handles. -#if !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) -# if !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE) -# if defined(ASIO_HAS_IOCP) -# define ASIO_HAS_WINDOWS_STREAM_HANDLE 1 -# endif // defined(ASIO_HAS_IOCP) -# endif // !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE) -#endif // !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) - -// Windows: random access handles. -#if !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) -# if !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE) -# if defined(ASIO_HAS_IOCP) -# define ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1 -# endif // defined(ASIO_HAS_IOCP) -# endif // !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE) -#endif // !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) - -// Windows: object handles. -#if !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) -# if !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE) -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) -# define ASIO_HAS_WINDOWS_OBJECT_HANDLE 1 -# endif // !defined(UNDER_CE) && !defined(ASIO_WINDOWS_APP) -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# endif // !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE) -#endif // !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) - -// Windows: OVERLAPPED wrapper. -#if !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR) -# if !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR) -# if defined(ASIO_HAS_IOCP) -# define ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1 -# endif // defined(ASIO_HAS_IOCP) -# endif // !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR) -#endif // !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR) - -// POSIX: stream-oriented file descriptors. -#if !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) -# if !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR) -# if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) -# define ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1 -# endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -# endif // !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR) -#endif // !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) - -// UNIX domain sockets. -#if !defined(ASIO_HAS_LOCAL_SOCKETS) -# if !defined(ASIO_DISABLE_LOCAL_SOCKETS) -# if !defined(ASIO_WINDOWS_RUNTIME) -# define ASIO_HAS_LOCAL_SOCKETS 1 -# endif // !defined(ASIO_WINDOWS_RUNTIME) -# endif // !defined(ASIO_DISABLE_LOCAL_SOCKETS) -#endif // !defined(ASIO_HAS_LOCAL_SOCKETS) - -// Can use sigaction() instead of signal(). -#if !defined(ASIO_HAS_SIGACTION) -# if !defined(ASIO_DISABLE_SIGACTION) -# if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) -# define ASIO_HAS_SIGACTION 1 -# endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -# endif // !defined(ASIO_DISABLE_SIGACTION) -#endif // !defined(ASIO_HAS_SIGACTION) - -// Can use signal(). -#if !defined(ASIO_HAS_SIGNAL) -# if !defined(ASIO_DISABLE_SIGNAL) -# if !defined(UNDER_CE) -# define ASIO_HAS_SIGNAL 1 -# endif // !defined(UNDER_CE) -# endif // !defined(ASIO_DISABLE_SIGNAL) -#endif // !defined(ASIO_HAS_SIGNAL) - -// Can use getaddrinfo() and getnameinfo(). -#if !defined(ASIO_HAS_GETADDRINFO) -# if !defined(ASIO_DISABLE_GETADDRINFO) -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) -# define ASIO_HAS_GETADDRINFO 1 -# elif defined(UNDER_CE) -# define ASIO_HAS_GETADDRINFO 1 -# endif // defined(UNDER_CE) -# elif defined(__MACH__) && defined(__APPLE__) -# if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -# if (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) -# define ASIO_HAS_GETADDRINFO 1 -# endif // (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) -# else // defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -# define ASIO_HAS_GETADDRINFO 1 -# endif // defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -# else // defined(__MACH__) && defined(__APPLE__) -# define ASIO_HAS_GETADDRINFO 1 -# endif // defined(__MACH__) && defined(__APPLE__) -# endif // !defined(ASIO_DISABLE_GETADDRINFO) -#endif // !defined(ASIO_HAS_GETADDRINFO) - -// Whether standard iostreams are disabled. -#if !defined(ASIO_NO_IOSTREAM) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM) -# define ASIO_NO_IOSTREAM 1 -# endif // !defined(BOOST_NO_IOSTREAM) -#endif // !defined(ASIO_NO_IOSTREAM) - -// Whether exception handling is disabled. -#if !defined(ASIO_NO_EXCEPTIONS) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_EXCEPTIONS) -# define ASIO_NO_EXCEPTIONS 1 -# endif // !defined(BOOST_NO_EXCEPTIONS) -#endif // !defined(ASIO_NO_EXCEPTIONS) - -// Whether the typeid operator is supported. -#if !defined(ASIO_NO_TYPEID) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_TYPEID) -# define ASIO_NO_TYPEID 1 -# endif // !defined(BOOST_NO_TYPEID) -#endif // !defined(ASIO_NO_TYPEID) - -// Threads. -#if !defined(ASIO_HAS_THREADS) -# if !defined(ASIO_DISABLE_THREADS) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS) -# define ASIO_HAS_THREADS 1 -# elif defined(__GNUC__) && !defined(__MINGW32__) \ - && !defined(linux) && !defined(__linux) && !defined(__linux__) -# define ASIO_HAS_THREADS 1 -# elif defined(_MT) || defined(__MT__) -# define ASIO_HAS_THREADS 1 -# elif defined(_REENTRANT) -# define ASIO_HAS_THREADS 1 -# elif defined(__APPLE__) -# define ASIO_HAS_THREADS 1 -# elif defined(__HAIKU__) -# define ASIO_HAS_THREADS 1 -# elif defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) -# define ASIO_HAS_THREADS 1 -# elif defined(_PTHREADS) -# define ASIO_HAS_THREADS 1 -# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS) -# endif // !defined(ASIO_DISABLE_THREADS) -#endif // !defined(ASIO_HAS_THREADS) - -// POSIX threads. -#if !defined(ASIO_HAS_PTHREADS) -# if defined(ASIO_HAS_THREADS) -# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS) -# define ASIO_HAS_PTHREADS 1 -# elif defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) -# define ASIO_HAS_PTHREADS 1 -# elif defined(__HAIKU__) -# define ASIO_HAS_PTHREADS 1 -# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS) -# endif // defined(ASIO_HAS_THREADS) -#endif // !defined(ASIO_HAS_PTHREADS) - -// Helper to prevent macro expansion. -#define ASIO_PREVENT_MACRO_SUBSTITUTION - -// Helper to define in-class constants. -#if !defined(ASIO_STATIC_CONSTANT) -# if !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT) -# define ASIO_STATIC_CONSTANT(type, assignment) \ - BOOST_STATIC_CONSTANT(type, assignment) -# else // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT) -# define ASIO_STATIC_CONSTANT(type, assignment) \ - static const type assignment -# endif // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT) -#endif // !defined(ASIO_STATIC_CONSTANT) - -// Boost array library. -#if !defined(ASIO_HAS_BOOST_ARRAY) -# if !defined(ASIO_DISABLE_BOOST_ARRAY) -# define ASIO_HAS_BOOST_ARRAY 1 -# endif // !defined(ASIO_DISABLE_BOOST_ARRAY) -#endif // !defined(ASIO_HAS_BOOST_ARRAY) - -// Boost assert macro. -#if !defined(ASIO_HAS_BOOST_ASSERT) -# if !defined(ASIO_DISABLE_BOOST_ASSERT) -# define ASIO_HAS_BOOST_ASSERT 1 -# endif // !defined(ASIO_DISABLE_BOOST_ASSERT) -#endif // !defined(ASIO_HAS_BOOST_ASSERT) - -// Boost limits header. -#if !defined(ASIO_HAS_BOOST_LIMITS) -# if !defined(ASIO_DISABLE_BOOST_LIMITS) -# define ASIO_HAS_BOOST_LIMITS 1 -# endif // !defined(ASIO_DISABLE_BOOST_LIMITS) -#endif // !defined(ASIO_HAS_BOOST_LIMITS) - -// Boost throw_exception function. -#if !defined(ASIO_HAS_BOOST_THROW_EXCEPTION) -# if !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION) -# define ASIO_HAS_BOOST_THROW_EXCEPTION 1 -# endif // !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION) -#endif // !defined(ASIO_HAS_BOOST_THROW_EXCEPTION) - -// Boost regex library. -#if !defined(ASIO_HAS_BOOST_REGEX) -# if !defined(ASIO_DISABLE_BOOST_REGEX) -# define ASIO_HAS_BOOST_REGEX 1 -# endif // !defined(ASIO_DISABLE_BOOST_REGEX) -#endif // !defined(ASIO_HAS_BOOST_REGEX) - -// Boost bind function. -#if !defined(ASIO_HAS_BOOST_BIND) -# if !defined(ASIO_DISABLE_BOOST_BIND) -# define ASIO_HAS_BOOST_BIND 1 -# endif // !defined(ASIO_DISABLE_BOOST_BIND) -#endif // !defined(ASIO_HAS_BOOST_BIND) - -// Boost's BOOST_WORKAROUND macro. -#if !defined(ASIO_HAS_BOOST_WORKAROUND) -# if !defined(ASIO_DISABLE_BOOST_WORKAROUND) -# define ASIO_HAS_BOOST_WORKAROUND 1 -# endif // !defined(ASIO_DISABLE_BOOST_WORKAROUND) -#endif // !defined(ASIO_HAS_BOOST_WORKAROUND) - -// Microsoft Visual C++'s secure C runtime library. -#if !defined(ASIO_HAS_SECURE_RTL) -# if !defined(ASIO_DISABLE_SECURE_RTL) -# if defined(ASIO_MSVC) \ - && (ASIO_MSVC >= 1400) \ - && !defined(UNDER_CE) -# define ASIO_HAS_SECURE_RTL 1 -# endif // defined(ASIO_MSVC) - // && (ASIO_MSVC >= 1400) - // && !defined(UNDER_CE) -# endif // !defined(ASIO_DISABLE_SECURE_RTL) -#endif // !defined(ASIO_HAS_SECURE_RTL) - -// Handler hooking. Disabled for ancient Borland C++ and gcc compilers. -#if !defined(ASIO_HAS_HANDLER_HOOKS) -# if !defined(ASIO_DISABLE_HANDLER_HOOKS) -# if defined(__GNUC__) -# if (__GNUC__ >= 3) -# define ASIO_HAS_HANDLER_HOOKS 1 -# endif // (__GNUC__ >= 3) -# elif !defined(__BORLANDC__) || defined(__clang__) -# define ASIO_HAS_HANDLER_HOOKS 1 -# endif // !defined(__BORLANDC__) || defined(__clang__) -# endif // !defined(ASIO_DISABLE_HANDLER_HOOKS) -#endif // !defined(ASIO_HAS_HANDLER_HOOKS) - -// Support for the __thread keyword extension. -#if !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION) -# if defined(__linux__) -# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -# if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3) -# if !defined(__INTEL_COMPILER) && !defined(__ICL) \ - && !(defined(__clang__) && defined(__ANDROID__)) -# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 -# define ASIO_THREAD_KEYWORD __thread -# elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100) -# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 -# endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100) - // && !(defined(__clang__) && defined(__ANDROID__)) -# endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3) -# endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -# endif // defined(__linux__) -# if defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME) -# if (_MSC_VER >= 1700) -# define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 -# define ASIO_THREAD_KEYWORD __declspec(thread) -# endif // (_MSC_VER >= 1700) -# endif // defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME) -#endif // !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION) -#if !defined(ASIO_THREAD_KEYWORD) -# define ASIO_THREAD_KEYWORD __thread -#endif // !defined(ASIO_THREAD_KEYWORD) - -// Support for POSIX ssize_t typedef. -#if !defined(ASIO_DISABLE_SSIZE_T) -# if defined(__linux__) \ - || (defined(__MACH__) && defined(__APPLE__)) -# define ASIO_HAS_SSIZE_T 1 -# endif // defined(__linux__) - // || (defined(__MACH__) && defined(__APPLE__)) -#endif // !defined(ASIO_DISABLE_SSIZE_T) - -// Helper macros to manage transition away from error_code return values. -#if defined(ASIO_NO_DEPRECATED) -# define ASIO_SYNC_OP_VOID void -# define ASIO_SYNC_OP_VOID_RETURN(e) return -#else // defined(ASIO_NO_DEPRECATED) -# define ASIO_SYNC_OP_VOID asio::error_code -# define ASIO_SYNC_OP_VOID_RETURN(e) return e -#endif // defined(ASIO_NO_DEPRECATED) - -// Newer gcc, clang need special treatment to suppress unused typedef warnings. -#if defined(__clang__) -# if defined(__apple_build_version__) -# if (__clang_major__ >= 7) -# define ASIO_UNUSED_TYPEDEF __attribute__((__unused__)) -# endif // (__clang_major__ >= 7) -# elif ((__clang_major__ == 3) && (__clang_minor__ >= 6)) \ - || (__clang_major__ > 3) -# define ASIO_UNUSED_TYPEDEF __attribute__((__unused__)) -# endif // ((__clang_major__ == 3) && (__clang_minor__ >= 6)) - // || (__clang_major__ > 3) -#elif defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -# define ASIO_UNUSED_TYPEDEF __attribute__((__unused__)) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) -#endif // defined(__GNUC__) -#if !defined(ASIO_UNUSED_TYPEDEF) -# define ASIO_UNUSED_TYPEDEF -#endif // !defined(ASIO_UNUSED_TYPEDEF) - -// Some versions of gcc generate spurious warnings about unused variables. -#if defined(__GNUC__) -# if (__GNUC__ >= 4) -# define ASIO_UNUSED_VARIABLE __attribute__((__unused__)) -# endif // (__GNUC__ >= 4) -#endif // defined(__GNUC__) -#if !defined(ASIO_UNUSED_VARIABLE) -# define ASIO_UNUSED_VARIABLE -#endif // !defined(ASIO_UNUSED_VARIABLE) - -// Support the co_await keyword on compilers known to allow it. -#if !defined(ASIO_HAS_CO_AWAIT) -# if !defined(ASIO_DISABLE_CO_AWAIT) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) -# define ASIO_HAS_CO_AWAIT 1 -# elif (_MSC_FULL_VER >= 190023506) -# if defined(_RESUMABLE_FUNCTIONS_SUPPORTED) -# define ASIO_HAS_CO_AWAIT 1 -# endif // defined(_RESUMABLE_FUNCTIONS_SUPPORTED) -# endif // (_MSC_FULL_VER >= 190023506) -# endif // defined(ASIO_MSVC) -# if defined(__clang__) -# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703) -# if __has_include() -# define ASIO_HAS_CO_AWAIT 1 -# endif // __has_include() -# endif // (__cplusplus >= 201703) && (__cpp_coroutines >= 201703) -# elif defined(__GNUC__) -# if (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902) -# if __has_include() -# define ASIO_HAS_CO_AWAIT 1 -# endif // __has_include() -# endif // (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902) -# endif // defined(__GNUC__) -# endif // !defined(ASIO_DISABLE_CO_AWAIT) -#endif // !defined(ASIO_HAS_CO_AWAIT) - -// Standard library support for coroutines. -#if !defined(ASIO_HAS_STD_COROUTINE) -# if !defined(ASIO_DISABLE_STD_COROUTINE) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) -# define ASIO_HAS_STD_COROUTINE 1 -# endif // (_MSC_VER >= 1928) && (_MSVC_LANG >= 201705) -# endif // defined(ASIO_MSVC) -# if defined(__GNUC__) -# if (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902) -# if __has_include() -# define ASIO_HAS_STD_COROUTINE 1 -# endif // __has_include() -# endif // (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902) -# endif // defined(__GNUC__) -# endif // !defined(ASIO_DISABLE_STD_COROUTINE) -#endif // !defined(ASIO_HAS_STD_COROUTINE) - -// Compiler support for the the [[nodiscard]] attribute. -#if !defined(ASIO_NODISCARD) -# if defined(__has_cpp_attribute) -# if __has_cpp_attribute(nodiscard) -# if (__cplusplus >= 201703) -# define ASIO_NODISCARD [[nodiscard]] -# endif // (__cplusplus >= 201703) -# endif // __has_cpp_attribute(nodiscard) -# endif // defined(__has_cpp_attribute) -#endif // !defined(ASIO_NODISCARD) -#if !defined(ASIO_NODISCARD) -# define ASIO_NODISCARD -#endif // !defined(ASIO_NODISCARD) - -// Kernel support for MSG_NOSIGNAL. -#if !defined(ASIO_HAS_MSG_NOSIGNAL) -# if defined(__linux__) -# define ASIO_HAS_MSG_NOSIGNAL 1 -# elif defined(_POSIX_VERSION) -# if (_POSIX_VERSION >= 200809L) -# define ASIO_HAS_MSG_NOSIGNAL 1 -# endif // _POSIX_VERSION >= 200809L -# endif // defined(_POSIX_VERSION) -#endif // !defined(ASIO_HAS_MSG_NOSIGNAL) - -#endif // ASIO_DETAIL_CONFIG_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/consuming_buffers.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/consuming_buffers.hpp deleted file mode 100644 index 0caf5574..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/consuming_buffers.hpp +++ /dev/null @@ -1,414 +0,0 @@ -// -// detail/consuming_buffers.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CONSUMING_BUFFERS_HPP -#define ASIO_DETAIL_CONSUMING_BUFFERS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/buffer.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/limits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper template to determine the maximum number of prepared buffers. -template -struct prepared_buffers_max -{ - enum { value = buffer_sequence_adapter_base::max_buffers }; -}; - -template -struct prepared_buffers_max > -{ - enum { value = N }; -}; - -#if defined(ASIO_HAS_STD_ARRAY) - -template -struct prepared_buffers_max > -{ - enum { value = N }; -}; - -#endif // defined(ASIO_HAS_STD_ARRAY) - -// A buffer sequence used to represent a subsequence of the buffers. -template -struct prepared_buffers -{ - typedef Buffer value_type; - typedef const Buffer* const_iterator; - - enum { max_buffers = MaxBuffers < 16 ? MaxBuffers : 16 }; - - prepared_buffers() : count(0) {} - const_iterator begin() const { return elems; } - const_iterator end() const { return elems + count; } - - Buffer elems[max_buffers]; - std::size_t count; -}; - -// A proxy for a sub-range in a list of buffers. -template -class consuming_buffers -{ -public: - typedef prepared_buffers::value> - prepared_buffers_type; - - // Construct to represent the entire list of buffers. - explicit consuming_buffers(const Buffers& buffers) - : buffers_(buffers), - total_consumed_(0), - next_elem_(0), - next_elem_offset_(0) - { - using asio::buffer_size; - total_size_ = buffer_size(buffers); - } - - // Determine if we are at the end of the buffers. - bool empty() const - { - return total_consumed_ >= total_size_; - } - - // Get the buffer for a single transfer, with a size. - prepared_buffers_type prepare(std::size_t max_size) - { - prepared_buffers_type result; - - Buffer_Iterator next = asio::buffer_sequence_begin(buffers_); - Buffer_Iterator end = asio::buffer_sequence_end(buffers_); - - std::advance(next, next_elem_); - std::size_t elem_offset = next_elem_offset_; - while (next != end && max_size > 0 && (result.count) < result.max_buffers) - { - Buffer next_buf = Buffer(*next) + elem_offset; - result.elems[result.count] = asio::buffer(next_buf, max_size); - max_size -= result.elems[result.count].size(); - elem_offset = 0; - if (result.elems[result.count].size() > 0) - ++result.count; - ++next; - } - - return result; - } - - // Consume the specified number of bytes from the buffers. - void consume(std::size_t size) - { - total_consumed_ += size; - - Buffer_Iterator next = asio::buffer_sequence_begin(buffers_); - Buffer_Iterator end = asio::buffer_sequence_end(buffers_); - - std::advance(next, next_elem_); - while (next != end && size > 0) - { - Buffer next_buf = Buffer(*next) + next_elem_offset_; - if (size < next_buf.size()) - { - next_elem_offset_ += size; - size = 0; - } - else - { - size -= next_buf.size(); - next_elem_offset_ = 0; - ++next_elem_; - ++next; - } - } - } - - // Get the total number of bytes consumed from the buffers. - std::size_t total_consumed() const - { - return total_consumed_; - } - -private: - Buffers buffers_; - std::size_t total_size_; - std::size_t total_consumed_; - std::size_t next_elem_; - std::size_t next_elem_offset_; -}; - -// Base class of all consuming_buffers specialisations for single buffers. -template -class consuming_single_buffer -{ -public: - // Construct to represent the entire list of buffers. - template - explicit consuming_single_buffer(const Buffer1& buffer) - : buffer_(buffer), - total_consumed_(0) - { - } - - // Determine if we are at the end of the buffers. - bool empty() const - { - return total_consumed_ >= buffer_.size(); - } - - // Get the buffer for a single transfer, with a size. - Buffer prepare(std::size_t max_size) - { - return asio::buffer(buffer_ + total_consumed_, max_size); - } - - // Consume the specified number of bytes from the buffers. - void consume(std::size_t size) - { - total_consumed_ += size; - } - - // Get the total number of bytes consumed from the buffers. - std::size_t total_consumed() const - { - return total_consumed_; - } - -private: - Buffer buffer_; - std::size_t total_consumed_; -}; - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const mutable_buffer& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const mutable_buffer& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const const_buffer& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -#if !defined(ASIO_NO_DEPRECATED) - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const mutable_buffers_1& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const mutable_buffers_1& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -template <> -class consuming_buffers - : public consuming_single_buffer -{ -public: - explicit consuming_buffers(const const_buffers_1& buffer) - : consuming_single_buffer(buffer) - { - } -}; - -#endif // !defined(ASIO_NO_DEPRECATED) - -template -class consuming_buffers, - typename boost::array::const_iterator> -{ -public: - // Construct to represent the entire list of buffers. - explicit consuming_buffers(const boost::array& buffers) - : buffers_(buffers), - total_consumed_(0) - { - } - - // Determine if we are at the end of the buffers. - bool empty() const - { - return total_consumed_ >= - Buffer(buffers_[0]).size() + Buffer(buffers_[1]).size(); - } - - // Get the buffer for a single transfer, with a size. - boost::array prepare(std::size_t max_size) - { - boost::array result = {{ - Buffer(buffers_[0]), Buffer(buffers_[1]) }}; - std::size_t buffer0_size = result[0].size(); - result[0] = asio::buffer(result[0] + total_consumed_, max_size); - result[1] = asio::buffer( - result[1] + (total_consumed_ < buffer0_size - ? 0 : total_consumed_ - buffer0_size), - max_size - result[0].size()); - return result; - } - - // Consume the specified number of bytes from the buffers. - void consume(std::size_t size) - { - total_consumed_ += size; - } - - // Get the total number of bytes consumed from the buffers. - std::size_t total_consumed() const - { - return total_consumed_; - } - -private: - boost::array buffers_; - std::size_t total_consumed_; -}; - -#if defined(ASIO_HAS_STD_ARRAY) - -template -class consuming_buffers, - typename std::array::const_iterator> -{ -public: - // Construct to represent the entire list of buffers. - explicit consuming_buffers(const std::array& buffers) - : buffers_(buffers), - total_consumed_(0) - { - } - - // Determine if we are at the end of the buffers. - bool empty() const - { - return total_consumed_ >= - Buffer(buffers_[0]).size() + Buffer(buffers_[1]).size(); - } - - // Get the buffer for a single transfer, with a size. - std::array prepare(std::size_t max_size) - { - std::array result = {{ - Buffer(buffers_[0]), Buffer(buffers_[1]) }}; - std::size_t buffer0_size = result[0].size(); - result[0] = asio::buffer(result[0] + total_consumed_, max_size); - result[1] = asio::buffer( - result[1] + (total_consumed_ < buffer0_size - ? 0 : total_consumed_ - buffer0_size), - max_size - result[0].size()); - return result; - } - - // Consume the specified number of bytes from the buffers. - void consume(std::size_t size) - { - total_consumed_ += size; - } - - // Get the total number of bytes consumed from the buffers. - std::size_t total_consumed() const - { - return total_consumed_; - } - -private: - std::array buffers_; - std::size_t total_consumed_; -}; - -#endif // defined(ASIO_HAS_STD_ARRAY) - -// Specialisation for null_buffers to ensure that the null_buffers type is -// always passed through to the underlying read or write operation. -template -class consuming_buffers - : public asio::null_buffers -{ -public: - consuming_buffers(const null_buffers&) - { - // No-op. - } - - bool empty() - { - return false; - } - - null_buffers prepare(std::size_t) - { - return null_buffers(); - } - - void consume(std::size_t) - { - // No-op. - } - - std::size_t total_consumed() const - { - return 0; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_CONSUMING_BUFFERS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstddef.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstddef.hpp deleted file mode 100644 index 1b58be06..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstddef.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// -// detail/cstddef.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CSTDDEF_HPP -#define ASIO_DETAIL_CSTDDEF_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include - -namespace asio { - -#if defined(ASIO_HAS_NULLPTR) -using std::nullptr_t; -#else // defined(ASIO_HAS_NULLPTR) -struct nullptr_t {}; -#endif // defined(ASIO_HAS_NULLPTR) - -} // namespace asio - -#endif // ASIO_DETAIL_CSTDDEF_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstdint.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstdint.hpp deleted file mode 100644 index b65941ab..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/cstdint.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -// detail/cstdint.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_CSTDINT_HPP -#define ASIO_DETAIL_CSTDINT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_CSTDINT) -# include -#else // defined(ASIO_HAS_CSTDINT) -# include -#endif // defined(ASIO_HAS_CSTDINT) - -namespace asio { - -#if defined(ASIO_HAS_CSTDINT) -using std::int16_t; -using std::int_least16_t; -using std::uint16_t; -using std::uint_least16_t; -using std::int32_t; -using std::int_least32_t; -using std::uint32_t; -using std::uint_least32_t; -using std::int64_t; -using std::int_least64_t; -using std::uint64_t; -using std::uint_least64_t; -using std::uintmax_t; -#else // defined(ASIO_HAS_CSTDINT) -using boost::int16_t; -using boost::int_least16_t; -using boost::uint16_t; -using boost::uint_least16_t; -using boost::int32_t; -using boost::int_least32_t; -using boost::uint32_t; -using boost::uint_least32_t; -using boost::int64_t; -using boost::int_least64_t; -using boost::uint64_t; -using boost::uint_least64_t; -using boost::uintmax_t; -#endif // defined(ASIO_HAS_CSTDINT) - -} // namespace asio - -#endif // ASIO_DETAIL_CSTDINT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/date_time_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/date_time_fwd.hpp deleted file mode 100644 index f4a9ddef..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/date_time_fwd.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// detail/date_time_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DATE_TIME_FWD_HPP -#define ASIO_DETAIL_DATE_TIME_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -namespace boost { -namespace date_time { - -template -class base_time; - -} // namespace date_time -namespace posix_time { - -class ptime; - -} // namespace posix_time -} // namespace boost - -#endif // ASIO_DETAIL_DATE_TIME_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/deadline_timer_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/deadline_timer_service.hpp deleted file mode 100644 index dd03d09e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/deadline_timer_service.hpp +++ /dev/null @@ -1,295 +0,0 @@ -// -// detail/deadline_timer_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP -#define ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/timer_queue.hpp" -#include "asio/detail/timer_queue_ptime.hpp" -#include "asio/detail/timer_scheduler.hpp" -#include "asio/detail/wait_handler.hpp" -#include "asio/detail/wait_op.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include -# include -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class deadline_timer_service - : public execution_context_service_base > -{ -public: - // The time type. - typedef typename Time_Traits::time_type time_type; - - // The duration type. - typedef typename Time_Traits::duration_type duration_type; - - // The implementation type of the timer. This type is dependent on the - // underlying implementation of the timer service. - struct implementation_type - : private asio::detail::noncopyable - { - time_type expiry; - bool might_have_pending_waits; - typename timer_queue::per_timer_data timer_data; - }; - - // Constructor. - deadline_timer_service(execution_context& context) - : execution_context_service_base< - deadline_timer_service >(context), - scheduler_(asio::use_service(context)) - { - scheduler_.init_task(); - scheduler_.add_timer_queue(timer_queue_); - } - - // Destructor. - ~deadline_timer_service() - { - scheduler_.remove_timer_queue(timer_queue_); - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - } - - // Construct a new timer implementation. - void construct(implementation_type& impl) - { - impl.expiry = time_type(); - impl.might_have_pending_waits = false; - } - - // Destroy a timer implementation. - void destroy(implementation_type& impl) - { - asio::error_code ec; - cancel(impl, ec); - } - - // Move-construct a new timer implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) - { - scheduler_.move_timer(timer_queue_, impl.timer_data, other_impl.timer_data); - - impl.expiry = other_impl.expiry; - other_impl.expiry = time_type(); - - impl.might_have_pending_waits = other_impl.might_have_pending_waits; - other_impl.might_have_pending_waits = false; - } - - // Move-assign from another timer implementation. - void move_assign(implementation_type& impl, - deadline_timer_service& other_service, - implementation_type& other_impl) - { - if (this != &other_service) - if (impl.might_have_pending_waits) - scheduler_.cancel_timer(timer_queue_, impl.timer_data); - - other_service.scheduler_.move_timer(other_service.timer_queue_, - impl.timer_data, other_impl.timer_data); - - impl.expiry = other_impl.expiry; - other_impl.expiry = time_type(); - - impl.might_have_pending_waits = other_impl.might_have_pending_waits; - other_impl.might_have_pending_waits = false; - } - - // Move-construct a new timer implementation. - void converting_move_construct(implementation_type& impl, - deadline_timer_service&, implementation_type& other_impl) - { - move_construct(impl, other_impl); - } - - // Move-assign from another timer implementation. - void converting_move_assign(implementation_type& impl, - deadline_timer_service& other_service, - implementation_type& other_impl) - { - move_assign(impl, other_service, other_impl); - } - - // Cancel any asynchronous wait operations associated with the timer. - std::size_t cancel(implementation_type& impl, asio::error_code& ec) - { - if (!impl.might_have_pending_waits) - { - ec = asio::error_code(); - return 0; - } - - ASIO_HANDLER_OPERATION((scheduler_.context(), - "deadline_timer", &impl, 0, "cancel")); - - std::size_t count = scheduler_.cancel_timer(timer_queue_, impl.timer_data); - impl.might_have_pending_waits = false; - ec = asio::error_code(); - return count; - } - - // Cancels one asynchronous wait operation associated with the timer. - std::size_t cancel_one(implementation_type& impl, - asio::error_code& ec) - { - if (!impl.might_have_pending_waits) - { - ec = asio::error_code(); - return 0; - } - - ASIO_HANDLER_OPERATION((scheduler_.context(), - "deadline_timer", &impl, 0, "cancel_one")); - - std::size_t count = scheduler_.cancel_timer( - timer_queue_, impl.timer_data, 1); - if (count == 0) - impl.might_have_pending_waits = false; - ec = asio::error_code(); - return count; - } - - // Get the expiry time for the timer as an absolute time. - time_type expiry(const implementation_type& impl) const - { - return impl.expiry; - } - - // Get the expiry time for the timer as an absolute time. - time_type expires_at(const implementation_type& impl) const - { - return impl.expiry; - } - - // Get the expiry time for the timer relative to now. - duration_type expires_from_now(const implementation_type& impl) const - { - return Time_Traits::subtract(this->expiry(impl), Time_Traits::now()); - } - - // Set the expiry time for the timer as an absolute time. - std::size_t expires_at(implementation_type& impl, - const time_type& expiry_time, asio::error_code& ec) - { - std::size_t count = cancel(impl, ec); - impl.expiry = expiry_time; - ec = asio::error_code(); - return count; - } - - // Set the expiry time for the timer relative to now. - std::size_t expires_after(implementation_type& impl, - const duration_type& expiry_time, asio::error_code& ec) - { - return expires_at(impl, - Time_Traits::add(Time_Traits::now(), expiry_time), ec); - } - - // Set the expiry time for the timer relative to now. - std::size_t expires_from_now(implementation_type& impl, - const duration_type& expiry_time, asio::error_code& ec) - { - return expires_at(impl, - Time_Traits::add(Time_Traits::now(), expiry_time), ec); - } - - // Perform a blocking wait on the timer. - void wait(implementation_type& impl, asio::error_code& ec) - { - time_type now = Time_Traits::now(); - ec = asio::error_code(); - while (Time_Traits::less_than(now, impl.expiry) && !ec) - { - this->do_wait(Time_Traits::to_posix_duration( - Time_Traits::subtract(impl.expiry, now)), ec); - now = Time_Traits::now(); - } - } - - // Start an asynchronous wait on the timer. - template - void async_wait(implementation_type& impl, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef wait_handler op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_ex); - - impl.might_have_pending_waits = true; - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "deadline_timer", &impl, 0, "async_wait")); - - scheduler_.schedule_timer(timer_queue_, impl.expiry, impl.timer_data, p.p); - p.v = p.p = 0; - } - -private: - // Helper function to wait given a duration type. The duration type should - // either be of type boost::posix_time::time_duration, or implement the - // required subset of its interface. - template - void do_wait(const Duration& timeout, asio::error_code& ec) - { -#if defined(ASIO_WINDOWS_RUNTIME) - std::this_thread::sleep_for( - std::chrono::seconds(timeout.total_seconds()) - + std::chrono::microseconds(timeout.total_microseconds())); - ec = asio::error_code(); -#else // defined(ASIO_WINDOWS_RUNTIME) - ::timeval tv; - tv.tv_sec = timeout.total_seconds(); - tv.tv_usec = timeout.total_microseconds() % 1000000; - socket_ops::select(0, 0, 0, 0, &tv, ec); -#endif // defined(ASIO_WINDOWS_RUNTIME) - } - - // The queue of timers. - timer_queue timer_queue_; - - // The object that schedules and executes timers. Usually a reactor. - timer_scheduler& scheduler_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dependent_type.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dependent_type.hpp deleted file mode 100644 index 0c00db59..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dependent_type.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// -// detail/dependent_type.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DEPENDENT_TYPE_HPP -#define ASIO_DETAIL_DEPENDENT_TYPE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct dependent_type -{ - typedef T type; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_DEPENDENT_TYPE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_ops.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_ops.hpp deleted file mode 100644 index dfe2f8c2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_ops.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// -// detail/descriptor_ops.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DESCRIPTOR_OPS_HPP -#define ASIO_DETAIL_DESCRIPTOR_OPS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - -#include -#include "asio/error.hpp" -#include "asio/error_code.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace descriptor_ops { - -// Descriptor state bits. -enum -{ - // The user wants a non-blocking descriptor. - user_set_non_blocking = 1, - - // The descriptor has been set non-blocking. - internal_non_blocking = 2, - - // Helper "state" used to determine whether the descriptor is non-blocking. - non_blocking = user_set_non_blocking | internal_non_blocking, - - // The descriptor may have been dup()-ed. - possible_dup = 4 -}; - -typedef unsigned char state_type; - -inline void get_last_error( - asio::error_code& ec, bool is_error_condition) -{ - if (!is_error_condition) - { - ec.assign(0, ec.category()); - } - else - { - ec = asio::error_code(errno, - asio::error::get_system_category()); - } -} - -ASIO_DECL int open(const char* path, int flags, - asio::error_code& ec); - -ASIO_DECL int close(int d, state_type& state, - asio::error_code& ec); - -ASIO_DECL bool set_user_non_blocking(int d, - state_type& state, bool value, asio::error_code& ec); - -ASIO_DECL bool set_internal_non_blocking(int d, - state_type& state, bool value, asio::error_code& ec); - -typedef iovec buf; - -ASIO_DECL std::size_t sync_read(int d, state_type state, buf* bufs, - std::size_t count, bool all_empty, asio::error_code& ec); - -ASIO_DECL std::size_t sync_read1(int d, state_type state, void* data, - std::size_t size, asio::error_code& ec); - -ASIO_DECL bool non_blocking_read(int d, buf* bufs, std::size_t count, - asio::error_code& ec, std::size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_read1(int d, void* data, std::size_t size, - asio::error_code& ec, std::size_t& bytes_transferred); - -ASIO_DECL std::size_t sync_write(int d, state_type state, - const buf* bufs, std::size_t count, bool all_empty, - asio::error_code& ec); - -ASIO_DECL std::size_t sync_write1(int d, state_type state, - const void* data, std::size_t size, asio::error_code& ec); - -ASIO_DECL bool non_blocking_write(int d, - const buf* bufs, std::size_t count, - asio::error_code& ec, std::size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_write1(int d, - const void* data, std::size_t size, - asio::error_code& ec, std::size_t& bytes_transferred); - -ASIO_DECL int ioctl(int d, state_type& state, long cmd, - ioctl_arg_type* arg, asio::error_code& ec); - -ASIO_DECL int fcntl(int d, int cmd, asio::error_code& ec); - -ASIO_DECL int fcntl(int d, int cmd, - long arg, asio::error_code& ec); - -ASIO_DECL int poll_read(int d, - state_type state, asio::error_code& ec); - -ASIO_DECL int poll_write(int d, - state_type state, asio::error_code& ec); - -ASIO_DECL int poll_error(int d, - state_type state, asio::error_code& ec); - -} // namespace descriptor_ops -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/descriptor_ops.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_DESCRIPTOR_OPS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_read_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_read_op.hpp deleted file mode 100644 index bb4bc6d6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_read_op.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// detail/descriptor_read_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP -#define ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/descriptor_ops.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class descriptor_read_op_base : public reactor_op -{ -public: - descriptor_read_op_base(const asio::error_code& success_ec, - int descriptor, const MutableBufferSequence& buffers, - func_type complete_func) - : reactor_op(success_ec, - &descriptor_read_op_base::do_perform, complete_func), - descriptor_(descriptor), - buffers_(buffers) - { - } - - static status do_perform(reactor_op* base) - { - descriptor_read_op_base* o(static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - status result; - if (bufs_type::is_single_buffer) - { - result = descriptor_ops::non_blocking_read1(o->descriptor_, - bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), - o->ec_, o->bytes_transferred_) ? done : not_done; - } - else - { - bufs_type bufs(o->buffers_); - result = descriptor_ops::non_blocking_read(o->descriptor_, - bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_) - ? done : not_done; - } - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_read", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - int descriptor_; - MutableBufferSequence buffers_; -}; - -template -class descriptor_read_op - : public descriptor_read_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(descriptor_read_op); - - descriptor_read_op(const asio::error_code& success_ec, - int descriptor, const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : descriptor_read_op_base(success_ec, - descriptor, buffers, &descriptor_read_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - descriptor_read_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_write_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_write_op.hpp deleted file mode 100644 index 15d98df0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/descriptor_write_op.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// detail/descriptor_write_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP -#define ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/descriptor_ops.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class descriptor_write_op_base : public reactor_op -{ -public: - descriptor_write_op_base(const asio::error_code& success_ec, - int descriptor, const ConstBufferSequence& buffers, - func_type complete_func) - : reactor_op(success_ec, - &descriptor_write_op_base::do_perform, complete_func), - descriptor_(descriptor), - buffers_(buffers) - { - } - - static status do_perform(reactor_op* base) - { - descriptor_write_op_base* o(static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - status result; - if (bufs_type::is_single_buffer) - { - result = descriptor_ops::non_blocking_write1(o->descriptor_, - bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), - o->ec_, o->bytes_transferred_) ? done : not_done; - } - else - { - bufs_type bufs(o->buffers_); - result = descriptor_ops::non_blocking_write(o->descriptor_, - bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_) - ? done : not_done; - } - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_write", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - int descriptor_; - ConstBufferSequence buffers_; -}; - -template -class descriptor_write_op - : public descriptor_write_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(descriptor_write_op); - - descriptor_write_op(const asio::error_code& success_ec, - int descriptor, const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : descriptor_write_op_base(success_ec, - descriptor, buffers, &descriptor_write_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - descriptor_write_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dev_poll_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dev_poll_reactor.hpp deleted file mode 100644 index 0d621535..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/dev_poll_reactor.hpp +++ /dev/null @@ -1,218 +0,0 @@ -// -// detail/dev_poll_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_DEV_POLL_REACTOR_HPP -#define ASIO_DETAIL_DEV_POLL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_DEV_POLL) - -#include -#include -#include -#include "asio/detail/hash_map.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/reactor_op_queue.hpp" -#include "asio/detail/select_interrupter.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class dev_poll_reactor - : public execution_context_service_base -{ -public: - enum op_types { read_op = 0, write_op = 1, - connect_op = 1, except_op = 2, max_ops = 3 }; - - // Per-descriptor data. - struct per_descriptor_data - { - }; - - // Constructor. - ASIO_DECL dev_poll_reactor(asio::execution_context& ctx); - - // Destructor. - ASIO_DECL ~dev_poll_reactor(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Recreate internal descriptors following a fork. - ASIO_DECL void notify_fork( - asio::execution_context::fork_event fork_ev); - - // Initialise the task. - ASIO_DECL void init_task(); - - // Register a socket with the reactor. Returns 0 on success, system error - // code on failure. - ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&); - - // Register a descriptor with an associated single operation. Returns 0 on - // success, system error code on failure. - ASIO_DECL int register_internal_descriptor( - int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op); - - // Move descriptor registration from one descriptor_data object to another. - ASIO_DECL void move_descriptor(socket_type descriptor, - per_descriptor_data& target_descriptor_data, - per_descriptor_data& source_descriptor_data); - - // Post a reactor operation for immediate completion. - void post_immediate_completion(reactor_op* op, bool is_continuation) - { - scheduler_.post_immediate_completion(op, is_continuation); - } - - // Start a new operation. The reactor operation will be performed when the - // given descriptor is flagged as ready, or an error has occurred. - ASIO_DECL void start_op(int op_type, socket_type descriptor, - per_descriptor_data&, reactor_op* op, - bool is_continuation, bool allow_speculative); - - // Cancel all operations associated with the given descriptor. The - // handlers associated with the descriptor will be invoked with the - // operation_aborted error. - ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&); - - // Cancel any operations that are running against the descriptor and remove - // its registration from the reactor. The reactor resources associated with - // the descriptor must be released by calling cleanup_descriptor_data. - ASIO_DECL void deregister_descriptor(socket_type descriptor, - per_descriptor_data&, bool closing); - - // Remove the descriptor's registration from the reactor. The reactor - // resources associated with the descriptor must be released by calling - // cleanup_descriptor_data. - ASIO_DECL void deregister_internal_descriptor( - socket_type descriptor, per_descriptor_data&); - - // Perform any post-deregistration cleanup tasks associated with the - // descriptor data. - ASIO_DECL void cleanup_descriptor_data(per_descriptor_data&); - - // Add a new timer queue to the reactor. - template - void add_timer_queue(timer_queue& queue); - - // Remove a timer queue from the reactor. - template - void remove_timer_queue(timer_queue& queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer operations associated with the given token. Returns the - // number of operations that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source); - - // Run /dev/poll once until interrupted or events are ready to be dispatched. - ASIO_DECL void run(long usec, op_queue& ops); - - // Interrupt the select loop. - ASIO_DECL void interrupt(); - -private: - // Create the /dev/poll file descriptor. Throws an exception if the descriptor - // cannot be created. - ASIO_DECL static int do_dev_poll_create(); - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // Get the timeout value for the /dev/poll DP_POLL operation. The timeout - // value is returned as a number of milliseconds. A return value of -1 - // indicates that the poll should block indefinitely. - ASIO_DECL int get_timeout(int msec); - - // Cancel all operations associated with the given descriptor. The do_cancel - // function of the handler objects will be invoked. This function does not - // acquire the dev_poll_reactor's mutex. - ASIO_DECL void cancel_ops_unlocked(socket_type descriptor, - const asio::error_code& ec); - - // Add a pending event entry for the given descriptor. - ASIO_DECL ::pollfd& add_pending_event_change(int descriptor); - - // The scheduler implementation used to post completions. - scheduler& scheduler_; - - // Mutex to protect access to internal data. - asio::detail::mutex mutex_; - - // The /dev/poll file descriptor. - int dev_poll_fd_; - - // Vector of /dev/poll events waiting to be written to the descriptor. - std::vector< ::pollfd> pending_event_changes_; - - // Hash map to associate a descriptor with a pending event change index. - hash_map pending_event_change_index_; - - // The interrupter is used to break a blocking DP_POLL operation. - select_interrupter interrupter_; - - // The queues of read, write and except operations. - reactor_op_queue op_queue_[max_ops]; - - // The timer queues. - timer_queue_set timer_queues_; - - // Whether the service has been shut down. - bool shutdown_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/dev_poll_reactor.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/dev_poll_reactor.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_DEV_POLL) - -#endif // ASIO_DETAIL_DEV_POLL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/epoll_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/epoll_reactor.hpp deleted file mode 100644 index 032fc851..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/epoll_reactor.hpp +++ /dev/null @@ -1,266 +0,0 @@ -// -// detail/epoll_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_EPOLL_REACTOR_HPP -#define ASIO_DETAIL_EPOLL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_EPOLL) - -#include "asio/detail/atomic_count.hpp" -#include "asio/detail/conditionally_enabled_mutex.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/object_pool.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/select_interrupter.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/execution_context.hpp" - -#if defined(ASIO_HAS_TIMERFD) -# include -#endif // defined(ASIO_HAS_TIMERFD) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class epoll_reactor - : public execution_context_service_base -{ -private: - // The mutex type used by this reactor. - typedef conditionally_enabled_mutex mutex; - -public: - enum op_types { read_op = 0, write_op = 1, - connect_op = 1, except_op = 2, max_ops = 3 }; - - // Per-descriptor queues. - class descriptor_state : operation - { - friend class epoll_reactor; - friend class object_pool_access; - - descriptor_state* next_; - descriptor_state* prev_; - - mutex mutex_; - epoll_reactor* reactor_; - int descriptor_; - uint32_t registered_events_; - op_queue op_queue_[max_ops]; - bool try_speculative_[max_ops]; - bool shutdown_; - - ASIO_DECL descriptor_state(bool locking); - void set_ready_events(uint32_t events) { task_result_ = events; } - void add_ready_events(uint32_t events) { task_result_ |= events; } - ASIO_DECL operation* perform_io(uint32_t events); - ASIO_DECL static void do_complete( - void* owner, operation* base, - const asio::error_code& ec, std::size_t bytes_transferred); - }; - - // Per-descriptor data. - typedef descriptor_state* per_descriptor_data; - - // Constructor. - ASIO_DECL epoll_reactor(asio::execution_context& ctx); - - // Destructor. - ASIO_DECL ~epoll_reactor(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Recreate internal descriptors following a fork. - ASIO_DECL void notify_fork( - asio::execution_context::fork_event fork_ev); - - // Initialise the task. - ASIO_DECL void init_task(); - - // Register a socket with the reactor. Returns 0 on success, system error - // code on failure. - ASIO_DECL int register_descriptor(socket_type descriptor, - per_descriptor_data& descriptor_data); - - // Register a descriptor with an associated single operation. Returns 0 on - // success, system error code on failure. - ASIO_DECL int register_internal_descriptor( - int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op); - - // Move descriptor registration from one descriptor_data object to another. - ASIO_DECL void move_descriptor(socket_type descriptor, - per_descriptor_data& target_descriptor_data, - per_descriptor_data& source_descriptor_data); - - // Post a reactor operation for immediate completion. - void post_immediate_completion(reactor_op* op, bool is_continuation) - { - scheduler_.post_immediate_completion(op, is_continuation); - } - - // Start a new operation. The reactor operation will be performed when the - // given descriptor is flagged as ready, or an error has occurred. - ASIO_DECL void start_op(int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op, - bool is_continuation, bool allow_speculative); - - // Cancel all operations associated with the given descriptor. The - // handlers associated with the descriptor will be invoked with the - // operation_aborted error. - ASIO_DECL void cancel_ops(socket_type descriptor, - per_descriptor_data& descriptor_data); - - // Cancel any operations that are running against the descriptor and remove - // its registration from the reactor. The reactor resources associated with - // the descriptor must be released by calling cleanup_descriptor_data. - ASIO_DECL void deregister_descriptor(socket_type descriptor, - per_descriptor_data& descriptor_data, bool closing); - - // Remove the descriptor's registration from the reactor. The reactor - // resources associated with the descriptor must be released by calling - // cleanup_descriptor_data. - ASIO_DECL void deregister_internal_descriptor( - socket_type descriptor, per_descriptor_data& descriptor_data); - - // Perform any post-deregistration cleanup tasks associated with the - // descriptor data. - ASIO_DECL void cleanup_descriptor_data( - per_descriptor_data& descriptor_data); - - // Add a new timer queue to the reactor. - template - void add_timer_queue(timer_queue& timer_queue); - - // Remove a timer queue from the reactor. - template - void remove_timer_queue(timer_queue& timer_queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer operations associated with the given token. Returns the - // number of operations that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source); - - // Run epoll once until interrupted or events are ready to be dispatched. - ASIO_DECL void run(long usec, op_queue& ops); - - // Interrupt the select loop. - ASIO_DECL void interrupt(); - -private: - // The hint to pass to epoll_create to size its data structures. - enum { epoll_size = 20000 }; - - // Create the epoll file descriptor. Throws an exception if the descriptor - // cannot be created. - ASIO_DECL static int do_epoll_create(); - - // Create the timerfd file descriptor. Does not throw. - ASIO_DECL static int do_timerfd_create(); - - // Allocate a new descriptor state object. - ASIO_DECL descriptor_state* allocate_descriptor_state(); - - // Free an existing descriptor state object. - ASIO_DECL void free_descriptor_state(descriptor_state* s); - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // Called to recalculate and update the timeout. - ASIO_DECL void update_timeout(); - - // Get the timeout value for the epoll_wait call. The timeout value is - // returned as a number of milliseconds. A return value of -1 indicates - // that epoll_wait should block indefinitely. - ASIO_DECL int get_timeout(int msec); - -#if defined(ASIO_HAS_TIMERFD) - // Get the timeout value for the timer descriptor. The return value is the - // flag argument to be used when calling timerfd_settime. - ASIO_DECL int get_timeout(itimerspec& ts); -#endif // defined(ASIO_HAS_TIMERFD) - - // The scheduler implementation used to post completions. - scheduler& scheduler_; - - // Mutex to protect access to internal data. - mutex mutex_; - - // The interrupter is used to break a blocking epoll_wait call. - select_interrupter interrupter_; - - // The epoll file descriptor. - int epoll_fd_; - - // The timer file descriptor. - int timer_fd_; - - // The timer queues. - timer_queue_set timer_queues_; - - // Whether the service has been shut down. - bool shutdown_; - - // Mutex to protect access to the registered descriptors. - mutex registered_descriptors_mutex_; - - // Keep track of all registered descriptors. - object_pool registered_descriptors_; - - // Helper class to do post-perform_io cleanup. - struct perform_io_cleanup_on_block_exit; - friend struct perform_io_cleanup_on_block_exit; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/epoll_reactor.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/epoll_reactor.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_EPOLL) - -#endif // ASIO_DETAIL_EPOLL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/event.hpp deleted file mode 100644 index 92682786..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/event.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// -// detail/event.hpp -// ~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_EVENT_HPP -#define ASIO_DETAIL_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_event.hpp" -#elif defined(ASIO_WINDOWS) -# include "asio/detail/win_event.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_event.hpp" -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -# include "asio/detail/std_event.hpp" -#else -# error Only Windows, POSIX and std::condition_variable are supported! -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) -typedef null_event event; -#elif defined(ASIO_WINDOWS) -typedef win_event event; -#elif defined(ASIO_HAS_PTHREADS) -typedef posix_event event; -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -typedef std_event event; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp deleted file mode 100644 index 9e250563..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// -// detail/eventfd_select_interrupter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP -#define ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_EVENTFD) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class eventfd_select_interrupter -{ -public: - // Constructor. - ASIO_DECL eventfd_select_interrupter(); - - // Destructor. - ASIO_DECL ~eventfd_select_interrupter(); - - // Recreate the interrupter's descriptors. Used after a fork. - ASIO_DECL void recreate(); - - // Interrupt the select call. - ASIO_DECL void interrupt(); - - // Reset the select interrupter. Returns true if the reset was successful. - ASIO_DECL bool reset(); - - // Get the read descriptor to be passed to select. - int read_descriptor() const - { - return read_descriptor_; - } - -private: - // Open the descriptors. Throws on error. - ASIO_DECL void open_descriptors(); - - // Close the descriptors. - ASIO_DECL void close_descriptors(); - - // The read end of a connection used to interrupt the select call. This file - // descriptor is passed to select such that when it is time to stop, a single - // 64bit value will be written on the other end of the connection and this - // descriptor will become readable. - int read_descriptor_; - - // The write end of a connection used to interrupt the select call. A single - // 64bit non-zero value may be written to this to wake up the select which is - // waiting for the other end to become readable. This descriptor will only - // differ from the read descriptor when a pipe is used. - int write_descriptor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/eventfd_select_interrupter.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_EVENTFD) - -#endif // ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_function.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_function.hpp deleted file mode 100644 index 8d93ae29..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_function.hpp +++ /dev/null @@ -1,204 +0,0 @@ -// -// detail/executor_function.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_EXECUTOR_FUNCTION_HPP -#define ASIO_DETAIL_EXECUTOR_FUNCTION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/memory.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_MOVE) - -// Lightweight, move-only function object wrapper. -class executor_function -{ -public: - template - explicit executor_function(F f, const Alloc& a) - { - // Allocate and construct an object to wrap the function. - typedef impl impl_type; - typename impl_type::ptr p = { - detail::addressof(a), impl_type::ptr::allocate(a), 0 }; - impl_ = new (p.v) impl_type(ASIO_MOVE_CAST(F)(f), a); - p.v = 0; - } - - executor_function(executor_function&& other) ASIO_NOEXCEPT - : impl_(other.impl_) - { - other.impl_ = 0; - } - - ~executor_function() - { - if (impl_) - impl_->complete_(impl_, false); - } - - void operator()() - { - if (impl_) - { - impl_base* i = impl_; - impl_ = 0; - i->complete_(i, true); - } - } - -private: - // Base class for polymorphic function implementations. - struct impl_base - { - void (*complete_)(impl_base*, bool); - }; - - // Polymorphic function implementation. - template - struct impl : impl_base - { - ASIO_DEFINE_TAGGED_HANDLER_ALLOCATOR_PTR( - thread_info_base::executor_function_tag, impl); - - template - impl(ASIO_MOVE_ARG(F) f, const Alloc& a) - : function_(ASIO_MOVE_CAST(F)(f)), - allocator_(a) - { - complete_ = &executor_function::complete; - } - - Function function_; - Alloc allocator_; - }; - - // Helper to complete function invocation. - template - static void complete(impl_base* base, bool call) - { - // Take ownership of the function object. - impl* i(static_cast*>(base)); - Alloc allocator(i->allocator_); - typename impl::ptr p = { - detail::addressof(allocator), i, i }; - - // Make a copy of the function so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the function may be the true owner of the memory - // associated with the function. Consequently, a local copy of the function - // is required to ensure that any owning sub-object remains valid until - // after we have deallocated the memory here. - Function function(ASIO_MOVE_CAST(Function)(i->function_)); - p.reset(); - - // Make the upcall if required. - if (call) - { - asio_handler_invoke_helpers::invoke(function, function); - } - } - - impl_base* impl_; -}; - -#else // defined(ASIO_HAS_MOVE) - -// Not so lightweight, copyable function object wrapper. -class executor_function -{ -public: - template - explicit executor_function(const F& f, const Alloc&) - : impl_(new impl::type>(f)) - { - } - - void operator()() - { - impl_->complete_(impl_.get()); - } - -private: - // Base class for polymorphic function implementations. - struct impl_base - { - void (*complete_)(impl_base*); - }; - - // Polymorphic function implementation. - template - struct impl : impl_base - { - impl(const F& f) - : function_(f) - { - complete_ = &executor_function::complete; - } - - F function_; - }; - - // Helper to complete function invocation. - template - static void complete(impl_base* i) - { - static_cast*>(i)->function_(); - } - - shared_ptr impl_; -}; - -#endif // defined(ASIO_HAS_MOVE) - -// Lightweight, non-owning, copyable function object wrapper. -class executor_function_view -{ -public: - template - explicit executor_function_view(F& f) ASIO_NOEXCEPT - : complete_(&executor_function_view::complete), - function_(&f) - { - } - - void operator()() - { - complete_(function_); - } - -private: - // Helper to complete function invocation. - template - static void complete(void* f) - { - (*static_cast(f))(); - } - - void (*complete_)(void*); - void* function_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_EXECUTOR_FUNCTION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_op.hpp deleted file mode 100644 index c2acdb6a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/executor_op.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// detail/executor_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_EXECUTOR_OP_HPP -#define ASIO_DETAIL_EXECUTOR_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/scheduler_operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class executor_op : public Operation -{ -public: - ASIO_DEFINE_HANDLER_ALLOCATOR_PTR(executor_op); - - template - executor_op(ASIO_MOVE_ARG(H) h, const Alloc& allocator) - : Operation(&executor_op::do_complete), - handler_(ASIO_MOVE_CAST(H)(h)), - allocator_(allocator) - { - } - - static void do_complete(void* owner, Operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - executor_op* o(static_cast(base)); - Alloc allocator(o->allocator_); - ptr p = { detail::addressof(allocator), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - Handler handler(ASIO_MOVE_CAST(Handler)(o->handler_)); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN(()); - asio_handler_invoke_helpers::invoke(handler, handler); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - Alloc allocator_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_EXECUTOR_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fd_set_adapter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fd_set_adapter.hpp deleted file mode 100644 index 4fe7b27d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fd_set_adapter.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// -// detail/fd_set_adapter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_FD_SET_ADAPTER_HPP -#define ASIO_DETAIL_FD_SET_ADAPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/posix_fd_set_adapter.hpp" -#include "asio/detail/win_fd_set_adapter.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef win_fd_set_adapter fd_set_adapter; -#else -typedef posix_fd_set_adapter fd_set_adapter; -#endif - -} // namespace detail -} // namespace asio - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_FD_SET_ADAPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fenced_block.hpp deleted file mode 100644 index 17550ff5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/fenced_block.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// -// detail/fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_FENCED_BLOCK_HPP -#define ASIO_DETAIL_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) \ - || defined(ASIO_DISABLE_FENCED_BLOCK) -# include "asio/detail/null_fenced_block.hpp" -#elif defined(ASIO_HAS_STD_ATOMIC) -# include "asio/detail/std_fenced_block.hpp" -#elif defined(__MACH__) && defined(__APPLE__) -# include "asio/detail/macos_fenced_block.hpp" -#elif defined(__sun) -# include "asio/detail/solaris_fenced_block.hpp" -#elif defined(__GNUC__) && defined(__arm__) \ - && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) -# include "asio/detail/gcc_arm_fenced_block.hpp" -#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) -# include "asio/detail/gcc_hppa_fenced_block.hpp" -#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -# include "asio/detail/gcc_x86_fenced_block.hpp" -#elif defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ - && !defined(__INTEL_COMPILER) && !defined(__ICL) \ - && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) -# include "asio/detail/gcc_sync_fenced_block.hpp" -#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE) -# include "asio/detail/win_fenced_block.hpp" -#else -# include "asio/detail/null_fenced_block.hpp" -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) \ - || defined(ASIO_DISABLE_FENCED_BLOCK) -typedef null_fenced_block fenced_block; -#elif defined(ASIO_HAS_STD_ATOMIC) -typedef std_fenced_block fenced_block; -#elif defined(__MACH__) && defined(__APPLE__) -typedef macos_fenced_block fenced_block; -#elif defined(__sun) -typedef solaris_fenced_block fenced_block; -#elif defined(__GNUC__) && defined(__arm__) \ - && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) -typedef gcc_arm_fenced_block fenced_block; -#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) -typedef gcc_hppa_fenced_block fenced_block; -#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -typedef gcc_x86_fenced_block fenced_block; -#elif defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ - && !defined(__INTEL_COMPILER) && !defined(__ICL) \ - && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) -typedef gcc_sync_fenced_block fenced_block; -#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE) -typedef win_fenced_block fenced_block; -#else -typedef null_fenced_block fenced_block; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/functional.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/functional.hpp deleted file mode 100644 index ed73ce65..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/functional.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// -// detail/functional.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_FUNCTIONAL_HPP -#define ASIO_DETAIL_FUNCTIONAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include - -#if !defined(ASIO_HAS_STD_FUNCTION) -# include -#endif // !defined(ASIO_HAS_STD_FUNCTION) - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_STD_FUNCTION) -using std::function; -#else // defined(ASIO_HAS_STD_FUNCTION) -using boost::function; -#endif // defined(ASIO_HAS_STD_FUNCTION) - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_FUNCTIONAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/future.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/future.hpp deleted file mode 100644 index 4a2a0807..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/future.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// -// detail/future.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_FUTURE_HPP -#define ASIO_DETAIL_FUTURE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#if defined(ASIO_HAS_STD_FUTURE) -# include -// Even though the future header is available, libstdc++ may not implement the -// std::future class itself. However, we need to have already included the -// future header to reliably test for _GLIBCXX_HAS_GTHREADS. -# if defined(__GNUC__) && !defined(ASIO_HAS_CLANG_LIBCXX) -# if defined(_GLIBCXX_HAS_GTHREADS) -# define ASIO_HAS_STD_FUTURE_CLASS 1 -# endif // defined(_GLIBCXX_HAS_GTHREADS) -# else // defined(__GNUC__) && !defined(ASIO_HAS_CLANG_LIBCXX) -# define ASIO_HAS_STD_FUTURE_CLASS 1 -# endif // defined(__GNUC__) && !defined(ASIO_HAS_CLANG_LIBCXX) -#endif // defined(ASIO_HAS_STD_FUTURE) - -#endif // ASIO_DETAIL_FUTURE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp deleted file mode 100644 index d032324c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// detail/gcc_arm_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP -#define ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__GNUC__) && defined(__arm__) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class gcc_arm_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit gcc_arm_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit gcc_arm_fenced_block(full_t) - { - barrier(); - } - - // Destructor. - ~gcc_arm_fenced_block() - { - barrier(); - } - -private: - static void barrier() - { -#if defined(__ARM_ARCH_4__) \ - || defined(__ARM_ARCH_4T__) \ - || defined(__ARM_ARCH_5__) \ - || defined(__ARM_ARCH_5E__) \ - || defined(__ARM_ARCH_5T__) \ - || defined(__ARM_ARCH_5TE__) \ - || defined(__ARM_ARCH_5TEJ__) \ - || defined(__ARM_ARCH_6__) \ - || defined(__ARM_ARCH_6J__) \ - || defined(__ARM_ARCH_6K__) \ - || defined(__ARM_ARCH_6Z__) \ - || defined(__ARM_ARCH_6ZK__) \ - || defined(__ARM_ARCH_6T2__) -# if defined(__thumb__) - // This is just a placeholder and almost certainly not sufficient. - __asm__ __volatile__ ("" : : : "memory"); -# else // defined(__thumb__) - int a = 0, b = 0; - __asm__ __volatile__ ("swp %0, %1, [%2]" - : "=&r"(a) : "r"(1), "r"(&b) : "memory", "cc"); -# endif // defined(__thumb__) -#else - // ARMv7 and later. - __asm__ __volatile__ ("dmb" : : : "memory"); -#endif - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__GNUC__) && defined(__arm__) - -#endif // ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp deleted file mode 100644 index 68f36295..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// -// detail/gcc_hppa_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP -#define ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class gcc_hppa_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit gcc_hppa_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit gcc_hppa_fenced_block(full_t) - { - barrier(); - } - - // Destructor. - ~gcc_hppa_fenced_block() - { - barrier(); - } - -private: - static void barrier() - { - // This is just a placeholder and almost certainly not sufficient. - __asm__ __volatile__ ("" : : : "memory"); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) - -#endif // ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp deleted file mode 100644 index c0c814b3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// detail/gcc_sync_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP -#define ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ - && !defined(__INTEL_COMPILER) && !defined(__ICL) \ - && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class gcc_sync_fenced_block - : private noncopyable -{ -public: - enum half_or_full_t { half, full }; - - // Constructor. - explicit gcc_sync_fenced_block(half_or_full_t) - : value_(0) - { - __sync_lock_test_and_set(&value_, 1); - } - - // Destructor. - ~gcc_sync_fenced_block() - { - __sync_lock_release(&value_); - } - -private: - int value_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__GNUC__) - // && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) - // && !defined(__INTEL_COMPILER) && !defined(__ICL) - // && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) - -#endif // ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp deleted file mode 100644 index 422482c8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp +++ /dev/null @@ -1,99 +0,0 @@ -// -// detail/gcc_x86_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP -#define ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class gcc_x86_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit gcc_x86_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit gcc_x86_fenced_block(full_t) - { - lbarrier(); - } - - // Destructor. - ~gcc_x86_fenced_block() - { - sbarrier(); - } - -private: - static int barrier() - { - int r = 0, m = 1; - __asm__ __volatile__ ( - "xchgl %0, %1" : - "=r"(r), "=m"(m) : - "0"(1), "m"(m) : - "memory", "cc"); - return r; - } - - static void lbarrier() - { -#if defined(__SSE2__) -# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) - __builtin_ia32_lfence(); -# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) - __asm__ __volatile__ ("lfence" ::: "memory"); -# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) -#else // defined(__SSE2__) - barrier(); -#endif // defined(__SSE2__) - } - - static void sbarrier() - { -#if defined(__SSE2__) -# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) - __builtin_ia32_sfence(); -# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) - __asm__ __volatile__ ("sfence" ::: "memory"); -# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) -#else // defined(__SSE2__) - barrier(); -#endif // defined(__SSE2__) - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - -#endif // ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/global.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/global.hpp deleted file mode 100644 index fad2959f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/global.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// detail/global.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_GLOBAL_HPP -#define ASIO_DETAIL_GLOBAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_global.hpp" -#elif defined(ASIO_WINDOWS) -# include "asio/detail/win_global.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_global.hpp" -#elif defined(ASIO_HAS_STD_CALL_ONCE) -# include "asio/detail/std_global.hpp" -#else -# error Only Windows, POSIX and std::call_once are supported! -#endif - -namespace asio { -namespace detail { - -template -inline T& global() -{ -#if !defined(ASIO_HAS_THREADS) - return null_global(); -#elif defined(ASIO_WINDOWS) - return win_global(); -#elif defined(ASIO_HAS_PTHREADS) - return posix_global(); -#elif defined(ASIO_HAS_STD_CALL_ONCE) - return std_global(); -#endif -} - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_GLOBAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_alloc_helpers.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_alloc_helpers.hpp deleted file mode 100644 index 4ddaf93c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +++ /dev/null @@ -1,284 +0,0 @@ -// -// detail/handler_alloc_helpers.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP -#define ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/recycling_allocator.hpp" -#include "asio/detail/thread_info_base.hpp" -#include "asio/associated_allocator.hpp" -#include "asio/handler_alloc_hook.hpp" - -#include "asio/detail/push_options.hpp" - -// Calls to asio_handler_allocate and asio_handler_deallocate must be made from -// a namespace that does not contain any overloads of these functions. The -// asio_handler_alloc_helpers namespace is defined here for that purpose. -namespace asio_handler_alloc_helpers { - -#if defined(ASIO_NO_DEPRECATED) -template -inline void error_if_hooks_are_defined(Handler& h) -{ - using asio::asio_handler_allocate; - // If you get an error here it is because some of your handlers still - // overload asio_handler_allocate, but this hook is no longer used. - (void)static_cast( - asio_handler_allocate(static_cast(0), - asio::detail::addressof(h))); - - using asio::asio_handler_deallocate; - // If you get an error here it is because some of your handlers still - // overload asio_handler_deallocate, but this hook is no longer used. - (void)static_cast( - asio_handler_deallocate(static_cast(0), - static_cast(0), asio::detail::addressof(h))); -} -#endif // defined(ASIO_NO_DEPRECATED) - -template -inline void* allocate(std::size_t s, Handler& h) -{ -#if !defined(ASIO_HAS_HANDLER_HOOKS) - return ::operator new(s); -#elif defined(ASIO_NO_DEPRECATED) - // The asio_handler_allocate hook is no longer used to obtain memory. - (void)&error_if_hooks_are_defined; - (void)h; -#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) - return asio::detail::thread_info_base::allocate( - asio::detail::thread_context::thread_call_stack::top(), s); -#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) - return ::operator new(size); -#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) -#else - using asio::asio_handler_allocate; - return asio_handler_allocate(s, asio::detail::addressof(h)); -#endif -} - -template -inline void deallocate(void* p, std::size_t s, Handler& h) -{ -#if !defined(ASIO_HAS_HANDLER_HOOKS) - ::operator delete(p); -#elif defined(ASIO_NO_DEPRECATED) - // The asio_handler_allocate hook is no longer used to obtain memory. - (void)&error_if_hooks_are_defined; - (void)h; -#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) - asio::detail::thread_info_base::deallocate( - asio::detail::thread_context::thread_call_stack::top(), p, s); -#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) - (void)s; - ::operator delete(p); -#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING) -#else - using asio::asio_handler_deallocate; - asio_handler_deallocate(p, s, asio::detail::addressof(h)); -#endif -} - -} // namespace asio_handler_alloc_helpers - -namespace asio { -namespace detail { - -template -class hook_allocator -{ -public: - typedef T value_type; - - template - struct rebind - { - typedef hook_allocator other; - }; - - explicit hook_allocator(Handler& h) - : handler_(h) - { - } - - template - hook_allocator(const hook_allocator& a) - : handler_(a.handler_) - { - } - - T* allocate(std::size_t n) - { - return static_cast( - asio_handler_alloc_helpers::allocate(sizeof(T) * n, handler_)); - } - - void deallocate(T* p, std::size_t n) - { - asio_handler_alloc_helpers::deallocate(p, sizeof(T) * n, handler_); - } - -//private: - Handler& handler_; -}; - -template -class hook_allocator -{ -public: - typedef void value_type; - - template - struct rebind - { - typedef hook_allocator other; - }; - - explicit hook_allocator(Handler& h) - : handler_(h) - { - } - - template - hook_allocator(const hook_allocator& a) - : handler_(a.handler_) - { - } - -//private: - Handler& handler_; -}; - -template -struct get_hook_allocator -{ - typedef Allocator type; - - static type get(Handler&, const Allocator& a) - { - return a; - } -}; - -template -struct get_hook_allocator > -{ - typedef hook_allocator type; - - static type get(Handler& handler, const std::allocator&) - { - return type(handler); - } -}; - -} // namespace detail -} // namespace asio - -#define ASIO_DEFINE_HANDLER_PTR(op) \ - struct ptr \ - { \ - Handler* h; \ - op* v; \ - op* p; \ - ~ptr() \ - { \ - reset(); \ - } \ - static op* allocate(Handler& handler) \ - { \ - typedef typename ::asio::associated_allocator< \ - Handler>::type associated_allocator_type; \ - typedef typename ::asio::detail::get_hook_allocator< \ - Handler, associated_allocator_type>::type hook_allocator_type; \ - ASIO_REBIND_ALLOC(hook_allocator_type, op) a( \ - ::asio::detail::get_hook_allocator< \ - Handler, associated_allocator_type>::get( \ - handler, ::asio::get_associated_allocator(handler))); \ - return a.allocate(1); \ - } \ - void reset() \ - { \ - if (p) \ - { \ - p->~op(); \ - p = 0; \ - } \ - if (v) \ - { \ - typedef typename ::asio::associated_allocator< \ - Handler>::type associated_allocator_type; \ - typedef typename ::asio::detail::get_hook_allocator< \ - Handler, associated_allocator_type>::type hook_allocator_type; \ - ASIO_REBIND_ALLOC(hook_allocator_type, op) a( \ - ::asio::detail::get_hook_allocator< \ - Handler, associated_allocator_type>::get( \ - *h, ::asio::get_associated_allocator(*h))); \ - a.deallocate(static_cast(v), 1); \ - v = 0; \ - } \ - } \ - } \ - /**/ - -#define ASIO_DEFINE_TAGGED_HANDLER_ALLOCATOR_PTR(purpose, op) \ - struct ptr \ - { \ - const Alloc* a; \ - void* v; \ - op* p; \ - ~ptr() \ - { \ - reset(); \ - } \ - static op* allocate(const Alloc& a) \ - { \ - typedef typename ::asio::detail::get_recycling_allocator< \ - Alloc, purpose>::type recycling_allocator_type; \ - ASIO_REBIND_ALLOC(recycling_allocator_type, op) a1( \ - ::asio::detail::get_recycling_allocator< \ - Alloc, purpose>::get(a)); \ - return a1.allocate(1); \ - } \ - void reset() \ - { \ - if (p) \ - { \ - p->~op(); \ - p = 0; \ - } \ - if (v) \ - { \ - typedef typename ::asio::detail::get_recycling_allocator< \ - Alloc, purpose>::type recycling_allocator_type; \ - ASIO_REBIND_ALLOC(recycling_allocator_type, op) a1( \ - ::asio::detail::get_recycling_allocator< \ - Alloc, purpose>::get(*a)); \ - a1.deallocate(static_cast(v), 1); \ - v = 0; \ - } \ - } \ - } \ - /**/ - -#define ASIO_DEFINE_HANDLER_ALLOCATOR_PTR(op) \ - ASIO_DEFINE_TAGGED_HANDLER_ALLOCATOR_PTR( \ - ::asio::detail::thread_info_base::default_tag, op ) \ - /**/ - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_cont_helpers.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_cont_helpers.hpp deleted file mode 100644 index 1aaa7e54..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_cont_helpers.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// detail/handler_cont_helpers.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP -#define ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/memory.hpp" -#include "asio/handler_continuation_hook.hpp" - -#include "asio/detail/push_options.hpp" - -// Calls to asio_handler_is_continuation must be made from a namespace that -// does not contain overloads of this function. This namespace is defined here -// for that purpose. -namespace asio_handler_cont_helpers { - -template -inline bool is_continuation(Context& context) -{ -#if !defined(ASIO_HAS_HANDLER_HOOKS) - return false; -#else - using asio::asio_handler_is_continuation; - return asio_handler_is_continuation( - asio::detail::addressof(context)); -#endif -} - -} // namespace asio_handler_cont_helpers - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_invoke_helpers.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_invoke_helpers.hpp deleted file mode 100644 index f2967a98..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// -// detail/handler_invoke_helpers.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP -#define ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/memory.hpp" -#include "asio/handler_invoke_hook.hpp" - -#include "asio/detail/push_options.hpp" - -// Calls to asio_handler_invoke must be made from a namespace that does not -// contain overloads of this function. The asio_handler_invoke_helpers -// namespace is defined here for that purpose. -namespace asio_handler_invoke_helpers { - -#if defined(ASIO_NO_DEPRECATED) -template -inline void error_if_hook_is_defined(Function& function, Context& context) -{ - using asio::asio_handler_invoke; - // If you get an error here it is because some of your handlers still - // overload asio_handler_invoke, but this hook is no longer used. - (void)static_cast( - asio_handler_invoke(function, asio::detail::addressof(context))); -} -#endif // defined(ASIO_NO_DEPRECATED) - -template -inline void invoke(Function& function, Context& context) -{ -#if !defined(ASIO_HAS_HANDLER_HOOKS) - Function tmp(function); - tmp(); -#elif defined(ASIO_NO_DEPRECATED) - // The asio_handler_invoke hook is no longer used to invoke the function. - (void)&error_if_hook_is_defined; - (void)context; - function(); -#else - using asio::asio_handler_invoke; - asio_handler_invoke(function, asio::detail::addressof(context)); -#endif -} - -template -inline void invoke(const Function& function, Context& context) -{ -#if !defined(ASIO_HAS_HANDLER_HOOKS) - Function tmp(function); - tmp(); -#elif defined(ASIO_NO_DEPRECATED) - // The asio_handler_invoke hook is no longer used to invoke the function. - (void)&error_if_hook_is_defined; - (void)context; - Function tmp(function); - tmp(); -#else - using asio::asio_handler_invoke; - asio_handler_invoke(function, asio::detail::addressof(context)); -#endif -} - -} // namespace asio_handler_invoke_helpers - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_tracking.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_tracking.hpp deleted file mode 100644 index 95cb96f3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_tracking.hpp +++ /dev/null @@ -1,264 +0,0 @@ -// -// detail/handler_tracking.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_TRACKING_HPP -#define ASIO_DETAIL_HANDLER_TRACKING_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -namespace asio { - -class execution_context; - -} // namespace asio - -#if defined(ASIO_CUSTOM_HANDLER_TRACKING) -# include ASIO_CUSTOM_HANDLER_TRACKING -#elif defined(ASIO_ENABLE_HANDLER_TRACKING) -# include "asio/error_code.hpp" -# include "asio/detail/cstdint.hpp" -# include "asio/detail/static_mutex.hpp" -# include "asio/detail/tss_ptr.hpp" -#endif // defined(ASIO_ENABLE_HANDLER_TRACKING) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_CUSTOM_HANDLER_TRACKING) - -// The user-specified header must define the following macros: -// - ASIO_INHERIT_TRACKED_HANDLER -// - ASIO_ALSO_INHERIT_TRACKED_HANDLER -// - ASIO_HANDLER_TRACKING_INIT -// - ASIO_HANDLER_CREATION(args) -// - ASIO_HANDLER_COMPLETION(args) -// - ASIO_HANDLER_INVOCATION_BEGIN(args) -// - ASIO_HANDLER_INVOCATION_END -// - ASIO_HANDLER_OPERATION(args) -// - ASIO_HANDLER_REACTOR_REGISTRATION(args) -// - ASIO_HANDLER_REACTOR_DEREGISTRATION(args) -// - ASIO_HANDLER_REACTOR_READ_EVENT -// - ASIO_HANDLER_REACTOR_WRITE_EVENT -// - ASIO_HANDLER_REACTOR_ERROR_EVENT -// - ASIO_HANDLER_REACTOR_EVENTS(args) -// - ASIO_HANDLER_REACTOR_OPERATION(args) - -# if !defined(ASIO_ENABLE_HANDLER_TRACKING) -# define ASIO_ENABLE_HANDLER_TRACKING 1 -# endif /// !defined(ASIO_ENABLE_HANDLER_TRACKING) - -#elif defined(ASIO_ENABLE_HANDLER_TRACKING) - -class handler_tracking -{ -public: - class completion; - - // Base class for objects containing tracked handlers. - class tracked_handler - { - private: - // Only the handler_tracking class will have access to the id. - friend class handler_tracking; - friend class completion; - uint64_t id_; - - protected: - // Constructor initialises with no id. - tracked_handler() : id_(0) {} - - // Prevent deletion through this type. - ~tracked_handler() {} - }; - - // Initialise the tracking system. - ASIO_DECL static void init(); - - class location - { - public: - // Constructor adds a location to the stack. - ASIO_DECL explicit location(const char* file, - int line, const char* func); - - // Destructor removes a location from the stack. - ASIO_DECL ~location(); - - private: - // Disallow copying and assignment. - location(const location&) ASIO_DELETED; - location& operator=(const location&) ASIO_DELETED; - - friend class handler_tracking; - const char* file_; - int line_; - const char* func_; - location* next_; - }; - - // Record the creation of a tracked handler. - ASIO_DECL static void creation( - execution_context& context, tracked_handler& h, - const char* object_type, void* object, - uintmax_t native_handle, const char* op_name); - - class completion - { - public: - // Constructor records that handler is to be invoked with no arguments. - ASIO_DECL explicit completion(const tracked_handler& h); - - // Destructor records only when an exception is thrown from the handler, or - // if the memory is being freed without the handler having been invoked. - ASIO_DECL ~completion(); - - // Records that handler is to be invoked with no arguments. - ASIO_DECL void invocation_begin(); - - // Records that handler is to be invoked with one arguments. - ASIO_DECL void invocation_begin(const asio::error_code& ec); - - // Constructor records that handler is to be invoked with two arguments. - ASIO_DECL void invocation_begin( - const asio::error_code& ec, std::size_t bytes_transferred); - - // Constructor records that handler is to be invoked with two arguments. - ASIO_DECL void invocation_begin( - const asio::error_code& ec, int signal_number); - - // Constructor records that handler is to be invoked with two arguments. - ASIO_DECL void invocation_begin( - const asio::error_code& ec, const char* arg); - - // Record that handler invocation has ended. - ASIO_DECL void invocation_end(); - - private: - friend class handler_tracking; - uint64_t id_; - bool invoked_; - completion* next_; - }; - - // Record an operation that is not directly associated with a handler. - ASIO_DECL static void operation(execution_context& context, - const char* object_type, void* object, - uintmax_t native_handle, const char* op_name); - - // Record that a descriptor has been registered with the reactor. - ASIO_DECL static void reactor_registration(execution_context& context, - uintmax_t native_handle, uintmax_t registration); - - // Record that a descriptor has been deregistered from the reactor. - ASIO_DECL static void reactor_deregistration(execution_context& context, - uintmax_t native_handle, uintmax_t registration); - - // Record a reactor-based operation that is associated with a handler. - ASIO_DECL static void reactor_events(execution_context& context, - uintmax_t registration, unsigned events); - - // Record a reactor-based operation that is associated with a handler. - ASIO_DECL static void reactor_operation( - const tracked_handler& h, const char* op_name, - const asio::error_code& ec); - - // Record a reactor-based operation that is associated with a handler. - ASIO_DECL static void reactor_operation( - const tracked_handler& h, const char* op_name, - const asio::error_code& ec, std::size_t bytes_transferred); - - // Write a line of output. - ASIO_DECL static void write_line(const char* format, ...); - -private: - struct tracking_state; - ASIO_DECL static tracking_state* get_state(); -}; - -# define ASIO_INHERIT_TRACKED_HANDLER \ - : public asio::detail::handler_tracking::tracked_handler - -# define ASIO_ALSO_INHERIT_TRACKED_HANDLER \ - , public asio::detail::handler_tracking::tracked_handler - -# define ASIO_HANDLER_TRACKING_INIT \ - asio::detail::handler_tracking::init() - -# define ASIO_HANDLER_LOCATION(args) \ - asio::detail::handler_tracking::location tracked_location args - -# define ASIO_HANDLER_CREATION(args) \ - asio::detail::handler_tracking::creation args - -# define ASIO_HANDLER_COMPLETION(args) \ - asio::detail::handler_tracking::completion tracked_completion args - -# define ASIO_HANDLER_INVOCATION_BEGIN(args) \ - tracked_completion.invocation_begin args - -# define ASIO_HANDLER_INVOCATION_END \ - tracked_completion.invocation_end() - -# define ASIO_HANDLER_OPERATION(args) \ - asio::detail::handler_tracking::operation args - -# define ASIO_HANDLER_REACTOR_REGISTRATION(args) \ - asio::detail::handler_tracking::reactor_registration args - -# define ASIO_HANDLER_REACTOR_DEREGISTRATION(args) \ - asio::detail::handler_tracking::reactor_deregistration args - -# define ASIO_HANDLER_REACTOR_READ_EVENT 1 -# define ASIO_HANDLER_REACTOR_WRITE_EVENT 2 -# define ASIO_HANDLER_REACTOR_ERROR_EVENT 4 - -# define ASIO_HANDLER_REACTOR_EVENTS(args) \ - asio::detail::handler_tracking::reactor_events args - -# define ASIO_HANDLER_REACTOR_OPERATION(args) \ - asio::detail::handler_tracking::reactor_operation args - -#else // defined(ASIO_ENABLE_HANDLER_TRACKING) - -# define ASIO_INHERIT_TRACKED_HANDLER -# define ASIO_ALSO_INHERIT_TRACKED_HANDLER -# define ASIO_HANDLER_TRACKING_INIT (void)0 -# define ASIO_HANDLER_LOCATION(loc) (void)0 -# define ASIO_HANDLER_CREATION(args) (void)0 -# define ASIO_HANDLER_COMPLETION(args) (void)0 -# define ASIO_HANDLER_INVOCATION_BEGIN(args) (void)0 -# define ASIO_HANDLER_INVOCATION_END (void)0 -# define ASIO_HANDLER_OPERATION(args) (void)0 -# define ASIO_HANDLER_REACTOR_REGISTRATION(args) (void)0 -# define ASIO_HANDLER_REACTOR_DEREGISTRATION(args) (void)0 -# define ASIO_HANDLER_REACTOR_READ_EVENT 0 -# define ASIO_HANDLER_REACTOR_WRITE_EVENT 0 -# define ASIO_HANDLER_REACTOR_ERROR_EVENT 0 -# define ASIO_HANDLER_REACTOR_EVENTS(args) (void)0 -# define ASIO_HANDLER_REACTOR_OPERATION(args) (void)0 - -#endif // defined(ASIO_ENABLE_HANDLER_TRACKING) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/handler_tracking.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_HANDLER_TRACKING_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_type_requirements.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_type_requirements.hpp deleted file mode 100644 index 420b0abe..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_type_requirements.hpp +++ /dev/null @@ -1,556 +0,0 @@ -// -// detail/handler_type_requirements.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP -#define ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -// Older versions of gcc have difficulty compiling the sizeof expressions where -// we test the handler type requirements. We'll disable checking of handler type -// requirements for those compilers, but otherwise enable it by default. -#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS) -# if !defined(__GNUC__) || (__GNUC__ >= 4) -# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS 1 -# endif // !defined(__GNUC__) || (__GNUC__ >= 4) -#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS) - -// With C++0x we can use a combination of enhanced SFINAE and static_assert to -// generate better template error messages. As this technique is not yet widely -// portable, we'll only enable it for tested compilers. -#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT) -# if defined(__GNUC__) -# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# if defined(__GXX_EXPERIMENTAL_CXX0X__) -# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1 -# endif // defined(__GXX_EXPERIMENTAL_CXX0X__) -# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) -# endif // defined(__GNUC__) -# if defined(ASIO_MSVC) -# if (_MSC_VER >= 1600) -# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1 -# endif // (_MSC_VER >= 1600) -# endif // defined(ASIO_MSVC) -# if defined(__clang__) -# if __has_feature(__cxx_static_assert__) -# define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1 -# endif // __has_feature(cxx_static_assert) -# endif // defined(__clang__) -#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS) - -#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) -# include "asio/async_result.hpp" -#endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) - -namespace asio { -namespace detail { - -#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) - -# if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT) - -template -auto zero_arg_copyable_handler_test(Handler h, void*) - -> decltype( - sizeof(Handler(static_cast(h))), - ((h)()), - char(0)); - -template -char (&zero_arg_copyable_handler_test(Handler, ...))[2]; - -template -auto one_arg_handler_test(Handler h, Arg1* a1) - -> decltype( - sizeof(Handler(ASIO_MOVE_CAST(Handler)(h))), - ((h)(*a1)), - char(0)); - -template -char (&one_arg_handler_test(Handler h, ...))[2]; - -template -auto two_arg_handler_test(Handler h, Arg1* a1, Arg2* a2) - -> decltype( - sizeof(Handler(ASIO_MOVE_CAST(Handler)(h))), - ((h)(*a1, *a2)), - char(0)); - -template -char (&two_arg_handler_test(Handler, ...))[2]; - -template -auto two_arg_move_handler_test(Handler h, Arg1* a1, Arg2* a2) - -> decltype( - sizeof(Handler(ASIO_MOVE_CAST(Handler)(h))), - ((h)(*a1, ASIO_MOVE_CAST(Arg2)(*a2))), - char(0)); - -template -char (&two_arg_move_handler_test(Handler, ...))[2]; - -# define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg) \ - static_assert(expr, msg); - -# else // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT) - -# define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg) - -# endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT) - -template T& lvref(); -template T& lvref(T); -template const T& clvref(); -template const T& clvref(T); -#if defined(ASIO_HAS_MOVE) -template T rvref(); -template T rvref(T); -#else // defined(ASIO_HAS_MOVE) -template const T& rvref(); -template const T& rvref(T); -#endif // defined(ASIO_HAS_MOVE) -template char argbyv(T); - -template -struct handler_type_requirements -{ -}; - -#define ASIO_LEGACY_COMPLETION_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void()) asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::zero_arg_copyable_handler_test( \ - asio::detail::clvref< \ - asio_true_handler_type>(), 0)) == 1, \ - "CompletionHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::clvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()(), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_READ_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, std::size_t)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "ReadHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_WRITE_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, std::size_t)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "WriteHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_ACCEPT_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::one_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0))) == 1, \ - "AcceptHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_MOVE_ACCEPT_HANDLER_CHECK( \ - handler_type, handler, socket_type) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, socket_type)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_move_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "MoveAcceptHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::rvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_CONNECT_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::one_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0))) == 1, \ - "ConnectHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_RANGE_CONNECT_HANDLER_CHECK( \ - handler_type, handler, endpoint_type) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, endpoint_type)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "RangeConnectHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_ITERATOR_CONNECT_HANDLER_CHECK( \ - handler_type, handler, iter_type) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, iter_type)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "IteratorConnectHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_RESOLVE_HANDLER_CHECK( \ - handler_type, handler, range_type) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, range_type)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "ResolveHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_WAIT_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::one_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0))) == 1, \ - "WaitHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_SIGNAL_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, int)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "SignalHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_HANDSHAKE_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::one_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0))) == 1, \ - "HandshakeHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code, std::size_t)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::two_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0), \ - static_cast(0))) == 1, \ - "BufferedHandshakeHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref(), \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#define ASIO_SHUTDOWN_HANDLER_CHECK( \ - handler_type, handler) \ - \ - typedef ASIO_HANDLER_TYPE(handler_type, \ - void(asio::error_code)) \ - asio_true_handler_type; \ - \ - ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \ - sizeof(asio::detail::one_arg_handler_test( \ - asio::detail::rvref< \ - asio_true_handler_type>(), \ - static_cast(0))) == 1, \ - "ShutdownHandler type requirements not met") \ - \ - typedef asio::detail::handler_type_requirements< \ - sizeof( \ - asio::detail::argbyv( \ - asio::detail::rvref< \ - asio_true_handler_type>())) + \ - sizeof( \ - asio::detail::lvref< \ - asio_true_handler_type>()( \ - asio::detail::lvref()), \ - char(0))> ASIO_UNUSED_TYPEDEF - -#else // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) - -#define ASIO_LEGACY_COMPLETION_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_READ_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_WRITE_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_ACCEPT_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_MOVE_ACCEPT_HANDLER_CHECK( \ - handler_type, handler, socket_type) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_CONNECT_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_RANGE_CONNECT_HANDLER_CHECK( \ - handler_type, handler, iter_type) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_ITERATOR_CONNECT_HANDLER_CHECK( \ - handler_type, handler, iter_type) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_RESOLVE_HANDLER_CHECK( \ - handler_type, handler, iter_type) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_WAIT_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_SIGNAL_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_HANDSHAKE_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#define ASIO_SHUTDOWN_HANDLER_CHECK( \ - handler_type, handler) \ - typedef int ASIO_UNUSED_TYPEDEF - -#endif // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_work.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_work.hpp deleted file mode 100644 index 2475aa84..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/handler_work.hpp +++ /dev/null @@ -1,438 +0,0 @@ -// -// detail/handler_work.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HANDLER_WORK_HPP -#define ASIO_DETAIL_HANDLER_WORK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/associated_executor.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/allocator.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/outstanding_work.hpp" -#include "asio/executor_work_guard.hpp" -#include "asio/prefer.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -class executor; -class io_context; - -namespace execution { - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template class any_executor; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template class any_executor; - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -} // namespace execution -namespace detail { - -template -class handler_work_base -{ -public: - explicit handler_work_base(const Executor& ex) ASIO_NOEXCEPT - : executor_(asio::prefer(ex, execution::outstanding_work.tracked)) - { - } - - template - handler_work_base(const Executor& ex, - const OtherExecutor&) ASIO_NOEXCEPT - : executor_(asio::prefer(ex, execution::outstanding_work.tracked)) - { - } - - handler_work_base(const handler_work_base& other) ASIO_NOEXCEPT - : executor_(other.executor_) - { - } - -#if defined(ASIO_HAS_MOVE) - handler_work_base(handler_work_base&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(executor_type)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - bool owns_work() const ASIO_NOEXCEPT - { - return true; - } - - template - void dispatch(Function& function, Handler& handler) - { - execution::execute( - asio::prefer(executor_, - execution::blocking.possibly, - execution::allocator((get_associated_allocator)(handler))), - ASIO_MOVE_CAST(Function)(function)); - } - -private: - typedef typename decay< - typename prefer_result::type - >::type executor_type; - - executor_type executor_; -}; - -template -class handler_work_base::value - && (!is_same::value - || !is_same::value) - >::type> -{ -public: - explicit handler_work_base(const Executor& ex) ASIO_NOEXCEPT - : executor_(ex), - owns_work_(true) - { - executor_.on_work_started(); - } - - handler_work_base(const Executor& ex, - const Executor& candidate) ASIO_NOEXCEPT - : executor_(ex), - owns_work_(ex != candidate) - { - if (owns_work_) - executor_.on_work_started(); - } - - template - handler_work_base(const Executor& ex, - const OtherExecutor&) ASIO_NOEXCEPT - : executor_(ex), - owns_work_(true) - { - executor_.on_work_started(); - } - - handler_work_base(const handler_work_base& other) ASIO_NOEXCEPT - : executor_(other.executor_), - owns_work_(other.owns_work_) - { - if (owns_work_) - executor_.on_work_started(); - } - -#if defined(ASIO_HAS_MOVE) - handler_work_base(handler_work_base&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(Executor)(other.executor_)), - owns_work_(other.owns_work_) - { - other.owns_work_ = false; - } -#endif // defined(ASIO_HAS_MOVE) - - ~handler_work_base() - { - if (owns_work_) - executor_.on_work_finished(); - } - - bool owns_work() const ASIO_NOEXCEPT - { - return owns_work_; - } - - template - void dispatch(Function& function, Handler& handler) - { - executor_.dispatch(ASIO_MOVE_CAST(Function)(function), - asio::get_associated_allocator(handler)); - } - -private: - Executor executor_; - bool owns_work_; -}; - -template -class handler_work_base::value - >::type> -{ -public: - explicit handler_work_base(const Executor&) - { - } - - bool owns_work() const ASIO_NOEXCEPT - { - return false; - } - - template - void dispatch(Function& function, Handler& handler) - { - // When using a native implementation, I/O completion handlers are - // already dispatched according to the execution context's executor's - // rules. We can call the function directly. - asio_handler_invoke_helpers::invoke(function, handler); - } -}; - -template -class handler_work_base -{ -public: - explicit handler_work_base(const Executor& ex) ASIO_NOEXCEPT -#if !defined(ASIO_NO_TYPEID) - : executor_( - ex.target_type() == typeid(typename IoContext::executor_type) - ? Executor() : ex) -#else // !defined(ASIO_NO_TYPEID) - : executor_(ex) -#endif // !defined(ASIO_NO_TYPEID) - { - if (executor_) - executor_.on_work_started(); - } - - handler_work_base(const Executor& ex, - const Executor& candidate) ASIO_NOEXCEPT - : executor_(ex != candidate ? ex : Executor()) - { - if (executor_) - executor_.on_work_started(); - } - - template - handler_work_base(const Executor& ex, - const OtherExecutor&) ASIO_NOEXCEPT - : executor_(ex) - { - executor_.on_work_started(); - } - - handler_work_base(const handler_work_base& other) ASIO_NOEXCEPT - : executor_(other.executor_) - { - if (executor_) - executor_.on_work_started(); - } - -#if defined(ASIO_HAS_MOVE) - handler_work_base(handler_work_base&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(Executor)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - ~handler_work_base() - { - if (executor_) - executor_.on_work_finished(); - } - - bool owns_work() const ASIO_NOEXCEPT - { - return !!executor_; - } - - template - void dispatch(Function& function, Handler& handler) - { - executor_.dispatch(ASIO_MOVE_CAST(Function)(function), - asio::get_associated_allocator(handler)); - } - -private: - Executor executor_; -}; - -template < -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - typename... SupportableProperties, -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - typename IoContext, typename PolymorphicExecutor> -class handler_work_base< -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - execution::any_executor, -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - execution::any_executor, -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - void, IoContext, PolymorphicExecutor> -{ -public: - typedef -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - execution::any_executor -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - execution::any_executor -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - executor_type; - - explicit handler_work_base(const executor_type& ex) ASIO_NOEXCEPT -#if !defined(ASIO_NO_TYPEID) - : executor_( - ex.target_type() == typeid(typename IoContext::executor_type) - ? executor_type() - : asio::prefer(ex, execution::outstanding_work.tracked)) -#else // !defined(ASIO_NO_TYPEID) - : executor_(asio::prefer(ex, execution::outstanding_work.tracked)) -#endif // !defined(ASIO_NO_TYPEID) - { - } - - handler_work_base(const executor_type& ex, - const executor_type& candidate) ASIO_NOEXCEPT - : executor_(ex != candidate ? ex : executor_type()) - { - } - - template - handler_work_base(const executor_type& ex, - const OtherExecutor&) ASIO_NOEXCEPT - : executor_(asio::prefer(ex, execution::outstanding_work.tracked)) - { - } - - handler_work_base(const handler_work_base& other) ASIO_NOEXCEPT - : executor_(other.executor_) - { - } - -#if defined(ASIO_HAS_MOVE) - handler_work_base(handler_work_base&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(executor_type)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - bool owns_work() const ASIO_NOEXCEPT - { - return !!executor_; - } - - template - void dispatch(Function& function, Handler& handler) - { - execution::execute( - asio::prefer(executor_, - execution::blocking.possibly, - execution::allocator((get_associated_allocator)(handler))), - ASIO_MOVE_CAST(Function)(function)); - } - -private: - executor_type executor_; -}; - -template -class handler_work : - handler_work_base, - handler_work_base::type, IoExecutor> -{ -public: - typedef handler_work_base base1_type; - typedef handler_work_base::type, IoExecutor> base2_type; - - handler_work(Handler& handler, const IoExecutor& io_ex) ASIO_NOEXCEPT - : base1_type(io_ex), - base2_type(asio::get_associated_executor(handler, io_ex), io_ex) - { - } - - template - void complete(Function& function, Handler& handler) - { - if (!base1_type::owns_work() && !base2_type::owns_work()) - { - // When using a native implementation, I/O completion handlers are - // already dispatched according to the execution context's executor's - // rules. We can call the function directly. - asio_handler_invoke_helpers::invoke(function, handler); - } - else - { - base2_type::dispatch(function, handler); - } - } -}; - -template -class handler_work< - Handler, IoExecutor, - typename enable_if< - is_same< - typename associated_executor::asio_associated_executor_is_unspecialised, - void - >::value - >::type> : handler_work_base -{ -public: - typedef handler_work_base base1_type; - - handler_work(Handler&, const IoExecutor& io_ex) ASIO_NOEXCEPT - : base1_type(io_ex) - { - } - - template - void complete(Function& function, Handler& handler) - { - if (!base1_type::owns_work()) - { - // When using a native implementation, I/O completion handlers are - // already dispatched according to the execution context's executor's - // rules. We can call the function directly. - asio_handler_invoke_helpers::invoke(function, handler); - } - else - { - base1_type::dispatch(function, handler); - } - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_HANDLER_WORK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/hash_map.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/hash_map.hpp deleted file mode 100644 index 2fdc473c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/hash_map.hpp +++ /dev/null @@ -1,331 +0,0 @@ -// -// detail/hash_map.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_HASH_MAP_HPP -#define ASIO_DETAIL_HASH_MAP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/noncopyable.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# include "asio/detail/socket_types.hpp" -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -inline std::size_t calculate_hash_value(int i) -{ - return static_cast(i); -} - -inline std::size_t calculate_hash_value(void* p) -{ - return reinterpret_cast(p) - + (reinterpret_cast(p) >> 3); -} - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -inline std::size_t calculate_hash_value(SOCKET s) -{ - return static_cast(s); -} -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -// Note: assumes K and V are POD types. -template -class hash_map - : private noncopyable -{ -public: - // The type of a value in the map. - typedef std::pair value_type; - - // The type of a non-const iterator over the hash map. - typedef typename std::list::iterator iterator; - - // The type of a const iterator over the hash map. - typedef typename std::list::const_iterator const_iterator; - - // Constructor. - hash_map() - : size_(0), - buckets_(0), - num_buckets_(0) - { - } - - // Destructor. - ~hash_map() - { - delete[] buckets_; - } - - // Get an iterator for the beginning of the map. - iterator begin() - { - return values_.begin(); - } - - // Get an iterator for the beginning of the map. - const_iterator begin() const - { - return values_.begin(); - } - - // Get an iterator for the end of the map. - iterator end() - { - return values_.end(); - } - - // Get an iterator for the end of the map. - const_iterator end() const - { - return values_.end(); - } - - // Check whether the map is empty. - bool empty() const - { - return values_.empty(); - } - - // Find an entry in the map. - iterator find(const K& k) - { - if (num_buckets_) - { - size_t bucket = calculate_hash_value(k) % num_buckets_; - iterator it = buckets_[bucket].first; - if (it == values_.end()) - return values_.end(); - iterator end_it = buckets_[bucket].last; - ++end_it; - while (it != end_it) - { - if (it->first == k) - return it; - ++it; - } - } - return values_.end(); - } - - // Find an entry in the map. - const_iterator find(const K& k) const - { - if (num_buckets_) - { - size_t bucket = calculate_hash_value(k) % num_buckets_; - const_iterator it = buckets_[bucket].first; - if (it == values_.end()) - return it; - const_iterator end_it = buckets_[bucket].last; - ++end_it; - while (it != end_it) - { - if (it->first == k) - return it; - ++it; - } - } - return values_.end(); - } - - // Insert a new entry into the map. - std::pair insert(const value_type& v) - { - if (size_ + 1 >= num_buckets_) - rehash(hash_size(size_ + 1)); - size_t bucket = calculate_hash_value(v.first) % num_buckets_; - iterator it = buckets_[bucket].first; - if (it == values_.end()) - { - buckets_[bucket].first = buckets_[bucket].last = - values_insert(values_.end(), v); - ++size_; - return std::pair(buckets_[bucket].last, true); - } - iterator end_it = buckets_[bucket].last; - ++end_it; - while (it != end_it) - { - if (it->first == v.first) - return std::pair(it, false); - ++it; - } - buckets_[bucket].last = values_insert(end_it, v); - ++size_; - return std::pair(buckets_[bucket].last, true); - } - - // Erase an entry from the map. - void erase(iterator it) - { - ASIO_ASSERT(it != values_.end()); - ASIO_ASSERT(num_buckets_ != 0); - - size_t bucket = calculate_hash_value(it->first) % num_buckets_; - bool is_first = (it == buckets_[bucket].first); - bool is_last = (it == buckets_[bucket].last); - if (is_first && is_last) - buckets_[bucket].first = buckets_[bucket].last = values_.end(); - else if (is_first) - ++buckets_[bucket].first; - else if (is_last) - --buckets_[bucket].last; - - values_erase(it); - --size_; - } - - // Erase a key from the map. - void erase(const K& k) - { - iterator it = find(k); - if (it != values_.end()) - erase(it); - } - - // Remove all entries from the map. - void clear() - { - // Clear the values. - values_.clear(); - size_ = 0; - - // Initialise all buckets to empty. - iterator end_it = values_.end(); - for (size_t i = 0; i < num_buckets_; ++i) - buckets_[i].first = buckets_[i].last = end_it; - } - -private: - // Calculate the hash size for the specified number of elements. - static std::size_t hash_size(std::size_t num_elems) - { - static std::size_t sizes[] = - { -#if defined(ASIO_HASH_MAP_BUCKETS) - ASIO_HASH_MAP_BUCKETS -#else // ASIO_HASH_MAP_BUCKETS - 3, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, - 49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469, - 12582917, 25165843 -#endif // ASIO_HASH_MAP_BUCKETS - }; - const std::size_t nth_size = sizeof(sizes) / sizeof(std::size_t) - 1; - for (std::size_t i = 0; i < nth_size; ++i) - if (num_elems < sizes[i]) - return sizes[i]; - return sizes[nth_size]; - } - - // Re-initialise the hash from the values already contained in the list. - void rehash(std::size_t num_buckets) - { - if (num_buckets == num_buckets_) - return; - ASIO_ASSERT(num_buckets != 0); - - iterator end_iter = values_.end(); - - // Update number of buckets and initialise all buckets to empty. - bucket_type* tmp = new bucket_type[num_buckets]; - delete[] buckets_; - buckets_ = tmp; - num_buckets_ = num_buckets; - for (std::size_t i = 0; i < num_buckets_; ++i) - buckets_[i].first = buckets_[i].last = end_iter; - - // Put all values back into the hash. - iterator iter = values_.begin(); - while (iter != end_iter) - { - std::size_t bucket = calculate_hash_value(iter->first) % num_buckets_; - if (buckets_[bucket].last == end_iter) - { - buckets_[bucket].first = buckets_[bucket].last = iter++; - } - else if (++buckets_[bucket].last == iter) - { - ++iter; - } - else - { - values_.splice(buckets_[bucket].last, values_, iter++); - --buckets_[bucket].last; - } - } - } - - // Insert an element into the values list by splicing from the spares list, - // if a spare is available, and otherwise by inserting a new element. - iterator values_insert(iterator it, const value_type& v) - { - if (spares_.empty()) - { - return values_.insert(it, v); - } - else - { - spares_.front() = v; - values_.splice(it, spares_, spares_.begin()); - return --it; - } - } - - // Erase an element from the values list by splicing it to the spares list. - void values_erase(iterator it) - { - *it = value_type(); - spares_.splice(spares_.begin(), values_, it); - } - - // The number of elements in the hash. - std::size_t size_; - - // The list of all values in the hash map. - std::list values_; - - // The list of spare nodes waiting to be recycled. Assumes that POD types only - // are stored in the hash map. - std::list spares_; - - // The type for a bucket in the hash table. - struct bucket_type - { - iterator first; - iterator last; - }; - - // The buckets in the hash. - bucket_type* buckets_; - - // The number of buckets in the hash. - std::size_t num_buckets_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_HASH_MAP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp deleted file mode 100644 index 7bf2b0a9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp +++ /dev/null @@ -1,118 +0,0 @@ -// -// detail/impl/buffer_sequence_adapter.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP -#define ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include -#include -#include -#include "asio/detail/buffer_sequence_adapter.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class winrt_buffer_impl : - public Microsoft::WRL::RuntimeClass< - Microsoft::WRL::RuntimeClassFlags< - Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>, - ABI::Windows::Storage::Streams::IBuffer, - Windows::Storage::Streams::IBufferByteAccess> -{ -public: - explicit winrt_buffer_impl(const asio::const_buffer& b) - { - bytes_ = const_cast(static_cast(b.data())); - length_ = b.size(); - capacity_ = b.size(); - } - - explicit winrt_buffer_impl(const asio::mutable_buffer& b) - { - bytes_ = static_cast(b.data()); - length_ = 0; - capacity_ = b.size(); - } - - ~winrt_buffer_impl() - { - } - - STDMETHODIMP Buffer(byte** value) - { - *value = bytes_; - return S_OK; - } - - STDMETHODIMP get_Capacity(UINT32* value) - { - *value = capacity_; - return S_OK; - } - - STDMETHODIMP get_Length(UINT32 *value) - { - *value = length_; - return S_OK; - } - - STDMETHODIMP put_Length(UINT32 value) - { - if (value > capacity_) - return E_INVALIDARG; - length_ = value; - return S_OK; - } - -private: - byte* bytes_; - UINT32 length_; - UINT32 capacity_; -}; - -void buffer_sequence_adapter_base::init_native_buffer( - buffer_sequence_adapter_base::native_buffer_type& buf, - const asio::mutable_buffer& buffer) -{ - std::memset(&buf, 0, sizeof(native_buffer_type)); - Microsoft::WRL::ComPtr insp - = Microsoft::WRL::Make(buffer); - buf = reinterpret_cast(insp.Get()); -} - -void buffer_sequence_adapter_base::init_native_buffer( - buffer_sequence_adapter_base::native_buffer_type& buf, - const asio::const_buffer& buffer) -{ - std::memset(&buf, 0, sizeof(native_buffer_type)); - Microsoft::WRL::ComPtr insp - = Microsoft::WRL::Make(buffer); - Platform::Object^ buf_obj = reinterpret_cast(insp.Get()); - buf = reinterpret_cast(insp.Get()); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/descriptor_ops.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/descriptor_ops.ipp deleted file mode 100644 index a146ed52..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +++ /dev/null @@ -1,608 +0,0 @@ -// -// detail/impl/descriptor_ops.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP -#define ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/descriptor_ops.hpp" -#include "asio/error.hpp" - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace descriptor_ops { - -int open(const char* path, int flags, asio::error_code& ec) -{ - int result = ::open(path, flags); - get_last_error(ec, result < 0); - return result; -} - -int close(int d, state_type& state, asio::error_code& ec) -{ - int result = 0; - if (d != -1) - { - result = ::close(d); - get_last_error(ec, result < 0); - - if (result != 0 - && (ec == asio::error::would_block - || ec == asio::error::try_again)) - { - // According to UNIX Network Programming Vol. 1, it is possible for - // close() to fail with EWOULDBLOCK under certain circumstances. What - // isn't clear is the state of the descriptor after this error. The one - // current OS where this behaviour is seen, Windows, says that the socket - // remains open. Therefore we'll put the descriptor back into blocking - // mode and have another attempt at closing it. -#if defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int flags = ::fcntl(d, F_GETFL, 0); - if (flags >= 0) - ::fcntl(d, F_SETFL, flags & ~O_NONBLOCK); -#else // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - ioctl_arg_type arg = 0; - ::ioctl(d, FIONBIO, &arg); -#endif // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - state &= ~non_blocking; - - result = ::close(d); - get_last_error(ec, result < 0); - } - } - - return result; -} - -bool set_user_non_blocking(int d, state_type& state, - bool value, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return false; - } - -#if defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int result = ::fcntl(d, F_GETFL, 0); - get_last_error(ec, result < 0); - if (result >= 0) - { - int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK)); - result = ::fcntl(d, F_SETFL, flag); - get_last_error(ec, result < 0); - } -#else // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctl(d, FIONBIO, &arg); - get_last_error(ec, result < 0); -#endif // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - - if (result >= 0) - { - if (value) - state |= user_set_non_blocking; - else - { - // Clearing the user-set non-blocking mode always overrides any - // internally-set non-blocking flag. Any subsequent asynchronous - // operations will need to re-enable non-blocking I/O. - state &= ~(user_set_non_blocking | internal_non_blocking); - } - return true; - } - - return false; -} - -bool set_internal_non_blocking(int d, state_type& state, - bool value, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return false; - } - - if (!value && (state & user_set_non_blocking)) - { - // It does not make sense to clear the internal non-blocking flag if the - // user still wants non-blocking behaviour. Return an error and let the - // caller figure out whether to update the user-set non-blocking flag. - ec = asio::error::invalid_argument; - return false; - } - -#if defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int result = ::fcntl(d, F_GETFL, 0); - get_last_error(ec, result < 0); - if (result >= 0) - { - int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK)); - result = ::fcntl(d, F_SETFL, flag); - get_last_error(ec, result < 0); - } -#else // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctl(d, FIONBIO, &arg); - get_last_error(ec, result < 0); -#endif // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - - if (result >= 0) - { - if (value) - state |= internal_non_blocking; - else - state &= ~internal_non_blocking; - return true; - } - - return false; -} - -std::size_t sync_read(int d, state_type state, buf* bufs, - std::size_t count, bool all_empty, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to read 0 bytes on a stream is a no-op. - if (all_empty) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = ::readv(d, bufs, static_cast(count)); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes > 0) - return bytes; - - // Check for EOF. - if (bytes == 0) - { - ec = asio::error::eof; - return 0; - } - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for descriptor to become ready. - if (descriptor_ops::poll_read(d, 0, ec) < 0) - return 0; - } -} - -std::size_t sync_read1(int d, state_type state, void* data, - std::size_t size, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to read 0 bytes on a stream is a no-op. - if (size == 0) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = ::read(d, data, size); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes > 0) - return bytes; - - // Check for EOF. - if (bytes == 0) - { - ec = asio::error::eof; - return 0; - } - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for descriptor to become ready. - if (descriptor_ops::poll_read(d, 0, ec) < 0) - return 0; - } -} - -bool non_blocking_read(int d, buf* bufs, std::size_t count, - asio::error_code& ec, std::size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = ::readv(d, bufs, static_cast(count)); - get_last_error(ec, bytes < 0); - - // Check for end of stream. - if (bytes == 0) - { - ec = asio::error::eof; - return true; - } - - // Check if operation succeeded. - if (bytes > 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_read1(int d, void* data, std::size_t size, - asio::error_code& ec, std::size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = ::read(d, data, size); - get_last_error(ec, bytes < 0); - - // Check for end of stream. - if (bytes == 0) - { - ec = asio::error::eof; - return true; - } - - // Check if operation succeeded. - if (bytes > 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -std::size_t sync_write(int d, state_type state, const buf* bufs, - std::size_t count, bool all_empty, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to write 0 bytes on a stream is a no-op. - if (all_empty) - { - ec.assign(0, ec.category()); - return 0; - } - - // Write some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = ::writev(d, bufs, static_cast(count)); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes > 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for descriptor to become ready. - if (descriptor_ops::poll_write(d, 0, ec) < 0) - return 0; - } -} - -std::size_t sync_write1(int d, state_type state, const void* data, - std::size_t size, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to write 0 bytes on a stream is a no-op. - if (size == 0) - { - ec.assign(0, ec.category()); - return 0; - } - - // Write some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = ::write(d, data, size); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes > 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for descriptor to become ready. - if (descriptor_ops::poll_write(d, 0, ec) < 0) - return 0; - } -} - -bool non_blocking_write(int d, const buf* bufs, std::size_t count, - asio::error_code& ec, std::size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = ::writev(d, bufs, static_cast(count)); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_write1(int d, const void* data, std::size_t size, - asio::error_code& ec, std::size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = ::write(d, data, size); - get_last_error(ec, bytes < 0); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -int ioctl(int d, state_type& state, long cmd, - ioctl_arg_type* arg, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - int result = ::ioctl(d, cmd, arg); - get_last_error(ec, result < 0); - - if (result >= 0) - { - // When updating the non-blocking mode we always perform the ioctl syscall, - // even if the flags would otherwise indicate that the descriptor is - // already in the correct state. This ensures that the underlying - // descriptor is put into the state that has been requested by the user. If - // the ioctl syscall was successful then we need to update the flags to - // match. - if (cmd == static_cast(FIONBIO)) - { - if (*arg) - { - state |= user_set_non_blocking; - } - else - { - // Clearing the non-blocking mode always overrides any internally-set - // non-blocking flag. Any subsequent asynchronous operations will need - // to re-enable non-blocking I/O. - state &= ~(user_set_non_blocking | internal_non_blocking); - } - } - } - - return result; -} - -int fcntl(int d, int cmd, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - int result = ::fcntl(d, cmd); - get_last_error(ec, result < 0); - return result; -} - -int fcntl(int d, int cmd, long arg, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - int result = ::fcntl(d, cmd, arg); - get_last_error(ec, result < 0); - return result; -} - -int poll_read(int d, state_type state, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - pollfd fds; - fds.fd = d; - fds.events = POLLIN; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : -1; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -int poll_write(int d, state_type state, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - pollfd fds; - fds.fd = d; - fds.events = POLLOUT; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : -1; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -int poll_error(int d, state_type state, asio::error_code& ec) -{ - if (d == -1) - { - ec = asio::error::bad_descriptor; - return -1; - } - - pollfd fds; - fds.fd = d; - fds.events = POLLPRI | POLLERR | POLLHUP; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : -1; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -} // namespace descriptor_ops -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp deleted file mode 100644 index 31cd7196..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// detail/impl/dev_poll_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP -#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_DEV_POLL) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void dev_poll_reactor::add_timer_queue(timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -template -void dev_poll_reactor::remove_timer_queue(timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void dev_poll_reactor::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - scheduler_.post_immediate_completion(op, false); - return; - } - - bool earliest = queue.enqueue_timer(time, timer, op); - scheduler_.work_started(); - if (earliest) - interrupter_.interrupt(); -} - -template -std::size_t dev_poll_reactor::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - scheduler_.post_deferred_completions(ops); - return n; -} - -template -void dev_poll_reactor::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - queue.cancel_timer(target, ops); - queue.move_timer(target, source); - lock.unlock(); - scheduler_.post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_DEV_POLL) - -#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp deleted file mode 100644 index c7ad0cd3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp +++ /dev/null @@ -1,446 +0,0 @@ -// -// detail/impl/dev_poll_reactor.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP -#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_DEV_POLL) - -#include "asio/detail/dev_poll_reactor.hpp" -#include "asio/detail/assert.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -dev_poll_reactor::dev_poll_reactor(asio::execution_context& ctx) - : asio::detail::execution_context_service_base(ctx), - scheduler_(use_service(ctx)), - mutex_(), - dev_poll_fd_(do_dev_poll_create()), - interrupter_(), - shutdown_(false) -{ - // Add the interrupter's descriptor to /dev/poll. - ::pollfd ev = { 0, 0, 0 }; - ev.fd = interrupter_.read_descriptor(); - ev.events = POLLIN | POLLERR; - ev.revents = 0; - ::write(dev_poll_fd_, &ev, sizeof(ev)); -} - -dev_poll_reactor::~dev_poll_reactor() -{ - shutdown(); - ::close(dev_poll_fd_); -} - -void dev_poll_reactor::shutdown() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - shutdown_ = true; - lock.unlock(); - - op_queue ops; - - for (int i = 0; i < max_ops; ++i) - op_queue_[i].get_all_operations(ops); - - timer_queues_.get_all_timers(ops); - - scheduler_.abandon_operations(ops); -} - -void dev_poll_reactor::notify_fork( - asio::execution_context::fork_event fork_ev) -{ - if (fork_ev == asio::execution_context::fork_child) - { - detail::mutex::scoped_lock lock(mutex_); - - if (dev_poll_fd_ != -1) - ::close(dev_poll_fd_); - dev_poll_fd_ = -1; - dev_poll_fd_ = do_dev_poll_create(); - - interrupter_.recreate(); - - // Add the interrupter's descriptor to /dev/poll. - ::pollfd ev = { 0, 0, 0 }; - ev.fd = interrupter_.read_descriptor(); - ev.events = POLLIN | POLLERR; - ev.revents = 0; - ::write(dev_poll_fd_, &ev, sizeof(ev)); - - // Re-register all descriptors with /dev/poll. The changes will be written - // to the /dev/poll descriptor the next time the reactor is run. - for (int i = 0; i < max_ops; ++i) - { - reactor_op_queue::iterator iter = op_queue_[i].begin(); - reactor_op_queue::iterator end = op_queue_[i].end(); - for (; iter != end; ++iter) - { - ::pollfd& pending_ev = add_pending_event_change(iter->first); - pending_ev.events |= POLLERR | POLLHUP; - switch (i) - { - case read_op: pending_ev.events |= POLLIN; break; - case write_op: pending_ev.events |= POLLOUT; break; - case except_op: pending_ev.events |= POLLPRI; break; - default: break; - } - } - } - interrupter_.interrupt(); - } -} - -void dev_poll_reactor::init_task() -{ - scheduler_.init_task(); -} - -int dev_poll_reactor::register_descriptor(socket_type, per_descriptor_data&) -{ - return 0; -} - -int dev_poll_reactor::register_internal_descriptor(int op_type, - socket_type descriptor, per_descriptor_data&, reactor_op* op) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - op_queue_[op_type].enqueue_operation(descriptor, op); - ::pollfd& ev = add_pending_event_change(descriptor); - ev.events = POLLERR | POLLHUP; - switch (op_type) - { - case read_op: ev.events |= POLLIN; break; - case write_op: ev.events |= POLLOUT; break; - case except_op: ev.events |= POLLPRI; break; - default: break; - } - interrupter_.interrupt(); - - return 0; -} - -void dev_poll_reactor::move_descriptor(socket_type, - dev_poll_reactor::per_descriptor_data&, - dev_poll_reactor::per_descriptor_data&) -{ -} - -void dev_poll_reactor::start_op(int op_type, socket_type descriptor, - dev_poll_reactor::per_descriptor_data&, reactor_op* op, - bool is_continuation, bool allow_speculative) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - post_immediate_completion(op, is_continuation); - return; - } - - if (allow_speculative) - { - if (op_type != read_op || !op_queue_[except_op].has_operation(descriptor)) - { - if (!op_queue_[op_type].has_operation(descriptor)) - { - if (op->perform()) - { - lock.unlock(); - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - } - } - } - - bool first = op_queue_[op_type].enqueue_operation(descriptor, op); - scheduler_.work_started(); - if (first) - { - ::pollfd& ev = add_pending_event_change(descriptor); - ev.events = POLLERR | POLLHUP; - if (op_type == read_op - || op_queue_[read_op].has_operation(descriptor)) - ev.events |= POLLIN; - if (op_type == write_op - || op_queue_[write_op].has_operation(descriptor)) - ev.events |= POLLOUT; - if (op_type == except_op - || op_queue_[except_op].has_operation(descriptor)) - ev.events |= POLLPRI; - interrupter_.interrupt(); - } -} - -void dev_poll_reactor::cancel_ops(socket_type descriptor, - dev_poll_reactor::per_descriptor_data&) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - cancel_ops_unlocked(descriptor, asio::error::operation_aborted); -} - -void dev_poll_reactor::deregister_descriptor(socket_type descriptor, - dev_poll_reactor::per_descriptor_data&, bool) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - // Remove the descriptor from /dev/poll. - ::pollfd& ev = add_pending_event_change(descriptor); - ev.events = POLLREMOVE; - interrupter_.interrupt(); - - // Cancel any outstanding operations associated with the descriptor. - cancel_ops_unlocked(descriptor, asio::error::operation_aborted); -} - -void dev_poll_reactor::deregister_internal_descriptor( - socket_type descriptor, dev_poll_reactor::per_descriptor_data&) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - // Remove the descriptor from /dev/poll. Since this function is only called - // during a fork, we can apply the change immediately. - ::pollfd ev = { 0, 0, 0 }; - ev.fd = descriptor; - ev.events = POLLREMOVE; - ev.revents = 0; - ::write(dev_poll_fd_, &ev, sizeof(ev)); - - // Destroy all operations associated with the descriptor. - op_queue ops; - asio::error_code ec; - for (int i = 0; i < max_ops; ++i) - op_queue_[i].cancel_operations(descriptor, ops, ec); -} - -void dev_poll_reactor::cleanup_descriptor_data( - dev_poll_reactor::per_descriptor_data&) -{ -} - -void dev_poll_reactor::run(long usec, op_queue& ops) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - // We can return immediately if there's no work to do and the reactor is - // not supposed to block. - if (usec == 0 && op_queue_[read_op].empty() && op_queue_[write_op].empty() - && op_queue_[except_op].empty() && timer_queues_.all_empty()) - return; - - // Write the pending event registration changes to the /dev/poll descriptor. - std::size_t events_size = sizeof(::pollfd) * pending_event_changes_.size(); - if (events_size > 0) - { - errno = 0; - int result = ::write(dev_poll_fd_, - &pending_event_changes_[0], events_size); - if (result != static_cast(events_size)) - { - asio::error_code ec = asio::error_code( - errno, asio::error::get_system_category()); - for (std::size_t i = 0; i < pending_event_changes_.size(); ++i) - { - int descriptor = pending_event_changes_[i].fd; - for (int j = 0; j < max_ops; ++j) - op_queue_[j].cancel_operations(descriptor, ops, ec); - } - } - pending_event_changes_.clear(); - pending_event_change_index_.clear(); - } - - // Calculate timeout. - int timeout; - if (usec == 0) - timeout = 0; - else - { - timeout = (usec < 0) ? -1 : ((usec - 1) / 1000 + 1); - timeout = get_timeout(timeout); - } - lock.unlock(); - - // Block on the /dev/poll descriptor. - ::pollfd events[128] = { { 0, 0, 0 } }; - ::dvpoll dp = { 0, 0, 0 }; - dp.dp_fds = events; - dp.dp_nfds = 128; - dp.dp_timeout = timeout; - int num_events = ::ioctl(dev_poll_fd_, DP_POLL, &dp); - - lock.lock(); - - // Dispatch the waiting events. - for (int i = 0; i < num_events; ++i) - { - int descriptor = events[i].fd; - if (descriptor == interrupter_.read_descriptor()) - { - interrupter_.reset(); - } - else - { - bool more_reads = false; - bool more_writes = false; - bool more_except = false; - - // Exception operations must be processed first to ensure that any - // out-of-band data is read before normal data. - if (events[i].events & (POLLPRI | POLLERR | POLLHUP)) - more_except = - op_queue_[except_op].perform_operations(descriptor, ops); - else - more_except = op_queue_[except_op].has_operation(descriptor); - - if (events[i].events & (POLLIN | POLLERR | POLLHUP)) - more_reads = op_queue_[read_op].perform_operations(descriptor, ops); - else - more_reads = op_queue_[read_op].has_operation(descriptor); - - if (events[i].events & (POLLOUT | POLLERR | POLLHUP)) - more_writes = op_queue_[write_op].perform_operations(descriptor, ops); - else - more_writes = op_queue_[write_op].has_operation(descriptor); - - if ((events[i].events & (POLLERR | POLLHUP)) != 0 - && !more_except && !more_reads && !more_writes) - { - // If we have an event and no operations associated with the - // descriptor then we need to delete the descriptor from /dev/poll. - // The poll operation can produce POLLHUP or POLLERR events when there - // is no operation pending, so if we do not remove the descriptor we - // can end up in a tight polling loop. - ::pollfd ev = { 0, 0, 0 }; - ev.fd = descriptor; - ev.events = POLLREMOVE; - ev.revents = 0; - ::write(dev_poll_fd_, &ev, sizeof(ev)); - } - else - { - ::pollfd ev = { 0, 0, 0 }; - ev.fd = descriptor; - ev.events = POLLERR | POLLHUP; - if (more_reads) - ev.events |= POLLIN; - if (more_writes) - ev.events |= POLLOUT; - if (more_except) - ev.events |= POLLPRI; - ev.revents = 0; - int result = ::write(dev_poll_fd_, &ev, sizeof(ev)); - if (result != sizeof(ev)) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - for (int j = 0; j < max_ops; ++j) - op_queue_[j].cancel_operations(descriptor, ops, ec); - } - } - } - } - timer_queues_.get_ready_timers(ops); -} - -void dev_poll_reactor::interrupt() -{ - interrupter_.interrupt(); -} - -int dev_poll_reactor::do_dev_poll_create() -{ - int fd = ::open("/dev/poll", O_RDWR); - if (fd == -1) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "/dev/poll"); - } - return fd; -} - -void dev_poll_reactor::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.insert(&queue); -} - -void dev_poll_reactor::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.erase(&queue); -} - -int dev_poll_reactor::get_timeout(int msec) -{ - // By default we will wait no longer than 5 minutes. This will ensure that - // any changes to the system clock are detected after no longer than this. - const int max_msec = 5 * 60 * 1000; - return timer_queues_.wait_duration_msec( - (msec < 0 || max_msec < msec) ? max_msec : msec); -} - -void dev_poll_reactor::cancel_ops_unlocked(socket_type descriptor, - const asio::error_code& ec) -{ - bool need_interrupt = false; - op_queue ops; - for (int i = 0; i < max_ops; ++i) - need_interrupt = op_queue_[i].cancel_operations( - descriptor, ops, ec) || need_interrupt; - scheduler_.post_deferred_completions(ops); - if (need_interrupt) - interrupter_.interrupt(); -} - -::pollfd& dev_poll_reactor::add_pending_event_change(int descriptor) -{ - hash_map::iterator iter - = pending_event_change_index_.find(descriptor); - if (iter == pending_event_change_index_.end()) - { - std::size_t index = pending_event_changes_.size(); - pending_event_changes_.reserve(pending_event_changes_.size() + 1); - pending_event_change_index_.insert(std::make_pair(descriptor, index)); - pending_event_changes_.push_back(::pollfd()); - pending_event_changes_[index].fd = descriptor; - pending_event_changes_[index].revents = 0; - return pending_event_changes_[index]; - } - else - { - return pending_event_changes_[iter->second]; - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_DEV_POLL) - -#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.hpp deleted file mode 100644 index 42d52a79..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.hpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// detail/impl/epoll_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP -#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#if defined(ASIO_HAS_EPOLL) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void epoll_reactor::add_timer_queue(timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -template -void epoll_reactor::remove_timer_queue(timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void epoll_reactor::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - scheduler_.post_immediate_completion(op, false); - return; - } - - bool earliest = queue.enqueue_timer(time, timer, op); - scheduler_.work_started(); - if (earliest) - update_timeout(); -} - -template -std::size_t epoll_reactor::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - mutex::scoped_lock lock(mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - scheduler_.post_deferred_completions(ops); - return n; -} - -template -void epoll_reactor::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source) -{ - mutex::scoped_lock lock(mutex_); - op_queue ops; - queue.cancel_timer(target, ops); - queue.move_timer(target, source); - lock.unlock(); - scheduler_.post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_EPOLL) - -#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.ipp deleted file mode 100644 index 528968d2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/epoll_reactor.ipp +++ /dev/null @@ -1,787 +0,0 @@ -// -// detail/impl/epoll_reactor.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP -#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_EPOLL) - -#include -#include -#include "asio/detail/epoll_reactor.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#if defined(ASIO_HAS_TIMERFD) -# include -#endif // defined(ASIO_HAS_TIMERFD) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -epoll_reactor::epoll_reactor(asio::execution_context& ctx) - : execution_context_service_base(ctx), - scheduler_(use_service(ctx)), - mutex_(ASIO_CONCURRENCY_HINT_IS_LOCKING( - REACTOR_REGISTRATION, scheduler_.concurrency_hint())), - interrupter_(), - epoll_fd_(do_epoll_create()), - timer_fd_(do_timerfd_create()), - shutdown_(false), - registered_descriptors_mutex_(mutex_.enabled()) -{ - // Add the interrupter's descriptor to epoll. - epoll_event ev = { 0, { 0 } }; - ev.events = EPOLLIN | EPOLLERR | EPOLLET; - ev.data.ptr = &interrupter_; - epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); - interrupter_.interrupt(); - - // Add the timer descriptor to epoll. - if (timer_fd_ != -1) - { - ev.events = EPOLLIN | EPOLLERR; - ev.data.ptr = &timer_fd_; - epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); - } -} - -epoll_reactor::~epoll_reactor() -{ - if (epoll_fd_ != -1) - close(epoll_fd_); - if (timer_fd_ != -1) - close(timer_fd_); -} - -void epoll_reactor::shutdown() -{ - mutex::scoped_lock lock(mutex_); - shutdown_ = true; - lock.unlock(); - - op_queue ops; - - while (descriptor_state* state = registered_descriptors_.first()) - { - for (int i = 0; i < max_ops; ++i) - ops.push(state->op_queue_[i]); - state->shutdown_ = true; - registered_descriptors_.free(state); - } - - timer_queues_.get_all_timers(ops); - - scheduler_.abandon_operations(ops); -} - -void epoll_reactor::notify_fork( - asio::execution_context::fork_event fork_ev) -{ - if (fork_ev == asio::execution_context::fork_child) - { - if (epoll_fd_ != -1) - ::close(epoll_fd_); - epoll_fd_ = -1; - epoll_fd_ = do_epoll_create(); - - if (timer_fd_ != -1) - ::close(timer_fd_); - timer_fd_ = -1; - timer_fd_ = do_timerfd_create(); - - interrupter_.recreate(); - - // Add the interrupter's descriptor to epoll. - epoll_event ev = { 0, { 0 } }; - ev.events = EPOLLIN | EPOLLERR | EPOLLET; - ev.data.ptr = &interrupter_; - epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); - interrupter_.interrupt(); - - // Add the timer descriptor to epoll. - if (timer_fd_ != -1) - { - ev.events = EPOLLIN | EPOLLERR; - ev.data.ptr = &timer_fd_; - epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); - } - - update_timeout(); - - // Re-register all descriptors with epoll. - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - for (descriptor_state* state = registered_descriptors_.first(); - state != 0; state = state->next_) - { - ev.events = state->registered_events_; - ev.data.ptr = state; - int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, state->descriptor_, &ev); - if (result != 0) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "epoll re-registration"); - } - } - } -} - -void epoll_reactor::init_task() -{ - scheduler_.init_task(); -} - -int epoll_reactor::register_descriptor(socket_type descriptor, - epoll_reactor::per_descriptor_data& descriptor_data) -{ - descriptor_data = allocate_descriptor_state(); - - ASIO_HANDLER_REACTOR_REGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - { - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - descriptor_data->reactor_ = this; - descriptor_data->descriptor_ = descriptor; - descriptor_data->shutdown_ = false; - for (int i = 0; i < max_ops; ++i) - descriptor_data->try_speculative_[i] = true; - } - - epoll_event ev = { 0, { 0 } }; - ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; - descriptor_data->registered_events_ = ev.events; - ev.data.ptr = descriptor_data; - int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); - if (result != 0) - { - if (errno == EPERM) - { - // This file descriptor type is not supported by epoll. However, if it is - // a regular file then operations on it will not block. We will allow - // this descriptor to be used and fail later if an operation on it would - // otherwise require a trip through the reactor. - descriptor_data->registered_events_ = 0; - return 0; - } - return errno; - } - - return 0; -} - -int epoll_reactor::register_internal_descriptor( - int op_type, socket_type descriptor, - epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op) -{ - descriptor_data = allocate_descriptor_state(); - - ASIO_HANDLER_REACTOR_REGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - { - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - descriptor_data->reactor_ = this; - descriptor_data->descriptor_ = descriptor; - descriptor_data->shutdown_ = false; - descriptor_data->op_queue_[op_type].push(op); - for (int i = 0; i < max_ops; ++i) - descriptor_data->try_speculative_[i] = true; - } - - epoll_event ev = { 0, { 0 } }; - ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; - descriptor_data->registered_events_ = ev.events; - ev.data.ptr = descriptor_data; - int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); - if (result != 0) - return errno; - - return 0; -} - -void epoll_reactor::move_descriptor(socket_type, - epoll_reactor::per_descriptor_data& target_descriptor_data, - epoll_reactor::per_descriptor_data& source_descriptor_data) -{ - target_descriptor_data = source_descriptor_data; - source_descriptor_data = 0; -} - -void epoll_reactor::start_op(int op_type, socket_type descriptor, - epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op, - bool is_continuation, bool allow_speculative) -{ - if (!descriptor_data) - { - op->ec_ = asio::error::bad_descriptor; - post_immediate_completion(op, is_continuation); - return; - } - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (descriptor_data->shutdown_) - { - post_immediate_completion(op, is_continuation); - return; - } - - if (descriptor_data->op_queue_[op_type].empty()) - { - if (allow_speculative - && (op_type != read_op - || descriptor_data->op_queue_[except_op].empty())) - { - if (descriptor_data->try_speculative_[op_type]) - { - if (reactor_op::status status = op->perform()) - { - if (status == reactor_op::done_and_exhausted) - if (descriptor_data->registered_events_ != 0) - descriptor_data->try_speculative_[op_type] = false; - descriptor_lock.unlock(); - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - } - - if (descriptor_data->registered_events_ == 0) - { - op->ec_ = asio::error::operation_not_supported; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - if (op_type == write_op) - { - if ((descriptor_data->registered_events_ & EPOLLOUT) == 0) - { - epoll_event ev = { 0, { 0 } }; - ev.events = descriptor_data->registered_events_ | EPOLLOUT; - ev.data.ptr = descriptor_data; - if (epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev) == 0) - { - descriptor_data->registered_events_ |= ev.events; - } - else - { - op->ec_ = asio::error_code(errno, - asio::error::get_system_category()); - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - } - } - } - else if (descriptor_data->registered_events_ == 0) - { - op->ec_ = asio::error::operation_not_supported; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - else - { - if (op_type == write_op) - { - descriptor_data->registered_events_ |= EPOLLOUT; - } - - epoll_event ev = { 0, { 0 } }; - ev.events = descriptor_data->registered_events_; - ev.data.ptr = descriptor_data; - epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev); - } - } - - descriptor_data->op_queue_[op_type].push(op); - scheduler_.work_started(); -} - -void epoll_reactor::cancel_ops(socket_type, - epoll_reactor::per_descriptor_data& descriptor_data) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - { - while (reactor_op* op = descriptor_data->op_queue_[i].front()) - { - op->ec_ = asio::error::operation_aborted; - descriptor_data->op_queue_[i].pop(); - ops.push(op); - } - } - - descriptor_lock.unlock(); - - scheduler_.post_deferred_completions(ops); -} - -void epoll_reactor::deregister_descriptor(socket_type descriptor, - epoll_reactor::per_descriptor_data& descriptor_data, bool closing) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (!descriptor_data->shutdown_) - { - if (closing) - { - // The descriptor will be automatically removed from the epoll set when - // it is closed. - } - else if (descriptor_data->registered_events_ != 0) - { - epoll_event ev = { 0, { 0 } }; - epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); - } - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - { - while (reactor_op* op = descriptor_data->op_queue_[i].front()) - { - op->ec_ = asio::error::operation_aborted; - descriptor_data->op_queue_[i].pop(); - ops.push(op); - } - } - - descriptor_data->descriptor_ = -1; - descriptor_data->shutdown_ = true; - - descriptor_lock.unlock(); - - ASIO_HANDLER_REACTOR_DEREGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - scheduler_.post_deferred_completions(ops); - - // Leave descriptor_data set so that it will be freed by the subsequent - // call to cleanup_descriptor_data. - } - else - { - // We are shutting down, so prevent cleanup_descriptor_data from freeing - // the descriptor_data object and let the destructor free it instead. - descriptor_data = 0; - } -} - -void epoll_reactor::deregister_internal_descriptor(socket_type descriptor, - epoll_reactor::per_descriptor_data& descriptor_data) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (!descriptor_data->shutdown_) - { - epoll_event ev = { 0, { 0 } }; - epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - ops.push(descriptor_data->op_queue_[i]); - - descriptor_data->descriptor_ = -1; - descriptor_data->shutdown_ = true; - - descriptor_lock.unlock(); - - ASIO_HANDLER_REACTOR_DEREGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - // Leave descriptor_data set so that it will be freed by the subsequent - // call to cleanup_descriptor_data. - } - else - { - // We are shutting down, so prevent cleanup_descriptor_data from freeing - // the descriptor_data object and let the destructor free it instead. - descriptor_data = 0; - } -} - -void epoll_reactor::cleanup_descriptor_data( - per_descriptor_data& descriptor_data) -{ - if (descriptor_data) - { - free_descriptor_state(descriptor_data); - descriptor_data = 0; - } -} - -void epoll_reactor::run(long usec, op_queue& ops) -{ - // This code relies on the fact that the scheduler queues the reactor task - // behind all descriptor operations generated by this function. This means, - // that by the time we reach this point, any previously returned descriptor - // operations have already been dequeued. Therefore it is now safe for us to - // reuse and return them for the scheduler to queue again. - - // Calculate timeout. Check the timer queues only if timerfd is not in use. - int timeout; - if (usec == 0) - timeout = 0; - else - { - timeout = (usec < 0) ? -1 : ((usec - 1) / 1000 + 1); - if (timer_fd_ == -1) - { - mutex::scoped_lock lock(mutex_); - timeout = get_timeout(timeout); - } - } - - // Block on the epoll descriptor. - epoll_event events[128]; - int num_events = epoll_wait(epoll_fd_, events, 128, timeout); - -#if defined(ASIO_ENABLE_HANDLER_TRACKING) - // Trace the waiting events. - for (int i = 0; i < num_events; ++i) - { - void* ptr = events[i].data.ptr; - if (ptr == &interrupter_) - { - // Ignore. - } -# if defined(ASIO_HAS_TIMERFD) - else if (ptr == &timer_fd_) - { - // Ignore. - } -# endif // defined(ASIO_HAS_TIMERFD) - else - { - unsigned event_mask = 0; - if ((events[i].events & EPOLLIN) != 0) - event_mask |= ASIO_HANDLER_REACTOR_READ_EVENT; - if ((events[i].events & EPOLLOUT)) - event_mask |= ASIO_HANDLER_REACTOR_WRITE_EVENT; - if ((events[i].events & (EPOLLERR | EPOLLHUP)) != 0) - event_mask |= ASIO_HANDLER_REACTOR_ERROR_EVENT; - ASIO_HANDLER_REACTOR_EVENTS((context(), - reinterpret_cast(ptr), event_mask)); - } - } -#endif // defined(ASIO_ENABLE_HANDLER_TRACKING) - -#if defined(ASIO_HAS_TIMERFD) - bool check_timers = (timer_fd_ == -1); -#else // defined(ASIO_HAS_TIMERFD) - bool check_timers = true; -#endif // defined(ASIO_HAS_TIMERFD) - - // Dispatch the waiting events. - for (int i = 0; i < num_events; ++i) - { - void* ptr = events[i].data.ptr; - if (ptr == &interrupter_) - { - // No need to reset the interrupter since we're leaving the descriptor - // in a ready-to-read state and relying on edge-triggered notifications - // to make it so that we only get woken up when the descriptor's epoll - // registration is updated. - -#if defined(ASIO_HAS_TIMERFD) - if (timer_fd_ == -1) - check_timers = true; -#else // defined(ASIO_HAS_TIMERFD) - check_timers = true; -#endif // defined(ASIO_HAS_TIMERFD) - } -#if defined(ASIO_HAS_TIMERFD) - else if (ptr == &timer_fd_) - { - check_timers = true; - } -#endif // defined(ASIO_HAS_TIMERFD) - else - { - // The descriptor operation doesn't count as work in and of itself, so we - // don't call work_started() here. This still allows the scheduler to - // stop if the only remaining operations are descriptor operations. - descriptor_state* descriptor_data = static_cast(ptr); - if (!ops.is_enqueued(descriptor_data)) - { - descriptor_data->set_ready_events(events[i].events); - ops.push(descriptor_data); - } - else - { - descriptor_data->add_ready_events(events[i].events); - } - } - } - - if (check_timers) - { - mutex::scoped_lock common_lock(mutex_); - timer_queues_.get_ready_timers(ops); - -#if defined(ASIO_HAS_TIMERFD) - if (timer_fd_ != -1) - { - itimerspec new_timeout; - itimerspec old_timeout; - int flags = get_timeout(new_timeout); - timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); - } -#endif // defined(ASIO_HAS_TIMERFD) - } -} - -void epoll_reactor::interrupt() -{ - epoll_event ev = { 0, { 0 } }; - ev.events = EPOLLIN | EPOLLERR | EPOLLET; - ev.data.ptr = &interrupter_; - epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, interrupter_.read_descriptor(), &ev); -} - -int epoll_reactor::do_epoll_create() -{ -#if defined(EPOLL_CLOEXEC) - int fd = epoll_create1(EPOLL_CLOEXEC); -#else // defined(EPOLL_CLOEXEC) - int fd = -1; - errno = EINVAL; -#endif // defined(EPOLL_CLOEXEC) - - if (fd == -1 && (errno == EINVAL || errno == ENOSYS)) - { - fd = epoll_create(epoll_size); - if (fd != -1) - ::fcntl(fd, F_SETFD, FD_CLOEXEC); - } - - if (fd == -1) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "epoll"); - } - - return fd; -} - -int epoll_reactor::do_timerfd_create() -{ -#if defined(ASIO_HAS_TIMERFD) -# if defined(TFD_CLOEXEC) - int fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); -# else // defined(TFD_CLOEXEC) - int fd = -1; - errno = EINVAL; -# endif // defined(TFD_CLOEXEC) - - if (fd == -1 && errno == EINVAL) - { - fd = timerfd_create(CLOCK_MONOTONIC, 0); - if (fd != -1) - ::fcntl(fd, F_SETFD, FD_CLOEXEC); - } - - return fd; -#else // defined(ASIO_HAS_TIMERFD) - return -1; -#endif // defined(ASIO_HAS_TIMERFD) -} - -epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state() -{ - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - return registered_descriptors_.alloc(ASIO_CONCURRENCY_HINT_IS_LOCKING( - REACTOR_IO, scheduler_.concurrency_hint())); -} - -void epoll_reactor::free_descriptor_state(epoll_reactor::descriptor_state* s) -{ - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - registered_descriptors_.free(s); -} - -void epoll_reactor::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.insert(&queue); -} - -void epoll_reactor::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.erase(&queue); -} - -void epoll_reactor::update_timeout() -{ -#if defined(ASIO_HAS_TIMERFD) - if (timer_fd_ != -1) - { - itimerspec new_timeout; - itimerspec old_timeout; - int flags = get_timeout(new_timeout); - timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); - return; - } -#endif // defined(ASIO_HAS_TIMERFD) - interrupt(); -} - -int epoll_reactor::get_timeout(int msec) -{ - // By default we will wait no longer than 5 minutes. This will ensure that - // any changes to the system clock are detected after no longer than this. - const int max_msec = 5 * 60 * 1000; - return timer_queues_.wait_duration_msec( - (msec < 0 || max_msec < msec) ? max_msec : msec); -} - -#if defined(ASIO_HAS_TIMERFD) -int epoll_reactor::get_timeout(itimerspec& ts) -{ - ts.it_interval.tv_sec = 0; - ts.it_interval.tv_nsec = 0; - - long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000); - ts.it_value.tv_sec = usec / 1000000; - ts.it_value.tv_nsec = usec ? (usec % 1000000) * 1000 : 1; - - return usec ? 0 : TFD_TIMER_ABSTIME; -} -#endif // defined(ASIO_HAS_TIMERFD) - -struct epoll_reactor::perform_io_cleanup_on_block_exit -{ - explicit perform_io_cleanup_on_block_exit(epoll_reactor* r) - : reactor_(r), first_op_(0) - { - } - - ~perform_io_cleanup_on_block_exit() - { - if (first_op_) - { - // Post the remaining completed operations for invocation. - if (!ops_.empty()) - reactor_->scheduler_.post_deferred_completions(ops_); - - // A user-initiated operation has completed, but there's no need to - // explicitly call work_finished() here. Instead, we'll take advantage of - // the fact that the scheduler will call work_finished() once we return. - } - else - { - // No user-initiated operations have completed, so we need to compensate - // for the work_finished() call that the scheduler will make once this - // operation returns. - reactor_->scheduler_.compensating_work_started(); - } - } - - epoll_reactor* reactor_; - op_queue ops_; - operation* first_op_; -}; - -epoll_reactor::descriptor_state::descriptor_state(bool locking) - : operation(&epoll_reactor::descriptor_state::do_complete), - mutex_(locking) -{ -} - -operation* epoll_reactor::descriptor_state::perform_io(uint32_t events) -{ - mutex_.lock(); - perform_io_cleanup_on_block_exit io_cleanup(reactor_); - mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock); - - // Exception operations must be processed first to ensure that any - // out-of-band data is read before normal data. - static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI }; - for (int j = max_ops - 1; j >= 0; --j) - { - if (events & (flag[j] | EPOLLERR | EPOLLHUP)) - { - try_speculative_[j] = true; - while (reactor_op* op = op_queue_[j].front()) - { - if (reactor_op::status status = op->perform()) - { - op_queue_[j].pop(); - io_cleanup.ops_.push(op); - if (status == reactor_op::done_and_exhausted) - { - try_speculative_[j] = false; - break; - } - } - else - break; - } - } - } - - // The first operation will be returned for completion now. The others will - // be posted for later by the io_cleanup object's destructor. - io_cleanup.first_op_ = io_cleanup.ops_.front(); - io_cleanup.ops_.pop(); - return io_cleanup.first_op_; -} - -void epoll_reactor::descriptor_state::do_complete( - void* owner, operation* base, - const asio::error_code& ec, std::size_t bytes_transferred) -{ - if (owner) - { - descriptor_state* descriptor_data = static_cast(base); - uint32_t events = static_cast(bytes_transferred); - if (operation* op = descriptor_data->perform_io(events)) - { - op->complete(owner, ec, 0); - } - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_EPOLL) - -#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp deleted file mode 100644 index 75e27585..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp +++ /dev/null @@ -1,171 +0,0 @@ -// -// detail/impl/eventfd_select_interrupter.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP -#define ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_EVENTFD) - -#include -#include -#include -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) -# include -#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) -# include -#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) -#include "asio/detail/cstdint.hpp" -#include "asio/detail/eventfd_select_interrupter.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -eventfd_select_interrupter::eventfd_select_interrupter() -{ - open_descriptors(); -} - -void eventfd_select_interrupter::open_descriptors() -{ -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) - write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0); - if (read_descriptor_ != -1) - { - ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - } -#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) -# if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK) - write_descriptor_ = read_descriptor_ = - ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); -# else // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK) - errno = EINVAL; - write_descriptor_ = read_descriptor_ = -1; -# endif // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK) - if (read_descriptor_ == -1 && errno == EINVAL) - { - write_descriptor_ = read_descriptor_ = ::eventfd(0, 0); - if (read_descriptor_ != -1) - { - ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - } - } -#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) - - if (read_descriptor_ == -1) - { - int pipe_fds[2]; - if (pipe(pipe_fds) == 0) - { - read_descriptor_ = pipe_fds[0]; - ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - write_descriptor_ = pipe_fds[1]; - ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK); - ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC); - } - else - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "eventfd_select_interrupter"); - } - } -} - -eventfd_select_interrupter::~eventfd_select_interrupter() -{ - close_descriptors(); -} - -void eventfd_select_interrupter::close_descriptors() -{ - if (write_descriptor_ != -1 && write_descriptor_ != read_descriptor_) - ::close(write_descriptor_); - if (read_descriptor_ != -1) - ::close(read_descriptor_); -} - -void eventfd_select_interrupter::recreate() -{ - close_descriptors(); - - write_descriptor_ = -1; - read_descriptor_ = -1; - - open_descriptors(); -} - -void eventfd_select_interrupter::interrupt() -{ - uint64_t counter(1UL); - int result = ::write(write_descriptor_, &counter, sizeof(uint64_t)); - (void)result; -} - -bool eventfd_select_interrupter::reset() -{ - if (write_descriptor_ == read_descriptor_) - { - for (;;) - { - // Only perform one read. The kernel maintains an atomic counter. - uint64_t counter(0); - errno = 0; - int bytes_read = ::read(read_descriptor_, &counter, sizeof(uint64_t)); - if (bytes_read < 0 && errno == EINTR) - continue; - return true; - } - } - else - { - for (;;) - { - // Clear all data from the pipe. - char data[1024]; - int bytes_read = ::read(read_descriptor_, data, sizeof(data)); - if (bytes_read == sizeof(data)) - continue; - if (bytes_read > 0) - return true; - if (bytes_read == 0) - return false; - if (errno == EINTR) - continue; - if (errno == EWOULDBLOCK) - return true; - if (errno == EAGAIN) - return true; - return false; - } - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_EVENTFD) - -#endif // ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/handler_tracking.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/handler_tracking.ipp deleted file mode 100644 index 14f64abe..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/handler_tracking.ipp +++ /dev/null @@ -1,396 +0,0 @@ -// -// detail/impl/handler_tracking.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP -#define ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_CUSTOM_HANDLER_TRACKING) - -// The handler tracking implementation is provided by the user-specified header. - -#elif defined(ASIO_ENABLE_HANDLER_TRACKING) - -#include -#include -#include "asio/detail/handler_tracking.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) -# include "asio/time_traits.hpp" -#elif defined(ASIO_HAS_CHRONO) -# include "asio/detail/chrono.hpp" -# include "asio/detail/chrono_time_traits.hpp" -# include "asio/wait_traits.hpp" -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - -#if defined(ASIO_WINDOWS_RUNTIME) -# include "asio/detail/socket_types.hpp" -#elif !defined(ASIO_WINDOWS) -# include -#endif // !defined(ASIO_WINDOWS) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct handler_tracking_timestamp -{ - uint64_t seconds; - uint64_t microseconds; - - handler_tracking_timestamp() - { -#if defined(ASIO_HAS_BOOST_DATE_TIME) - boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1)); - boost::posix_time::time_duration now = - boost::posix_time::microsec_clock::universal_time() - epoch; -#elif defined(ASIO_HAS_CHRONO) - typedef chrono_time_traits > traits_helper; - traits_helper::posix_time_duration now( - chrono::system_clock::now().time_since_epoch()); -#endif - seconds = static_cast(now.total_seconds()); - microseconds = static_cast(now.total_microseconds() % 1000000); - } -}; - -struct handler_tracking::tracking_state -{ - static_mutex mutex_; - uint64_t next_id_; - tss_ptr* current_completion_; - tss_ptr* current_location_; -}; - -handler_tracking::tracking_state* handler_tracking::get_state() -{ - static tracking_state state = { ASIO_STATIC_MUTEX_INIT, 1, 0, 0 }; - return &state; -} - -void handler_tracking::init() -{ - static tracking_state* state = get_state(); - - state->mutex_.init(); - - static_mutex::scoped_lock lock(state->mutex_); - if (state->current_completion_ == 0) - state->current_completion_ = new tss_ptr; - if (state->current_location_ == 0) - state->current_location_ = new tss_ptr; -} - -handler_tracking::location::location( - const char* file, int line, const char* func) - : file_(file), - line_(line), - func_(func), - next_(*get_state()->current_location_) -{ - if (file_) - *get_state()->current_location_ = this; -} - -handler_tracking::location::~location() -{ - if (file_) - *get_state()->current_location_ = next_; -} - -void handler_tracking::creation(execution_context&, - handler_tracking::tracked_handler& h, - const char* object_type, void* object, - uintmax_t /*native_handle*/, const char* op_name) -{ - static tracking_state* state = get_state(); - - static_mutex::scoped_lock lock(state->mutex_); - h.id_ = state->next_id_++; - lock.unlock(); - - handler_tracking_timestamp timestamp; - - uint64_t current_id = 0; - if (completion* current_completion = *state->current_completion_) - current_id = current_completion->id_; - - for (location* current_location = *state->current_location_; - current_location; current_location = current_location->next_) - { - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|%I64u^%I64u|%s%s%.80s%s(%.80s:%d)\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|%llu^%llu|%s%s%.80s%s(%.80s:%d)\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - current_id, h.id_, - current_location == *state->current_location_ ? "in " : "called from ", - current_location->func_ ? "'" : "", - current_location->func_ ? current_location->func_ : "", - current_location->func_ ? "' " : "", - current_location->file_, current_location->line_); - } - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|%I64u*%I64u|%.20s@%p.%.50s\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|%llu*%llu|%.20s@%p.%.50s\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - current_id, h.id_, object_type, object, op_name); -} - -handler_tracking::completion::completion( - const handler_tracking::tracked_handler& h) - : id_(h.id_), - invoked_(false), - next_(*get_state()->current_completion_) -{ - *get_state()->current_completion_ = this; -} - -handler_tracking::completion::~completion() -{ - if (id_) - { - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|%c%I64u|\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|%c%llu|\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - invoked_ ? '!' : '~', id_); - } - - *get_state()->current_completion_ = next_; -} - -void handler_tracking::completion::invocation_begin() -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|>%I64u|\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|>%llu|\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, id_); - - invoked_ = true; -} - -void handler_tracking::completion::invocation_begin( - const asio::error_code& ec) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|>%llu|ec=%.20s:%d\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - id_, ec.category().name(), ec.value()); - - invoked_ = true; -} - -void handler_tracking::completion::invocation_begin( - const asio::error_code& ec, std::size_t bytes_transferred) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,bytes_transferred=%I64u\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,bytes_transferred=%llu\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - id_, ec.category().name(), ec.value(), - static_cast(bytes_transferred)); - - invoked_ = true; -} - -void handler_tracking::completion::invocation_begin( - const asio::error_code& ec, int signal_number) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,signal_number=%d\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,signal_number=%d\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - id_, ec.category().name(), ec.value(), signal_number); - - invoked_ = true; -} - -void handler_tracking::completion::invocation_begin( - const asio::error_code& ec, const char* arg) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,%.50s\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,%.50s\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - id_, ec.category().name(), ec.value(), arg); - - invoked_ = true; -} - -void handler_tracking::completion::invocation_end() -{ - if (id_) - { - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|<%I64u|\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|<%llu|\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, id_); - - id_ = 0; - } -} - -void handler_tracking::operation(execution_context&, - const char* object_type, void* object, - uintmax_t /*native_handle*/, const char* op_name) -{ - static tracking_state* state = get_state(); - - handler_tracking_timestamp timestamp; - - unsigned long long current_id = 0; - if (completion* current_completion = *state->current_completion_) - current_id = current_completion->id_; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|%I64u|%.20s@%p.%.50s\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|%llu|%.20s@%p.%.50s\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - current_id, object_type, object, op_name); -} - -void handler_tracking::reactor_registration(execution_context& /*context*/, - uintmax_t /*native_handle*/, uintmax_t /*registration*/) -{ -} - -void handler_tracking::reactor_deregistration(execution_context& /*context*/, - uintmax_t /*native_handle*/, uintmax_t /*registration*/) -{ -} - -void handler_tracking::reactor_events(execution_context& /*context*/, - uintmax_t /*native_handle*/, unsigned /*events*/) -{ -} - -void handler_tracking::reactor_operation( - const tracked_handler& h, const char* op_name, - const asio::error_code& ec) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|.%I64u|%s,ec=%.20s:%d\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|.%llu|%s,ec=%.20s:%d\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - h.id_, op_name, ec.category().name(), ec.value()); -} - -void handler_tracking::reactor_operation( - const tracked_handler& h, const char* op_name, - const asio::error_code& ec, std::size_t bytes_transferred) -{ - handler_tracking_timestamp timestamp; - - write_line( -#if defined(ASIO_WINDOWS) - "@asio|%I64u.%06I64u|.%I64u|%s,ec=%.20s:%d,bytes_transferred=%I64u\n", -#else // defined(ASIO_WINDOWS) - "@asio|%llu.%06llu|.%llu|%s,ec=%.20s:%d,bytes_transferred=%llu\n", -#endif // defined(ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds, - h.id_, op_name, ec.category().name(), ec.value(), - static_cast(bytes_transferred)); -} - -void handler_tracking::write_line(const char* format, ...) -{ - using namespace std; // For sprintf (or equivalent). - - va_list args; - va_start(args, format); - - char line[256] = ""; -#if defined(ASIO_HAS_SECURE_RTL) - int length = vsprintf_s(line, sizeof(line), format, args); -#else // defined(ASIO_HAS_SECURE_RTL) - int length = vsprintf(line, format, args); -#endif // defined(ASIO_HAS_SECURE_RTL) - - va_end(args); - -#if defined(ASIO_WINDOWS_RUNTIME) - wchar_t wline[256] = L""; - mbstowcs_s(0, wline, sizeof(wline) / sizeof(wchar_t), line, length); - ::OutputDebugStringW(wline); -#elif defined(ASIO_WINDOWS) - HANDLE stderr_handle = ::GetStdHandle(STD_ERROR_HANDLE); - DWORD bytes_written = 0; - ::WriteFile(stderr_handle, line, length, &bytes_written, 0); -#else // defined(ASIO_WINDOWS) - ::write(STDERR_FILENO, line, length); -#endif // defined(ASIO_WINDOWS) -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_ENABLE_HANDLER_TRACKING) - -#endif // ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp deleted file mode 100644 index 6897dc21..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// -// detail/impl/kqueue_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP -#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_KQUEUE) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void kqueue_reactor::add_timer_queue(timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -// Remove a timer queue from the reactor. -template -void kqueue_reactor::remove_timer_queue(timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void kqueue_reactor::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - scheduler_.post_immediate_completion(op, false); - return; - } - - bool earliest = queue.enqueue_timer(time, timer, op); - scheduler_.work_started(); - if (earliest) - interrupt(); -} - -template -std::size_t kqueue_reactor::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - mutex::scoped_lock lock(mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - scheduler_.post_deferred_completions(ops); - return n; -} - -template -void kqueue_reactor::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source) -{ - mutex::scoped_lock lock(mutex_); - op_queue ops; - queue.cancel_timer(target, ops); - queue.move_timer(target, source); - lock.unlock(); - scheduler_.post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_KQUEUE) - -#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp deleted file mode 100644 index 74de0919..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp +++ /dev/null @@ -1,570 +0,0 @@ -// -// detail/impl/kqueue_reactor.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP -#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_KQUEUE) - -#include "asio/detail/kqueue_reactor.hpp" -#include "asio/detail/scheduler.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#if defined(__NetBSD__) -# include -#endif - -#include "asio/detail/push_options.hpp" - -#if defined(__NetBSD__) && __NetBSD_Version__ < 999001500 -# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \ - EV_SET(ev, ident, filt, flags, fflags, data, \ - reinterpret_cast(static_cast(udata))) -#else -# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \ - EV_SET(ev, ident, filt, flags, fflags, data, udata) -#endif - -namespace asio { -namespace detail { - -kqueue_reactor::kqueue_reactor(asio::execution_context& ctx) - : execution_context_service_base(ctx), - scheduler_(use_service(ctx)), - mutex_(ASIO_CONCURRENCY_HINT_IS_LOCKING( - REACTOR_REGISTRATION, scheduler_.concurrency_hint())), - kqueue_fd_(do_kqueue_create()), - interrupter_(), - shutdown_(false), - registered_descriptors_mutex_(mutex_.enabled()) -{ - struct kevent events[1]; - ASIO_KQUEUE_EV_SET(&events[0], interrupter_.read_descriptor(), - EVFILT_READ, EV_ADD, 0, 0, &interrupter_); - if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1) - { - asio::error_code error(errno, - asio::error::get_system_category()); - asio::detail::throw_error(error); - } -} - -kqueue_reactor::~kqueue_reactor() -{ - close(kqueue_fd_); -} - -void kqueue_reactor::shutdown() -{ - mutex::scoped_lock lock(mutex_); - shutdown_ = true; - lock.unlock(); - - op_queue ops; - - while (descriptor_state* state = registered_descriptors_.first()) - { - for (int i = 0; i < max_ops; ++i) - ops.push(state->op_queue_[i]); - state->shutdown_ = true; - registered_descriptors_.free(state); - } - - timer_queues_.get_all_timers(ops); - - scheduler_.abandon_operations(ops); -} - -void kqueue_reactor::notify_fork( - asio::execution_context::fork_event fork_ev) -{ - if (fork_ev == asio::execution_context::fork_child) - { - // The kqueue descriptor is automatically closed in the child. - kqueue_fd_ = -1; - kqueue_fd_ = do_kqueue_create(); - - interrupter_.recreate(); - - struct kevent events[2]; - ASIO_KQUEUE_EV_SET(&events[0], interrupter_.read_descriptor(), - EVFILT_READ, EV_ADD, 0, 0, &interrupter_); - if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "kqueue interrupter registration"); - } - - // Re-register all descriptors with kqueue. - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - for (descriptor_state* state = registered_descriptors_.first(); - state != 0; state = state->next_) - { - if (state->num_kevents_ > 0) - { - ASIO_KQUEUE_EV_SET(&events[0], state->descriptor_, - EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, state); - ASIO_KQUEUE_EV_SET(&events[1], state->descriptor_, - EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, state); - if (::kevent(kqueue_fd_, events, state->num_kevents_, 0, 0, 0) == -1) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "kqueue re-registration"); - } - } - } - } -} - -void kqueue_reactor::init_task() -{ - scheduler_.init_task(); -} - -int kqueue_reactor::register_descriptor(socket_type descriptor, - kqueue_reactor::per_descriptor_data& descriptor_data) -{ - descriptor_data = allocate_descriptor_state(); - - ASIO_HANDLER_REACTOR_REGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - mutex::scoped_lock lock(descriptor_data->mutex_); - - descriptor_data->descriptor_ = descriptor; - descriptor_data->num_kevents_ = 0; - descriptor_data->shutdown_ = false; - - return 0; -} - -int kqueue_reactor::register_internal_descriptor( - int op_type, socket_type descriptor, - kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op) -{ - descriptor_data = allocate_descriptor_state(); - - ASIO_HANDLER_REACTOR_REGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - mutex::scoped_lock lock(descriptor_data->mutex_); - - descriptor_data->descriptor_ = descriptor; - descriptor_data->num_kevents_ = 1; - descriptor_data->shutdown_ = false; - descriptor_data->op_queue_[op_type].push(op); - - struct kevent events[1]; - ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1) - return errno; - - return 0; -} - -void kqueue_reactor::move_descriptor(socket_type, - kqueue_reactor::per_descriptor_data& target_descriptor_data, - kqueue_reactor::per_descriptor_data& source_descriptor_data) -{ - target_descriptor_data = source_descriptor_data; - source_descriptor_data = 0; -} - -void kqueue_reactor::start_op(int op_type, socket_type descriptor, - kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op, - bool is_continuation, bool allow_speculative) -{ - if (!descriptor_data) - { - op->ec_ = asio::error::bad_descriptor; - post_immediate_completion(op, is_continuation); - return; - } - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (descriptor_data->shutdown_) - { - post_immediate_completion(op, is_continuation); - return; - } - - if (descriptor_data->op_queue_[op_type].empty()) - { - static const int num_kevents[max_ops] = { 1, 2, 1 }; - - if (allow_speculative - && (op_type != read_op - || descriptor_data->op_queue_[except_op].empty())) - { - if (op->perform()) - { - descriptor_lock.unlock(); - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - if (descriptor_data->num_kevents_ < num_kevents[op_type]) - { - struct kevent events[2]; - ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - if (::kevent(kqueue_fd_, events, num_kevents[op_type], 0, 0, 0) != -1) - { - descriptor_data->num_kevents_ = num_kevents[op_type]; - } - else - { - op->ec_ = asio::error_code(errno, - asio::error::get_system_category()); - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - } - } - else - { - if (descriptor_data->num_kevents_ < num_kevents[op_type]) - descriptor_data->num_kevents_ = num_kevents[op_type]; - - struct kevent events[2]; - ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0); - } - } - - descriptor_data->op_queue_[op_type].push(op); - scheduler_.work_started(); -} - -void kqueue_reactor::cancel_ops(socket_type, - kqueue_reactor::per_descriptor_data& descriptor_data) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - { - while (reactor_op* op = descriptor_data->op_queue_[i].front()) - { - op->ec_ = asio::error::operation_aborted; - descriptor_data->op_queue_[i].pop(); - ops.push(op); - } - } - - descriptor_lock.unlock(); - - scheduler_.post_deferred_completions(ops); -} - -void kqueue_reactor::deregister_descriptor(socket_type descriptor, - kqueue_reactor::per_descriptor_data& descriptor_data, bool closing) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (!descriptor_data->shutdown_) - { - if (closing) - { - // The descriptor will be automatically removed from the kqueue when it - // is closed. - } - else - { - struct kevent events[2]; - ASIO_KQUEUE_EV_SET(&events[0], descriptor, - EVFILT_READ, EV_DELETE, 0, 0, 0); - ASIO_KQUEUE_EV_SET(&events[1], descriptor, - EVFILT_WRITE, EV_DELETE, 0, 0, 0); - ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0); - } - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - { - while (reactor_op* op = descriptor_data->op_queue_[i].front()) - { - op->ec_ = asio::error::operation_aborted; - descriptor_data->op_queue_[i].pop(); - ops.push(op); - } - } - - descriptor_data->descriptor_ = -1; - descriptor_data->shutdown_ = true; - - descriptor_lock.unlock(); - - ASIO_HANDLER_REACTOR_DEREGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - scheduler_.post_deferred_completions(ops); - - // Leave descriptor_data set so that it will be freed by the subsequent - // call to cleanup_descriptor_data. - } - else - { - // We are shutting down, so prevent cleanup_descriptor_data from freeing - // the descriptor_data object and let the destructor free it instead. - descriptor_data = 0; - } -} - -void kqueue_reactor::deregister_internal_descriptor(socket_type descriptor, - kqueue_reactor::per_descriptor_data& descriptor_data) -{ - if (!descriptor_data) - return; - - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (!descriptor_data->shutdown_) - { - struct kevent events[2]; - ASIO_KQUEUE_EV_SET(&events[0], descriptor, - EVFILT_READ, EV_DELETE, 0, 0, 0); - ASIO_KQUEUE_EV_SET(&events[1], descriptor, - EVFILT_WRITE, EV_DELETE, 0, 0, 0); - ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0); - - op_queue ops; - for (int i = 0; i < max_ops; ++i) - ops.push(descriptor_data->op_queue_[i]); - - descriptor_data->descriptor_ = -1; - descriptor_data->shutdown_ = true; - - descriptor_lock.unlock(); - - ASIO_HANDLER_REACTOR_DEREGISTRATION(( - context(), static_cast(descriptor), - reinterpret_cast(descriptor_data))); - - // Leave descriptor_data set so that it will be freed by the subsequent - // call to cleanup_descriptor_data. - } - else - { - // We are shutting down, so prevent cleanup_descriptor_data from freeing - // the descriptor_data object and let the destructor free it instead. - descriptor_data = 0; - } -} - -void kqueue_reactor::cleanup_descriptor_data( - per_descriptor_data& descriptor_data) -{ - if (descriptor_data) - { - free_descriptor_state(descriptor_data); - descriptor_data = 0; - } -} - -void kqueue_reactor::run(long usec, op_queue& ops) -{ - mutex::scoped_lock lock(mutex_); - - // Determine how long to block while waiting for events. - timespec timeout_buf = { 0, 0 }; - timespec* timeout = usec ? get_timeout(usec, timeout_buf) : &timeout_buf; - - lock.unlock(); - - // Block on the kqueue descriptor. - struct kevent events[128]; - int num_events = kevent(kqueue_fd_, 0, 0, events, 128, timeout); - -#if defined(ASIO_ENABLE_HANDLER_TRACKING) - // Trace the waiting events. - for (int i = 0; i < num_events; ++i) - { - void* ptr = reinterpret_cast(events[i].udata); - if (ptr != &interrupter_) - { - unsigned event_mask = 0; - switch (events[i].filter) - { - case EVFILT_READ: - event_mask |= ASIO_HANDLER_REACTOR_READ_EVENT; - break; - case EVFILT_WRITE: - event_mask |= ASIO_HANDLER_REACTOR_WRITE_EVENT; - break; - } - if ((events[i].flags & (EV_ERROR | EV_OOBAND)) != 0) - event_mask |= ASIO_HANDLER_REACTOR_ERROR_EVENT; - ASIO_HANDLER_REACTOR_EVENTS((context(), - reinterpret_cast(ptr), event_mask)); - } - } -#endif // defined(ASIO_ENABLE_HANDLER_TRACKING) - - // Dispatch the waiting events. - for (int i = 0; i < num_events; ++i) - { - void* ptr = reinterpret_cast(events[i].udata); - if (ptr == &interrupter_) - { - interrupter_.reset(); - } - else - { - descriptor_state* descriptor_data = static_cast(ptr); - mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); - - if (events[i].filter == EVFILT_WRITE - && descriptor_data->num_kevents_ == 2 - && descriptor_data->op_queue_[write_op].empty()) - { - // Some descriptor types, like serial ports, don't seem to support - // EV_CLEAR with EVFILT_WRITE. Since we have no pending write - // operations we'll remove the EVFILT_WRITE registration here so that - // we don't end up in a tight spin. - struct kevent delete_events[1]; - ASIO_KQUEUE_EV_SET(&delete_events[0], - descriptor_data->descriptor_, EVFILT_WRITE, EV_DELETE, 0, 0, 0); - ::kevent(kqueue_fd_, delete_events, 1, 0, 0, 0); - descriptor_data->num_kevents_ = 1; - } - - // Exception operations must be processed first to ensure that any - // out-of-band data is read before normal data. -#if defined(__NetBSD__) - static const unsigned int filter[max_ops] = -#else - static const int filter[max_ops] = -#endif - { EVFILT_READ, EVFILT_WRITE, EVFILT_READ }; - for (int j = max_ops - 1; j >= 0; --j) - { - if (events[i].filter == filter[j]) - { - if (j != except_op || events[i].flags & EV_OOBAND) - { - while (reactor_op* op = descriptor_data->op_queue_[j].front()) - { - if (events[i].flags & EV_ERROR) - { - op->ec_ = asio::error_code( - static_cast(events[i].data), - asio::error::get_system_category()); - descriptor_data->op_queue_[j].pop(); - ops.push(op); - } - if (op->perform()) - { - descriptor_data->op_queue_[j].pop(); - ops.push(op); - } - else - break; - } - } - } - } - } - } - - lock.lock(); - timer_queues_.get_ready_timers(ops); -} - -void kqueue_reactor::interrupt() -{ - interrupter_.interrupt(); -} - -int kqueue_reactor::do_kqueue_create() -{ - int fd = ::kqueue(); - if (fd == -1) - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "kqueue"); - } - return fd; -} - -kqueue_reactor::descriptor_state* kqueue_reactor::allocate_descriptor_state() -{ - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - return registered_descriptors_.alloc(ASIO_CONCURRENCY_HINT_IS_LOCKING( - REACTOR_IO, scheduler_.concurrency_hint())); -} - -void kqueue_reactor::free_descriptor_state(kqueue_reactor::descriptor_state* s) -{ - mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); - registered_descriptors_.free(s); -} - -void kqueue_reactor::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.insert(&queue); -} - -void kqueue_reactor::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.erase(&queue); -} - -timespec* kqueue_reactor::get_timeout(long usec, timespec& ts) -{ - // By default we will wait no longer than 5 minutes. This will ensure that - // any changes to the system clock are detected after no longer than this. - const long max_usec = 5 * 60 * 1000 * 1000; - usec = timer_queues_.wait_duration_usec( - (usec < 0 || max_usec < usec) ? max_usec : usec); - ts.tv_sec = usec / 1000000; - ts.tv_nsec = (usec % 1000000) * 1000; - return &ts; -} - -} // namespace detail -} // namespace asio - -#undef ASIO_KQUEUE_EV_SET - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_KQUEUE) - -#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/null_event.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/null_event.ipp deleted file mode 100644 index 3f47e599..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/null_event.ipp +++ /dev/null @@ -1,74 +0,0 @@ -// -// detail/impl/null_event.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_NULL_EVENT_IPP -#define ASIO_DETAIL_IMPL_NULL_EVENT_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# include "asio/detail/socket_types.hpp" -#else -# include -# if defined(__hpux) -# include -# endif -# if !defined(__hpux) || defined(__SELECT) -# include -# endif -#endif - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -void null_event::do_wait() -{ -#if defined(ASIO_WINDOWS_RUNTIME) - std::this_thread::sleep_until((std::chrono::steady_clock::time_point::max)()); -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ::Sleep(INFINITE); -#else - ::pause(); -#endif -} - -void null_event::do_wait_for_usec(long usec) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - std::this_thread::sleep_for(std::chrono::microseconds(usec)); -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ::Sleep(usec / 1000); -#elif defined(__hpux) && defined(__SELECT) - timespec ts; - ts.tv_sec = usec / 1000000; - ts.tv_nsec = (usec % 1000000) * 1000; - ::pselect(0, 0, 0, 0, &ts, 0); -#else - timeval tv; - tv.tv_sec = usec / 1000000; - tv.tv_usec = usec % 1000000; - ::select(0, 0, 0, 0, &tv); -#endif -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_NULL_EVENT_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp deleted file mode 100644 index ddbbe61e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp +++ /dev/null @@ -1,129 +0,0 @@ -// -// detail/impl/pipe_select_interrupter.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP -#define ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) -#if !defined(ASIO_WINDOWS) -#if !defined(__CYGWIN__) -#if !defined(__SYMBIAN32__) -#if !defined(ASIO_HAS_EVENTFD) - -#include -#include -#include -#include -#include "asio/detail/pipe_select_interrupter.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -pipe_select_interrupter::pipe_select_interrupter() -{ - open_descriptors(); -} - -void pipe_select_interrupter::open_descriptors() -{ - int pipe_fds[2]; - if (pipe(pipe_fds) == 0) - { - read_descriptor_ = pipe_fds[0]; - ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); - write_descriptor_ = pipe_fds[1]; - ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK); - -#if defined(FD_CLOEXEC) - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC); -#endif // defined(FD_CLOEXEC) - } - else - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "pipe_select_interrupter"); - } -} - -pipe_select_interrupter::~pipe_select_interrupter() -{ - close_descriptors(); -} - -void pipe_select_interrupter::close_descriptors() -{ - if (read_descriptor_ != -1) - ::close(read_descriptor_); - if (write_descriptor_ != -1) - ::close(write_descriptor_); -} - -void pipe_select_interrupter::recreate() -{ - close_descriptors(); - - write_descriptor_ = -1; - read_descriptor_ = -1; - - open_descriptors(); -} - -void pipe_select_interrupter::interrupt() -{ - char byte = 0; - signed_size_type result = ::write(write_descriptor_, &byte, 1); - (void)result; -} - -bool pipe_select_interrupter::reset() -{ - for (;;) - { - char data[1024]; - signed_size_type bytes_read = ::read(read_descriptor_, data, sizeof(data)); - if (bytes_read == sizeof(data)) - continue; - if (bytes_read > 0) - return true; - if (bytes_read == 0) - return false; - if (errno == EINTR) - continue; - if (errno == EWOULDBLOCK || errno == EAGAIN) - return true; - return false; - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_EVENTFD) -#endif // !defined(__SYMBIAN32__) -#endif // !defined(__CYGWIN__) -#endif // !defined(ASIO_WINDOWS) -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_event.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_event.ipp deleted file mode 100644 index 6d2b5e0a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_event.ipp +++ /dev/null @@ -1,59 +0,0 @@ -// -// detail/impl/posix_event.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_POSIX_EVENT_IPP -#define ASIO_DETAIL_IMPL_POSIX_EVENT_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include "asio/detail/posix_event.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -posix_event::posix_event() - : state_(0) -{ -#if (defined(__MACH__) && defined(__APPLE__)) \ - || (defined(__ANDROID__) && (__ANDROID_API__ < 21)) - int error = ::pthread_cond_init(&cond_, 0); -#else // (defined(__MACH__) && defined(__APPLE__)) - // || (defined(__ANDROID__) && (__ANDROID_API__ < 21)) - ::pthread_condattr_t attr; - ::pthread_condattr_init(&attr); - int error = ::pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); - if (error == 0) - error = ::pthread_cond_init(&cond_, &attr); -#endif // (defined(__MACH__) && defined(__APPLE__)) - // || (defined(__ANDROID__) && (__ANDROID_API__ < 21)) - - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "event"); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_IMPL_POSIX_EVENT_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_mutex.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_mutex.ipp deleted file mode 100644 index 03161d1f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_mutex.ipp +++ /dev/null @@ -1,46 +0,0 @@ -// -// detail/impl/posix_mutex.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP -#define ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include "asio/detail/posix_mutex.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -posix_mutex::posix_mutex() -{ - int error = ::pthread_mutex_init(&mutex_, 0); - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "mutex"); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_thread.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_thread.ipp deleted file mode 100644 index e401766c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_thread.ipp +++ /dev/null @@ -1,84 +0,0 @@ -// -// detail/impl/posix_thread.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_POSIX_THREAD_IPP -#define ASIO_DETAIL_IMPL_POSIX_THREAD_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include "asio/detail/posix_thread.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -posix_thread::~posix_thread() -{ - if (!joined_) - ::pthread_detach(thread_); -} - -void posix_thread::join() -{ - if (!joined_) - { - ::pthread_join(thread_, 0); - joined_ = true; - } -} - -std::size_t posix_thread::hardware_concurrency() -{ -#if defined(_SC_NPROCESSORS_ONLN) - long result = sysconf(_SC_NPROCESSORS_ONLN); - if (result > 0) - return result; -#endif // defined(_SC_NPROCESSORS_ONLN) - return 0; -} - -void posix_thread::start_thread(func_base* arg) -{ - int error = ::pthread_create(&thread_, 0, - asio_detail_posix_thread_function, arg); - if (error != 0) - { - delete arg; - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread"); - } -} - -void* asio_detail_posix_thread_function(void* arg) -{ - posix_thread::auto_func_base_ptr func = { - static_cast(arg) }; - func.ptr->run(); - return 0; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_IMPL_POSIX_THREAD_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp deleted file mode 100644 index f3284de3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp +++ /dev/null @@ -1,46 +0,0 @@ -// -// detail/impl/posix_tss_ptr.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP -#define ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include "asio/detail/posix_tss_ptr.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -void posix_tss_ptr_create(pthread_key_t& key) -{ - int error = ::pthread_key_create(&key, 0); - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "tss"); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp deleted file mode 100644 index 1fe86573..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp +++ /dev/null @@ -1,223 +0,0 @@ -// -// detail/impl/reactive_descriptor_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP -#define ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - -#include "asio/error.hpp" -#include "asio/detail/reactive_descriptor_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -reactive_descriptor_service::reactive_descriptor_service( - execution_context& context) - : execution_context_service_base(context), - reactor_(asio::use_service(context)) -{ - reactor_.init_task(); -} - -void reactive_descriptor_service::shutdown() -{ -} - -void reactive_descriptor_service::construct( - reactive_descriptor_service::implementation_type& impl) -{ - impl.descriptor_ = -1; - impl.state_ = 0; -} - -void reactive_descriptor_service::move_construct( - reactive_descriptor_service::implementation_type& impl, - reactive_descriptor_service::implementation_type& other_impl) - ASIO_NOEXCEPT -{ - impl.descriptor_ = other_impl.descriptor_; - other_impl.descriptor_ = -1; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - reactor_.move_descriptor(impl.descriptor_, - impl.reactor_data_, other_impl.reactor_data_); -} - -void reactive_descriptor_service::move_assign( - reactive_descriptor_service::implementation_type& impl, - reactive_descriptor_service& other_service, - reactive_descriptor_service::implementation_type& other_impl) -{ - destroy(impl); - - impl.descriptor_ = other_impl.descriptor_; - other_impl.descriptor_ = -1; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - other_service.reactor_.move_descriptor(impl.descriptor_, - impl.reactor_data_, other_impl.reactor_data_); -} - -void reactive_descriptor_service::destroy( - reactive_descriptor_service::implementation_type& impl) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((reactor_.context(), - "descriptor", &impl, impl.descriptor_, "close")); - - reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_, - (impl.state_ & descriptor_ops::possible_dup) == 0); - - asio::error_code ignored_ec; - descriptor_ops::close(impl.descriptor_, impl.state_, ignored_ec); - - reactor_.cleanup_descriptor_data(impl.reactor_data_); - } -} - -asio::error_code reactive_descriptor_service::assign( - reactive_descriptor_service::implementation_type& impl, - const native_handle_type& native_descriptor, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - if (int err = reactor_.register_descriptor( - native_descriptor, impl.reactor_data_)) - { - ec = asio::error_code(err, - asio::error::get_system_category()); - return ec; - } - - impl.descriptor_ = native_descriptor; - impl.state_ = descriptor_ops::possible_dup; - ec = asio::error_code(); - return ec; -} - -asio::error_code reactive_descriptor_service::close( - reactive_descriptor_service::implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((reactor_.context(), - "descriptor", &impl, impl.descriptor_, "close")); - - reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_, - (impl.state_ & descriptor_ops::possible_dup) == 0); - - descriptor_ops::close(impl.descriptor_, impl.state_, ec); - - reactor_.cleanup_descriptor_data(impl.reactor_data_); - } - else - { - ec = asio::error_code(); - } - - // The descriptor is closed by the OS even if close() returns an error. - // - // (Actually, POSIX says the state of the descriptor is unspecified. On - // Linux the descriptor is apparently closed anyway; e.g. see - // http://lkml.org/lkml/2005/9/10/129 - // We'll just have to assume that other OSes follow the same behaviour.) - construct(impl); - - return ec; -} - -reactive_descriptor_service::native_handle_type -reactive_descriptor_service::release( - reactive_descriptor_service::implementation_type& impl) -{ - native_handle_type descriptor = impl.descriptor_; - - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((reactor_.context(), - "descriptor", &impl, impl.descriptor_, "release")); - - reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_, false); - reactor_.cleanup_descriptor_data(impl.reactor_data_); - construct(impl); - } - - return descriptor; -} - -asio::error_code reactive_descriptor_service::cancel( - reactive_descriptor_service::implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - ASIO_HANDLER_OPERATION((reactor_.context(), - "descriptor", &impl, impl.descriptor_, "cancel")); - - reactor_.cancel_ops(impl.descriptor_, impl.reactor_data_); - ec = asio::error_code(); - return ec; -} - -void reactive_descriptor_service::start_op( - reactive_descriptor_service::implementation_type& impl, - int op_type, reactor_op* op, bool is_continuation, - bool is_non_blocking, bool noop) -{ - if (!noop) - { - if ((impl.state_ & descriptor_ops::non_blocking) || - descriptor_ops::set_internal_non_blocking( - impl.descriptor_, impl.state_, true, op->ec_)) - { - reactor_.start_op(op_type, impl.descriptor_, - impl.reactor_data_, op, is_continuation, is_non_blocking); - return; - } - } - - reactor_.post_immediate_completion(op, is_continuation); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp deleted file mode 100644 index 29660822..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +++ /dev/null @@ -1,149 +0,0 @@ -// -// detail/impl/reactive_serial_port_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP -#define ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_SERIAL_PORT) -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include -#include "asio/detail/reactive_serial_port_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -reactive_serial_port_service::reactive_serial_port_service( - execution_context& context) - : execution_context_service_base(context), - descriptor_service_(context) -{ -} - -void reactive_serial_port_service::shutdown() -{ - descriptor_service_.shutdown(); -} - -asio::error_code reactive_serial_port_service::open( - reactive_serial_port_service::implementation_type& impl, - const std::string& device, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - descriptor_ops::state_type state = 0; - int fd = descriptor_ops::open(device.c_str(), - O_RDWR | O_NONBLOCK | O_NOCTTY, ec); - if (fd < 0) - return ec; - - int s = descriptor_ops::fcntl(fd, F_GETFL, ec); - if (s >= 0) - s = descriptor_ops::fcntl(fd, F_SETFL, s | O_NONBLOCK, ec); - if (s < 0) - { - asio::error_code ignored_ec; - descriptor_ops::close(fd, state, ignored_ec); - return ec; - } - - // Set up default serial port options. - termios ios; - s = ::tcgetattr(fd, &ios); - descriptor_ops::get_last_error(ec, s < 0); - if (s >= 0) - { -#if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE) - ::cfmakeraw(&ios); -#else - ios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK - | ISTRIP | INLCR | IGNCR | ICRNL | IXON); - ios.c_oflag &= ~OPOST; - ios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); - ios.c_cflag &= ~(CSIZE | PARENB); - ios.c_cflag |= CS8; -#endif - ios.c_iflag |= IGNPAR; - ios.c_cflag |= CREAD | CLOCAL; - s = ::tcsetattr(fd, TCSANOW, &ios); - descriptor_ops::get_last_error(ec, s < 0); - } - if (s < 0) - { - asio::error_code ignored_ec; - descriptor_ops::close(fd, state, ignored_ec); - return ec; - } - - // We're done. Take ownership of the serial port descriptor. - if (descriptor_service_.assign(impl, fd, ec)) - { - asio::error_code ignored_ec; - descriptor_ops::close(fd, state, ignored_ec); - } - - return ec; -} - -asio::error_code reactive_serial_port_service::do_set_option( - reactive_serial_port_service::implementation_type& impl, - reactive_serial_port_service::store_function_type store, - const void* option, asio::error_code& ec) -{ - termios ios; - int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios); - descriptor_ops::get_last_error(ec, s < 0); - if (s < 0) - return ec; - - if (store(option, ios, ec)) - return ec; - - s = ::tcsetattr(descriptor_service_.native_handle(impl), TCSANOW, &ios); - descriptor_ops::get_last_error(ec, s < 0); - return ec; -} - -asio::error_code reactive_serial_port_service::do_get_option( - const reactive_serial_port_service::implementation_type& impl, - reactive_serial_port_service::load_function_type load, - void* option, asio::error_code& ec) const -{ - termios ios; - int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios); - descriptor_ops::get_last_error(ec, s < 0); - if (s < 0) - return ec; - - return load(option, ios, ec); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) -#endif // defined(ASIO_HAS_SERIAL_PORT) - -#endif // ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp deleted file mode 100644 index 6c01c5eb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp +++ /dev/null @@ -1,300 +0,0 @@ -// -// detail/reactive_socket_service_base.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP -#define ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_IOCP) \ - && !defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/reactive_socket_service_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -reactive_socket_service_base::reactive_socket_service_base( - execution_context& context) - : reactor_(use_service(context)) -{ - reactor_.init_task(); -} - -void reactive_socket_service_base::base_shutdown() -{ -} - -void reactive_socket_service_base::construct( - reactive_socket_service_base::base_implementation_type& impl) -{ - impl.socket_ = invalid_socket; - impl.state_ = 0; -} - -void reactive_socket_service_base::base_move_construct( - reactive_socket_service_base::base_implementation_type& impl, - reactive_socket_service_base::base_implementation_type& other_impl) - ASIO_NOEXCEPT -{ - impl.socket_ = other_impl.socket_; - other_impl.socket_ = invalid_socket; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - reactor_.move_descriptor(impl.socket_, - impl.reactor_data_, other_impl.reactor_data_); -} - -void reactive_socket_service_base::base_move_assign( - reactive_socket_service_base::base_implementation_type& impl, - reactive_socket_service_base& other_service, - reactive_socket_service_base::base_implementation_type& other_impl) -{ - destroy(impl); - - impl.socket_ = other_impl.socket_; - other_impl.socket_ = invalid_socket; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - other_service.reactor_.move_descriptor(impl.socket_, - impl.reactor_data_, other_impl.reactor_data_); -} - -void reactive_socket_service_base::destroy( - reactive_socket_service_base::base_implementation_type& impl) -{ - if (impl.socket_ != invalid_socket) - { - ASIO_HANDLER_OPERATION((reactor_.context(), - "socket", &impl, impl.socket_, "close")); - - reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_, - (impl.state_ & socket_ops::possible_dup) == 0); - - asio::error_code ignored_ec; - socket_ops::close(impl.socket_, impl.state_, true, ignored_ec); - - reactor_.cleanup_descriptor_data(impl.reactor_data_); - } -} - -asio::error_code reactive_socket_service_base::close( - reactive_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((reactor_.context(), - "socket", &impl, impl.socket_, "close")); - - reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_, - (impl.state_ & socket_ops::possible_dup) == 0); - - socket_ops::close(impl.socket_, impl.state_, false, ec); - - reactor_.cleanup_descriptor_data(impl.reactor_data_); - } - else - { - ec = asio::error_code(); - } - - // The descriptor is closed by the OS even if close() returns an error. - // - // (Actually, POSIX says the state of the descriptor is unspecified. On - // Linux the descriptor is apparently closed anyway; e.g. see - // http://lkml.org/lkml/2005/9/10/129 - // We'll just have to assume that other OSes follow the same behaviour. The - // known exception is when Windows's closesocket() function fails with - // WSAEWOULDBLOCK, but this case is handled inside socket_ops::close(). - construct(impl); - - return ec; -} - -socket_type reactive_socket_service_base::release( - reactive_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return invalid_socket; - } - - ASIO_HANDLER_OPERATION((reactor_.context(), - "socket", &impl, impl.socket_, "release")); - - reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_, false); - reactor_.cleanup_descriptor_data(impl.reactor_data_); - socket_type sock = impl.socket_; - construct(impl); - ec = asio::error_code(); - return sock; -} - -asio::error_code reactive_socket_service_base::cancel( - reactive_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - ASIO_HANDLER_OPERATION((reactor_.context(), - "socket", &impl, impl.socket_, "cancel")); - - reactor_.cancel_ops(impl.socket_, impl.reactor_data_); - ec = asio::error_code(); - return ec; -} - -asio::error_code reactive_socket_service_base::do_open( - reactive_socket_service_base::base_implementation_type& impl, - int af, int type, int protocol, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - socket_holder sock(socket_ops::socket(af, type, protocol, ec)); - if (sock.get() == invalid_socket) - return ec; - - if (int err = reactor_.register_descriptor(sock.get(), impl.reactor_data_)) - { - ec = asio::error_code(err, - asio::error::get_system_category()); - return ec; - } - - impl.socket_ = sock.release(); - switch (type) - { - case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break; - case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break; - default: impl.state_ = 0; break; - } - ec = asio::error_code(); - return ec; -} - -asio::error_code reactive_socket_service_base::do_assign( - reactive_socket_service_base::base_implementation_type& impl, int type, - const reactive_socket_service_base::native_handle_type& native_socket, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - if (int err = reactor_.register_descriptor( - native_socket, impl.reactor_data_)) - { - ec = asio::error_code(err, - asio::error::get_system_category()); - return ec; - } - - impl.socket_ = native_socket; - switch (type) - { - case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break; - case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break; - default: impl.state_ = 0; break; - } - impl.state_ |= socket_ops::possible_dup; - ec = asio::error_code(); - return ec; -} - -void reactive_socket_service_base::start_op( - reactive_socket_service_base::base_implementation_type& impl, - int op_type, reactor_op* op, bool is_continuation, - bool is_non_blocking, bool noop) -{ - if (!noop) - { - if ((impl.state_ & socket_ops::non_blocking) - || socket_ops::set_internal_non_blocking( - impl.socket_, impl.state_, true, op->ec_)) - { - reactor_.start_op(op_type, impl.socket_, - impl.reactor_data_, op, is_continuation, is_non_blocking); - return; - } - } - - reactor_.post_immediate_completion(op, is_continuation); -} - -void reactive_socket_service_base::start_accept_op( - reactive_socket_service_base::base_implementation_type& impl, - reactor_op* op, bool is_continuation, bool peer_is_open) -{ - if (!peer_is_open) - start_op(impl, reactor::read_op, op, is_continuation, true, false); - else - { - op->ec_ = asio::error::already_open; - reactor_.post_immediate_completion(op, is_continuation); - } -} - -void reactive_socket_service_base::start_connect_op( - reactive_socket_service_base::base_implementation_type& impl, - reactor_op* op, bool is_continuation, - const socket_addr_type* addr, size_t addrlen) -{ - if ((impl.state_ & socket_ops::non_blocking) - || socket_ops::set_internal_non_blocking( - impl.socket_, impl.state_, true, op->ec_)) - { - if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0) - { - if (op->ec_ == asio::error::in_progress - || op->ec_ == asio::error::would_block) - { - op->ec_ = asio::error_code(); - reactor_.start_op(reactor::connect_op, impl.socket_, - impl.reactor_data_, op, is_continuation, false); - return; - } - } - } - - reactor_.post_immediate_completion(op, is_continuation); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_IOCP) - // && !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/resolver_service_base.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/resolver_service_base.ipp deleted file mode 100644 index a86588f1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/resolver_service_base.ipp +++ /dev/null @@ -1,158 +0,0 @@ -// -// detail/impl/resolver_service_base.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP -#define ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/resolver_service_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class resolver_service_base::work_scheduler_runner -{ -public: - work_scheduler_runner(scheduler_impl& work_scheduler) - : work_scheduler_(work_scheduler) - { - } - - void operator()() - { - asio::error_code ec; - work_scheduler_.run(ec); - } - -private: - scheduler_impl& work_scheduler_; -}; - -resolver_service_base::resolver_service_base(execution_context& context) - : scheduler_(asio::use_service(context)), - work_scheduler_(new scheduler_impl(context, -1, false)), - work_thread_(0) -{ - work_scheduler_->work_started(); -} - -resolver_service_base::~resolver_service_base() -{ - base_shutdown(); -} - -void resolver_service_base::base_shutdown() -{ - if (work_scheduler_.get()) - { - work_scheduler_->work_finished(); - work_scheduler_->stop(); - if (work_thread_.get()) - { - work_thread_->join(); - work_thread_.reset(); - } - work_scheduler_.reset(); - } -} - -void resolver_service_base::base_notify_fork( - execution_context::fork_event fork_ev) -{ - if (work_thread_.get()) - { - if (fork_ev == execution_context::fork_prepare) - { - work_scheduler_->stop(); - work_thread_->join(); - work_thread_.reset(); - } - } - else if (fork_ev != execution_context::fork_prepare) - { - work_scheduler_->restart(); - } -} - -void resolver_service_base::construct( - resolver_service_base::implementation_type& impl) -{ - impl.reset(static_cast(0), socket_ops::noop_deleter()); -} - -void resolver_service_base::destroy( - resolver_service_base::implementation_type& impl) -{ - ASIO_HANDLER_OPERATION((scheduler_.context(), - "resolver", &impl, 0, "cancel")); - - impl.reset(); -} - -void resolver_service_base::move_construct(implementation_type& impl, - implementation_type& other_impl) -{ - impl = ASIO_MOVE_CAST(implementation_type)(other_impl); -} - -void resolver_service_base::move_assign(implementation_type& impl, - resolver_service_base&, implementation_type& other_impl) -{ - destroy(impl); - impl = ASIO_MOVE_CAST(implementation_type)(other_impl); -} - -void resolver_service_base::cancel( - resolver_service_base::implementation_type& impl) -{ - ASIO_HANDLER_OPERATION((scheduler_.context(), - "resolver", &impl, 0, "cancel")); - - impl.reset(static_cast(0), socket_ops::noop_deleter()); -} - -void resolver_service_base::start_resolve_op(resolve_op* op) -{ - if (ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER, - scheduler_.concurrency_hint())) - { - start_work_thread(); - scheduler_.work_started(); - work_scheduler_->post_immediate_completion(op, false); - } - else - { - op->ec_ = asio::error::operation_not_supported; - scheduler_.post_immediate_completion(op, false); - } -} - -void resolver_service_base::start_work_thread() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - if (!work_thread_.get()) - { - work_thread_.reset(new asio::detail::thread( - work_scheduler_runner(*work_scheduler_))); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/scheduler.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/scheduler.ipp deleted file mode 100644 index 707eee97..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/scheduler.ipp +++ /dev/null @@ -1,654 +0,0 @@ -// -// detail/impl/scheduler.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SCHEDULER_IPP -#define ASIO_DETAIL_IMPL_SCHEDULER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/concurrency_hint.hpp" -#include "asio/detail/event.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/reactor.hpp" -#include "asio/detail/scheduler.hpp" -#include "asio/detail/scheduler_thread_info.hpp" -#include "asio/detail/signal_blocker.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class scheduler::thread_function -{ -public: - explicit thread_function(scheduler* s) - : this_(s) - { - } - - void operator()() - { - asio::error_code ec; - this_->run(ec); - } - -private: - scheduler* this_; -}; - -struct scheduler::task_cleanup -{ - ~task_cleanup() - { - if (this_thread_->private_outstanding_work > 0) - { - asio::detail::increment( - scheduler_->outstanding_work_, - this_thread_->private_outstanding_work); - } - this_thread_->private_outstanding_work = 0; - - // Enqueue the completed operations and reinsert the task at the end of - // the operation queue. - lock_->lock(); - scheduler_->task_interrupted_ = true; - scheduler_->op_queue_.push(this_thread_->private_op_queue); - scheduler_->op_queue_.push(&scheduler_->task_operation_); - } - - scheduler* scheduler_; - mutex::scoped_lock* lock_; - thread_info* this_thread_; -}; - -struct scheduler::work_cleanup -{ - ~work_cleanup() - { - if (this_thread_->private_outstanding_work > 1) - { - asio::detail::increment( - scheduler_->outstanding_work_, - this_thread_->private_outstanding_work - 1); - } - else if (this_thread_->private_outstanding_work < 1) - { - scheduler_->work_finished(); - } - this_thread_->private_outstanding_work = 0; - -#if defined(ASIO_HAS_THREADS) - if (!this_thread_->private_op_queue.empty()) - { - lock_->lock(); - scheduler_->op_queue_.push(this_thread_->private_op_queue); - } -#endif // defined(ASIO_HAS_THREADS) - } - - scheduler* scheduler_; - mutex::scoped_lock* lock_; - thread_info* this_thread_; -}; - -scheduler::scheduler(asio::execution_context& ctx, - int concurrency_hint, bool own_thread) - : asio::detail::execution_context_service_base(ctx), - one_thread_(concurrency_hint == 1 - || !ASIO_CONCURRENCY_HINT_IS_LOCKING( - SCHEDULER, concurrency_hint) - || !ASIO_CONCURRENCY_HINT_IS_LOCKING( - REACTOR_IO, concurrency_hint)), - mutex_(ASIO_CONCURRENCY_HINT_IS_LOCKING( - SCHEDULER, concurrency_hint)), - task_(0), - task_interrupted_(true), - outstanding_work_(0), - stopped_(false), - shutdown_(false), - concurrency_hint_(concurrency_hint), - thread_(0) -{ - ASIO_HANDLER_TRACKING_INIT; - - if (own_thread) - { - ++outstanding_work_; - asio::detail::signal_blocker sb; - thread_ = new asio::detail::thread(thread_function(this)); - } -} - -scheduler::~scheduler() -{ - if (thread_) - { - mutex::scoped_lock lock(mutex_); - shutdown_ = true; - stop_all_threads(lock); - lock.unlock(); - thread_->join(); - delete thread_; - } -} - -void scheduler::shutdown() -{ - mutex::scoped_lock lock(mutex_); - shutdown_ = true; - if (thread_) - stop_all_threads(lock); - lock.unlock(); - - // Join thread to ensure task operation is returned to queue. - if (thread_) - { - thread_->join(); - delete thread_; - thread_ = 0; - } - - // Destroy handler objects. - while (!op_queue_.empty()) - { - operation* o = op_queue_.front(); - op_queue_.pop(); - if (o != &task_operation_) - o->destroy(); - } - - // Reset to initial state. - task_ = 0; -} - -void scheduler::init_task() -{ - mutex::scoped_lock lock(mutex_); - if (!shutdown_ && !task_) - { - task_ = &use_service(this->context()); - op_queue_.push(&task_operation_); - wake_one_thread_and_unlock(lock); - } -} - -std::size_t scheduler::run(asio::error_code& ec) -{ - ec = asio::error_code(); - if (outstanding_work_ == 0) - { - stop(); - return 0; - } - - thread_info this_thread; - this_thread.private_outstanding_work = 0; - thread_call_stack::context ctx(this, this_thread); - - mutex::scoped_lock lock(mutex_); - - std::size_t n = 0; - for (; do_run_one(lock, this_thread, ec); lock.lock()) - if (n != (std::numeric_limits::max)()) - ++n; - return n; -} - -std::size_t scheduler::run_one(asio::error_code& ec) -{ - ec = asio::error_code(); - if (outstanding_work_ == 0) - { - stop(); - return 0; - } - - thread_info this_thread; - this_thread.private_outstanding_work = 0; - thread_call_stack::context ctx(this, this_thread); - - mutex::scoped_lock lock(mutex_); - - return do_run_one(lock, this_thread, ec); -} - -std::size_t scheduler::wait_one(long usec, asio::error_code& ec) -{ - ec = asio::error_code(); - if (outstanding_work_ == 0) - { - stop(); - return 0; - } - - thread_info this_thread; - this_thread.private_outstanding_work = 0; - thread_call_stack::context ctx(this, this_thread); - - mutex::scoped_lock lock(mutex_); - - return do_wait_one(lock, this_thread, usec, ec); -} - -std::size_t scheduler::poll(asio::error_code& ec) -{ - ec = asio::error_code(); - if (outstanding_work_ == 0) - { - stop(); - return 0; - } - - thread_info this_thread; - this_thread.private_outstanding_work = 0; - thread_call_stack::context ctx(this, this_thread); - - mutex::scoped_lock lock(mutex_); - -#if defined(ASIO_HAS_THREADS) - // We want to support nested calls to poll() and poll_one(), so any handlers - // that are already on a thread-private queue need to be put on to the main - // queue now. - if (one_thread_) - if (thread_info* outer_info = static_cast(ctx.next_by_key())) - op_queue_.push(outer_info->private_op_queue); -#endif // defined(ASIO_HAS_THREADS) - - std::size_t n = 0; - for (; do_poll_one(lock, this_thread, ec); lock.lock()) - if (n != (std::numeric_limits::max)()) - ++n; - return n; -} - -std::size_t scheduler::poll_one(asio::error_code& ec) -{ - ec = asio::error_code(); - if (outstanding_work_ == 0) - { - stop(); - return 0; - } - - thread_info this_thread; - this_thread.private_outstanding_work = 0; - thread_call_stack::context ctx(this, this_thread); - - mutex::scoped_lock lock(mutex_); - -#if defined(ASIO_HAS_THREADS) - // We want to support nested calls to poll() and poll_one(), so any handlers - // that are already on a thread-private queue need to be put on to the main - // queue now. - if (one_thread_) - if (thread_info* outer_info = static_cast(ctx.next_by_key())) - op_queue_.push(outer_info->private_op_queue); -#endif // defined(ASIO_HAS_THREADS) - - return do_poll_one(lock, this_thread, ec); -} - -void scheduler::stop() -{ - mutex::scoped_lock lock(mutex_); - stop_all_threads(lock); -} - -bool scheduler::stopped() const -{ - mutex::scoped_lock lock(mutex_); - return stopped_; -} - -void scheduler::restart() -{ - mutex::scoped_lock lock(mutex_); - stopped_ = false; -} - -void scheduler::compensating_work_started() -{ - thread_info_base* this_thread = thread_call_stack::contains(this); - ++static_cast(this_thread)->private_outstanding_work; -} - -void scheduler::capture_current_exception() -{ - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - this_thread->capture_current_exception(); -} - -void scheduler::post_immediate_completion( - scheduler::operation* op, bool is_continuation) -{ -#if defined(ASIO_HAS_THREADS) - if (one_thread_ || is_continuation) - { - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - { - ++static_cast(this_thread)->private_outstanding_work; - static_cast(this_thread)->private_op_queue.push(op); - return; - } - } -#else // defined(ASIO_HAS_THREADS) - (void)is_continuation; -#endif // defined(ASIO_HAS_THREADS) - - work_started(); - mutex::scoped_lock lock(mutex_); - op_queue_.push(op); - wake_one_thread_and_unlock(lock); -} - -void scheduler::post_immediate_completions(std::size_t n, - op_queue& ops, bool is_continuation) -{ -#if defined(ASIO_HAS_THREADS) - if (one_thread_ || is_continuation) - { - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - { - static_cast(this_thread)->private_outstanding_work - += static_cast(n); - static_cast(this_thread)->private_op_queue.push(ops); - return; - } - } -#else // defined(ASIO_HAS_THREADS) - (void)is_continuation; -#endif // defined(ASIO_HAS_THREADS) - - increment(outstanding_work_, static_cast(n)); - mutex::scoped_lock lock(mutex_); - op_queue_.push(ops); - wake_one_thread_and_unlock(lock); -} - -void scheduler::post_deferred_completion(scheduler::operation* op) -{ -#if defined(ASIO_HAS_THREADS) - if (one_thread_) - { - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - { - static_cast(this_thread)->private_op_queue.push(op); - return; - } - } -#endif // defined(ASIO_HAS_THREADS) - - mutex::scoped_lock lock(mutex_); - op_queue_.push(op); - wake_one_thread_and_unlock(lock); -} - -void scheduler::post_deferred_completions( - op_queue& ops) -{ - if (!ops.empty()) - { -#if defined(ASIO_HAS_THREADS) - if (one_thread_) - { - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - { - static_cast(this_thread)->private_op_queue.push(ops); - return; - } - } -#endif // defined(ASIO_HAS_THREADS) - - mutex::scoped_lock lock(mutex_); - op_queue_.push(ops); - wake_one_thread_and_unlock(lock); - } -} - -void scheduler::do_dispatch( - scheduler::operation* op) -{ - work_started(); - mutex::scoped_lock lock(mutex_); - op_queue_.push(op); - wake_one_thread_and_unlock(lock); -} - -void scheduler::abandon_operations( - op_queue& ops) -{ - op_queue ops2; - ops2.push(ops); -} - -std::size_t scheduler::do_run_one(mutex::scoped_lock& lock, - scheduler::thread_info& this_thread, - const asio::error_code& ec) -{ - while (!stopped_) - { - if (!op_queue_.empty()) - { - // Prepare to execute first handler from queue. - operation* o = op_queue_.front(); - op_queue_.pop(); - bool more_handlers = (!op_queue_.empty()); - - if (o == &task_operation_) - { - task_interrupted_ = more_handlers; - - if (more_handlers && !one_thread_) - wakeup_event_.unlock_and_signal_one(lock); - else - lock.unlock(); - - task_cleanup on_exit = { this, &lock, &this_thread }; - (void)on_exit; - - // Run the task. May throw an exception. Only block if the operation - // queue is empty and we're not polling, otherwise we want to return - // as soon as possible. - task_->run(more_handlers ? 0 : -1, this_thread.private_op_queue); - } - else - { - std::size_t task_result = o->task_result_; - - if (more_handlers && !one_thread_) - wake_one_thread_and_unlock(lock); - else - lock.unlock(); - - // Ensure the count of outstanding work is decremented on block exit. - work_cleanup on_exit = { this, &lock, &this_thread }; - (void)on_exit; - - // Complete the operation. May throw an exception. Deletes the object. - o->complete(this, ec, task_result); - this_thread.rethrow_pending_exception(); - - return 1; - } - } - else - { - wakeup_event_.clear(lock); - wakeup_event_.wait(lock); - } - } - - return 0; -} - -std::size_t scheduler::do_wait_one(mutex::scoped_lock& lock, - scheduler::thread_info& this_thread, long usec, - const asio::error_code& ec) -{ - if (stopped_) - return 0; - - operation* o = op_queue_.front(); - if (o == 0) - { - wakeup_event_.clear(lock); - wakeup_event_.wait_for_usec(lock, usec); - usec = 0; // Wait at most once. - o = op_queue_.front(); - } - - if (o == &task_operation_) - { - op_queue_.pop(); - bool more_handlers = (!op_queue_.empty()); - - task_interrupted_ = more_handlers; - - if (more_handlers && !one_thread_) - wakeup_event_.unlock_and_signal_one(lock); - else - lock.unlock(); - - { - task_cleanup on_exit = { this, &lock, &this_thread }; - (void)on_exit; - - // Run the task. May throw an exception. Only block if the operation - // queue is empty and we're not polling, otherwise we want to return - // as soon as possible. - task_->run(more_handlers ? 0 : usec, this_thread.private_op_queue); - } - - o = op_queue_.front(); - if (o == &task_operation_) - { - if (!one_thread_) - wakeup_event_.maybe_unlock_and_signal_one(lock); - return 0; - } - } - - if (o == 0) - return 0; - - op_queue_.pop(); - bool more_handlers = (!op_queue_.empty()); - - std::size_t task_result = o->task_result_; - - if (more_handlers && !one_thread_) - wake_one_thread_and_unlock(lock); - else - lock.unlock(); - - // Ensure the count of outstanding work is decremented on block exit. - work_cleanup on_exit = { this, &lock, &this_thread }; - (void)on_exit; - - // Complete the operation. May throw an exception. Deletes the object. - o->complete(this, ec, task_result); - this_thread.rethrow_pending_exception(); - - return 1; -} - -std::size_t scheduler::do_poll_one(mutex::scoped_lock& lock, - scheduler::thread_info& this_thread, - const asio::error_code& ec) -{ - if (stopped_) - return 0; - - operation* o = op_queue_.front(); - if (o == &task_operation_) - { - op_queue_.pop(); - lock.unlock(); - - { - task_cleanup c = { this, &lock, &this_thread }; - (void)c; - - // Run the task. May throw an exception. Only block if the operation - // queue is empty and we're not polling, otherwise we want to return - // as soon as possible. - task_->run(0, this_thread.private_op_queue); - } - - o = op_queue_.front(); - if (o == &task_operation_) - { - wakeup_event_.maybe_unlock_and_signal_one(lock); - return 0; - } - } - - if (o == 0) - return 0; - - op_queue_.pop(); - bool more_handlers = (!op_queue_.empty()); - - std::size_t task_result = o->task_result_; - - if (more_handlers && !one_thread_) - wake_one_thread_and_unlock(lock); - else - lock.unlock(); - - // Ensure the count of outstanding work is decremented on block exit. - work_cleanup on_exit = { this, &lock, &this_thread }; - (void)on_exit; - - // Complete the operation. May throw an exception. Deletes the object. - o->complete(this, ec, task_result); - this_thread.rethrow_pending_exception(); - - return 1; -} - -void scheduler::stop_all_threads( - mutex::scoped_lock& lock) -{ - stopped_ = true; - wakeup_event_.signal_all(lock); - - if (!task_interrupted_ && task_) - { - task_interrupted_ = true; - task_->interrupt(); - } -} - -void scheduler::wake_one_thread_and_unlock( - mutex::scoped_lock& lock) -{ - if (!wakeup_event_.maybe_unlock_and_signal_one(lock)) - { - if (!task_interrupted_ && task_) - { - task_interrupted_ = true; - task_->interrupt(); - } - lock.unlock(); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_SCHEDULER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.hpp deleted file mode 100644 index dd4418f8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -// detail/impl/select_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP -#define ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) \ - || (!defined(ASIO_HAS_DEV_POLL) \ - && !defined(ASIO_HAS_EPOLL) \ - && !defined(ASIO_HAS_KQUEUE) \ - && !defined(ASIO_WINDOWS_RUNTIME)) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void select_reactor::add_timer_queue(timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -// Remove a timer queue from the reactor. -template -void select_reactor::remove_timer_queue(timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void select_reactor::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - scheduler_.post_immediate_completion(op, false); - return; - } - - bool earliest = queue.enqueue_timer(time, timer, op); - scheduler_.work_started(); - if (earliest) - interrupter_.interrupt(); -} - -template -std::size_t select_reactor::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - scheduler_.post_deferred_completions(ops); - return n; -} - -template -void select_reactor::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - queue.cancel_timer(target, ops); - queue.move_timer(target, source); - lock.unlock(); - scheduler_.post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - // || (!defined(ASIO_HAS_DEV_POLL) - // && !defined(ASIO_HAS_EPOLL) - // && !defined(ASIO_HAS_KQUEUE) - // && !defined(ASIO_WINDOWS_RUNTIME)) - -#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.ipp deleted file mode 100644 index 1e321a03..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/select_reactor.ipp +++ /dev/null @@ -1,338 +0,0 @@ -// -// detail/impl/select_reactor.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP -#define ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) \ - || (!defined(ASIO_HAS_DEV_POLL) \ - && !defined(ASIO_HAS_EPOLL) \ - && !defined(ASIO_HAS_KQUEUE) \ - && !defined(ASIO_WINDOWS_RUNTIME)) - -#include "asio/detail/fd_set_adapter.hpp" -#include "asio/detail/select_reactor.hpp" -#include "asio/detail/signal_blocker.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_IOCP) -class select_reactor::thread_function -{ -public: - explicit thread_function(select_reactor* r) - : this_(r) - { - } - - void operator()() - { - this_->run_thread(); - } - -private: - select_reactor* this_; -}; -#endif // defined(ASIO_HAS_IOCP) - -select_reactor::select_reactor(asio::execution_context& ctx) - : execution_context_service_base(ctx), - scheduler_(use_service(ctx)), - mutex_(), - interrupter_(), -#if defined(ASIO_HAS_IOCP) - stop_thread_(false), - thread_(0), -#endif // defined(ASIO_HAS_IOCP) - shutdown_(false) -{ -#if defined(ASIO_HAS_IOCP) - asio::detail::signal_blocker sb; - thread_ = new asio::detail::thread(thread_function(this)); -#endif // defined(ASIO_HAS_IOCP) -} - -select_reactor::~select_reactor() -{ - shutdown(); -} - -void select_reactor::shutdown() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - shutdown_ = true; -#if defined(ASIO_HAS_IOCP) - stop_thread_ = true; - if (thread_) - interrupter_.interrupt(); -#endif // defined(ASIO_HAS_IOCP) - lock.unlock(); - -#if defined(ASIO_HAS_IOCP) - if (thread_) - { - thread_->join(); - delete thread_; - thread_ = 0; - } -#endif // defined(ASIO_HAS_IOCP) - - op_queue ops; - - for (int i = 0; i < max_ops; ++i) - op_queue_[i].get_all_operations(ops); - - timer_queues_.get_all_timers(ops); - - scheduler_.abandon_operations(ops); -} - -void select_reactor::notify_fork( - asio::execution_context::fork_event fork_ev) -{ - if (fork_ev == asio::execution_context::fork_child) - interrupter_.recreate(); -} - -void select_reactor::init_task() -{ - scheduler_.init_task(); -} - -int select_reactor::register_descriptor(socket_type, - select_reactor::per_descriptor_data&) -{ - return 0; -} - -int select_reactor::register_internal_descriptor( - int op_type, socket_type descriptor, - select_reactor::per_descriptor_data&, reactor_op* op) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - op_queue_[op_type].enqueue_operation(descriptor, op); - interrupter_.interrupt(); - - return 0; -} - -void select_reactor::move_descriptor(socket_type, - select_reactor::per_descriptor_data&, - select_reactor::per_descriptor_data&) -{ -} - -void select_reactor::start_op(int op_type, socket_type descriptor, - select_reactor::per_descriptor_data&, reactor_op* op, - bool is_continuation, bool) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - post_immediate_completion(op, is_continuation); - return; - } - - bool first = op_queue_[op_type].enqueue_operation(descriptor, op); - scheduler_.work_started(); - if (first) - interrupter_.interrupt(); -} - -void select_reactor::cancel_ops(socket_type descriptor, - select_reactor::per_descriptor_data&) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - cancel_ops_unlocked(descriptor, asio::error::operation_aborted); -} - -void select_reactor::deregister_descriptor(socket_type descriptor, - select_reactor::per_descriptor_data&, bool) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - cancel_ops_unlocked(descriptor, asio::error::operation_aborted); -} - -void select_reactor::deregister_internal_descriptor( - socket_type descriptor, select_reactor::per_descriptor_data&) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - for (int i = 0; i < max_ops; ++i) - op_queue_[i].cancel_operations(descriptor, ops); -} - -void select_reactor::cleanup_descriptor_data( - select_reactor::per_descriptor_data&) -{ -} - -void select_reactor::run(long usec, op_queue& ops) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - -#if defined(ASIO_HAS_IOCP) - // Check if the thread is supposed to stop. - if (stop_thread_) - return; -#endif // defined(ASIO_HAS_IOCP) - - // Set up the descriptor sets. - for (int i = 0; i < max_select_ops; ++i) - fd_sets_[i].reset(); - fd_sets_[read_op].set(interrupter_.read_descriptor()); - socket_type max_fd = 0; - bool have_work_to_do = !timer_queues_.all_empty(); - for (int i = 0; i < max_select_ops; ++i) - { - have_work_to_do = have_work_to_do || !op_queue_[i].empty(); - fd_sets_[i].set(op_queue_[i], ops); - if (fd_sets_[i].max_descriptor() > max_fd) - max_fd = fd_sets_[i].max_descriptor(); - } - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Connection operations on Windows use both except and write fd_sets. - have_work_to_do = have_work_to_do || !op_queue_[connect_op].empty(); - fd_sets_[write_op].set(op_queue_[connect_op], ops); - if (fd_sets_[write_op].max_descriptor() > max_fd) - max_fd = fd_sets_[write_op].max_descriptor(); - fd_sets_[except_op].set(op_queue_[connect_op], ops); - if (fd_sets_[except_op].max_descriptor() > max_fd) - max_fd = fd_sets_[except_op].max_descriptor(); -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - - // We can return immediately if there's no work to do and the reactor is - // not supposed to block. - if (!usec && !have_work_to_do) - return; - - // Determine how long to block while waiting for events. - timeval tv_buf = { 0, 0 }; - timeval* tv = usec ? get_timeout(usec, tv_buf) : &tv_buf; - - lock.unlock(); - - // Block on the select call until descriptors become ready. - asio::error_code ec; - int retval = socket_ops::select(static_cast(max_fd + 1), - fd_sets_[read_op], fd_sets_[write_op], fd_sets_[except_op], tv, ec); - - // Reset the interrupter. - if (retval > 0 && fd_sets_[read_op].is_set(interrupter_.read_descriptor())) - { - if (!interrupter_.reset()) - { - lock.lock(); - interrupter_.recreate(); - } - --retval; - } - - lock.lock(); - - // Dispatch all ready operations. - if (retval > 0) - { -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Connection operations on Windows use both except and write fd_sets. - fd_sets_[except_op].perform(op_queue_[connect_op], ops); - fd_sets_[write_op].perform(op_queue_[connect_op], ops); -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - - // Exception operations must be processed first to ensure that any - // out-of-band data is read before normal data. - for (int i = max_select_ops - 1; i >= 0; --i) - fd_sets_[i].perform(op_queue_[i], ops); - } - timer_queues_.get_ready_timers(ops); -} - -void select_reactor::interrupt() -{ - interrupter_.interrupt(); -} - -#if defined(ASIO_HAS_IOCP) -void select_reactor::run_thread() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - while (!stop_thread_) - { - lock.unlock(); - op_queue ops; - run(true, ops); - scheduler_.post_deferred_completions(ops); - lock.lock(); - } -} -#endif // defined(ASIO_HAS_IOCP) - -void select_reactor::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.insert(&queue); -} - -void select_reactor::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.erase(&queue); -} - -timeval* select_reactor::get_timeout(long usec, timeval& tv) -{ - // By default we will wait no longer than 5 minutes. This will ensure that - // any changes to the system clock are detected after no longer than this. - const long max_usec = 5 * 60 * 1000 * 1000; - usec = timer_queues_.wait_duration_usec( - (usec < 0 || max_usec < usec) ? max_usec : usec); - tv.tv_sec = usec / 1000000; - tv.tv_usec = usec % 1000000; - return &tv; -} - -void select_reactor::cancel_ops_unlocked(socket_type descriptor, - const asio::error_code& ec) -{ - bool need_interrupt = false; - op_queue ops; - for (int i = 0; i < max_ops; ++i) - need_interrupt = op_queue_[i].cancel_operations( - descriptor, ops, ec) || need_interrupt; - scheduler_.post_deferred_completions(ops); - if (need_interrupt) - interrupter_.interrupt(); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - // || (!defined(ASIO_HAS_DEV_POLL) - // && !defined(ASIO_HAS_EPOLL) - // && !defined(ASIO_HAS_KQUEUE)) - // && !defined(ASIO_WINDOWS_RUNTIME)) - -#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.hpp deleted file mode 100644 index ca73d2fe..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// -// detail/impl/service_registry.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP -#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -Service& service_registry::use_service() -{ - execution_context::service::key key; - init_key(key, 0); - factory_type factory = &service_registry::create; - return *static_cast(do_use_service(key, factory, &owner_)); -} - -template -Service& service_registry::use_service(io_context& owner) -{ - execution_context::service::key key; - init_key(key, 0); - factory_type factory = &service_registry::create; - return *static_cast(do_use_service(key, factory, &owner)); -} - -template -void service_registry::add_service(Service* new_service) -{ - execution_context::service::key key; - init_key(key, 0); - return do_add_service(key, new_service); -} - -template -bool service_registry::has_service() const -{ - execution_context::service::key key; - init_key(key, 0); - return do_has_service(key); -} - -template -inline void service_registry::init_key( - execution_context::service::key& key, ...) -{ - init_key_from_id(key, Service::id); -} - -#if !defined(ASIO_NO_TYPEID) -template -void service_registry::init_key(execution_context::service::key& key, - typename enable_if< - is_base_of::value>::type*) -{ - key.type_info_ = &typeid(typeid_wrapper); - key.id_ = 0; -} - -template -void service_registry::init_key_from_id(execution_context::service::key& key, - const service_id& /*id*/) -{ - key.type_info_ = &typeid(typeid_wrapper); - key.id_ = 0; -} -#endif // !defined(ASIO_NO_TYPEID) - -template -execution_context::service* service_registry::create(void* owner) -{ - return new Service(*static_cast(owner)); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.ipp deleted file mode 100644 index e9a14fec..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/service_registry.ipp +++ /dev/null @@ -1,197 +0,0 @@ -// -// detail/impl/service_registry.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP -#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/service_registry.hpp" -#include "asio/detail/throw_exception.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -service_registry::service_registry(execution_context& owner) - : owner_(owner), - first_service_(0) -{ -} - -service_registry::~service_registry() -{ -} - -void service_registry::shutdown_services() -{ - execution_context::service* service = first_service_; - while (service) - { - service->shutdown(); - service = service->next_; - } -} - -void service_registry::destroy_services() -{ - while (first_service_) - { - execution_context::service* next_service = first_service_->next_; - destroy(first_service_); - first_service_ = next_service; - } -} - -void service_registry::notify_fork(execution_context::fork_event fork_ev) -{ - // Make a copy of all of the services while holding the lock. We don't want - // to hold the lock while calling into each service, as it may try to call - // back into this class. - std::vector services; - { - asio::detail::mutex::scoped_lock lock(mutex_); - execution_context::service* service = first_service_; - while (service) - { - services.push_back(service); - service = service->next_; - } - } - - // If processing the fork_prepare event, we want to go in reverse order of - // service registration, which happens to be the existing order of the - // services in the vector. For the other events we want to go in the other - // direction. - std::size_t num_services = services.size(); - if (fork_ev == execution_context::fork_prepare) - for (std::size_t i = 0; i < num_services; ++i) - services[i]->notify_fork(fork_ev); - else - for (std::size_t i = num_services; i > 0; --i) - services[i - 1]->notify_fork(fork_ev); -} - -void service_registry::init_key_from_id(execution_context::service::key& key, - const execution_context::id& id) -{ - key.type_info_ = 0; - key.id_ = &id; -} - -bool service_registry::keys_match( - const execution_context::service::key& key1, - const execution_context::service::key& key2) -{ - if (key1.id_ && key2.id_) - if (key1.id_ == key2.id_) - return true; - if (key1.type_info_ && key2.type_info_) - if (*key1.type_info_ == *key2.type_info_) - return true; - return false; -} - -void service_registry::destroy(execution_context::service* service) -{ - delete service; -} - -execution_context::service* service_registry::do_use_service( - const execution_context::service::key& key, - factory_type factory, void* owner) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - // First see if there is an existing service object with the given key. - execution_context::service* service = first_service_; - while (service) - { - if (keys_match(service->key_, key)) - return service; - service = service->next_; - } - - // Create a new service object. The service registry's mutex is not locked - // at this time to allow for nested calls into this function from the new - // service's constructor. - lock.unlock(); - auto_service_ptr new_service = { factory(owner) }; - new_service.ptr_->key_ = key; - lock.lock(); - - // Check that nobody else created another service object of the same type - // while the lock was released. - service = first_service_; - while (service) - { - if (keys_match(service->key_, key)) - return service; - service = service->next_; - } - - // Service was successfully initialised, pass ownership to registry. - new_service.ptr_->next_ = first_service_; - first_service_ = new_service.ptr_; - new_service.ptr_ = 0; - return first_service_; -} - -void service_registry::do_add_service( - const execution_context::service::key& key, - execution_context::service* new_service) -{ - if (&owner_ != &new_service->context()) - asio::detail::throw_exception(invalid_service_owner()); - - asio::detail::mutex::scoped_lock lock(mutex_); - - // Check if there is an existing service object with the given key. - execution_context::service* service = first_service_; - while (service) - { - if (keys_match(service->key_, key)) - asio::detail::throw_exception(service_already_exists()); - service = service->next_; - } - - // Take ownership of the service object. - new_service->key_ = key; - new_service->next_ = first_service_; - first_service_ = new_service; -} - -bool service_registry::do_has_service( - const execution_context::service::key& key) const -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - execution_context::service* service = first_service_; - while (service) - { - if (keys_match(service->key_, key)) - return true; - service = service->next_; - } - - return false; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/signal_set_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/signal_set_service.ipp deleted file mode 100644 index b99060c1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/signal_set_service.ipp +++ /dev/null @@ -1,668 +0,0 @@ -// -// detail/impl/signal_set_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP -#define ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include -#include -#include "asio/detail/reactor.hpp" -#include "asio/detail/signal_blocker.hpp" -#include "asio/detail/signal_set_service.hpp" -#include "asio/detail/static_mutex.hpp" -#include "asio/detail/throw_exception.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct signal_state -{ - // Mutex used for protecting global state. - static_mutex mutex_; - - // The read end of the pipe used for signal notifications. - int read_descriptor_; - - // The write end of the pipe used for signal notifications. - int write_descriptor_; - - // Whether the signal state has been prepared for a fork. - bool fork_prepared_; - - // The head of a linked list of all signal_set_service instances. - class signal_set_service* service_list_; - - // A count of the number of objects that are registered for each signal. - std::size_t registration_count_[max_signal_number]; -}; - -signal_state* get_signal_state() -{ - static signal_state state = { - ASIO_STATIC_MUTEX_INIT, -1, -1, false, 0, { 0 } }; - return &state; -} - -void asio_signal_handler(int signal_number) -{ -#if defined(ASIO_WINDOWS) \ - || defined(ASIO_WINDOWS_RUNTIME) \ - || defined(__CYGWIN__) - signal_set_service::deliver_signal(signal_number); -#else // defined(ASIO_WINDOWS) - // || defined(ASIO_WINDOWS_RUNTIME) - // || defined(__CYGWIN__) - int saved_errno = errno; - signal_state* state = get_signal_state(); - signed_size_type result = ::write(state->write_descriptor_, - &signal_number, sizeof(signal_number)); - (void)result; - errno = saved_errno; -#endif // defined(ASIO_WINDOWS) - // || defined(ASIO_WINDOWS_RUNTIME) - // || defined(__CYGWIN__) - -#if defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION) - ::signal(signal_number, asio_signal_handler); -#endif // defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION) -} - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) -class signal_set_service::pipe_read_op : public reactor_op -{ -public: - pipe_read_op() - : reactor_op(asio::error_code(), - &pipe_read_op::do_perform, pipe_read_op::do_complete) - { - } - - static status do_perform(reactor_op*) - { - signal_state* state = get_signal_state(); - - int fd = state->read_descriptor_; - int signal_number = 0; - while (::read(fd, &signal_number, sizeof(int)) == sizeof(int)) - if (signal_number >= 0 && signal_number < max_signal_number) - signal_set_service::deliver_signal(signal_number); - - return not_done; - } - - static void do_complete(void* /*owner*/, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - pipe_read_op* o(static_cast(base)); - delete o; - } -}; -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - -signal_set_service::signal_set_service(execution_context& context) - : execution_context_service_base(context), - scheduler_(asio::use_service(context)), -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - reactor_(asio::use_service(context)), -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - next_(0), - prev_(0) -{ - get_signal_state()->mutex_.init(); - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - reactor_.init_task(); -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - - for (int i = 0; i < max_signal_number; ++i) - registrations_[i] = 0; - - add_service(this); -} - -signal_set_service::~signal_set_service() -{ - remove_service(this); -} - -void signal_set_service::shutdown() -{ - remove_service(this); - - op_queue ops; - - for (int i = 0; i < max_signal_number; ++i) - { - registration* reg = registrations_[i]; - while (reg) - { - ops.push(*reg->queue_); - reg = reg->next_in_table_; - } - } - - scheduler_.abandon_operations(ops); -} - -void signal_set_service::notify_fork(execution_context::fork_event fork_ev) -{ -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - switch (fork_ev) - { - case execution_context::fork_prepare: - { - int read_descriptor = state->read_descriptor_; - state->fork_prepared_ = true; - lock.unlock(); - reactor_.deregister_internal_descriptor(read_descriptor, reactor_data_); - reactor_.cleanup_descriptor_data(reactor_data_); - } - break; - case execution_context::fork_parent: - if (state->fork_prepared_) - { - int read_descriptor = state->read_descriptor_; - state->fork_prepared_ = false; - lock.unlock(); - reactor_.register_internal_descriptor(reactor::read_op, - read_descriptor, reactor_data_, new pipe_read_op); - } - break; - case execution_context::fork_child: - if (state->fork_prepared_) - { - asio::detail::signal_blocker blocker; - close_descriptors(); - open_descriptors(); - int read_descriptor = state->read_descriptor_; - state->fork_prepared_ = false; - lock.unlock(); - reactor_.register_internal_descriptor(reactor::read_op, - read_descriptor, reactor_data_, new pipe_read_op); - } - break; - default: - break; - } -#else // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - (void)fork_ev; -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -} - -void signal_set_service::construct( - signal_set_service::implementation_type& impl) -{ - impl.signals_ = 0; -} - -void signal_set_service::destroy( - signal_set_service::implementation_type& impl) -{ - asio::error_code ignored_ec; - clear(impl, ignored_ec); - cancel(impl, ignored_ec); -} - -asio::error_code signal_set_service::add( - signal_set_service::implementation_type& impl, - int signal_number, asio::error_code& ec) -{ - // Check that the signal number is valid. - if (signal_number < 0 || signal_number >= max_signal_number) - { - ec = asio::error::invalid_argument; - return ec; - } - - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - // Find the appropriate place to insert the registration. - registration** insertion_point = &impl.signals_; - registration* next = impl.signals_; - while (next && next->signal_number_ < signal_number) - { - insertion_point = &next->next_in_set_; - next = next->next_in_set_; - } - - // Only do something if the signal is not already registered. - if (next == 0 || next->signal_number_ != signal_number) - { - registration* new_registration = new registration; - -#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - // Register for the signal if we're the first. - if (state->registration_count_[signal_number] == 0) - { -# if defined(ASIO_HAS_SIGACTION) - using namespace std; // For memset. - struct sigaction sa; - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = asio_signal_handler; - sigfillset(&sa.sa_mask); - if (::sigaction(signal_number, &sa, 0) == -1) -# else // defined(ASIO_HAS_SIGACTION) - if (::signal(signal_number, asio_signal_handler) == SIG_ERR) -# endif // defined(ASIO_HAS_SIGACTION) - { -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error::invalid_argument; -# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error_code(errno, - asio::error::get_system_category()); -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - delete new_registration; - return ec; - } - } -#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - - // Record the new registration in the set. - new_registration->signal_number_ = signal_number; - new_registration->queue_ = &impl.queue_; - new_registration->next_in_set_ = next; - *insertion_point = new_registration; - - // Insert registration into the registration table. - new_registration->next_in_table_ = registrations_[signal_number]; - if (registrations_[signal_number]) - registrations_[signal_number]->prev_in_table_ = new_registration; - registrations_[signal_number] = new_registration; - - ++state->registration_count_[signal_number]; - } - - ec = asio::error_code(); - return ec; -} - -asio::error_code signal_set_service::remove( - signal_set_service::implementation_type& impl, - int signal_number, asio::error_code& ec) -{ - // Check that the signal number is valid. - if (signal_number < 0 || signal_number >= max_signal_number) - { - ec = asio::error::invalid_argument; - return ec; - } - - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - // Find the signal number in the list of registrations. - registration** deletion_point = &impl.signals_; - registration* reg = impl.signals_; - while (reg && reg->signal_number_ < signal_number) - { - deletion_point = ®->next_in_set_; - reg = reg->next_in_set_; - } - - if (reg != 0 && reg->signal_number_ == signal_number) - { -#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - // Set signal handler back to the default if we're the last. - if (state->registration_count_[signal_number] == 1) - { -# if defined(ASIO_HAS_SIGACTION) - using namespace std; // For memset. - struct sigaction sa; - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = SIG_DFL; - if (::sigaction(signal_number, &sa, 0) == -1) -# else // defined(ASIO_HAS_SIGACTION) - if (::signal(signal_number, SIG_DFL) == SIG_ERR) -# endif // defined(ASIO_HAS_SIGACTION) - { -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error::invalid_argument; -# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error_code(errno, - asio::error::get_system_category()); -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - return ec; - } - } -#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - - // Remove the registration from the set. - *deletion_point = reg->next_in_set_; - - // Remove the registration from the registration table. - if (registrations_[signal_number] == reg) - registrations_[signal_number] = reg->next_in_table_; - if (reg->prev_in_table_) - reg->prev_in_table_->next_in_table_ = reg->next_in_table_; - if (reg->next_in_table_) - reg->next_in_table_->prev_in_table_ = reg->prev_in_table_; - - --state->registration_count_[signal_number]; - - delete reg; - } - - ec = asio::error_code(); - return ec; -} - -asio::error_code signal_set_service::clear( - signal_set_service::implementation_type& impl, - asio::error_code& ec) -{ - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - while (registration* reg = impl.signals_) - { -#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - // Set signal handler back to the default if we're the last. - if (state->registration_count_[reg->signal_number_] == 1) - { -# if defined(ASIO_HAS_SIGACTION) - using namespace std; // For memset. - struct sigaction sa; - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = SIG_DFL; - if (::sigaction(reg->signal_number_, &sa, 0) == -1) -# else // defined(ASIO_HAS_SIGACTION) - if (::signal(reg->signal_number_, SIG_DFL) == SIG_ERR) -# endif // defined(ASIO_HAS_SIGACTION) - { -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error::invalid_argument; -# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error_code(errno, - asio::error::get_system_category()); -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - return ec; - } - } -#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION) - - // Remove the registration from the registration table. - if (registrations_[reg->signal_number_] == reg) - registrations_[reg->signal_number_] = reg->next_in_table_; - if (reg->prev_in_table_) - reg->prev_in_table_->next_in_table_ = reg->next_in_table_; - if (reg->next_in_table_) - reg->next_in_table_->prev_in_table_ = reg->prev_in_table_; - - --state->registration_count_[reg->signal_number_]; - - impl.signals_ = reg->next_in_set_; - delete reg; - } - - ec = asio::error_code(); - return ec; -} - -asio::error_code signal_set_service::cancel( - signal_set_service::implementation_type& impl, - asio::error_code& ec) -{ - ASIO_HANDLER_OPERATION((scheduler_.context(), - "signal_set", &impl, 0, "cancel")); - - op_queue ops; - { - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - while (signal_op* op = impl.queue_.front()) - { - op->ec_ = asio::error::operation_aborted; - impl.queue_.pop(); - ops.push(op); - } - } - - scheduler_.post_deferred_completions(ops); - - ec = asio::error_code(); - return ec; -} - -void signal_set_service::deliver_signal(int signal_number) -{ - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - signal_set_service* service = state->service_list_; - while (service) - { - op_queue ops; - - registration* reg = service->registrations_[signal_number]; - while (reg) - { - if (reg->queue_->empty()) - { - ++reg->undelivered_; - } - else - { - while (signal_op* op = reg->queue_->front()) - { - op->signal_number_ = signal_number; - reg->queue_->pop(); - ops.push(op); - } - } - - reg = reg->next_in_table_; - } - - service->scheduler_.post_deferred_completions(ops); - - service = service->next_; - } -} - -void signal_set_service::add_service(signal_set_service* service) -{ - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - // If this is the first service to be created, open a new pipe. - if (state->service_list_ == 0) - open_descriptors(); -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - - // If a scheduler_ object is thread-unsafe then it must be the only - // scheduler used to create signal_set objects. - if (state->service_list_ != 0) - { - if (!ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER, - service->scheduler_.concurrency_hint()) - || !ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER, - state->service_list_->scheduler_.concurrency_hint())) - { - std::logic_error ex( - "Thread-unsafe execution context objects require " - "exclusive access to signal handling."); - asio::detail::throw_exception(ex); - } - } - - // Insert service into linked list of all services. - service->next_ = state->service_list_; - service->prev_ = 0; - if (state->service_list_) - state->service_list_->prev_ = service; - state->service_list_ = service; - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - // Register for pipe readiness notifications. - int read_descriptor = state->read_descriptor_; - lock.unlock(); - service->reactor_.register_internal_descriptor(reactor::read_op, - read_descriptor, service->reactor_data_, new pipe_read_op); -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -} - -void signal_set_service::remove_service(signal_set_service* service) -{ - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - if (service->next_ || service->prev_ || state->service_list_ == service) - { -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - // Disable the pipe readiness notifications. - int read_descriptor = state->read_descriptor_; - lock.unlock(); - service->reactor_.deregister_internal_descriptor( - read_descriptor, service->reactor_data_); - service->reactor_.cleanup_descriptor_data(service->reactor_data_); - lock.lock(); -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - - // Remove service from linked list of all services. - if (state->service_list_ == service) - state->service_list_ = service->next_; - if (service->prev_) - service->prev_->next_ = service->next_; - if (service->next_) - service->next_->prev_= service->prev_; - service->next_ = 0; - service->prev_ = 0; - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - // If this is the last service to be removed, close the pipe. - if (state->service_list_ == 0) - close_descriptors(); -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - } -} - -void signal_set_service::open_descriptors() -{ -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - signal_state* state = get_signal_state(); - - int pipe_fds[2]; - if (::pipe(pipe_fds) == 0) - { - state->read_descriptor_ = pipe_fds[0]; - ::fcntl(state->read_descriptor_, F_SETFL, O_NONBLOCK); - - state->write_descriptor_ = pipe_fds[1]; - ::fcntl(state->write_descriptor_, F_SETFL, O_NONBLOCK); - -#if defined(FD_CLOEXEC) - ::fcntl(state->read_descriptor_, F_SETFD, FD_CLOEXEC); - ::fcntl(state->write_descriptor_, F_SETFD, FD_CLOEXEC); -#endif // defined(FD_CLOEXEC) - } - else - { - asio::error_code ec(errno, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "signal_set_service pipe"); - } -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -} - -void signal_set_service::close_descriptors() -{ -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - signal_state* state = get_signal_state(); - - if (state->read_descriptor_ != -1) - ::close(state->read_descriptor_); - state->read_descriptor_ = -1; - - if (state->write_descriptor_ != -1) - ::close(state->write_descriptor_); - state->write_descriptor_ = -1; -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) -} - -void signal_set_service::start_wait_op( - signal_set_service::implementation_type& impl, signal_op* op) -{ - scheduler_.work_started(); - - signal_state* state = get_signal_state(); - static_mutex::scoped_lock lock(state->mutex_); - - registration* reg = impl.signals_; - while (reg) - { - if (reg->undelivered_ > 0) - { - --reg->undelivered_; - op->signal_number_ = reg->signal_number_; - scheduler_.post_deferred_completion(op); - return; - } - - reg = reg->next_in_set_; - } - - impl.queue_.push(op); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_ops.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_ops.ipp deleted file mode 100644 index 10a66749..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_ops.ipp +++ /dev/null @@ -1,3962 +0,0 @@ -// -// detail/impl/socket_ops.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_OPS_IPP -#define ASIO_DETAIL_SOCKET_OPS_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include -#include -#include -#include -#include -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include -# include -# include -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) \ - || defined(__MACH__) && defined(__APPLE__) -# if defined(ASIO_HAS_PTHREADS) -# include -# endif // defined(ASIO_HAS_PTHREADS) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // || defined(__MACH__) && defined(__APPLE__) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace socket_ops { - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -struct msghdr { int msg_namelen; }; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#if defined(__hpux) -// HP-UX doesn't declare these functions extern "C", so they are declared again -// here to avoid linker errors about undefined symbols. -extern "C" char* if_indextoname(unsigned int, char*); -extern "C" unsigned int if_nametoindex(const char*); -#endif // defined(__hpux) - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -inline void clear_last_error() -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - WSASetLastError(0); -#else - errno = 0; -#endif -} - -#if !defined(ASIO_WINDOWS_RUNTIME) - -inline void get_last_error( - asio::error_code& ec, bool is_error_condition) -{ - if (!is_error_condition) - { - ec.assign(0, ec.category()); - } - else - { -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ec = asio::error_code(WSAGetLastError(), - asio::error::get_system_category()); -#else - ec = asio::error_code(errno, - asio::error::get_system_category()); -#endif - } -} - -template -inline socket_type call_accept(SockLenType msghdr::*, - socket_type s, socket_addr_type* addr, std::size_t* addrlen) -{ - SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0; - socket_type result = ::accept(s, addr, addrlen ? &tmp_addrlen : 0); - if (addrlen) - *addrlen = (std::size_t)tmp_addrlen; - return result; -} - -socket_type accept(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return invalid_socket; - } - - socket_type new_s = call_accept(&msghdr::msg_namelen, s, addr, addrlen); - get_last_error(ec, new_s == invalid_socket); - if (new_s == invalid_socket) - return new_s; - -#if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__) - int optval = 1; - int result = ::setsockopt(new_s, SOL_SOCKET, - SO_NOSIGPIPE, &optval, sizeof(optval)); - get_last_error(ec, result != 0); - if (result != 0) - { - ::close(new_s); - return invalid_socket; - } -#endif - - ec.assign(0, ec.category()); - return new_s; -} - -socket_type sync_accept(socket_type s, state_type state, - socket_addr_type* addr, std::size_t* addrlen, asio::error_code& ec) -{ - // Accept a socket. - for (;;) - { - // Try to complete the operation without blocking. - socket_type new_socket = socket_ops::accept(s, addr, addrlen, ec); - - // Check if operation succeeded. - if (new_socket != invalid_socket) - return new_socket; - - // Operation failed. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - { - if (state & user_set_non_blocking) - return invalid_socket; - // Fall through to retry operation. - } - else if (ec == asio::error::connection_aborted) - { - if (state & enable_connection_aborted) - return invalid_socket; - // Fall through to retry operation. - } -#if defined(EPROTO) - else if (ec.value() == EPROTO) - { - if (state & enable_connection_aborted) - return invalid_socket; - // Fall through to retry operation. - } -#endif // defined(EPROTO) - else - return invalid_socket; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return invalid_socket; - } -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_accept(socket_type s, - void* output_buffer, DWORD address_length, - socket_addr_type* addr, std::size_t* addrlen, - socket_type new_socket, asio::error_code& ec) -{ - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_aborted; - - if (!ec) - { - // Get the address of the peer. - if (addr && addrlen) - { - LPSOCKADDR local_addr = 0; - int local_addr_length = 0; - LPSOCKADDR remote_addr = 0; - int remote_addr_length = 0; - GetAcceptExSockaddrs(output_buffer, 0, address_length, - address_length, &local_addr, &local_addr_length, - &remote_addr, &remote_addr_length); - if (static_cast(remote_addr_length) > *addrlen) - { - ec = asio::error::invalid_argument; - } - else - { - using namespace std; // For memcpy. - memcpy(addr, remote_addr, remote_addr_length); - *addrlen = static_cast(remote_addr_length); - } - } - - // Need to set the SO_UPDATE_ACCEPT_CONTEXT option so that getsockname - // and getpeername will work on the accepted socket. - SOCKET update_ctx_param = s; - socket_ops::state_type state = 0; - socket_ops::setsockopt(new_socket, state, - SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, - &update_ctx_param, sizeof(SOCKET), ec); - } -} - -#else // defined(ASIO_HAS_IOCP) - -bool non_blocking_accept(socket_type s, - state_type state, socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, socket_type& new_socket) -{ - for (;;) - { - // Accept the waiting connection. - new_socket = socket_ops::accept(s, addr, addrlen, ec); - - // Check if operation succeeded. - if (new_socket != invalid_socket) - return true; - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Operation failed. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - { - // Fall through to retry operation. - } - else if (ec == asio::error::connection_aborted) - { - if (state & enable_connection_aborted) - return true; - // Fall through to retry operation. - } -#if defined(EPROTO) - else if (ec.value() == EPROTO) - { - if (state & enable_connection_aborted) - return true; - // Fall through to retry operation. - } -#endif // defined(EPROTO) - else - return true; - - return false; - } -} - -#endif // defined(ASIO_HAS_IOCP) - -template -inline int call_bind(SockLenType msghdr::*, - socket_type s, const socket_addr_type* addr, std::size_t addrlen) -{ - return ::bind(s, addr, (SockLenType)addrlen); -} - -int bind(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - int result = call_bind(&msghdr::msg_namelen, s, addr, addrlen); - get_last_error(ec, result != 0); - return result; -} - -int close(socket_type s, state_type& state, - bool destruction, asio::error_code& ec) -{ - int result = 0; - if (s != invalid_socket) - { - // We don't want the destructor to block, so set the socket to linger in - // the background. If the user doesn't like this behaviour then they need - // to explicitly close the socket. - if (destruction && (state & user_set_linger)) - { - ::linger opt; - opt.l_onoff = 0; - opt.l_linger = 0; - asio::error_code ignored_ec; - socket_ops::setsockopt(s, state, SOL_SOCKET, - SO_LINGER, &opt, sizeof(opt), ignored_ec); - } - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - result = ::closesocket(s); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - result = ::close(s); -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - get_last_error(ec, result != 0); - - if (result != 0 - && (ec == asio::error::would_block - || ec == asio::error::try_again)) - { - // According to UNIX Network Programming Vol. 1, it is possible for - // close() to fail with EWOULDBLOCK under certain circumstances. What - // isn't clear is the state of the descriptor after this error. The one - // current OS where this behaviour is seen, Windows, says that the socket - // remains open. Therefore we'll put the descriptor back into blocking - // mode and have another attempt at closing it. -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ioctl_arg_type arg = 0; - ::ioctlsocket(s, FIONBIO, &arg); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int flags = ::fcntl(s, F_GETFL, 0); - if (flags >= 0) - ::fcntl(s, F_SETFL, flags & ~O_NONBLOCK); -# else // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - ioctl_arg_type arg = 0; - ::ioctl(s, FIONBIO, &arg); -# endif // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - state &= ~non_blocking; - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - result = ::closesocket(s); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - result = ::close(s); -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - get_last_error(ec, result != 0); - } - } - - return result; -} - -bool set_user_non_blocking(socket_type s, - state_type& state, bool value, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return false; - } - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctlsocket(s, FIONBIO, &arg); - get_last_error(ec, result < 0); -#elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int result = ::fcntl(s, F_GETFL, 0); - get_last_error(ec, result < 0); - if (result >= 0) - { - int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK)); - result = ::fcntl(s, F_SETFL, flag); - get_last_error(ec, result < 0); - } -#else - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctl(s, FIONBIO, &arg); - get_last_error(ec, result < 0); -#endif - - if (result >= 0) - { - if (value) - state |= user_set_non_blocking; - else - { - // Clearing the user-set non-blocking mode always overrides any - // internally-set non-blocking flag. Any subsequent asynchronous - // operations will need to re-enable non-blocking I/O. - state &= ~(user_set_non_blocking | internal_non_blocking); - } - return true; - } - - return false; -} - -bool set_internal_non_blocking(socket_type s, - state_type& state, bool value, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return false; - } - - if (!value && (state & user_set_non_blocking)) - { - // It does not make sense to clear the internal non-blocking flag if the - // user still wants non-blocking behaviour. Return an error and let the - // caller figure out whether to update the user-set non-blocking flag. - ec = asio::error::invalid_argument; - return false; - } - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctlsocket(s, FIONBIO, &arg); - get_last_error(ec, result < 0); -#elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__) - int result = ::fcntl(s, F_GETFL, 0); - get_last_error(ec, result < 0); - if (result >= 0) - { - int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK)); - result = ::fcntl(s, F_SETFL, flag); - get_last_error(ec, result < 0); - } -#else - ioctl_arg_type arg = (value ? 1 : 0); - int result = ::ioctl(s, FIONBIO, &arg); - get_last_error(ec, result < 0); -#endif - - if (result >= 0) - { - if (value) - state |= internal_non_blocking; - else - state &= ~internal_non_blocking; - return true; - } - - return false; -} - -int shutdown(socket_type s, int what, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - int result = ::shutdown(s, what); - get_last_error(ec, result != 0); - return result; -} - -template -inline int call_connect(SockLenType msghdr::*, - socket_type s, const socket_addr_type* addr, std::size_t addrlen) -{ - return ::connect(s, addr, (SockLenType)addrlen); -} - -int connect(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - int result = call_connect(&msghdr::msg_namelen, s, addr, addrlen); - get_last_error(ec, result != 0); -#if defined(__linux__) - if (result != 0 && ec == asio::error::try_again) - ec = asio::error::no_buffer_space; -#endif // defined(__linux__) - return result; -} - -void sync_connect(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec) -{ - // Perform the connect operation. - socket_ops::connect(s, addr, addrlen, ec); - if (ec != asio::error::in_progress - && ec != asio::error::would_block) - { - // The connect operation finished immediately. - return; - } - - // Wait for socket to become ready. - if (socket_ops::poll_connect(s, -1, ec) < 0) - return; - - // Get the error code from the connect operation. - int connect_error = 0; - size_t connect_error_len = sizeof(connect_error); - if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR, - &connect_error, &connect_error_len, ec) == socket_error_retval) - return; - - // Return the result of the connect operation. - ec = asio::error_code(connect_error, - asio::error::get_system_category()); -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_connect(socket_type s, asio::error_code& ec) -{ - // Map non-portable errors to their portable counterparts. - switch (ec.value()) - { - case ERROR_CONNECTION_REFUSED: - ec = asio::error::connection_refused; - break; - case ERROR_NETWORK_UNREACHABLE: - ec = asio::error::network_unreachable; - break; - case ERROR_HOST_UNREACHABLE: - ec = asio::error::host_unreachable; - break; - case ERROR_SEM_TIMEOUT: - ec = asio::error::timed_out; - break; - default: - break; - } - - if (!ec) - { - // Need to set the SO_UPDATE_CONNECT_CONTEXT option so that getsockname - // and getpeername will work on the connected socket. - socket_ops::state_type state = 0; - const int so_update_connect_context = 0x7010; - socket_ops::setsockopt(s, state, SOL_SOCKET, - so_update_connect_context, 0, 0, ec); - } -} - -#endif // defined(ASIO_HAS_IOCP) - -bool non_blocking_connect(socket_type s, asio::error_code& ec) -{ - // Check if the connect operation has finished. This is required since we may - // get spurious readiness notifications from the reactor. -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - fd_set write_fds; - FD_ZERO(&write_fds); - FD_SET(s, &write_fds); - fd_set except_fds; - FD_ZERO(&except_fds); - FD_SET(s, &except_fds); - timeval zero_timeout; - zero_timeout.tv_sec = 0; - zero_timeout.tv_usec = 0; - int ready = ::select(s + 1, 0, &write_fds, &except_fds, &zero_timeout); -#else // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - pollfd fds; - fds.fd = s; - fds.events = POLLOUT; - fds.revents = 0; - int ready = ::poll(&fds, 1, 0); -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - if (ready == 0) - { - // The asynchronous connect operation is still in progress. - return false; - } - - // Get the error code from the connect operation. - int connect_error = 0; - size_t connect_error_len = sizeof(connect_error); - if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR, - &connect_error, &connect_error_len, ec) == 0) - { - if (connect_error) - { - ec = asio::error_code(connect_error, - asio::error::get_system_category()); - } - else - ec.assign(0, ec.category()); - } - - return true; -} - -int socketpair(int af, int type, int protocol, - socket_type sv[2], asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - (void)(af); - (void)(type); - (void)(protocol); - (void)(sv); - ec = asio::error::operation_not_supported; - return socket_error_retval; -#else - int result = ::socketpair(af, type, protocol, sv); - get_last_error(ec, result != 0); - return result; -#endif -} - -bool sockatmark(socket_type s, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return false; - } - -#if defined(SIOCATMARK) - ioctl_arg_type value = 0; -# if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = ::ioctlsocket(s, SIOCATMARK, &value); -# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = ::ioctl(s, SIOCATMARK, &value); -# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - get_last_error(ec, result < 0); -# if defined(ENOTTY) - if (ec.value() == ENOTTY) - ec = asio::error::not_socket; -# endif // defined(ENOTTY) -#else // defined(SIOCATMARK) - int value = ::sockatmark(s); - get_last_error(ec, result < 0); -#endif // defined(SIOCATMARK) - - return ec ? false : value != 0; -} - -size_t available(socket_type s, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - ioctl_arg_type value = 0; -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = ::ioctlsocket(s, FIONREAD, &value); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = ::ioctl(s, FIONREAD, &value); -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - get_last_error(ec, result < 0); -#if defined(ENOTTY) - if (ec.value() == ENOTTY) - ec = asio::error::not_socket; -#endif // defined(ENOTTY) - - return ec ? static_cast(0) : static_cast(value); -} - -int listen(socket_type s, int backlog, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - int result = ::listen(s, backlog); - get_last_error(ec, result != 0); - return result; -} - -inline void init_buf_iov_base(void*& base, void* addr) -{ - base = addr; -} - -template -inline void init_buf_iov_base(T& base, void* addr) -{ - base = static_cast(addr); -} - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef WSABUF buf; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef iovec buf; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -void init_buf(buf& b, void* data, size_t size) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - b.buf = static_cast(data); - b.len = static_cast(size); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - init_buf_iov_base(b.iov_base, data); - b.iov_len = size; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -void init_buf(buf& b, const void* data, size_t size) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - b.buf = static_cast(const_cast(data)); - b.len = static_cast(size); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - init_buf_iov_base(b.iov_base, const_cast(data)); - b.iov_len = size; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -inline void init_msghdr_msg_name(void*& name, socket_addr_type* addr) -{ - name = addr; -} - -inline void init_msghdr_msg_name(void*& name, const socket_addr_type* addr) -{ - name = const_cast(addr); -} - -template -inline void init_msghdr_msg_name(T& name, socket_addr_type* addr) -{ - name = reinterpret_cast(addr); -} - -template -inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr) -{ - name = reinterpret_cast(const_cast(addr)); -} - -signed_size_type recv(socket_type s, buf* bufs, size_t count, - int flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Receive some data. - DWORD recv_buf_count = static_cast(count); - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int result = ::WSARecv(s, bufs, recv_buf_count, - &bytes_transferred, &recv_flags, 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - result = 0; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - msghdr msg = msghdr(); - msg.msg_iov = bufs; - msg.msg_iovlen = static_cast(count); - signed_size_type result = ::recvmsg(s, &msg, flags); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -signed_size_type recv1(socket_type s, void* data, size_t size, - int flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Receive some data. - WSABUF buf; - buf.buf = const_cast(static_cast(data)); - buf.len = static_cast(size); - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int result = ::WSARecv(s, &buf, 1, - &bytes_transferred, &recv_flags, 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - result = 0; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - signed_size_type result = ::recv(s, static_cast(data), size, flags); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -size_t sync_recv(socket_type s, state_type state, buf* bufs, - size_t count, int flags, bool all_empty, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to read 0 bytes on a stream is a no-op. - if (all_empty && (state & stream_oriented)) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec); - - // Check for EOF. - if ((state & stream_oriented) && bytes == 0) - { - ec = asio::error::eof; - return 0; - } - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return 0; - } -} - -size_t sync_recv1(socket_type s, state_type state, void* data, - size_t size, int flags, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to read 0 bytes on a stream is a no-op. - if (size == 0 && (state & stream_oriented)) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec); - - // Check for EOF. - if ((state & stream_oriented) && bytes == 0) - { - ec = asio::error::eof; - return 0; - } - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return 0; - } -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_recv(state_type state, - const weak_cancel_token_type& cancel_token, bool all_empty, - asio::error_code& ec, size_t bytes_transferred) -{ - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (cancel_token.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - { - ec.assign(0, ec.category()); - } - - // Check for connection closed. - else if (!ec && bytes_transferred == 0 - && (state & stream_oriented) != 0 - && !all_empty) - { - ec = asio::error::eof; - } -} - -#else // defined(ASIO_HAS_IOCP) - -bool non_blocking_recv(socket_type s, - buf* bufs, size_t count, int flags, bool is_stream, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec); - - // Check for end of stream. - if (is_stream && bytes == 0) - { - ec = asio::error::eof; - return true; - } - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_recv1(socket_type s, - void* data, size_t size, int flags, bool is_stream, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec); - - // Check for end of stream. - if (is_stream && bytes == 0) - { - ec = asio::error::eof; - return true; - } - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -#endif // defined(ASIO_HAS_IOCP) - -signed_size_type recvfrom(socket_type s, buf* bufs, size_t count, - int flags, socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Receive some data. - DWORD recv_buf_count = static_cast(count); - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int tmp_addrlen = (int)*addrlen; - int result = ::WSARecvFrom(s, bufs, recv_buf_count, - &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0); - get_last_error(ec, true); - *addrlen = (std::size_t)tmp_addrlen; - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - result = 0; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - msghdr msg = msghdr(); - init_msghdr_msg_name(msg.msg_name, addr); - msg.msg_namelen = static_cast(*addrlen); - msg.msg_iov = bufs; - msg.msg_iovlen = static_cast(count); - signed_size_type result = ::recvmsg(s, &msg, flags); - get_last_error(ec, result < 0); - *addrlen = msg.msg_namelen; - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -template -inline signed_size_type call_recvfrom(SockLenType msghdr::*, - socket_type s, void* data, size_t size, int flags, - socket_addr_type* addr, std::size_t* addrlen) -{ - SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0; - signed_size_type result = ::recvfrom(s, static_cast(data), - size, flags, addr, addrlen ? &tmp_addrlen : 0); - if (addrlen) - *addrlen = (std::size_t)tmp_addrlen; - return result; -} - -signed_size_type recvfrom1(socket_type s, void* data, size_t size, - int flags, socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Receive some data. - WSABUF buf; - buf.buf = static_cast(data); - buf.len = static_cast(size); - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int tmp_addrlen = (int)*addrlen; - int result = ::WSARecvFrom(s, &buf, 1, &bytes_transferred, - &recv_flags, addr, &tmp_addrlen, 0, 0); - get_last_error(ec, true); - *addrlen = (std::size_t)tmp_addrlen; - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - result = 0; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - signed_size_type result = call_recvfrom(&msghdr::msg_namelen, - s, data, size, flags, addr, addrlen); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -size_t sync_recvfrom(socket_type s, state_type state, buf* bufs, - size_t count, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::recvfrom( - s, bufs, count, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return 0; - } -} - -size_t sync_recvfrom1(socket_type s, state_type state, void* data, - size_t size, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::recvfrom1( - s, data, size, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return 0; - } -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_recvfrom( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec) -{ - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (cancel_token.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - { - ec.assign(0, ec.category()); - } -} - -#else // defined(ASIO_HAS_IOCP) - -bool non_blocking_recvfrom(socket_type s, - buf* bufs, size_t count, int flags, - socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = socket_ops::recvfrom( - s, bufs, count, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_recvfrom1(socket_type s, - void* data, size_t size, int flags, - socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = socket_ops::recvfrom1( - s, data, size, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -#endif // defined(ASIO_HAS_IOCP) - -signed_size_type recvmsg(socket_type s, buf* bufs, size_t count, - int in_flags, int& out_flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - out_flags = 0; - return socket_ops::recv(s, bufs, count, in_flags, ec); -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - msghdr msg = msghdr(); - msg.msg_iov = bufs; - msg.msg_iovlen = static_cast(count); - signed_size_type result = ::recvmsg(s, &msg, in_flags); - get_last_error(ec, result < 0); - if (result >= 0) - out_flags = msg.msg_flags; - else - out_flags = 0; - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -size_t sync_recvmsg(socket_type s, state_type state, - buf* bufs, size_t count, int in_flags, int& out_flags, - asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::recvmsg( - s, bufs, count, in_flags, out_flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_read(s, 0, -1, ec) < 0) - return 0; - } -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_recvmsg( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec) -{ - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (cancel_token.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } - else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA) - { - ec.assign(0, ec.category()); - } -} - -#else // defined(ASIO_HAS_IOCP) - -bool non_blocking_recvmsg(socket_type s, - buf* bufs, size_t count, int in_flags, int& out_flags, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Read some data. - signed_size_type bytes = socket_ops::recvmsg( - s, bufs, count, in_flags, out_flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -#endif // defined(ASIO_HAS_IOCP) - -signed_size_type send(socket_type s, const buf* bufs, size_t count, - int flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Send the data. - DWORD send_buf_count = static_cast(count); - DWORD bytes_transferred = 0; - DWORD send_flags = flags; - int result = ::WSASend(s, const_cast(bufs), - send_buf_count, &bytes_transferred, send_flags, 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - msghdr msg = msghdr(); - msg.msg_iov = const_cast(bufs); - msg.msg_iovlen = static_cast(count); -#if defined(ASIO_HAS_MSG_NOSIGNAL) - flags |= MSG_NOSIGNAL; -#endif // defined(ASIO_HAS_MSG_NOSIGNAL) - signed_size_type result = ::sendmsg(s, &msg, flags); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -signed_size_type send1(socket_type s, const void* data, size_t size, - int flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Send the data. - WSABUF buf; - buf.buf = const_cast(static_cast(data)); - buf.len = static_cast(size); - DWORD bytes_transferred = 0; - DWORD send_flags = flags; - int result = ::WSASend(s, &buf, 1, - &bytes_transferred, send_flags, 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -#if defined(ASIO_HAS_MSG_NOSIGNAL) - flags |= MSG_NOSIGNAL; -#endif // defined(ASIO_HAS_MSG_NOSIGNAL) - signed_size_type result = ::send(s, - static_cast(data), size, flags); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -size_t sync_send(socket_type s, state_type state, const buf* bufs, - size_t count, int flags, bool all_empty, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to write 0 bytes to a stream is a no-op. - if (all_empty && (state & stream_oriented)) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_write(s, 0, -1, ec) < 0) - return 0; - } -} - -size_t sync_send1(socket_type s, state_type state, const void* data, - size_t size, int flags, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to write 0 bytes to a stream is a no-op. - if (size == 0 && (state & stream_oriented)) - { - ec.assign(0, ec.category()); - return 0; - } - - // Read some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_write(s, 0, -1, ec) < 0) - return 0; - } -} - -#if defined(ASIO_HAS_IOCP) - -void complete_iocp_send( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec) -{ - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (cancel_token.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } -} - -#else // defined(ASIO_HAS_IOCP) - -bool non_blocking_send(socket_type s, - const buf* bufs, size_t count, int flags, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_send1(socket_type s, - const void* data, size_t size, int flags, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -#endif // defined(ASIO_HAS_IOCP) - -signed_size_type sendto(socket_type s, const buf* bufs, size_t count, - int flags, const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Send the data. - DWORD send_buf_count = static_cast(count); - DWORD bytes_transferred = 0; - int result = ::WSASendTo(s, const_cast(bufs), - send_buf_count, &bytes_transferred, flags, addr, - static_cast(addrlen), 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - msghdr msg = msghdr(); - init_msghdr_msg_name(msg.msg_name, addr); - msg.msg_namelen = static_cast(addrlen); - msg.msg_iov = const_cast(bufs); - msg.msg_iovlen = static_cast(count); -#if defined(ASIO_HAS_MSG_NOSIGNAL) - flags |= MSG_NOSIGNAL; -#endif // defined(ASIO_HAS_MSG_NOSIGNAL) - signed_size_type result = ::sendmsg(s, &msg, flags); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -template -inline signed_size_type call_sendto(SockLenType msghdr::*, - socket_type s, const void* data, size_t size, int flags, - const socket_addr_type* addr, std::size_t addrlen) -{ - return ::sendto(s, static_cast(const_cast(data)), - size, flags, addr, (SockLenType)addrlen); -} - -signed_size_type sendto1(socket_type s, const void* data, size_t size, - int flags, const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - // Send the data. - WSABUF buf; - buf.buf = const_cast(static_cast(data)); - buf.len = static_cast(size); - DWORD bytes_transferred = 0; - int result = ::WSASendTo(s, &buf, 1, &bytes_transferred, - flags, addr, static_cast(addrlen), 0, 0); - get_last_error(ec, true); - if (ec.value() == ERROR_NETNAME_DELETED) - ec = asio::error::connection_reset; - else if (ec.value() == ERROR_PORT_UNREACHABLE) - ec = asio::error::connection_refused; - if (result != 0) - return socket_error_retval; - ec.assign(0, ec.category()); - return bytes_transferred; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -#if defined(ASIO_HAS_MSG_NOSIGNAL) - flags |= MSG_NOSIGNAL; -#endif // defined(ASIO_HAS_MSG_NOSIGNAL) - signed_size_type result = call_sendto(&msghdr::msg_namelen, - s, data, size, flags, addr, addrlen); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -size_t sync_sendto(socket_type s, state_type state, const buf* bufs, - size_t count, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // Write some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::sendto( - s, bufs, count, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_write(s, 0, -1, ec) < 0) - return 0; - } -} - -size_t sync_sendto1(socket_type s, state_type state, const void* data, - size_t size, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // Write some data. - for (;;) - { - // Try to complete the operation without blocking. - signed_size_type bytes = socket_ops::sendto1( - s, data, size, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - return bytes; - - // Operation failed. - if ((state & user_set_non_blocking) - || (ec != asio::error::would_block - && ec != asio::error::try_again)) - return 0; - - // Wait for socket to become ready. - if (socket_ops::poll_write(s, 0, -1, ec) < 0) - return 0; - } -} - -#if !defined(ASIO_HAS_IOCP) - -bool non_blocking_sendto(socket_type s, - const buf* bufs, size_t count, int flags, - const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = socket_ops::sendto( - s, bufs, count, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -bool non_blocking_sendto1(socket_type s, - const void* data, size_t size, int flags, - const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec, size_t& bytes_transferred) -{ - for (;;) - { - // Write some data. - signed_size_type bytes = socket_ops::sendto1( - s, data, size, flags, addr, addrlen, ec); - - // Check if operation succeeded. - if (bytes >= 0) - { - bytes_transferred = bytes; - return true; - } - - // Retry operation if interrupted by signal. - if (ec == asio::error::interrupted) - continue; - - // Check if we need to run the operation again. - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return false; - - // Operation failed. - bytes_transferred = 0; - return true; - } -} - -#endif // !defined(ASIO_HAS_IOCP) - -socket_type socket(int af, int type, int protocol, - asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - socket_type s = ::WSASocketW(af, type, protocol, 0, 0, WSA_FLAG_OVERLAPPED); - get_last_error(ec, s == invalid_socket); - if (s == invalid_socket) - return s; - - if (af == ASIO_OS_DEF(AF_INET6)) - { - // Try to enable the POSIX default behaviour of having IPV6_V6ONLY set to - // false. This will only succeed on Windows Vista and later versions of - // Windows, where a dual-stack IPv4/v6 implementation is available. - DWORD optval = 0; - ::setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, - reinterpret_cast(&optval), sizeof(optval)); - } - - return s; -#elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__) - socket_type s = ::socket(af, type, protocol); - get_last_error(ec, s < 0); - - int optval = 1; - int result = ::setsockopt(s, SOL_SOCKET, - SO_NOSIGPIPE, &optval, sizeof(optval)); - get_last_error(ec, result != 0); - if (result != 0) - { - ::close(s); - return invalid_socket; - } - - return s; -#else - int s = ::socket(af, type, protocol); - get_last_error(ec, s < 0); - return s; -#endif -} - -template -inline int call_setsockopt(SockLenType msghdr::*, - socket_type s, int level, int optname, - const void* optval, std::size_t optlen) -{ - return ::setsockopt(s, level, optname, - (const char*)optval, (SockLenType)optlen); -} - -int setsockopt(socket_type s, state_type& state, int level, int optname, - const void* optval, std::size_t optlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - if (level == custom_socket_option_level && optname == always_fail_option) - { - ec = asio::error::invalid_argument; - return socket_error_retval; - } - - if (level == custom_socket_option_level - && optname == enable_connection_aborted_option) - { - if (optlen != sizeof(int)) - { - ec = asio::error::invalid_argument; - return socket_error_retval; - } - - if (*static_cast(optval)) - state |= enable_connection_aborted; - else - state &= ~enable_connection_aborted; - ec.assign(0, ec.category()); - return 0; - } - - if (level == SOL_SOCKET && optname == SO_LINGER) - state |= user_set_linger; - -#if defined(__BORLANDC__) - // Mysteriously, using the getsockopt and setsockopt functions directly with - // Borland C++ results in incorrect values being set and read. The bug can be - // worked around by using function addresses resolved with GetProcAddress. - if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32")) - { - typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int); - if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt")) - { - int result = sso(s, level, optname, - reinterpret_cast(optval), - static_cast(optlen)); - get_last_error(ec, result != 0); - return result; - } - } - ec = asio::error::fault; - return socket_error_retval; -#else // defined(__BORLANDC__) - int result = call_setsockopt(&msghdr::msg_namelen, - s, level, optname, optval, optlen); - get_last_error(ec, result != 0); - if (result == 0) - { -#if defined(__MACH__) && defined(__APPLE__) \ - || defined(__NetBSD__) || defined(__FreeBSD__) \ - || defined(__OpenBSD__) || defined(__QNX__) - // To implement portable behaviour for SO_REUSEADDR with UDP sockets we - // need to also set SO_REUSEPORT on BSD-based platforms. - if ((state & datagram_oriented) - && level == SOL_SOCKET && optname == SO_REUSEADDR) - { - call_setsockopt(&msghdr::msg_namelen, s, - SOL_SOCKET, SO_REUSEPORT, optval, optlen); - } -#endif - } - - return result; -#endif // defined(__BORLANDC__) -} - -template -inline int call_getsockopt(SockLenType msghdr::*, - socket_type s, int level, int optname, - void* optval, std::size_t* optlen) -{ - SockLenType tmp_optlen = (SockLenType)*optlen; - int result = ::getsockopt(s, level, optname, (char*)optval, &tmp_optlen); - *optlen = (std::size_t)tmp_optlen; - return result; -} - -int getsockopt(socket_type s, state_type state, int level, int optname, - void* optval, size_t* optlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - if (level == custom_socket_option_level && optname == always_fail_option) - { - ec = asio::error::invalid_argument; - return socket_error_retval; - } - - if (level == custom_socket_option_level - && optname == enable_connection_aborted_option) - { - if (*optlen != sizeof(int)) - { - ec = asio::error::invalid_argument; - return socket_error_retval; - } - - *static_cast(optval) = (state & enable_connection_aborted) ? 1 : 0; - ec.assign(0, ec.category()); - return 0; - } - -#if defined(__BORLANDC__) - // Mysteriously, using the getsockopt and setsockopt functions directly with - // Borland C++ results in incorrect values being set and read. The bug can be - // worked around by using function addresses resolved with GetProcAddress. - if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32")) - { - typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*); - if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt")) - { - int tmp_optlen = static_cast(*optlen); - int result = gso(s, level, optname, - reinterpret_cast(optval), &tmp_optlen); - get_last_error(ec, result != 0); - *optlen = static_cast(tmp_optlen); - if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY - && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD)) - { - // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are - // only supported on Windows Vista and later. To simplify program logic - // we will fake success of getting this option and specify that the - // value is non-zero (i.e. true). This corresponds to the behavior of - // IPv6 sockets on Windows platforms pre-Vista. - *static_cast(optval) = 1; - ec.assign(0, ec.category()); - } - return result; - } - } - ec = asio::error::fault; - return socket_error_retval; -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = call_getsockopt(&msghdr::msg_namelen, - s, level, optname, optval, optlen); - get_last_error(ec, result != 0); - if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY - && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD)) - { - // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are only - // supported on Windows Vista and later. To simplify program logic we will - // fake success of getting this option and specify that the value is - // non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets - // on Windows platforms pre-Vista. - *static_cast(optval) = 1; - ec.assign(0, ec.category()); - } - return result; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = call_getsockopt(&msghdr::msg_namelen, - s, level, optname, optval, optlen); - get_last_error(ec, result != 0); -#if defined(__linux__) - if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int) - && (optname == SO_SNDBUF || optname == SO_RCVBUF)) - { - // On Linux, setting SO_SNDBUF or SO_RCVBUF to N actually causes the kernel - // to set the buffer size to N*2. Linux puts additional stuff into the - // buffers so that only about half is actually available to the application. - // The retrieved value is divided by 2 here to make it appear as though the - // correct value has been set. - *static_cast(optval) /= 2; - } -#endif // defined(__linux__) - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -template -inline int call_getpeername(SockLenType msghdr::*, - socket_type s, socket_addr_type* addr, std::size_t* addrlen) -{ - SockLenType tmp_addrlen = (SockLenType)*addrlen; - int result = ::getpeername(s, addr, &tmp_addrlen); - *addrlen = (std::size_t)tmp_addrlen; - return result; -} - -int getpeername(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, bool cached, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) \ - || defined(__CYGWIN__) - if (cached) - { - // Check if socket is still connected. - DWORD connect_time = 0; - size_t connect_time_len = sizeof(connect_time); - if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_CONNECT_TIME, - &connect_time, &connect_time_len, ec) == socket_error_retval) - { - return socket_error_retval; - } - if (connect_time == 0xFFFFFFFF) - { - ec = asio::error::not_connected; - return socket_error_retval; - } - - // The cached value is still valid. - ec.assign(0, ec.category()); - return 0; - } -#else // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) - // || defined(__CYGWIN__) - (void)cached; -#endif // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP) - // || defined(__CYGWIN__) - - int result = call_getpeername(&msghdr::msg_namelen, s, addr, addrlen); - get_last_error(ec, result != 0); - return result; -} - -template -inline int call_getsockname(SockLenType msghdr::*, - socket_type s, socket_addr_type* addr, std::size_t* addrlen) -{ - SockLenType tmp_addrlen = (SockLenType)*addrlen; - int result = ::getsockname(s, addr, &tmp_addrlen); - *addrlen = (std::size_t)tmp_addrlen; - return result; -} - -int getsockname(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - - int result = call_getsockname(&msghdr::msg_namelen, s, addr, addrlen); - get_last_error(ec, result != 0); - return result; -} - -int ioctl(socket_type s, state_type& state, int cmd, - ioctl_arg_type* arg, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - int result = ::ioctlsocket(s, cmd, arg); -#elif defined(__MACH__) && defined(__APPLE__) \ - || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) - int result = ::ioctl(s, static_cast(cmd), arg); -#else - int result = ::ioctl(s, cmd, arg); -#endif - get_last_error(ec, result < 0); - if (result >= 0) - { - // When updating the non-blocking mode we always perform the ioctl syscall, - // even if the flags would otherwise indicate that the socket is already in - // the correct state. This ensures that the underlying socket is put into - // the state that has been requested by the user. If the ioctl syscall was - // successful then we need to update the flags to match. - if (cmd == static_cast(FIONBIO)) - { - if (*arg) - { - state |= user_set_non_blocking; - } - else - { - // Clearing the non-blocking mode always overrides any internally-set - // non-blocking flag. Any subsequent asynchronous operations will need - // to re-enable non-blocking I/O. - state &= ~(user_set_non_blocking | internal_non_blocking); - } - } - } - - return result; -} - -int select(int nfds, fd_set* readfds, fd_set* writefds, - fd_set* exceptfds, timeval* timeout, asio::error_code& ec) -{ -#if defined(__EMSCRIPTEN__) - exceptfds = 0; -#endif // defined(__EMSCRIPTEN__) -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - if (!readfds && !writefds && !exceptfds && timeout) - { - DWORD milliseconds = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - if (milliseconds == 0) - milliseconds = 1; // Force context switch. - ::Sleep(milliseconds); - ec.assign(0, ec.category()); - return 0; - } - - // The select() call allows timeout values measured in microseconds, but the - // system clock (as wrapped by boost::posix_time::microsec_clock) typically - // has a resolution of 10 milliseconds. This can lead to a spinning select - // reactor, meaning increased CPU usage, when waiting for the earliest - // scheduled timeout if it's less than 10 milliseconds away. To avoid a tight - // spin we'll use a minimum timeout of 1 millisecond. - if (timeout && timeout->tv_sec == 0 - && timeout->tv_usec > 0 && timeout->tv_usec < 1000) - timeout->tv_usec = 1000; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#if defined(__hpux) && defined(__SELECT) - timespec ts; - ts.tv_sec = timeout ? timeout->tv_sec : 0; - ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0; - int result = ::pselect(nfds, readfds, - writefds, exceptfds, timeout ? &ts : 0, 0); -#else - int result = ::select(nfds, readfds, writefds, exceptfds, timeout); -#endif - get_last_error(ec, result < 0); - return result; -} - -int poll_read(socket_type s, state_type state, - int msec, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - fd_set fds; - FD_ZERO(&fds); - FD_SET(s, &fds); - timeval timeout_obj; - timeval* timeout; - if (state & user_set_non_blocking) - { - timeout_obj.tv_sec = 0; - timeout_obj.tv_usec = 0; - timeout = &timeout_obj; - } - else if (msec >= 0) - { - timeout_obj.tv_sec = msec / 1000; - timeout_obj.tv_usec = (msec % 1000) * 1000; - timeout = &timeout_obj; - } - else - timeout = 0; - int result = ::select(s + 1, &fds, 0, 0, timeout); - get_last_error(ec, result < 0); -#else // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - pollfd fds; - fds.fd = s; - fds.events = POLLIN; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : msec; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -int poll_write(socket_type s, state_type state, - int msec, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - fd_set fds; - FD_ZERO(&fds); - FD_SET(s, &fds); - timeval timeout_obj; - timeval* timeout; - if (state & user_set_non_blocking) - { - timeout_obj.tv_sec = 0; - timeout_obj.tv_usec = 0; - timeout = &timeout_obj; - } - else if (msec >= 0) - { - timeout_obj.tv_sec = msec / 1000; - timeout_obj.tv_usec = (msec % 1000) * 1000; - timeout = &timeout_obj; - } - else - timeout = 0; - int result = ::select(s + 1, 0, &fds, 0, timeout); - get_last_error(ec, result < 0); -#else // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - pollfd fds; - fds.fd = s; - fds.events = POLLOUT; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : msec; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -int poll_error(socket_type s, state_type state, - int msec, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - fd_set fds; - FD_ZERO(&fds); - FD_SET(s, &fds); - timeval timeout_obj; - timeval* timeout; - if (state & user_set_non_blocking) - { - timeout_obj.tv_sec = 0; - timeout_obj.tv_usec = 0; - timeout = &timeout_obj; - } - else if (msec >= 0) - { - timeout_obj.tv_sec = msec / 1000; - timeout_obj.tv_usec = (msec % 1000) * 1000; - timeout = &timeout_obj; - } - else - timeout = 0; - int result = ::select(s + 1, 0, 0, &fds, timeout); - get_last_error(ec, result < 0); -#else // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - pollfd fds; - fds.fd = s; - fds.events = POLLPRI | POLLERR | POLLHUP; - fds.revents = 0; - int timeout = (state & user_set_non_blocking) ? 0 : msec; - int result = ::poll(&fds, 1, timeout); - get_last_error(ec, result < 0); -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - if (result == 0) - if (state & user_set_non_blocking) - ec = asio::error::would_block; - return result; -} - -int poll_connect(socket_type s, int msec, asio::error_code& ec) -{ - if (s == invalid_socket) - { - ec = asio::error::bad_descriptor; - return socket_error_retval; - } - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - fd_set write_fds; - FD_ZERO(&write_fds); - FD_SET(s, &write_fds); - fd_set except_fds; - FD_ZERO(&except_fds); - FD_SET(s, &except_fds); - timeval timeout_obj; - timeval* timeout; - if (msec >= 0) - { - timeout_obj.tv_sec = msec / 1000; - timeout_obj.tv_usec = (msec % 1000) * 1000; - timeout = &timeout_obj; - } - else - timeout = 0; - int result = ::select(s + 1, 0, &write_fds, &except_fds, timeout); - get_last_error(ec, result < 0); - return result; -#else // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - pollfd fds; - fds.fd = s; - fds.events = POLLOUT; - fds.revents = 0; - int result = ::poll(&fds, 1, msec); - get_last_error(ec, result < 0); - return result; -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) -} - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -const char* inet_ntop(int af, const void* src, char* dest, size_t length, - unsigned long scope_id, asio::error_code& ec) -{ - clear_last_error(); -#if defined(ASIO_WINDOWS_RUNTIME) - using namespace std; // For sprintf. - const unsigned char* bytes = static_cast(src); - if (af == ASIO_OS_DEF(AF_INET)) - { - sprintf_s(dest, length, "%u.%u.%u.%u", - bytes[0], bytes[1], bytes[2], bytes[3]); - return dest; - } - else if (af == ASIO_OS_DEF(AF_INET6)) - { - size_t n = 0, b = 0, z = 0; - while (n < length && b < 16) - { - if (bytes[b] == 0 && bytes[b + 1] == 0 && z == 0) - { - do b += 2; while (b < 16 && bytes[b] == 0 && bytes[b + 1] == 0); - n += sprintf_s(dest + n, length - n, ":%s", b < 16 ? "" : ":"), ++z; - } - else - { - n += sprintf_s(dest + n, length - n, "%s%x", b ? ":" : "", - (static_cast(bytes[b]) << 8) | bytes[b + 1]); - b += 2; - } - } - if (scope_id) - n += sprintf_s(dest + n, length - n, "%%%lu", scope_id); - return dest; - } - else - { - ec = asio::error::address_family_not_supported; - return 0; - } -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) - using namespace std; // For memcpy. - - if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6)) - { - ec = asio::error::address_family_not_supported; - return 0; - } - - union - { - socket_addr_type base; - sockaddr_storage_type storage; - sockaddr_in4_type v4; - sockaddr_in6_type v6; - } address; - DWORD address_length; - if (af == ASIO_OS_DEF(AF_INET)) - { - address_length = sizeof(sockaddr_in4_type); - address.v4.sin_family = ASIO_OS_DEF(AF_INET); - address.v4.sin_port = 0; - memcpy(&address.v4.sin_addr, src, sizeof(in4_addr_type)); - } - else // AF_INET6 - { - address_length = sizeof(sockaddr_in6_type); - address.v6.sin6_family = ASIO_OS_DEF(AF_INET6); - address.v6.sin6_port = 0; - address.v6.sin6_flowinfo = 0; - address.v6.sin6_scope_id = scope_id; - memcpy(&address.v6.sin6_addr, src, sizeof(in6_addr_type)); - } - - DWORD string_length = static_cast(length); -#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800)) - LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR)); - int result = ::WSAAddressToStringW(&address.base, - address_length, 0, string_buffer, &string_length); - get_last_error(ec, true); - ::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1, - dest, static_cast(length), 0, 0); -#else - int result = ::WSAAddressToStringA(&address.base, - address_length, 0, dest, &string_length); - get_last_error(ec, true); -#endif - - // Windows may set error code on success. - if (result != socket_error_retval) - ec.assign(0, ec.category()); - - // Windows may not set an error code on failure. - else if (result == socket_error_retval && !ec) - ec = asio::error::invalid_argument; - - return result == socket_error_retval ? 0 : dest; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - const char* result = ::inet_ntop(af, src, dest, static_cast(length)); - get_last_error(ec, true); - if (result == 0 && !ec) - ec = asio::error::invalid_argument; - if (result != 0 && af == ASIO_OS_DEF(AF_INET6) && scope_id != 0) - { - using namespace std; // For strcat and sprintf. - char if_name[(IF_NAMESIZE > 21 ? IF_NAMESIZE : 21) + 1] = "%"; - const in6_addr_type* ipv6_address = static_cast(src); - bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe) - && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80)); - bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff) - && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02)); - if ((!is_link_local && !is_multicast_link_local) - || if_indextoname(static_cast(scope_id), if_name + 1) == 0) - sprintf(if_name + 1, "%lu", scope_id); - strcat(dest, if_name); - } - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -int inet_pton(int af, const char* src, void* dest, - unsigned long* scope_id, asio::error_code& ec) -{ - clear_last_error(); -#if defined(ASIO_WINDOWS_RUNTIME) - using namespace std; // For sscanf. - unsigned char* bytes = static_cast(dest); - if (af == ASIO_OS_DEF(AF_INET)) - { - unsigned int b0, b1, b2, b3; - if (sscanf_s(src, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) != 4) - { - ec = asio::error::invalid_argument; - return -1; - } - if (b0 > 255 || b1 > 255 || b2 > 255 || b3 > 255) - { - ec = asio::error::invalid_argument; - return -1; - } - bytes[0] = static_cast(b0); - bytes[1] = static_cast(b1); - bytes[2] = static_cast(b2); - bytes[3] = static_cast(b3); - ec.assign(0, ec.category()); - return 1; - } - else if (af == ASIO_OS_DEF(AF_INET6)) - { - unsigned char* bytes = static_cast(dest); - std::memset(bytes, 0, 16); - unsigned char back_bytes[16] = { 0 }; - int num_front_bytes = 0, num_back_bytes = 0; - const char* p = src; - - enum { fword, fcolon, bword, scope, done } state = fword; - unsigned long current_word = 0; - while (state != done) - { - if (current_word > 0xFFFF) - { - ec = asio::error::invalid_argument; - return -1; - } - - switch (state) - { - case fword: - if (*p >= '0' && *p <= '9') - current_word = current_word * 16 + *p++ - '0'; - else if (*p >= 'a' && *p <= 'f') - current_word = current_word * 16 + *p++ - 'a' + 10; - else if (*p >= 'A' && *p <= 'F') - current_word = current_word * 16 + *p++ - 'A' + 10; - else - { - if (num_front_bytes == 16) - { - ec = asio::error::invalid_argument; - return -1; - } - - bytes[num_front_bytes++] = (current_word >> 8) & 0xFF; - bytes[num_front_bytes++] = current_word & 0xFF; - current_word = 0; - - if (*p == ':') - state = fcolon, ++p; - else if (*p == '%') - state = scope, ++p; - else if (*p == 0) - state = done; - else - { - ec = asio::error::invalid_argument; - return -1; - } - } - break; - - case fcolon: - if (*p == ':') - state = bword, ++p; - else - state = fword; - break; - - case bword: - if (*p >= '0' && *p <= '9') - current_word = current_word * 16 + *p++ - '0'; - else if (*p >= 'a' && *p <= 'f') - current_word = current_word * 16 + *p++ - 'a' + 10; - else if (*p >= 'A' && *p <= 'F') - current_word = current_word * 16 + *p++ - 'A' + 10; - else - { - if (num_front_bytes + num_back_bytes == 16) - { - ec = asio::error::invalid_argument; - return -1; - } - - back_bytes[num_back_bytes++] = (current_word >> 8) & 0xFF; - back_bytes[num_back_bytes++] = current_word & 0xFF; - current_word = 0; - - if (*p == ':') - state = bword, ++p; - else if (*p == '%') - state = scope, ++p; - else if (*p == 0) - state = done; - else - { - ec = asio::error::invalid_argument; - return -1; - } - } - break; - - case scope: - if (*p >= '0' && *p <= '9') - current_word = current_word * 10 + *p++ - '0'; - else if (*p == 0) - *scope_id = current_word, state = done; - else - { - ec = asio::error::invalid_argument; - return -1; - } - break; - - default: - break; - } - } - - for (int i = 0; i < num_back_bytes; ++i) - bytes[16 - num_back_bytes + i] = back_bytes[i]; - - ec.assign(0, ec.category()); - return 1; - } - else - { - ec = asio::error::address_family_not_supported; - return -1; - } -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) - using namespace std; // For memcpy and strcmp. - - if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6)) - { - ec = asio::error::address_family_not_supported; - return -1; - } - - union - { - socket_addr_type base; - sockaddr_storage_type storage; - sockaddr_in4_type v4; - sockaddr_in6_type v6; - } address; - int address_length = sizeof(sockaddr_storage_type); -#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800)) - int num_wide_chars = static_cast(strlen(src)) + 1; - LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR)); - ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars); - int result = ::WSAStringToAddressW(wide_buffer, - af, 0, &address.base, &address_length); - get_last_error(ec, true); -#else - int result = ::WSAStringToAddressA(const_cast(src), - af, 0, &address.base, &address_length); - get_last_error(ec, true); -#endif - - if (af == ASIO_OS_DEF(AF_INET)) - { - if (result != socket_error_retval) - { - memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type)); - ec.assign(0, ec.category()); - } - else if (strcmp(src, "255.255.255.255") == 0) - { - static_cast(dest)->s_addr = INADDR_NONE; - ec.assign(0, ec.category()); - } - } - else // AF_INET6 - { - if (result != socket_error_retval) - { - memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type)); - if (scope_id) - *scope_id = address.v6.sin6_scope_id; - ec.assign(0, ec.category()); - } - } - - // Windows may not set an error code on failure. - if (result == socket_error_retval && !ec) - ec = asio::error::invalid_argument; - - if (result != socket_error_retval) - ec.assign(0, ec.category()); - - return result == socket_error_retval ? -1 : 1; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - using namespace std; // For strchr, memcpy and atoi. - - // On some platforms, inet_pton fails if an address string contains a scope - // id. Detect and remove the scope id before passing the string to inet_pton. - const bool is_v6 = (af == ASIO_OS_DEF(AF_INET6)); - const char* if_name = is_v6 ? strchr(src, '%') : 0; - char src_buf[max_addr_v6_str_len + 1]; - const char* src_ptr = src; - if (if_name != 0) - { - if (if_name - src > max_addr_v6_str_len) - { - ec = asio::error::invalid_argument; - return 0; - } - memcpy(src_buf, src, if_name - src); - src_buf[if_name - src] = 0; - src_ptr = src_buf; - } - - int result = ::inet_pton(af, src_ptr, dest); - get_last_error(ec, true); - if (result <= 0 && !ec) - ec = asio::error::invalid_argument; - if (result > 0 && is_v6 && scope_id) - { - using namespace std; // For strchr and atoi. - *scope_id = 0; - if (if_name != 0) - { - in6_addr_type* ipv6_address = static_cast(dest); - bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe) - && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80)); - bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff) - && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02)); - if (is_link_local || is_multicast_link_local) - *scope_id = if_nametoindex(if_name + 1); - if (*scope_id == 0) - *scope_id = atoi(if_name + 1); - } - } - return result; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -} - -int gethostname(char* name, int namelen, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - try - { - using namespace Windows::Foundation::Collections; - using namespace Windows::Networking; - using namespace Windows::Networking::Connectivity; - IVectorView^ hostnames = NetworkInformation::GetHostNames(); - for (unsigned i = 0; i < hostnames->Size; ++i) - { - HostName^ hostname = hostnames->GetAt(i); - if (hostname->Type == HostNameType::DomainName) - { - std::wstring_convert> converter; - std::string raw_name = converter.to_bytes(hostname->RawName->Data()); - if (namelen > 0 && raw_name.size() < static_cast(namelen)) - { - strcpy_s(name, namelen, raw_name.c_str()); - return 0; - } - } - } - return -1; - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - return -1; - } -#else // defined(ASIO_WINDOWS_RUNTIME) - int result = ::gethostname(name, namelen); - get_last_error(ec, result != 0); - return result; -#endif // defined(ASIO_WINDOWS_RUNTIME) -} - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#if !defined(ASIO_HAS_GETADDRINFO) - -// The following functions are only needed for emulation of getaddrinfo and -// getnameinfo. - -inline asio::error_code translate_netdb_error(int error) -{ - switch (error) - { - case 0: - return asio::error_code(); - case HOST_NOT_FOUND: - return asio::error::host_not_found; - case TRY_AGAIN: - return asio::error::host_not_found_try_again; - case NO_RECOVERY: - return asio::error::no_recovery; - case NO_DATA: - return asio::error::no_data; - default: - ASIO_ASSERT(false); - return asio::error::invalid_argument; - } -} - -inline hostent* gethostbyaddr(const char* addr, int length, int af, - hostent* result, char* buffer, int buflength, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - (void)(buffer); - (void)(buflength); - hostent* retval = ::gethostbyaddr(addr, length, af); - get_last_error(ec, !retval); - if (!retval) - return 0; - *result = *retval; - return retval; -#elif defined(__sun) || defined(__QNX__) - int error = 0; - hostent* retval = ::gethostbyaddr_r(addr, length, - af, result, buffer, buflength, &error); - get_last_error(ec, !retval); - if (error) - ec = translate_netdb_error(error); - return retval; -#elif defined(__MACH__) && defined(__APPLE__) - (void)(buffer); - (void)(buflength); - int error = 0; - hostent* retval = ::getipnodebyaddr(addr, length, af, &error); - get_last_error(ec, !retval); - if (error) - ec = translate_netdb_error(error); - if (!retval) - return 0; - *result = *retval; - return retval; -#else - hostent* retval = 0; - int error = 0; - clear_last_error(); - ::gethostbyaddr_r(addr, length, af, result, - buffer, buflength, &retval, &error); - get_last_error(ec, true); - if (error) - ec = translate_netdb_error(error); - return retval; -#endif -} - -inline hostent* gethostbyname(const char* name, int af, struct hostent* result, - char* buffer, int buflength, int ai_flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - (void)(buffer); - (void)(buflength); - (void)(ai_flags); - if (af != ASIO_OS_DEF(AF_INET)) - { - ec = asio::error::address_family_not_supported; - return 0; - } - hostent* retval = ::gethostbyname(name); - get_last_error(ec, !retval); - if (!retval) - return 0; - *result = *retval; - return result; -#elif defined(__sun) || defined(__QNX__) - (void)(ai_flags); - if (af != ASIO_OS_DEF(AF_INET)) - { - ec = asio::error::address_family_not_supported; - return 0; - } - int error = 0; - hostent* retval = ::gethostbyname_r(name, result, buffer, buflength, &error); - get_last_error(ec, !retval); - if (error) - ec = translate_netdb_error(error); - return retval; -#elif defined(__MACH__) && defined(__APPLE__) - (void)(buffer); - (void)(buflength); - int error = 0; - hostent* retval = ::getipnodebyname(name, af, ai_flags, &error); - get_last_error(ec, !retval); - if (error) - ec = translate_netdb_error(error); - if (!retval) - return 0; - *result = *retval; - return retval; -#else - (void)(ai_flags); - if (af != ASIO_OS_DEF(AF_INET)) - { - ec = asio::error::address_family_not_supported; - return 0; - } - hostent* retval = 0; - int error = 0; - clear_last_error(); - ::gethostbyname_r(name, result, buffer, buflength, &retval, &error); - get_last_error(ec, true); - if (error) - ec = translate_netdb_error(error); - return retval; -#endif -} - -inline void freehostent(hostent* h) -{ -#if defined(__MACH__) && defined(__APPLE__) - if (h) - ::freehostent(h); -#else - (void)(h); -#endif -} - -// Emulation of getaddrinfo based on implementation in: -// Stevens, W. R., UNIX Network Programming Vol. 1, 2nd Ed., Prentice-Hall 1998. - -struct gai_search -{ - const char* host; - int family; -}; - -inline int gai_nsearch(const char* host, - const addrinfo_type* hints, gai_search (&search)[2]) -{ - int search_count = 0; - if (host == 0 || host[0] == '\0') - { - if (hints->ai_flags & AI_PASSIVE) - { - // No host and AI_PASSIVE implies wildcard bind. - switch (hints->ai_family) - { - case ASIO_OS_DEF(AF_INET): - search[search_count].host = "0.0.0.0"; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - case ASIO_OS_DEF(AF_INET6): - search[search_count].host = "0::0"; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - break; - case ASIO_OS_DEF(AF_UNSPEC): - search[search_count].host = "0::0"; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - search[search_count].host = "0.0.0.0"; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - default: - break; - } - } - else - { - // No host and not AI_PASSIVE means connect to local host. - switch (hints->ai_family) - { - case ASIO_OS_DEF(AF_INET): - search[search_count].host = "localhost"; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - case ASIO_OS_DEF(AF_INET6): - search[search_count].host = "localhost"; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - break; - case ASIO_OS_DEF(AF_UNSPEC): - search[search_count].host = "localhost"; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - search[search_count].host = "localhost"; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - default: - break; - } - } - } - else - { - // Host is specified. - switch (hints->ai_family) - { - case ASIO_OS_DEF(AF_INET): - search[search_count].host = host; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - case ASIO_OS_DEF(AF_INET6): - search[search_count].host = host; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - break; - case ASIO_OS_DEF(AF_UNSPEC): - search[search_count].host = host; - search[search_count].family = ASIO_OS_DEF(AF_INET6); - ++search_count; - search[search_count].host = host; - search[search_count].family = ASIO_OS_DEF(AF_INET); - ++search_count; - break; - default: - break; - } - } - return search_count; -} - -template -inline T* gai_alloc(std::size_t size = sizeof(T)) -{ - using namespace std; - T* p = static_cast(::operator new(size, std::nothrow)); - if (p) - memset(p, 0, size); - return p; -} - -inline void gai_free(void* p) -{ - ::operator delete(p); -} - -inline void gai_strcpy(char* target, const char* source, std::size_t max_size) -{ - using namespace std; -#if defined(ASIO_HAS_SECURE_RTL) - strcpy_s(target, max_size, source); -#else // defined(ASIO_HAS_SECURE_RTL) - *target = 0; - if (max_size > 0) - strncat(target, source, max_size - 1); -#endif // defined(ASIO_HAS_SECURE_RTL) -} - -enum { gai_clone_flag = 1 << 30 }; - -inline int gai_aistruct(addrinfo_type*** next, const addrinfo_type* hints, - const void* addr, int family) -{ - using namespace std; - - addrinfo_type* ai = gai_alloc(); - if (ai == 0) - return EAI_MEMORY; - - ai->ai_next = 0; - **next = ai; - *next = &ai->ai_next; - - ai->ai_canonname = 0; - ai->ai_socktype = hints->ai_socktype; - if (ai->ai_socktype == 0) - ai->ai_flags |= gai_clone_flag; - ai->ai_protocol = hints->ai_protocol; - ai->ai_family = family; - - switch (ai->ai_family) - { - case ASIO_OS_DEF(AF_INET): - { - sockaddr_in4_type* sinptr = gai_alloc(); - if (sinptr == 0) - return EAI_MEMORY; - sinptr->sin_family = ASIO_OS_DEF(AF_INET); - memcpy(&sinptr->sin_addr, addr, sizeof(in4_addr_type)); - ai->ai_addr = reinterpret_cast(sinptr); - ai->ai_addrlen = sizeof(sockaddr_in4_type); - break; - } - case ASIO_OS_DEF(AF_INET6): - { - sockaddr_in6_type* sin6ptr = gai_alloc(); - if (sin6ptr == 0) - return EAI_MEMORY; - sin6ptr->sin6_family = ASIO_OS_DEF(AF_INET6); - memcpy(&sin6ptr->sin6_addr, addr, sizeof(in6_addr_type)); - ai->ai_addr = reinterpret_cast(sin6ptr); - ai->ai_addrlen = sizeof(sockaddr_in6_type); - break; - } - default: - break; - } - - return 0; -} - -inline addrinfo_type* gai_clone(addrinfo_type* ai) -{ - using namespace std; - - addrinfo_type* new_ai = gai_alloc(); - if (new_ai == 0) - return new_ai; - - new_ai->ai_next = ai->ai_next; - ai->ai_next = new_ai; - - new_ai->ai_flags = 0; - new_ai->ai_family = ai->ai_family; - new_ai->ai_socktype = ai->ai_socktype; - new_ai->ai_protocol = ai->ai_protocol; - new_ai->ai_canonname = 0; - new_ai->ai_addrlen = ai->ai_addrlen; - new_ai->ai_addr = gai_alloc(ai->ai_addrlen); - memcpy(new_ai->ai_addr, ai->ai_addr, ai->ai_addrlen); - - return new_ai; -} - -inline int gai_port(addrinfo_type* aihead, int port, int socktype) -{ - int num_found = 0; - - for (addrinfo_type* ai = aihead; ai; ai = ai->ai_next) - { - if (ai->ai_flags & gai_clone_flag) - { - if (ai->ai_socktype != 0) - { - ai = gai_clone(ai); - if (ai == 0) - return -1; - // ai now points to newly cloned entry. - } - } - else if (ai->ai_socktype != socktype) - { - // Ignore if mismatch on socket type. - continue; - } - - ai->ai_socktype = socktype; - - switch (ai->ai_family) - { - case ASIO_OS_DEF(AF_INET): - { - sockaddr_in4_type* sinptr = - reinterpret_cast(ai->ai_addr); - sinptr->sin_port = port; - ++num_found; - break; - } - case ASIO_OS_DEF(AF_INET6): - { - sockaddr_in6_type* sin6ptr = - reinterpret_cast(ai->ai_addr); - sin6ptr->sin6_port = port; - ++num_found; - break; - } - default: - break; - } - } - - return num_found; -} - -inline int gai_serv(addrinfo_type* aihead, - const addrinfo_type* hints, const char* serv) -{ - using namespace std; - - int num_found = 0; - - if ( -#if defined(AI_NUMERICSERV) - (hints->ai_flags & AI_NUMERICSERV) || -#endif - isdigit(static_cast(serv[0]))) - { - int port = htons(atoi(serv)); - if (hints->ai_socktype) - { - // Caller specifies socket type. - int rc = gai_port(aihead, port, hints->ai_socktype); - if (rc < 0) - return EAI_MEMORY; - num_found += rc; - } - else - { - // Caller does not specify socket type. - int rc = gai_port(aihead, port, SOCK_STREAM); - if (rc < 0) - return EAI_MEMORY; - num_found += rc; - rc = gai_port(aihead, port, SOCK_DGRAM); - if (rc < 0) - return EAI_MEMORY; - num_found += rc; - } - } - else - { - // Try service name with TCP first, then UDP. - if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_STREAM) - { - servent* sptr = getservbyname(serv, "tcp"); - if (sptr != 0) - { - int rc = gai_port(aihead, sptr->s_port, SOCK_STREAM); - if (rc < 0) - return EAI_MEMORY; - num_found += rc; - } - } - if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_DGRAM) - { - servent* sptr = getservbyname(serv, "udp"); - if (sptr != 0) - { - int rc = gai_port(aihead, sptr->s_port, SOCK_DGRAM); - if (rc < 0) - return EAI_MEMORY; - num_found += rc; - } - } - } - - if (num_found == 0) - { - if (hints->ai_socktype == 0) - { - // All calls to getservbyname() failed. - return EAI_NONAME; - } - else - { - // Service not supported for socket type. - return EAI_SERVICE; - } - } - - return 0; -} - -inline int gai_echeck(const char* host, const char* service, - int flags, int family, int socktype, int protocol) -{ - (void)(flags); - (void)(protocol); - - // Host or service must be specified. - if (host == 0 || host[0] == '\0') - if (service == 0 || service[0] == '\0') - return EAI_NONAME; - - // Check combination of family and socket type. - switch (family) - { - case ASIO_OS_DEF(AF_UNSPEC): - break; - case ASIO_OS_DEF(AF_INET): - case ASIO_OS_DEF(AF_INET6): - if (service != 0 && service[0] != '\0') - if (socktype != 0 && socktype != SOCK_STREAM && socktype != SOCK_DGRAM) - return EAI_SOCKTYPE; - break; - default: - return EAI_FAMILY; - } - - return 0; -} - -inline void freeaddrinfo_emulation(addrinfo_type* aihead) -{ - addrinfo_type* ai = aihead; - while (ai) - { - gai_free(ai->ai_addr); - gai_free(ai->ai_canonname); - addrinfo_type* ainext = ai->ai_next; - gai_free(ai); - ai = ainext; - } -} - -inline int getaddrinfo_emulation(const char* host, const char* service, - const addrinfo_type* hintsp, addrinfo_type** result) -{ - // Set up linked list of addrinfo structures. - addrinfo_type* aihead = 0; - addrinfo_type** ainext = &aihead; - char* canon = 0; - - // Supply default hints if not specified by caller. - addrinfo_type hints = addrinfo_type(); - hints.ai_family = ASIO_OS_DEF(AF_UNSPEC); - if (hintsp) - hints = *hintsp; - - // If the resolution is not specifically for AF_INET6, remove the AI_V4MAPPED - // and AI_ALL flags. -#if defined(AI_V4MAPPED) - if (hints.ai_family != ASIO_OS_DEF(AF_INET6)) - hints.ai_flags &= ~AI_V4MAPPED; -#endif -#if defined(AI_ALL) - if (hints.ai_family != ASIO_OS_DEF(AF_INET6)) - hints.ai_flags &= ~AI_ALL; -#endif - - // Basic error checking. - int rc = gai_echeck(host, service, hints.ai_flags, hints.ai_family, - hints.ai_socktype, hints.ai_protocol); - if (rc != 0) - { - freeaddrinfo_emulation(aihead); - return rc; - } - - gai_search search[2]; - int search_count = gai_nsearch(host, &hints, search); - for (gai_search* sptr = search; sptr < search + search_count; ++sptr) - { - // Check for IPv4 dotted decimal string. - in4_addr_type inaddr; - asio::error_code ec; - if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET), - sptr->host, &inaddr, 0, ec) == 1) - { - if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC) - && hints.ai_family != ASIO_OS_DEF(AF_INET)) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - return EAI_FAMILY; - } - if (sptr->family == ASIO_OS_DEF(AF_INET)) - { - rc = gai_aistruct(&ainext, &hints, &inaddr, ASIO_OS_DEF(AF_INET)); - if (rc != 0) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - return rc; - } - } - continue; - } - - // Check for IPv6 hex string. - in6_addr_type in6addr; - if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6), - sptr->host, &in6addr, 0, ec) == 1) - { - if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC) - && hints.ai_family != ASIO_OS_DEF(AF_INET6)) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - return EAI_FAMILY; - } - if (sptr->family == ASIO_OS_DEF(AF_INET6)) - { - rc = gai_aistruct(&ainext, &hints, &in6addr, - ASIO_OS_DEF(AF_INET6)); - if (rc != 0) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - return rc; - } - } - continue; - } - - // Look up hostname. - hostent hent; - char hbuf[8192] = ""; - hostent* hptr = socket_ops::gethostbyname(sptr->host, - sptr->family, &hent, hbuf, sizeof(hbuf), hints.ai_flags, ec); - if (hptr == 0) - { - if (search_count == 2) - { - // Failure is OK if there are multiple searches. - continue; - } - freeaddrinfo_emulation(aihead); - gai_free(canon); - if (ec == asio::error::host_not_found) - return EAI_NONAME; - if (ec == asio::error::host_not_found_try_again) - return EAI_AGAIN; - if (ec == asio::error::no_recovery) - return EAI_FAIL; - if (ec == asio::error::no_data) - return EAI_NONAME; - return EAI_NONAME; - } - - // Check for address family mismatch if one was specified. - if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC) - && hints.ai_family != hptr->h_addrtype) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - socket_ops::freehostent(hptr); - return EAI_FAMILY; - } - - // Save canonical name first time. - if (host != 0 && host[0] != '\0' && hptr->h_name && hptr->h_name[0] - && (hints.ai_flags & AI_CANONNAME) && canon == 0) - { - std::size_t canon_len = strlen(hptr->h_name) + 1; - canon = gai_alloc(canon_len); - if (canon == 0) - { - freeaddrinfo_emulation(aihead); - socket_ops::freehostent(hptr); - return EAI_MEMORY; - } - gai_strcpy(canon, hptr->h_name, canon_len); - } - - // Create an addrinfo structure for each returned address. - for (char** ap = hptr->h_addr_list; *ap; ++ap) - { - rc = gai_aistruct(&ainext, &hints, *ap, hptr->h_addrtype); - if (rc != 0) - { - freeaddrinfo_emulation(aihead); - gai_free(canon); - socket_ops::freehostent(hptr); - return EAI_FAMILY; - } - } - - socket_ops::freehostent(hptr); - } - - // Check if we found anything. - if (aihead == 0) - { - gai_free(canon); - return EAI_NONAME; - } - - // Return canonical name in first entry. - if (host != 0 && host[0] != '\0' && (hints.ai_flags & AI_CANONNAME)) - { - if (canon) - { - aihead->ai_canonname = canon; - canon = 0; - } - else - { - std::size_t canonname_len = strlen(search[0].host) + 1; - aihead->ai_canonname = gai_alloc(canonname_len); - if (aihead->ai_canonname == 0) - { - freeaddrinfo_emulation(aihead); - return EAI_MEMORY; - } - gai_strcpy(aihead->ai_canonname, search[0].host, canonname_len); - } - } - gai_free(canon); - - // Process the service name. - if (service != 0 && service[0] != '\0') - { - rc = gai_serv(aihead, &hints, service); - if (rc != 0) - { - freeaddrinfo_emulation(aihead); - return rc; - } - } - - // Return result to caller. - *result = aihead; - return 0; -} - -inline asio::error_code getnameinfo_emulation( - const socket_addr_type* sa, std::size_t salen, char* host, - std::size_t hostlen, char* serv, std::size_t servlen, int flags, - asio::error_code& ec) -{ - using namespace std; - - const char* addr; - size_t addr_len; - unsigned short port; - switch (sa->sa_family) - { - case ASIO_OS_DEF(AF_INET): - if (salen != sizeof(sockaddr_in4_type)) - { - return ec = asio::error::invalid_argument; - } - addr = reinterpret_cast( - &reinterpret_cast(sa)->sin_addr); - addr_len = sizeof(in4_addr_type); - port = reinterpret_cast(sa)->sin_port; - break; - case ASIO_OS_DEF(AF_INET6): - if (salen != sizeof(sockaddr_in6_type)) - { - return ec = asio::error::invalid_argument; - } - addr = reinterpret_cast( - &reinterpret_cast(sa)->sin6_addr); - addr_len = sizeof(in6_addr_type); - port = reinterpret_cast(sa)->sin6_port; - break; - default: - return ec = asio::error::address_family_not_supported; - } - - if (host && hostlen > 0) - { - if (flags & NI_NUMERICHOST) - { - if (socket_ops::inet_ntop(sa->sa_family, addr, host, hostlen, 0, ec) == 0) - { - return ec; - } - } - else - { - hostent hent; - char hbuf[8192] = ""; - hostent* hptr = socket_ops::gethostbyaddr(addr, - static_cast(addr_len), sa->sa_family, - &hent, hbuf, sizeof(hbuf), ec); - if (hptr && hptr->h_name && hptr->h_name[0] != '\0') - { - if (flags & NI_NOFQDN) - { - char* dot = strchr(hptr->h_name, '.'); - if (dot) - { - *dot = 0; - } - } - gai_strcpy(host, hptr->h_name, hostlen); - socket_ops::freehostent(hptr); - } - else - { - socket_ops::freehostent(hptr); - if (flags & NI_NAMEREQD) - { - return ec = asio::error::host_not_found; - } - if (socket_ops::inet_ntop(sa->sa_family, - addr, host, hostlen, 0, ec) == 0) - { - return ec; - } - } - } - } - - if (serv && servlen > 0) - { - if (flags & NI_NUMERICSERV) - { - if (servlen < 6) - { - return ec = asio::error::no_buffer_space; - } -#if defined(ASIO_HAS_SECURE_RTL) - sprintf_s(serv, servlen, "%u", ntohs(port)); -#else // defined(ASIO_HAS_SECURE_RTL) - sprintf(serv, "%u", ntohs(port)); -#endif // defined(ASIO_HAS_SECURE_RTL) - } - else - { -#if defined(ASIO_HAS_PTHREADS) - static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - ::pthread_mutex_lock(&mutex); -#endif // defined(ASIO_HAS_PTHREADS) - servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0); - if (sptr && sptr->s_name && sptr->s_name[0] != '\0') - { - gai_strcpy(serv, sptr->s_name, servlen); - } - else - { - if (servlen < 6) - { - return ec = asio::error::no_buffer_space; - } -#if defined(ASIO_HAS_SECURE_RTL) - sprintf_s(serv, servlen, "%u", ntohs(port)); -#else // defined(ASIO_HAS_SECURE_RTL) - sprintf(serv, "%u", ntohs(port)); -#endif // defined(ASIO_HAS_SECURE_RTL) - } -#if defined(ASIO_HAS_PTHREADS) - ::pthread_mutex_unlock(&mutex); -#endif // defined(ASIO_HAS_PTHREADS) - } - } - - ec.assign(0, ec.category()); - return ec; -} - -#endif // !defined(ASIO_HAS_GETADDRINFO) - -inline asio::error_code translate_addrinfo_error(int error) -{ - switch (error) - { - case 0: - return asio::error_code(); - case EAI_AGAIN: - return asio::error::host_not_found_try_again; - case EAI_BADFLAGS: - return asio::error::invalid_argument; - case EAI_FAIL: - return asio::error::no_recovery; - case EAI_FAMILY: - return asio::error::address_family_not_supported; - case EAI_MEMORY: - return asio::error::no_memory; - case EAI_NONAME: -#if defined(EAI_ADDRFAMILY) - case EAI_ADDRFAMILY: -#endif -#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME) - case EAI_NODATA: -#endif - return asio::error::host_not_found; - case EAI_SERVICE: - return asio::error::service_not_found; - case EAI_SOCKTYPE: - return asio::error::socket_type_not_supported; - default: // Possibly the non-portable EAI_SYSTEM. -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - return asio::error_code( - WSAGetLastError(), asio::error::get_system_category()); -#else - return asio::error_code( - errno, asio::error::get_system_category()); -#endif - } -} - -asio::error_code getaddrinfo(const char* host, - const char* service, const addrinfo_type& hints, - addrinfo_type** result, asio::error_code& ec) -{ - host = (host && *host) ? host : 0; - service = (service && *service) ? service : 0; - clear_last_error(); -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(ASIO_HAS_GETADDRINFO) - // Building for Windows XP, Windows Server 2003, or later. - int error = ::getaddrinfo(host, service, &hints, result); - return ec = translate_addrinfo_error(error); -# else - // Building for Windows 2000 or earlier. - typedef int (WSAAPI *gai_t)(const char*, - const char*, const addrinfo_type*, addrinfo_type**); - if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32")) - { - if (gai_t gai = (gai_t)::GetProcAddress(winsock_module, "getaddrinfo")) - { - int error = gai(host, service, &hints, result); - return ec = translate_addrinfo_error(error); - } - } - int error = getaddrinfo_emulation(host, service, &hints, result); - return ec = translate_addrinfo_error(error); -# endif -#elif !defined(ASIO_HAS_GETADDRINFO) - int error = getaddrinfo_emulation(host, service, &hints, result); - return ec = translate_addrinfo_error(error); -#else - int error = ::getaddrinfo(host, service, &hints, result); -#if defined(__MACH__) && defined(__APPLE__) - using namespace std; // For isdigit and atoi. - if (error == 0 && service && isdigit(static_cast(service[0]))) - { - u_short_type port = host_to_network_short(atoi(service)); - for (addrinfo_type* ai = *result; ai; ai = ai->ai_next) - { - switch (ai->ai_family) - { - case ASIO_OS_DEF(AF_INET): - { - sockaddr_in4_type* sinptr = - reinterpret_cast(ai->ai_addr); - if (sinptr->sin_port == 0) - sinptr->sin_port = port; - break; - } - case ASIO_OS_DEF(AF_INET6): - { - sockaddr_in6_type* sin6ptr = - reinterpret_cast(ai->ai_addr); - if (sin6ptr->sin6_port == 0) - sin6ptr->sin6_port = port; - break; - } - default: - break; - } - } - } -#endif - return ec = translate_addrinfo_error(error); -#endif -} - -asio::error_code background_getaddrinfo( - const weak_cancel_token_type& cancel_token, const char* host, - const char* service, const addrinfo_type& hints, - addrinfo_type** result, asio::error_code& ec) -{ - if (cancel_token.expired()) - ec = asio::error::operation_aborted; - else - socket_ops::getaddrinfo(host, service, hints, result, ec); - return ec; -} - -void freeaddrinfo(addrinfo_type* ai) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(ASIO_HAS_GETADDRINFO) - // Building for Windows XP, Windows Server 2003, or later. - ::freeaddrinfo(ai); -# else - // Building for Windows 2000 or earlier. - typedef int (WSAAPI *fai_t)(addrinfo_type*); - if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32")) - { - if (fai_t fai = (fai_t)::GetProcAddress(winsock_module, "freeaddrinfo")) - { - fai(ai); - return; - } - } - freeaddrinfo_emulation(ai); -# endif -#elif !defined(ASIO_HAS_GETADDRINFO) - freeaddrinfo_emulation(ai); -#else - ::freeaddrinfo(ai); -#endif -} - -asio::error_code getnameinfo(const socket_addr_type* addr, - std::size_t addrlen, char* host, std::size_t hostlen, - char* serv, std::size_t servlen, int flags, asio::error_code& ec) -{ -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(ASIO_HAS_GETADDRINFO) - // Building for Windows XP, Windows Server 2003, or later. - clear_last_error(); - int error = ::getnameinfo(addr, static_cast(addrlen), - host, static_cast(hostlen), - serv, static_cast(servlen), flags); - return ec = translate_addrinfo_error(error); -# else - // Building for Windows 2000 or earlier. - typedef int (WSAAPI *gni_t)(const socket_addr_type*, - int, char*, DWORD, char*, DWORD, int); - if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32")) - { - if (gni_t gni = (gni_t)::GetProcAddress(winsock_module, "getnameinfo")) - { - clear_last_error(); - int error = gni(addr, static_cast(addrlen), - host, static_cast(hostlen), - serv, static_cast(servlen), flags); - return ec = translate_addrinfo_error(error); - } - } - clear_last_error(); - return getnameinfo_emulation(addr, addrlen, - host, hostlen, serv, servlen, flags, ec); -# endif -#elif !defined(ASIO_HAS_GETADDRINFO) - using namespace std; // For memcpy. - sockaddr_storage_type tmp_addr; - memcpy(&tmp_addr, addr, addrlen); - addr = reinterpret_cast(&tmp_addr); - clear_last_error(); - return getnameinfo_emulation(addr, addrlen, - host, hostlen, serv, servlen, flags, ec); -#else - clear_last_error(); - int error = ::getnameinfo(addr, addrlen, host, hostlen, serv, servlen, flags); - return ec = translate_addrinfo_error(error); -#endif -} - -asio::error_code sync_getnameinfo( - const socket_addr_type* addr, std::size_t addrlen, - char* host, std::size_t hostlen, char* serv, - std::size_t servlen, int sock_type, asio::error_code& ec) -{ - // First try resolving with the service name. If that fails try resolving - // but allow the service to be returned as a number. - int flags = (sock_type == SOCK_DGRAM) ? NI_DGRAM : 0; - socket_ops::getnameinfo(addr, addrlen, host, - hostlen, serv, servlen, flags, ec); - if (ec) - { - socket_ops::getnameinfo(addr, addrlen, host, hostlen, - serv, servlen, flags | NI_NUMERICSERV, ec); - } - - return ec; -} - -asio::error_code background_getnameinfo( - const weak_cancel_token_type& cancel_token, - const socket_addr_type* addr, std::size_t addrlen, - char* host, std::size_t hostlen, char* serv, - std::size_t servlen, int sock_type, asio::error_code& ec) -{ - if (cancel_token.expired()) - { - ec = asio::error::operation_aborted; - } - else - { - // First try resolving with the service name. If that fails try resolving - // but allow the service to be returned as a number. - int flags = (sock_type == SOCK_DGRAM) ? NI_DGRAM : 0; - socket_ops::getnameinfo(addr, addrlen, host, - hostlen, serv, servlen, flags, ec); - if (ec) - { - socket_ops::getnameinfo(addr, addrlen, host, hostlen, - serv, servlen, flags | NI_NUMERICSERV, ec); - } - } - - return ec; -} - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -u_long_type network_to_host_long(u_long_type value) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - unsigned char* value_p = reinterpret_cast(&value); - u_long_type result = (static_cast(value_p[0]) << 24) - | (static_cast(value_p[1]) << 16) - | (static_cast(value_p[2]) << 8) - | static_cast(value_p[3]); - return result; -#else // defined(ASIO_WINDOWS_RUNTIME) - return ntohl(value); -#endif // defined(ASIO_WINDOWS_RUNTIME) -} - -u_long_type host_to_network_long(u_long_type value) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - u_long_type result; - unsigned char* result_p = reinterpret_cast(&result); - result_p[0] = static_cast((value >> 24) & 0xFF); - result_p[1] = static_cast((value >> 16) & 0xFF); - result_p[2] = static_cast((value >> 8) & 0xFF); - result_p[3] = static_cast(value & 0xFF); - return result; -#else // defined(ASIO_WINDOWS_RUNTIME) - return htonl(value); -#endif // defined(ASIO_WINDOWS_RUNTIME) -} - -u_short_type network_to_host_short(u_short_type value) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - unsigned char* value_p = reinterpret_cast(&value); - u_short_type result = (static_cast(value_p[0]) << 8) - | static_cast(value_p[1]); - return result; -#else // defined(ASIO_WINDOWS_RUNTIME) - return ntohs(value); -#endif // defined(ASIO_WINDOWS_RUNTIME) -} - -u_short_type host_to_network_short(u_short_type value) -{ -#if defined(ASIO_WINDOWS_RUNTIME) - u_short_type result; - unsigned char* result_p = reinterpret_cast(&result); - result_p[0] = static_cast((value >> 8) & 0xFF); - result_p[1] = static_cast(value & 0xFF); - return result; -#else // defined(ASIO_WINDOWS_RUNTIME) - return htons(value); -#endif // defined(ASIO_WINDOWS_RUNTIME) -} - -} // namespace socket_ops -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SOCKET_OPS_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp deleted file mode 100644 index 69a6c061..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp +++ /dev/null @@ -1,185 +0,0 @@ -// -// detail/impl/socket_select_interrupter.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP -#define ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - -#include -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_select_interrupter.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -socket_select_interrupter::socket_select_interrupter() -{ - open_descriptors(); -} - -void socket_select_interrupter::open_descriptors() -{ - asio::error_code ec; - socket_holder acceptor(socket_ops::socket( - AF_INET, SOCK_STREAM, IPPROTO_TCP, ec)); - if (acceptor.get() == invalid_socket) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - int opt = 1; - socket_ops::state_type acceptor_state = 0; - socket_ops::setsockopt(acceptor.get(), acceptor_state, - SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt), ec); - - using namespace std; // For memset. - sockaddr_in4_type addr; - std::size_t addr_len = sizeof(addr); - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK); - addr.sin_port = 0; - if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr, - addr_len, ec) == socket_error_retval) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - if (socket_ops::getsockname(acceptor.get(), (socket_addr_type*)&addr, - &addr_len, ec) == socket_error_retval) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - // Some broken firewalls on Windows will intermittently cause getsockname to - // return 0.0.0.0 when the socket is actually bound to 127.0.0.1. We - // explicitly specify the target address here to work around this problem. - if (addr.sin_addr.s_addr == socket_ops::host_to_network_long(INADDR_ANY)) - addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK); - - if (socket_ops::listen(acceptor.get(), - SOMAXCONN, ec) == socket_error_retval) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - socket_holder client(socket_ops::socket( - AF_INET, SOCK_STREAM, IPPROTO_TCP, ec)); - if (client.get() == invalid_socket) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - if (socket_ops::connect(client.get(), (const socket_addr_type*)&addr, - addr_len, ec) == socket_error_retval) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - socket_holder server(socket_ops::accept(acceptor.get(), 0, 0, ec)); - if (server.get() == invalid_socket) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - ioctl_arg_type non_blocking = 1; - socket_ops::state_type client_state = 0; - if (socket_ops::ioctl(client.get(), client_state, - FIONBIO, &non_blocking, ec)) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - opt = 1; - socket_ops::setsockopt(client.get(), client_state, - IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec); - - non_blocking = 1; - socket_ops::state_type server_state = 0; - if (socket_ops::ioctl(server.get(), server_state, - FIONBIO, &non_blocking, ec)) - asio::detail::throw_error(ec, "socket_select_interrupter"); - - opt = 1; - socket_ops::setsockopt(server.get(), server_state, - IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec); - - read_descriptor_ = server.release(); - write_descriptor_ = client.release(); -} - -socket_select_interrupter::~socket_select_interrupter() -{ - close_descriptors(); -} - -void socket_select_interrupter::close_descriptors() -{ - asio::error_code ec; - socket_ops::state_type state = socket_ops::internal_non_blocking; - if (read_descriptor_ != invalid_socket) - socket_ops::close(read_descriptor_, state, true, ec); - if (write_descriptor_ != invalid_socket) - socket_ops::close(write_descriptor_, state, true, ec); -} - -void socket_select_interrupter::recreate() -{ - close_descriptors(); - - write_descriptor_ = invalid_socket; - read_descriptor_ = invalid_socket; - - open_descriptors(); -} - -void socket_select_interrupter::interrupt() -{ - char byte = 0; - socket_ops::buf b; - socket_ops::init_buf(b, &byte, 1); - asio::error_code ec; - socket_ops::send(write_descriptor_, &b, 1, 0, ec); -} - -bool socket_select_interrupter::reset() -{ - char data[1024]; - socket_ops::buf b; - socket_ops::init_buf(b, data, sizeof(data)); - asio::error_code ec; - for (;;) - { - int bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec); - if (bytes_read == sizeof(data)) - continue; - if (bytes_read > 0) - return true; - if (bytes_read == 0) - return false; - if (ec == asio::error::would_block - || ec == asio::error::try_again) - return true; - return false; - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.hpp deleted file mode 100644 index 8fe14545..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +++ /dev/null @@ -1,385 +0,0 @@ -// -// detail/impl/strand_executor_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_HPP -#define ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/call_stack.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/recycling_allocator.hpp" -#include "asio/executor_work_guard.hpp" -#include "asio/defer.hpp" -#include "asio/dispatch.hpp" -#include "asio/post.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class strand_executor_service::allocator_binder -{ -public: - typedef Allocator allocator_type; - - allocator_binder(ASIO_MOVE_ARG(F) f, const Allocator& a) - : f_(ASIO_MOVE_CAST(F)(f)), - allocator_(a) - { - } - - allocator_binder(const allocator_binder& other) - : f_(other.f_), - allocator_(other.allocator_) - { - } - -#if defined(ASIO_HAS_MOVE) - allocator_binder(allocator_binder&& other) - : f_(ASIO_MOVE_CAST(F)(other.f_)), - allocator_(ASIO_MOVE_CAST(allocator_type)(other.allocator_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - allocator_type get_allocator() const ASIO_NOEXCEPT - { - return allocator_; - } - - void operator()() - { - f_(); - } - -private: - F f_; - allocator_type allocator_; -}; - -template -class strand_executor_service::invoker::value - >::type> -{ -public: - invoker(const implementation_type& impl, Executor& ex) - : impl_(impl), - executor_(asio::prefer(ex, execution::outstanding_work.tracked)) - { - } - - invoker(const invoker& other) - : impl_(other.impl_), - executor_(other.executor_) - { - } - -#if defined(ASIO_HAS_MOVE) - invoker(invoker&& other) - : impl_(ASIO_MOVE_CAST(implementation_type)(other.impl_)), - executor_(ASIO_MOVE_CAST(executor_type)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - struct on_invoker_exit - { - invoker* this_; - - ~on_invoker_exit() - { - this_->impl_->mutex_->lock(); - this_->impl_->ready_queue_.push(this_->impl_->waiting_queue_); - bool more_handlers = this_->impl_->locked_ = - !this_->impl_->ready_queue_.empty(); - this_->impl_->mutex_->unlock(); - - if (more_handlers) - { - recycling_allocator allocator; - execution::execute( - asio::prefer( - asio::require(this_->executor_, - execution::blocking.never), - execution::allocator(allocator)), - ASIO_MOVE_CAST(invoker)(*this_)); - } - } - }; - - void operator()() - { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl_.get()); - - // Ensure the next handler, if any, is scheduled on block exit. - on_invoker_exit on_exit = { this }; - (void)on_exit; - - // Run all ready handlers. No lock is required since the ready queue is - // accessed only within the strand. - asio::error_code ec; - while (scheduler_operation* o = impl_->ready_queue_.front()) - { - impl_->ready_queue_.pop(); - o->complete(impl_.get(), ec, 0); - } - } - -private: - typedef typename decay< - typename prefer_result< - Executor, - execution::outstanding_work_t::tracked_t - >::type - >::type executor_type; - - implementation_type impl_; - executor_type executor_; -}; - -#if !defined(ASIO_NO_TS_EXECUTORS) - -template -class strand_executor_service::invoker::value - >::type> -{ -public: - invoker(const implementation_type& impl, Executor& ex) - : impl_(impl), - work_(ex) - { - } - - invoker(const invoker& other) - : impl_(other.impl_), - work_(other.work_) - { - } - -#if defined(ASIO_HAS_MOVE) - invoker(invoker&& other) - : impl_(ASIO_MOVE_CAST(implementation_type)(other.impl_)), - work_(ASIO_MOVE_CAST(executor_work_guard)(other.work_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - struct on_invoker_exit - { - invoker* this_; - - ~on_invoker_exit() - { - this_->impl_->mutex_->lock(); - this_->impl_->ready_queue_.push(this_->impl_->waiting_queue_); - bool more_handlers = this_->impl_->locked_ = - !this_->impl_->ready_queue_.empty(); - this_->impl_->mutex_->unlock(); - - if (more_handlers) - { - Executor ex(this_->work_.get_executor()); - recycling_allocator allocator; - ex.post(ASIO_MOVE_CAST(invoker)(*this_), allocator); - } - } - }; - - void operator()() - { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl_.get()); - - // Ensure the next handler, if any, is scheduled on block exit. - on_invoker_exit on_exit = { this }; - (void)on_exit; - - // Run all ready handlers. No lock is required since the ready queue is - // accessed only within the strand. - asio::error_code ec; - while (scheduler_operation* o = impl_->ready_queue_.front()) - { - impl_->ready_queue_.pop(); - o->complete(impl_.get(), ec, 0); - } - } - -private: - implementation_type impl_; - executor_work_guard work_; -}; - -#endif // !defined(ASIO_NO_TS_EXECUTORS) - -template -inline void strand_executor_service::execute(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, - typename enable_if< - can_query >::value - >::type*) -{ - return strand_executor_service::do_execute(impl, ex, - ASIO_MOVE_CAST(Function)(function), - asio::query(ex, execution::allocator)); -} - -template -inline void strand_executor_service::execute(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, - typename enable_if< - !can_query >::value - >::type*) -{ - return strand_executor_service::do_execute(impl, ex, - ASIO_MOVE_CAST(Function)(function), - std::allocator()); -} - -template -void strand_executor_service::do_execute(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, const Allocator& a) -{ - typedef typename decay::type function_type; - - // If the executor is not never-blocking, and we are already in the strand, - // then the function can run immediately. - if (asio::query(ex, execution::blocking) != execution::blocking.never - && call_stack::contains(impl.get())) - { - // Make a local, non-const copy of the function. - function_type tmp(ASIO_MOVE_CAST(Function)(function)); - - fenced_block b(fenced_block::full); - asio_handler_invoke_helpers::invoke(tmp, tmp); - return; - } - - // Allocate and construct an operation to wrap the function. - typedef executor_op op; - typename op::ptr p = { detail::addressof(a), op::ptr::allocate(a), 0 }; - p.p = new (p.v) op(ASIO_MOVE_CAST(Function)(function), a); - - ASIO_HANDLER_CREATION((impl->service_->context(), *p.p, - "strand_executor", impl.get(), 0, "execute")); - - // Add the function to the strand and schedule the strand if required. - bool first = enqueue(impl, p.p); - p.v = p.p = 0; - if (first) - { - execution::execute(ex, invoker(impl, ex)); - } -} - -template -void strand_executor_service::dispatch(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, const Allocator& a) -{ - typedef typename decay::type function_type; - - // If we are already in the strand then the function can run immediately. - if (call_stack::contains(impl.get())) - { - // Make a local, non-const copy of the function. - function_type tmp(ASIO_MOVE_CAST(Function)(function)); - - fenced_block b(fenced_block::full); - asio_handler_invoke_helpers::invoke(tmp, tmp); - return; - } - - // Allocate and construct an operation to wrap the function. - typedef executor_op op; - typename op::ptr p = { detail::addressof(a), op::ptr::allocate(a), 0 }; - p.p = new (p.v) op(ASIO_MOVE_CAST(Function)(function), a); - - ASIO_HANDLER_CREATION((impl->service_->context(), *p.p, - "strand_executor", impl.get(), 0, "dispatch")); - - // Add the function to the strand and schedule the strand if required. - bool first = enqueue(impl, p.p); - p.v = p.p = 0; - if (first) - { - asio::dispatch(ex, - allocator_binder, Allocator>( - invoker(impl, ex), a)); - } -} - -// Request invocation of the given function and return immediately. -template -void strand_executor_service::post(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, const Allocator& a) -{ - typedef typename decay::type function_type; - - // Allocate and construct an operation to wrap the function. - typedef executor_op op; - typename op::ptr p = { detail::addressof(a), op::ptr::allocate(a), 0 }; - p.p = new (p.v) op(ASIO_MOVE_CAST(Function)(function), a); - - ASIO_HANDLER_CREATION((impl->service_->context(), *p.p, - "strand_executor", impl.get(), 0, "post")); - - // Add the function to the strand and schedule the strand if required. - bool first = enqueue(impl, p.p); - p.v = p.p = 0; - if (first) - { - asio::post(ex, - allocator_binder, Allocator>( - invoker(impl, ex), a)); - } -} - -// Request invocation of the given function and return immediately. -template -void strand_executor_service::defer(const implementation_type& impl, - Executor& ex, ASIO_MOVE_ARG(Function) function, const Allocator& a) -{ - typedef typename decay::type function_type; - - // Allocate and construct an operation to wrap the function. - typedef executor_op op; - typename op::ptr p = { detail::addressof(a), op::ptr::allocate(a), 0 }; - p.p = new (p.v) op(ASIO_MOVE_CAST(Function)(function), a); - - ASIO_HANDLER_CREATION((impl->service_->context(), *p.p, - "strand_executor", impl.get(), 0, "defer")); - - // Add the function to the strand and schedule the strand if required. - bool first = enqueue(impl, p.p); - p.v = p.p = 0; - if (first) - { - asio::defer(ex, - allocator_binder, Allocator>( - invoker(impl, ex), a)); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.ipp deleted file mode 100644 index dfe64df4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_executor_service.ipp +++ /dev/null @@ -1,134 +0,0 @@ -// -// detail/impl/strand_executor_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_IPP -#define ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/strand_executor_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -strand_executor_service::strand_executor_service(execution_context& ctx) - : execution_context_service_base(ctx), - mutex_(), - salt_(0), - impl_list_(0) -{ -} - -void strand_executor_service::shutdown() -{ - op_queue ops; - - asio::detail::mutex::scoped_lock lock(mutex_); - - strand_impl* impl = impl_list_; - while (impl) - { - impl->mutex_->lock(); - impl->shutdown_ = true; - ops.push(impl->waiting_queue_); - ops.push(impl->ready_queue_); - impl->mutex_->unlock(); - impl = impl->next_; - } -} - -strand_executor_service::implementation_type -strand_executor_service::create_implementation() -{ - implementation_type new_impl(new strand_impl); - new_impl->locked_ = false; - new_impl->shutdown_ = false; - - asio::detail::mutex::scoped_lock lock(mutex_); - - // Select a mutex from the pool of shared mutexes. - std::size_t salt = salt_++; - std::size_t mutex_index = reinterpret_cast(new_impl.get()); - mutex_index += (reinterpret_cast(new_impl.get()) >> 3); - mutex_index ^= salt + 0x9e3779b9 + (mutex_index << 6) + (mutex_index >> 2); - mutex_index = mutex_index % num_mutexes; - if (!mutexes_[mutex_index].get()) - mutexes_[mutex_index].reset(new mutex); - new_impl->mutex_ = mutexes_[mutex_index].get(); - - // Insert implementation into linked list of all implementations. - new_impl->next_ = impl_list_; - new_impl->prev_ = 0; - if (impl_list_) - impl_list_->prev_ = new_impl.get(); - impl_list_ = new_impl.get(); - new_impl->service_ = this; - - return new_impl; -} - -strand_executor_service::strand_impl::~strand_impl() -{ - asio::detail::mutex::scoped_lock lock(service_->mutex_); - - // Remove implementation from linked list of all implementations. - if (service_->impl_list_ == this) - service_->impl_list_ = next_; - if (prev_) - prev_->next_ = next_; - if (next_) - next_->prev_= prev_; -} - -bool strand_executor_service::enqueue(const implementation_type& impl, - scheduler_operation* op) -{ - impl->mutex_->lock(); - if (impl->shutdown_) - { - impl->mutex_->unlock(); - op->destroy(); - return false; - } - else if (impl->locked_) - { - // Some other function already holds the strand lock. Enqueue for later. - impl->waiting_queue_.push(op); - impl->mutex_->unlock(); - return false; - } - else - { - // The function is acquiring the strand lock and so is responsible for - // scheduling the strand. - impl->locked_ = true; - impl->mutex_->unlock(); - impl->ready_queue_.push(op); - return true; - } -} - -bool strand_executor_service::running_in_this_thread( - const implementation_type& impl) -{ - return !!call_stack::contains(impl.get()); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_STRAND_EXECUTOR_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.hpp deleted file mode 100644 index a9696deb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// -// detail/impl/strand_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP -#define ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/call_stack.hpp" -#include "asio/detail/completion_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/memory.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -inline strand_service::strand_impl::strand_impl() - : operation(&strand_service::do_complete), - locked_(false) -{ -} - -struct strand_service::on_dispatch_exit -{ - io_context_impl* io_context_impl_; - strand_impl* impl_; - - ~on_dispatch_exit() - { - impl_->mutex_.lock(); - impl_->ready_queue_.push(impl_->waiting_queue_); - bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty(); - impl_->mutex_.unlock(); - - if (more_handlers) - io_context_impl_->post_immediate_completion(impl_, false); - } -}; - -template -void strand_service::dispatch(strand_service::implementation_type& impl, - Handler& handler) -{ - // If we are already in the strand then the handler can run immediately. - if (call_stack::contains(impl)) - { - fenced_block b(fenced_block::full); - asio_handler_invoke_helpers::invoke(handler, handler); - return; - } - - // Allocate and construct an operation to wrap the handler. - typedef completion_handler op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_context_.get_executor()); - - ASIO_HANDLER_CREATION((this->context(), - *p.p, "strand", impl, 0, "dispatch")); - - bool dispatch_immediately = do_dispatch(impl, p.p); - operation* o = p.p; - p.v = p.p = 0; - - if (dispatch_immediately) - { - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl); - - // Ensure the next handler, if any, is scheduled on block exit. - on_dispatch_exit on_exit = { &io_context_impl_, impl }; - (void)on_exit; - - op::do_complete(&io_context_impl_, o, asio::error_code(), 0); - } -} - -// Request the io_context to invoke the given handler and return immediately. -template -void strand_service::post(strand_service::implementation_type& impl, - Handler& handler) -{ - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef completion_handler op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_context_.get_executor()); - - ASIO_HANDLER_CREATION((this->context(), - *p.p, "strand", impl, 0, "post")); - - do_post(impl, p.p, is_continuation); - p.v = p.p = 0; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.ipp deleted file mode 100644 index 6bd87fad..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/strand_service.ipp +++ /dev/null @@ -1,178 +0,0 @@ -// -// detail/impl/strand_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP -#define ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/call_stack.hpp" -#include "asio/detail/strand_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct strand_service::on_do_complete_exit -{ - io_context_impl* owner_; - strand_impl* impl_; - - ~on_do_complete_exit() - { - impl_->mutex_.lock(); - impl_->ready_queue_.push(impl_->waiting_queue_); - bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty(); - impl_->mutex_.unlock(); - - if (more_handlers) - owner_->post_immediate_completion(impl_, true); - } -}; - -strand_service::strand_service(asio::io_context& io_context) - : asio::detail::service_base(io_context), - io_context_(io_context), - io_context_impl_(asio::use_service(io_context)), - mutex_(), - salt_(0) -{ -} - -void strand_service::shutdown() -{ - op_queue ops; - - asio::detail::mutex::scoped_lock lock(mutex_); - - for (std::size_t i = 0; i < num_implementations; ++i) - { - if (strand_impl* impl = implementations_[i].get()) - { - ops.push(impl->waiting_queue_); - ops.push(impl->ready_queue_); - } - } -} - -void strand_service::construct(strand_service::implementation_type& impl) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - std::size_t salt = salt_++; -#if defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION) - std::size_t index = salt; -#else // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION) - std::size_t index = reinterpret_cast(&impl); - index += (reinterpret_cast(&impl) >> 3); - index ^= salt + 0x9e3779b9 + (index << 6) + (index >> 2); -#endif // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION) - index = index % num_implementations; - - if (!implementations_[index].get()) - implementations_[index].reset(new strand_impl); - impl = implementations_[index].get(); -} - -bool strand_service::running_in_this_thread( - const implementation_type& impl) const -{ - return call_stack::contains(impl) != 0; -} - -bool strand_service::do_dispatch(implementation_type& impl, operation* op) -{ - // If we are running inside the io_context, and no other handler already - // holds the strand lock, then the handler can run immediately. - bool can_dispatch = io_context_impl_.can_dispatch(); - impl->mutex_.lock(); - if (can_dispatch && !impl->locked_) - { - // Immediate invocation is allowed. - impl->locked_ = true; - impl->mutex_.unlock(); - return true; - } - - if (impl->locked_) - { - // Some other handler already holds the strand lock. Enqueue for later. - impl->waiting_queue_.push(op); - impl->mutex_.unlock(); - } - else - { - // The handler is acquiring the strand lock and so is responsible for - // scheduling the strand. - impl->locked_ = true; - impl->mutex_.unlock(); - impl->ready_queue_.push(op); - io_context_impl_.post_immediate_completion(impl, false); - } - - return false; -} - -void strand_service::do_post(implementation_type& impl, - operation* op, bool is_continuation) -{ - impl->mutex_.lock(); - if (impl->locked_) - { - // Some other handler already holds the strand lock. Enqueue for later. - impl->waiting_queue_.push(op); - impl->mutex_.unlock(); - } - else - { - // The handler is acquiring the strand lock and so is responsible for - // scheduling the strand. - impl->locked_ = true; - impl->mutex_.unlock(); - impl->ready_queue_.push(op); - io_context_impl_.post_immediate_completion(impl, is_continuation); - } -} - -void strand_service::do_complete(void* owner, operation* base, - const asio::error_code& ec, std::size_t /*bytes_transferred*/) -{ - if (owner) - { - strand_impl* impl = static_cast(base); - - // Indicate that this strand is executing on the current thread. - call_stack::context ctx(impl); - - // Ensure the next handler, if any, is scheduled on block exit. - on_do_complete_exit on_exit; - on_exit.owner_ = static_cast(owner); - on_exit.impl_ = impl; - - // Run all ready handlers. No lock is required since the ready queue is - // accessed only within the strand. - while (operation* o = impl->ready_queue_.front()) - { - impl->ready_queue_.pop(); - o->complete(owner, ec, 0); - } - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/throw_error.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/throw_error.ipp deleted file mode 100644 index 57d301ac..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/throw_error.ipp +++ /dev/null @@ -1,60 +0,0 @@ -// -// detail/impl/throw_error.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_THROW_ERROR_IPP -#define ASIO_DETAIL_IMPL_THROW_ERROR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/throw_exception.hpp" -#include "asio/system_error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -void do_throw_error(const asio::error_code& err) -{ - asio::system_error e(err); - asio::detail::throw_exception(e); -} - -void do_throw_error(const asio::error_code& err, const char* location) -{ - // boostify: non-boost code starts here -#if defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR) - // Microsoft's implementation of std::system_error is non-conformant in that - // it ignores the error code's message when a "what" string is supplied. We'll - // work around this by explicitly formatting the "what" string. - std::string what_msg = location; - what_msg += ": "; - what_msg += err.message(); - asio::system_error e(err, what_msg); - asio::detail::throw_exception(e); -#else // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR) - // boostify: non-boost code ends here - asio::system_error e(err, location); - asio::detail::throw_exception(e); - // boostify: non-boost code starts here -#endif // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR) - // boostify: non-boost code ends here -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_THROW_ERROR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp deleted file mode 100644 index b246d481..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp +++ /dev/null @@ -1,91 +0,0 @@ -// -// detail/impl/timer_queue_ptime.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP -#define ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) - -#include "asio/detail/timer_queue_ptime.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -timer_queue >::timer_queue() -{ -} - -timer_queue >::~timer_queue() -{ -} - -bool timer_queue >::enqueue_timer( - const time_type& time, per_timer_data& timer, wait_op* op) -{ - return impl_.enqueue_timer(time, timer, op); -} - -bool timer_queue >::empty() const -{ - return impl_.empty(); -} - -long timer_queue >::wait_duration_msec( - long max_duration) const -{ - return impl_.wait_duration_msec(max_duration); -} - -long timer_queue >::wait_duration_usec( - long max_duration) const -{ - return impl_.wait_duration_usec(max_duration); -} - -void timer_queue >::get_ready_timers( - op_queue& ops) -{ - impl_.get_ready_timers(ops); -} - -void timer_queue >::get_all_timers( - op_queue& ops) -{ - impl_.get_all_timers(ops); -} - -std::size_t timer_queue >::cancel_timer( - per_timer_data& timer, op_queue& ops, std::size_t max_cancelled) -{ - return impl_.cancel_timer(timer, ops, max_cancelled); -} - -void timer_queue >::move_timer( - per_timer_data& target, per_timer_data& source) -{ - impl_.move_timer(target, source); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - -#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_set.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_set.ipp deleted file mode 100644 index 38b950be..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/timer_queue_set.ipp +++ /dev/null @@ -1,101 +0,0 @@ -// -// detail/impl/timer_queue_set.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP -#define ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/timer_queue_set.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -timer_queue_set::timer_queue_set() - : first_(0) -{ -} - -void timer_queue_set::insert(timer_queue_base* q) -{ - q->next_ = first_; - first_ = q; -} - -void timer_queue_set::erase(timer_queue_base* q) -{ - if (first_) - { - if (q == first_) - { - first_ = q->next_; - q->next_ = 0; - return; - } - - for (timer_queue_base* p = first_; p->next_; p = p->next_) - { - if (p->next_ == q) - { - p->next_ = q->next_; - q->next_ = 0; - return; - } - } - } -} - -bool timer_queue_set::all_empty() const -{ - for (timer_queue_base* p = first_; p; p = p->next_) - if (!p->empty()) - return false; - return true; -} - -long timer_queue_set::wait_duration_msec(long max_duration) const -{ - long min_duration = max_duration; - for (timer_queue_base* p = first_; p; p = p->next_) - min_duration = p->wait_duration_msec(min_duration); - return min_duration; -} - -long timer_queue_set::wait_duration_usec(long max_duration) const -{ - long min_duration = max_duration; - for (timer_queue_base* p = first_; p; p = p->next_) - min_duration = p->wait_duration_usec(min_duration); - return min_duration; -} - -void timer_queue_set::get_ready_timers(op_queue& ops) -{ - for (timer_queue_base* p = first_; p; p = p->next_) - p->get_ready_timers(ops); -} - -void timer_queue_set::get_all_timers(op_queue& ops) -{ - for (timer_queue_base* p = first_; p; p = p->next_) - p->get_all_timers(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_event.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_event.ipp deleted file mode 100644 index 62dec0a1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_event.ipp +++ /dev/null @@ -1,76 +0,0 @@ -// -// detail/win_event.ipp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_EVENT_IPP -#define ASIO_DETAIL_IMPL_WIN_EVENT_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_event.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_event::win_event() - : state_(0) -{ -#if defined(ASIO_WINDOWS_APP) - events_[0] = ::CreateEventExW(0, 0, - CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS); -#else // defined(ASIO_WINDOWS_APP) - events_[0] = ::CreateEventW(0, true, false, 0); -#endif // defined(ASIO_WINDOWS_APP) - if (!events_[0]) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "event"); - } - -#if defined(ASIO_WINDOWS_APP) - events_[1] = ::CreateEventExW(0, 0, 0, EVENT_ALL_ACCESS); -#else // defined(ASIO_WINDOWS_APP) - events_[1] = ::CreateEventW(0, false, false, 0); -#endif // defined(ASIO_WINDOWS_APP) - if (!events_[1]) - { - DWORD last_error = ::GetLastError(); - ::CloseHandle(events_[0]); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "event"); - } -} - -win_event::~win_event() -{ - ::CloseHandle(events_[0]); - ::CloseHandle(events_[1]); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_IMPL_WIN_EVENT_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp deleted file mode 100644 index 31f2948c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp +++ /dev/null @@ -1,525 +0,0 @@ -// -// detail/impl/win_iocp_handle_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP -#define ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/win_iocp_handle_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_iocp_handle_service::overlapped_wrapper - : public OVERLAPPED -{ -public: - explicit overlapped_wrapper(asio::error_code& ec) - { - Internal = 0; - InternalHigh = 0; - Offset = 0; - OffsetHigh = 0; - - // Create a non-signalled manual-reset event, for GetOverlappedResult. - hEvent = ::CreateEventW(0, TRUE, FALSE, 0); - if (hEvent) - { - // As documented in GetQueuedCompletionStatus, setting the low order - // bit of this event prevents our synchronous writes from being treated - // as completion port events. - DWORD_PTR tmp = reinterpret_cast(hEvent); - hEvent = reinterpret_cast(tmp | 1); - } - else - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - } - - ~overlapped_wrapper() - { - if (hEvent) - { - ::CloseHandle(hEvent); - } - } -}; - -win_iocp_handle_service::win_iocp_handle_service(execution_context& context) - : execution_context_service_base(context), - iocp_service_(asio::use_service(context)), - mutex_(), - impl_list_(0) -{ -} - -void win_iocp_handle_service::shutdown() -{ - // Close all implementations, causing all operations to complete. - asio::detail::mutex::scoped_lock lock(mutex_); - implementation_type* impl = impl_list_; - while (impl) - { - close_for_destruction(*impl); - impl = impl->next_; - } -} - -void win_iocp_handle_service::construct( - win_iocp_handle_service::implementation_type& impl) -{ - impl.handle_ = INVALID_HANDLE_VALUE; - impl.safe_cancellation_thread_id_ = 0; - - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void win_iocp_handle_service::move_construct( - win_iocp_handle_service::implementation_type& impl, - win_iocp_handle_service::implementation_type& other_impl) -{ - impl.handle_ = other_impl.handle_; - other_impl.handle_ = INVALID_HANDLE_VALUE; - - impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_; - other_impl.safe_cancellation_thread_id_ = 0; - - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void win_iocp_handle_service::move_assign( - win_iocp_handle_service::implementation_type& impl, - win_iocp_handle_service& other_service, - win_iocp_handle_service::implementation_type& other_impl) -{ - close_for_destruction(impl); - - if (this != &other_service) - { - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; - } - - impl.handle_ = other_impl.handle_; - other_impl.handle_ = INVALID_HANDLE_VALUE; - - impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_; - other_impl.safe_cancellation_thread_id_ = 0; - - if (this != &other_service) - { - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(other_service.mutex_); - impl.next_ = other_service.impl_list_; - impl.prev_ = 0; - if (other_service.impl_list_) - other_service.impl_list_->prev_ = &impl; - other_service.impl_list_ = &impl; - } -} - -void win_iocp_handle_service::destroy( - win_iocp_handle_service::implementation_type& impl) -{ - close_for_destruction(impl); - - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; -} - -asio::error_code win_iocp_handle_service::assign( - win_iocp_handle_service::implementation_type& impl, - const native_handle_type& handle, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - if (iocp_service_.register_handle(handle, ec)) - return ec; - - impl.handle_ = handle; - ec = asio::error_code(); - return ec; -} - -asio::error_code win_iocp_handle_service::close( - win_iocp_handle_service::implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", - &impl, reinterpret_cast(impl.handle_), "close")); - - if (!::CloseHandle(impl.handle_)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - else - { - ec = asio::error_code(); - } - - impl.handle_ = INVALID_HANDLE_VALUE; - impl.safe_cancellation_thread_id_ = 0; - } - else - { - ec = asio::error_code(); - } - - return ec; -} - -asio::error_code win_iocp_handle_service::cancel( - win_iocp_handle_service::implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", - &impl, reinterpret_cast(impl.handle_), "cancel")); - - if (FARPROC cancel_io_ex_ptr = ::GetProcAddress( - ::GetModuleHandleA("KERNEL32"), "CancelIoEx")) - { - // The version of Windows supports cancellation from any thread. - typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED); - cancel_io_ex_t cancel_io_ex = reinterpret_cast( - reinterpret_cast(cancel_io_ex_ptr)); - if (!cancel_io_ex(impl.handle_, 0)) - { - DWORD last_error = ::GetLastError(); - if (last_error == ERROR_NOT_FOUND) - { - // ERROR_NOT_FOUND means that there were no operations to be - // cancelled. We swallow this error to match the behaviour on other - // platforms. - ec = asio::error_code(); - } - else - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - } - else - { - ec = asio::error_code(); - } - } - else if (impl.safe_cancellation_thread_id_ == 0) - { - // No operations have been started, so there's nothing to cancel. - ec = asio::error_code(); - } - else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId()) - { - // Asynchronous operations have been started from the current thread only, - // so it is safe to try to cancel them using CancelIo. - if (!::CancelIo(impl.handle_)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - else - { - ec = asio::error_code(); - } - } - else - { - // Asynchronous operations have been started from more than one thread, - // so cancellation is not safe. - ec = asio::error::operation_not_supported; - } - - return ec; -} - -size_t win_iocp_handle_service::do_write( - win_iocp_handle_service::implementation_type& impl, uint64_t offset, - const asio::const_buffer& buffer, asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to write 0 bytes on a handle is a no-op. - if (buffer.size() == 0) - { - ec = asio::error_code(); - return 0; - } - - overlapped_wrapper overlapped(ec); - if (ec) - { - return 0; - } - - // Write the data. - overlapped.Offset = offset & 0xFFFFFFFF; - overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::WriteFile(impl.handle_, buffer.data(), - static_cast(buffer.size()), 0, &overlapped); - if (!ok) - { - DWORD last_error = ::GetLastError(); - if (last_error != ERROR_IO_PENDING) - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return 0; - } - } - - // Wait for the operation to complete. - DWORD bytes_transferred = 0; - ok = ::GetOverlappedResult(impl.handle_, - &overlapped, &bytes_transferred, TRUE); - if (!ok) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return 0; - } - - ec = asio::error_code(); - return bytes_transferred; -} - -void win_iocp_handle_service::start_write_op( - win_iocp_handle_service::implementation_type& impl, uint64_t offset, - const asio::const_buffer& buffer, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (!is_open(impl)) - { - iocp_service_.on_completion(op, asio::error::bad_descriptor); - } - else if (buffer.size() == 0) - { - // A request to write 0 bytes on a handle is a no-op. - iocp_service_.on_completion(op); - } - else - { - DWORD bytes_transferred = 0; - op->Offset = offset & 0xFFFFFFFF; - op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::WriteFile(impl.handle_, buffer.data(), - static_cast(buffer.size()), - &bytes_transferred, op); - DWORD last_error = ::GetLastError(); - if (!ok && last_error != ERROR_IO_PENDING - && last_error != ERROR_MORE_DATA) - { - iocp_service_.on_completion(op, last_error, bytes_transferred); - } - else - { - iocp_service_.on_pending(op); - } - } -} - -size_t win_iocp_handle_service::do_read( - win_iocp_handle_service::implementation_type& impl, uint64_t offset, - const asio::mutable_buffer& buffer, asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return 0; - } - - // A request to read 0 bytes on a stream handle is a no-op. - if (buffer.size() == 0) - { - ec = asio::error_code(); - return 0; - } - - overlapped_wrapper overlapped(ec); - if (ec) - { - return 0; - } - - // Read some data. - overlapped.Offset = offset & 0xFFFFFFFF; - overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::ReadFile(impl.handle_, buffer.data(), - static_cast(buffer.size()), 0, &overlapped); - if (!ok) - { - DWORD last_error = ::GetLastError(); - if (last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA) - { - if (last_error == ERROR_HANDLE_EOF) - { - ec = asio::error::eof; - } - else - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - return 0; - } - } - - // Wait for the operation to complete. - DWORD bytes_transferred = 0; - ok = ::GetOverlappedResult(impl.handle_, - &overlapped, &bytes_transferred, TRUE); - if (!ok) - { - DWORD last_error = ::GetLastError(); - if (last_error == ERROR_HANDLE_EOF) - { - ec = asio::error::eof; - } - else - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - return (last_error == ERROR_MORE_DATA) ? bytes_transferred : 0; - } - - ec = asio::error_code(); - return bytes_transferred; -} - -void win_iocp_handle_service::start_read_op( - win_iocp_handle_service::implementation_type& impl, uint64_t offset, - const asio::mutable_buffer& buffer, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (!is_open(impl)) - { - iocp_service_.on_completion(op, asio::error::bad_descriptor); - } - else if (buffer.size() == 0) - { - // A request to read 0 bytes on a handle is a no-op. - iocp_service_.on_completion(op); - } - else - { - DWORD bytes_transferred = 0; - op->Offset = offset & 0xFFFFFFFF; - op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; - BOOL ok = ::ReadFile(impl.handle_, buffer.data(), - static_cast(buffer.size()), - &bytes_transferred, op); - DWORD last_error = ::GetLastError(); - if (!ok && last_error != ERROR_IO_PENDING - && last_error != ERROR_MORE_DATA) - { - iocp_service_.on_completion(op, last_error, bytes_transferred); - } - else - { - iocp_service_.on_pending(op); - } - } -} - -void win_iocp_handle_service::update_cancellation_thread_id( - win_iocp_handle_service::implementation_type& impl) -{ - if (impl.safe_cancellation_thread_id_ == 0) - impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId(); - else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId()) - impl.safe_cancellation_thread_id_ = ~DWORD(0); -} - -void win_iocp_handle_service::close_for_destruction(implementation_type& impl) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((iocp_service_.context(), "handle", - &impl, reinterpret_cast(impl.handle_), "close")); - - ::CloseHandle(impl.handle_); - impl.handle_ = INVALID_HANDLE_VALUE; - impl.safe_cancellation_thread_id_ = 0; - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp deleted file mode 100644 index faf8c1fb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp +++ /dev/null @@ -1,104 +0,0 @@ -// -// detail/impl/win_iocp_io_context.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_HPP -#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/completion_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/memory.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void win_iocp_io_context::add_timer_queue( - timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -template -void win_iocp_io_context::remove_timer_queue( - timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void win_iocp_io_context::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - // If the service has been shut down we silently discard the timer. - if (::InterlockedExchangeAdd(&shutdown_, 0) != 0) - { - post_immediate_completion(op, false); - return; - } - - mutex::scoped_lock lock(dispatch_mutex_); - - bool earliest = queue.enqueue_timer(time, timer, op); - work_started(); - if (earliest) - update_timeout(); -} - -template -std::size_t win_iocp_io_context::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - // If the service has been shut down we silently ignore the cancellation. - if (::InterlockedExchangeAdd(&shutdown_, 0) != 0) - return 0; - - mutex::scoped_lock lock(dispatch_mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - post_deferred_completions(ops); - return n; -} - -template -void win_iocp_io_context::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& to, - typename timer_queue::per_timer_data& from) -{ - asio::detail::mutex::scoped_lock lock(dispatch_mutex_); - op_queue ops; - queue.cancel_timer(to, ops); - queue.move_timer(to, from); - lock.unlock(); - post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp deleted file mode 100644 index e7d8d7c3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +++ /dev/null @@ -1,603 +0,0 @@ -// -// detail/impl/win_iocp_io_context.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_IPP -#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/error.hpp" -#include "asio/detail/cstdint.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/thread.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_iocp_io_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct win_iocp_io_context::thread_function -{ - explicit thread_function(win_iocp_io_context* s) - : this_(s) - { - } - - void operator()() - { - asio::error_code ec; - this_->run(ec); - } - - win_iocp_io_context* this_; -}; - -struct win_iocp_io_context::work_finished_on_block_exit -{ - ~work_finished_on_block_exit() - { - io_context_->work_finished(); - } - - win_iocp_io_context* io_context_; -}; - -struct win_iocp_io_context::timer_thread_function -{ - void operator()() - { - while (::InterlockedExchangeAdd(&io_context_->shutdown_, 0) == 0) - { - if (::WaitForSingleObject(io_context_->waitable_timer_.handle, - INFINITE) == WAIT_OBJECT_0) - { - ::InterlockedExchange(&io_context_->dispatch_required_, 1); - ::PostQueuedCompletionStatus(io_context_->iocp_.handle, - 0, wake_for_dispatch, 0); - } - } - } - - win_iocp_io_context* io_context_; -}; - -win_iocp_io_context::win_iocp_io_context( - asio::execution_context& ctx, int concurrency_hint, bool own_thread) - : execution_context_service_base(ctx), - iocp_(), - outstanding_work_(0), - stopped_(0), - stop_event_posted_(0), - shutdown_(0), - gqcs_timeout_(get_gqcs_timeout()), - dispatch_required_(0), - concurrency_hint_(concurrency_hint) -{ - ASIO_HANDLER_TRACKING_INIT; - - iocp_.handle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0, - static_cast(concurrency_hint >= 0 ? concurrency_hint : DWORD(~0))); - if (!iocp_.handle) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "iocp"); - } - - if (own_thread) - { - ::InterlockedIncrement(&outstanding_work_); - thread_.reset(new asio::detail::thread(thread_function(this))); - } -} - -win_iocp_io_context::~win_iocp_io_context() -{ - if (thread_.get()) - { - stop(); - thread_->join(); - thread_.reset(); - } -} - -void win_iocp_io_context::shutdown() -{ - ::InterlockedExchange(&shutdown_, 1); - - if (timer_thread_.get()) - { - LARGE_INTEGER timeout; - timeout.QuadPart = 1; - ::SetWaitableTimer(waitable_timer_.handle, &timeout, 1, 0, 0, FALSE); - } - - if (thread_.get()) - { - stop(); - thread_->join(); - thread_.reset(); - ::InterlockedDecrement(&outstanding_work_); - } - - while (::InterlockedExchangeAdd(&outstanding_work_, 0) > 0) - { - op_queue ops; - timer_queues_.get_all_timers(ops); - ops.push(completed_ops_); - if (!ops.empty()) - { - while (win_iocp_operation* op = ops.front()) - { - ops.pop(); - ::InterlockedDecrement(&outstanding_work_); - op->destroy(); - } - } - else - { - DWORD bytes_transferred = 0; - dword_ptr_t completion_key = 0; - LPOVERLAPPED overlapped = 0; - ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred, - &completion_key, &overlapped, gqcs_timeout_); - if (overlapped) - { - ::InterlockedDecrement(&outstanding_work_); - static_cast(overlapped)->destroy(); - } - } - } - - if (timer_thread_.get()) - timer_thread_->join(); -} - -asio::error_code win_iocp_io_context::register_handle( - HANDLE handle, asio::error_code& ec) -{ - if (::CreateIoCompletionPort(handle, iocp_.handle, 0, 0) == 0) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - else - { - ec = asio::error_code(); - } - return ec; -} - -size_t win_iocp_io_context::run(asio::error_code& ec) -{ - if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0) - { - stop(); - ec = asio::error_code(); - return 0; - } - - win_iocp_thread_info this_thread; - thread_call_stack::context ctx(this, this_thread); - - size_t n = 0; - while (do_one(INFINITE, this_thread, ec)) - if (n != (std::numeric_limits::max)()) - ++n; - return n; -} - -size_t win_iocp_io_context::run_one(asio::error_code& ec) -{ - if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0) - { - stop(); - ec = asio::error_code(); - return 0; - } - - win_iocp_thread_info this_thread; - thread_call_stack::context ctx(this, this_thread); - - return do_one(INFINITE, this_thread, ec); -} - -size_t win_iocp_io_context::wait_one(long usec, asio::error_code& ec) -{ - if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0) - { - stop(); - ec = asio::error_code(); - return 0; - } - - win_iocp_thread_info this_thread; - thread_call_stack::context ctx(this, this_thread); - - return do_one(usec < 0 ? INFINITE : ((usec - 1) / 1000 + 1), this_thread, ec); -} - -size_t win_iocp_io_context::poll(asio::error_code& ec) -{ - if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0) - { - stop(); - ec = asio::error_code(); - return 0; - } - - win_iocp_thread_info this_thread; - thread_call_stack::context ctx(this, this_thread); - - size_t n = 0; - while (do_one(0, this_thread, ec)) - if (n != (std::numeric_limits::max)()) - ++n; - return n; -} - -size_t win_iocp_io_context::poll_one(asio::error_code& ec) -{ - if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0) - { - stop(); - ec = asio::error_code(); - return 0; - } - - win_iocp_thread_info this_thread; - thread_call_stack::context ctx(this, this_thread); - - return do_one(0, this_thread, ec); -} - -void win_iocp_io_context::stop() -{ - if (::InterlockedExchange(&stopped_, 1) == 0) - { - if (::InterlockedExchange(&stop_event_posted_, 1) == 0) - { - if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0)) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "pqcs"); - } - } - } -} - -void win_iocp_io_context::capture_current_exception() -{ - if (thread_info_base* this_thread = thread_call_stack::contains(this)) - this_thread->capture_current_exception(); -} - -void win_iocp_io_context::post_deferred_completion(win_iocp_operation* op) -{ - // Flag the operation as ready. - op->ready_ = 1; - - // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op)) - { - // Out of resources. Put on completed queue instead. - mutex::scoped_lock lock(dispatch_mutex_); - completed_ops_.push(op); - ::InterlockedExchange(&dispatch_required_, 1); - } -} - -void win_iocp_io_context::post_deferred_completions( - op_queue& ops) -{ - while (win_iocp_operation* op = ops.front()) - { - ops.pop(); - - // Flag the operation as ready. - op->ready_ = 1; - - // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op)) - { - // Out of resources. Put on completed queue instead. - mutex::scoped_lock lock(dispatch_mutex_); - completed_ops_.push(op); - completed_ops_.push(ops); - ::InterlockedExchange(&dispatch_required_, 1); - } - } -} - -void win_iocp_io_context::abandon_operations( - op_queue& ops) -{ - while (win_iocp_operation* op = ops.front()) - { - ops.pop(); - ::InterlockedDecrement(&outstanding_work_); - op->destroy(); - } -} - -void win_iocp_io_context::on_pending(win_iocp_operation* op) -{ - if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1) - { - // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, - 0, overlapped_contains_result, op)) - { - // Out of resources. Put on completed queue instead. - mutex::scoped_lock lock(dispatch_mutex_); - completed_ops_.push(op); - ::InterlockedExchange(&dispatch_required_, 1); - } - } -} - -void win_iocp_io_context::on_completion(win_iocp_operation* op, - DWORD last_error, DWORD bytes_transferred) -{ - // Flag that the operation is ready for invocation. - op->ready_ = 1; - - // Store results in the OVERLAPPED structure. - op->Internal = reinterpret_cast( - &asio::error::get_system_category()); - op->Offset = last_error; - op->OffsetHigh = bytes_transferred; - - // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, - 0, overlapped_contains_result, op)) - { - // Out of resources. Put on completed queue instead. - mutex::scoped_lock lock(dispatch_mutex_); - completed_ops_.push(op); - ::InterlockedExchange(&dispatch_required_, 1); - } -} - -void win_iocp_io_context::on_completion(win_iocp_operation* op, - const asio::error_code& ec, DWORD bytes_transferred) -{ - // Flag that the operation is ready for invocation. - op->ready_ = 1; - - // Store results in the OVERLAPPED structure. - op->Internal = reinterpret_cast(&ec.category()); - op->Offset = ec.value(); - op->OffsetHigh = bytes_transferred; - - // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, - 0, overlapped_contains_result, op)) - { - // Out of resources. Put on completed queue instead. - mutex::scoped_lock lock(dispatch_mutex_); - completed_ops_.push(op); - ::InterlockedExchange(&dispatch_required_, 1); - } -} - -size_t win_iocp_io_context::do_one(DWORD msec, - win_iocp_thread_info& this_thread, asio::error_code& ec) -{ - for (;;) - { - // Try to acquire responsibility for dispatching timers and completed ops. - if (::InterlockedCompareExchange(&dispatch_required_, 0, 1) == 1) - { - mutex::scoped_lock lock(dispatch_mutex_); - - // Dispatch pending timers and operations. - op_queue ops; - ops.push(completed_ops_); - timer_queues_.get_ready_timers(ops); - post_deferred_completions(ops); - update_timeout(); - } - - // Get the next operation from the queue. - DWORD bytes_transferred = 0; - dword_ptr_t completion_key = 0; - LPOVERLAPPED overlapped = 0; - ::SetLastError(0); - BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, - &bytes_transferred, &completion_key, &overlapped, - msec < gqcs_timeout_ ? msec : gqcs_timeout_); - DWORD last_error = ::GetLastError(); - - if (overlapped) - { - win_iocp_operation* op = static_cast(overlapped); - asio::error_code result_ec(last_error, - asio::error::get_system_category()); - - // We may have been passed the last_error and bytes_transferred in the - // OVERLAPPED structure itself. - if (completion_key == overlapped_contains_result) - { - result_ec = asio::error_code(static_cast(op->Offset), - *reinterpret_cast(op->Internal)); - bytes_transferred = op->OffsetHigh; - } - - // Otherwise ensure any result has been saved into the OVERLAPPED - // structure. - else - { - op->Internal = reinterpret_cast(&result_ec.category()); - op->Offset = result_ec.value(); - op->OffsetHigh = bytes_transferred; - } - - // Dispatch the operation only if ready. The operation may not be ready - // if the initiating function (e.g. a call to WSARecv) has not yet - // returned. This is because the initiating function still wants access - // to the operation's OVERLAPPED structure. - if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1) - { - // Ensure the count of outstanding work is decremented on block exit. - work_finished_on_block_exit on_exit = { this }; - (void)on_exit; - - op->complete(this, result_ec, bytes_transferred); - this_thread.rethrow_pending_exception(); - ec = asio::error_code(); - return 1; - } - } - else if (!ok) - { - if (last_error != WAIT_TIMEOUT) - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return 0; - } - - // If we're waiting indefinitely we need to keep going until we get a - // real handler. - if (msec == INFINITE) - continue; - - ec = asio::error_code(); - return 0; - } - else if (completion_key == wake_for_dispatch) - { - // We have been woken up to try to acquire responsibility for dispatching - // timers and completed operations. - } - else - { - // Indicate that there is no longer an in-flight stop event. - ::InterlockedExchange(&stop_event_posted_, 0); - - // The stopped_ flag is always checked to ensure that any leftover - // stop events from a previous run invocation are ignored. - if (::InterlockedExchangeAdd(&stopped_, 0) != 0) - { - // Wake up next thread that is blocked on GetQueuedCompletionStatus. - if (::InterlockedExchange(&stop_event_posted_, 1) == 0) - { - if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0)) - { - last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return 0; - } - } - - ec = asio::error_code(); - return 0; - } - } - } -} - -DWORD win_iocp_io_context::get_gqcs_timeout() -{ - OSVERSIONINFOEX osvi; - ZeroMemory(&osvi, sizeof(osvi)); - osvi.dwOSVersionInfoSize = sizeof(osvi); - osvi.dwMajorVersion = 6ul; - - const uint64_t condition_mask = ::VerSetConditionMask( - 0, VER_MAJORVERSION, VER_GREATER_EQUAL); - - if (!!::VerifyVersionInfo(&osvi, VER_MAJORVERSION, condition_mask)) - return INFINITE; - - return default_gqcs_timeout; -} - -void win_iocp_io_context::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(dispatch_mutex_); - - timer_queues_.insert(&queue); - - if (!waitable_timer_.handle) - { - waitable_timer_.handle = ::CreateWaitableTimer(0, FALSE, 0); - if (waitable_timer_.handle == 0) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "timer"); - } - - LARGE_INTEGER timeout; - timeout.QuadPart = -max_timeout_usec; - timeout.QuadPart *= 10; - ::SetWaitableTimer(waitable_timer_.handle, - &timeout, max_timeout_msec, 0, 0, FALSE); - } - - if (!timer_thread_.get()) - { - timer_thread_function thread_function = { this }; - timer_thread_.reset(new thread(thread_function, 65536)); - } -} - -void win_iocp_io_context::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(dispatch_mutex_); - - timer_queues_.erase(&queue); -} - -void win_iocp_io_context::update_timeout() -{ - if (timer_thread_.get()) - { - // There's no point updating the waitable timer if the new timeout period - // exceeds the maximum timeout. In that case, we might as well wait for the - // existing period of the timer to expire. - long timeout_usec = timer_queues_.wait_duration_usec(max_timeout_usec); - if (timeout_usec < max_timeout_usec) - { - LARGE_INTEGER timeout; - timeout.QuadPart = -timeout_usec; - timeout.QuadPart *= 10; - ::SetWaitableTimer(waitable_timer_.handle, - &timeout, max_timeout_msec, 0, 0, FALSE); - } - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_CONTEXT_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp deleted file mode 100644 index 7a4bc5af..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp +++ /dev/null @@ -1,192 +0,0 @@ -// -// detail/impl/win_iocp_serial_port_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP -#define ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT) - -#include -#include "asio/detail/win_iocp_serial_port_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_iocp_serial_port_service::win_iocp_serial_port_service( - execution_context& context) - : execution_context_service_base(context), - handle_service_(context) -{ -} - -void win_iocp_serial_port_service::shutdown() -{ -} - -asio::error_code win_iocp_serial_port_service::open( - win_iocp_serial_port_service::implementation_type& impl, - const std::string& device, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - // For convenience, add a leading \\.\ sequence if not already present. - std::string name = (device[0] == '\\') ? device : "\\\\.\\" + device; - - // Open a handle to the serial port. - ::HANDLE handle = ::CreateFileA(name.c_str(), - GENERIC_READ | GENERIC_WRITE, 0, 0, - OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); - if (handle == INVALID_HANDLE_VALUE) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - // Determine the initial serial port parameters. - using namespace std; // For memset. - ::DCB dcb; - memset(&dcb, 0, sizeof(DCB)); - dcb.DCBlength = sizeof(DCB); - if (!::GetCommState(handle, &dcb)) - { - DWORD last_error = ::GetLastError(); - ::CloseHandle(handle); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - // Set some default serial port parameters. This implementation does not - // support changing all of these, so they might as well be in a known state. - dcb.fBinary = TRUE; // Win32 only supports binary mode. - dcb.fNull = FALSE; // Do not ignore NULL characters. - dcb.fAbortOnError = FALSE; // Ignore serial framing errors. - dcb.BaudRate = CBR_9600; // 9600 baud by default - dcb.ByteSize = 8; // 8 bit bytes - dcb.fOutxCtsFlow = FALSE; // No flow control - dcb.fOutxDsrFlow = FALSE; - dcb.fDtrControl = DTR_CONTROL_DISABLE; - dcb.fDsrSensitivity = FALSE; - dcb.fOutX = FALSE; - dcb.fInX = FALSE; - dcb.fRtsControl = RTS_CONTROL_DISABLE; - dcb.fParity = FALSE; // No parity - dcb.Parity = NOPARITY; - dcb.StopBits = ONESTOPBIT; // One stop bit - if (!::SetCommState(handle, &dcb)) - { - DWORD last_error = ::GetLastError(); - ::CloseHandle(handle); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - // Set up timeouts so that the serial port will behave similarly to a - // network socket. Reads wait for at least one byte, then return with - // whatever they have. Writes return once everything is out the door. - ::COMMTIMEOUTS timeouts; - timeouts.ReadIntervalTimeout = 1; - timeouts.ReadTotalTimeoutMultiplier = 0; - timeouts.ReadTotalTimeoutConstant = 0; - timeouts.WriteTotalTimeoutMultiplier = 0; - timeouts.WriteTotalTimeoutConstant = 0; - if (!::SetCommTimeouts(handle, &timeouts)) - { - DWORD last_error = ::GetLastError(); - ::CloseHandle(handle); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - // We're done. Take ownership of the serial port handle. - if (handle_service_.assign(impl, handle, ec)) - ::CloseHandle(handle); - return ec; -} - -asio::error_code win_iocp_serial_port_service::do_set_option( - win_iocp_serial_port_service::implementation_type& impl, - win_iocp_serial_port_service::store_function_type store, - const void* option, asio::error_code& ec) -{ - using namespace std; // For memcpy. - - ::DCB dcb; - memset(&dcb, 0, sizeof(DCB)); - dcb.DCBlength = sizeof(DCB); - if (!::GetCommState(handle_service_.native_handle(impl), &dcb)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - if (store(option, dcb, ec)) - return ec; - - if (!::SetCommState(handle_service_.native_handle(impl), &dcb)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - ec = asio::error_code(); - return ec; -} - -asio::error_code win_iocp_serial_port_service::do_get_option( - const win_iocp_serial_port_service::implementation_type& impl, - win_iocp_serial_port_service::load_function_type load, - void* option, asio::error_code& ec) const -{ - using namespace std; // For memset. - - ::DCB dcb; - memset(&dcb, 0, sizeof(DCB)); - dcb.DCBlength = sizeof(DCB); - if (!::GetCommState(handle_service_.native_handle(impl), &dcb)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - return ec; - } - - return load(option, dcb, ec); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT) - -#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp deleted file mode 100644 index 6235ce47..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp +++ /dev/null @@ -1,801 +0,0 @@ -// -// detail/impl/win_iocp_socket_service_base.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP -#define ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/win_iocp_socket_service_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_iocp_socket_service_base::win_iocp_socket_service_base( - execution_context& context) - : context_(context), - iocp_service_(use_service(context)), - reactor_(0), - connect_ex_(0), - nt_set_info_(0), - mutex_(), - impl_list_(0) -{ -} - -void win_iocp_socket_service_base::base_shutdown() -{ - // Close all implementations, causing all operations to complete. - asio::detail::mutex::scoped_lock lock(mutex_); - base_implementation_type* impl = impl_list_; - while (impl) - { - close_for_destruction(*impl); - impl = impl->next_; - } -} - -void win_iocp_socket_service_base::construct( - win_iocp_socket_service_base::base_implementation_type& impl) -{ - impl.socket_ = invalid_socket; - impl.state_ = 0; - impl.cancel_token_.reset(); -#if defined(ASIO_ENABLE_CANCELIO) - impl.safe_cancellation_thread_id_ = 0; -#endif // defined(ASIO_ENABLE_CANCELIO) - - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void win_iocp_socket_service_base::base_move_construct( - win_iocp_socket_service_base::base_implementation_type& impl, - win_iocp_socket_service_base::base_implementation_type& other_impl) - ASIO_NOEXCEPT -{ - impl.socket_ = other_impl.socket_; - other_impl.socket_ = invalid_socket; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - impl.cancel_token_ = other_impl.cancel_token_; - other_impl.cancel_token_.reset(); - -#if defined(ASIO_ENABLE_CANCELIO) - impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_; - other_impl.safe_cancellation_thread_id_ = 0; -#endif // defined(ASIO_ENABLE_CANCELIO) - - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void win_iocp_socket_service_base::base_move_assign( - win_iocp_socket_service_base::base_implementation_type& impl, - win_iocp_socket_service_base& other_service, - win_iocp_socket_service_base::base_implementation_type& other_impl) -{ - close_for_destruction(impl); - - if (this != &other_service) - { - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; - } - - impl.socket_ = other_impl.socket_; - other_impl.socket_ = invalid_socket; - - impl.state_ = other_impl.state_; - other_impl.state_ = 0; - - impl.cancel_token_ = other_impl.cancel_token_; - other_impl.cancel_token_.reset(); - -#if defined(ASIO_ENABLE_CANCELIO) - impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_; - other_impl.safe_cancellation_thread_id_ = 0; -#endif // defined(ASIO_ENABLE_CANCELIO) - - if (this != &other_service) - { - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(other_service.mutex_); - impl.next_ = other_service.impl_list_; - impl.prev_ = 0; - if (other_service.impl_list_) - other_service.impl_list_->prev_ = &impl; - other_service.impl_list_ = &impl; - } -} - -void win_iocp_socket_service_base::destroy( - win_iocp_socket_service_base::base_implementation_type& impl) -{ - close_for_destruction(impl); - - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; -} - -asio::error_code win_iocp_socket_service_base::close( - win_iocp_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((iocp_service_.context(), - "socket", &impl, impl.socket_, "close")); - - // Check if the reactor was created, in which case we need to close the - // socket on the reactor as well to cancel any operations that might be - // running there. - select_reactor* r = static_cast( - interlocked_compare_exchange_pointer( - reinterpret_cast(&reactor_), 0, 0)); - if (r) - r->deregister_descriptor(impl.socket_, impl.reactor_data_, true); - - socket_ops::close(impl.socket_, impl.state_, false, ec); - - if (r) - r->cleanup_descriptor_data(impl.reactor_data_); - } - else - { - ec = asio::error_code(); - } - - impl.socket_ = invalid_socket; - impl.state_ = 0; - impl.cancel_token_.reset(); -#if defined(ASIO_ENABLE_CANCELIO) - impl.safe_cancellation_thread_id_ = 0; -#endif // defined(ASIO_ENABLE_CANCELIO) - - return ec; -} - -socket_type win_iocp_socket_service_base::release( - win_iocp_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - return invalid_socket; - - cancel(impl, ec); - if (ec) - return invalid_socket; - - nt_set_info_fn fn = get_nt_set_info(); - if (fn == 0) - { - ec = asio::error::operation_not_supported; - return invalid_socket; - } - - HANDLE sock_as_handle = reinterpret_cast(impl.socket_); - ULONG_PTR iosb[2] = { 0, 0 }; - void* info[2] = { 0, 0 }; - if (fn(sock_as_handle, iosb, &info, sizeof(info), - 61 /* FileReplaceCompletionInformation */)) - { - ec = asio::error::operation_not_supported; - return invalid_socket; - } - - socket_type tmp = impl.socket_; - impl.socket_ = invalid_socket; - return tmp; -} - -asio::error_code win_iocp_socket_service_base::cancel( - win_iocp_socket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - ASIO_HANDLER_OPERATION((iocp_service_.context(), - "socket", &impl, impl.socket_, "cancel")); - - if (FARPROC cancel_io_ex_ptr = ::GetProcAddress( - ::GetModuleHandleA("KERNEL32"), "CancelIoEx")) - { - // The version of Windows supports cancellation from any thread. - typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED); - cancel_io_ex_t cancel_io_ex = reinterpret_cast( - reinterpret_cast(cancel_io_ex_ptr)); - socket_type sock = impl.socket_; - HANDLE sock_as_handle = reinterpret_cast(sock); - if (!cancel_io_ex(sock_as_handle, 0)) - { - DWORD last_error = ::GetLastError(); - if (last_error == ERROR_NOT_FOUND) - { - // ERROR_NOT_FOUND means that there were no operations to be - // cancelled. We swallow this error to match the behaviour on other - // platforms. - ec = asio::error_code(); - } - else - { - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - } - else - { - ec = asio::error_code(); - } - } -#if defined(ASIO_ENABLE_CANCELIO) - else if (impl.safe_cancellation_thread_id_ == 0) - { - // No operations have been started, so there's nothing to cancel. - ec = asio::error_code(); - } - else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId()) - { - // Asynchronous operations have been started from the current thread only, - // so it is safe to try to cancel them using CancelIo. - socket_type sock = impl.socket_; - HANDLE sock_as_handle = reinterpret_cast(sock); - if (!::CancelIo(sock_as_handle)) - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - else - { - ec = asio::error_code(); - } - } - else - { - // Asynchronous operations have been started from more than one thread, - // so cancellation is not safe. - ec = asio::error::operation_not_supported; - } -#else // defined(ASIO_ENABLE_CANCELIO) - else - { - // Cancellation is not supported as CancelIo may not be used. - ec = asio::error::operation_not_supported; - } -#endif // defined(ASIO_ENABLE_CANCELIO) - - // Cancel any operations started via the reactor. - if (!ec) - { - select_reactor* r = static_cast( - interlocked_compare_exchange_pointer( - reinterpret_cast(&reactor_), 0, 0)); - if (r) - r->cancel_ops(impl.socket_, impl.reactor_data_); - } - - return ec; -} - -asio::error_code win_iocp_socket_service_base::do_open( - win_iocp_socket_service_base::base_implementation_type& impl, - int family, int type, int protocol, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - socket_holder sock(socket_ops::socket(family, type, protocol, ec)); - if (sock.get() == invalid_socket) - return ec; - - HANDLE sock_as_handle = reinterpret_cast(sock.get()); - if (iocp_service_.register_handle(sock_as_handle, ec)) - return ec; - - impl.socket_ = sock.release(); - switch (type) - { - case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break; - case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break; - default: impl.state_ = 0; break; - } - impl.cancel_token_.reset(static_cast(0), socket_ops::noop_deleter()); - ec = asio::error_code(); - return ec; -} - -asio::error_code win_iocp_socket_service_base::do_assign( - win_iocp_socket_service_base::base_implementation_type& impl, - int type, socket_type native_socket, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - HANDLE sock_as_handle = reinterpret_cast(native_socket); - if (iocp_service_.register_handle(sock_as_handle, ec)) - return ec; - - impl.socket_ = native_socket; - switch (type) - { - case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break; - case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break; - default: impl.state_ = 0; break; - } - impl.cancel_token_.reset(static_cast(0), socket_ops::noop_deleter()); - ec = asio::error_code(); - return ec; -} - -void win_iocp_socket_service_base::start_send_op( - win_iocp_socket_service_base::base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - socket_base::message_flags flags, bool noop, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (noop) - iocp_service_.on_completion(op); - else if (!is_open(impl)) - iocp_service_.on_completion(op, asio::error::bad_descriptor); - else - { - DWORD bytes_transferred = 0; - int result = ::WSASend(impl.socket_, buffers, - static_cast(buffer_count), &bytes_transferred, flags, op, 0); - DWORD last_error = ::WSAGetLastError(); - if (last_error == ERROR_PORT_UNREACHABLE) - last_error = WSAECONNREFUSED; - if (result != 0 && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error, bytes_transferred); - else - iocp_service_.on_pending(op); - } -} - -void win_iocp_socket_service_base::start_send_to_op( - win_iocp_socket_service_base::base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - const socket_addr_type* addr, int addrlen, - socket_base::message_flags flags, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (!is_open(impl)) - iocp_service_.on_completion(op, asio::error::bad_descriptor); - else - { - DWORD bytes_transferred = 0; - int result = ::WSASendTo(impl.socket_, buffers, - static_cast(buffer_count), - &bytes_transferred, flags, addr, addrlen, op, 0); - DWORD last_error = ::WSAGetLastError(); - if (last_error == ERROR_PORT_UNREACHABLE) - last_error = WSAECONNREFUSED; - if (result != 0 && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error, bytes_transferred); - else - iocp_service_.on_pending(op); - } -} - -void win_iocp_socket_service_base::start_receive_op( - win_iocp_socket_service_base::base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - socket_base::message_flags flags, bool noop, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (noop) - iocp_service_.on_completion(op); - else if (!is_open(impl)) - iocp_service_.on_completion(op, asio::error::bad_descriptor); - else - { - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int result = ::WSARecv(impl.socket_, buffers, - static_cast(buffer_count), - &bytes_transferred, &recv_flags, op, 0); - DWORD last_error = ::WSAGetLastError(); - if (last_error == ERROR_NETNAME_DELETED) - last_error = WSAECONNRESET; - else if (last_error == ERROR_PORT_UNREACHABLE) - last_error = WSAECONNREFUSED; - if (result != 0 && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error, bytes_transferred); - else - iocp_service_.on_pending(op); - } -} - -void win_iocp_socket_service_base::start_null_buffers_receive_op( - win_iocp_socket_service_base::base_implementation_type& impl, - socket_base::message_flags flags, reactor_op* op) -{ - if ((impl.state_ & socket_ops::stream_oriented) != 0) - { - // For stream sockets on Windows, we may issue a 0-byte overlapped - // WSARecv to wait until there is data available on the socket. - ::WSABUF buf = { 0, 0 }; - start_receive_op(impl, &buf, 1, flags, false, op); - } - else - { - start_reactor_op(impl, - (flags & socket_base::message_out_of_band) - ? select_reactor::except_op : select_reactor::read_op, - op); - } -} - -void win_iocp_socket_service_base::start_receive_from_op( - win_iocp_socket_service_base::base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr, - socket_base::message_flags flags, int* addrlen, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (!is_open(impl)) - iocp_service_.on_completion(op, asio::error::bad_descriptor); - else - { - DWORD bytes_transferred = 0; - DWORD recv_flags = flags; - int result = ::WSARecvFrom(impl.socket_, buffers, - static_cast(buffer_count), - &bytes_transferred, &recv_flags, addr, addrlen, op, 0); - DWORD last_error = ::WSAGetLastError(); - if (last_error == ERROR_PORT_UNREACHABLE) - last_error = WSAECONNREFUSED; - if (result != 0 && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error, bytes_transferred); - else - iocp_service_.on_pending(op); - } -} - -void win_iocp_socket_service_base::start_accept_op( - win_iocp_socket_service_base::base_implementation_type& impl, - bool peer_is_open, socket_holder& new_socket, int family, int type, - int protocol, void* output_buffer, DWORD address_length, operation* op) -{ - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - if (!is_open(impl)) - iocp_service_.on_completion(op, asio::error::bad_descriptor); - else if (peer_is_open) - iocp_service_.on_completion(op, asio::error::already_open); - else - { - asio::error_code ec; - new_socket.reset(socket_ops::socket(family, type, protocol, ec)); - if (new_socket.get() == invalid_socket) - iocp_service_.on_completion(op, ec); - else - { - DWORD bytes_read = 0; - BOOL result = ::AcceptEx(impl.socket_, new_socket.get(), output_buffer, - 0, address_length, address_length, &bytes_read, op); - DWORD last_error = ::WSAGetLastError(); - if (!result && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error); - else - iocp_service_.on_pending(op); - } - } -} - -void win_iocp_socket_service_base::restart_accept_op( - socket_type s, socket_holder& new_socket, int family, int type, - int protocol, void* output_buffer, DWORD address_length, operation* op) -{ - new_socket.reset(); - iocp_service_.work_started(); - - asio::error_code ec; - new_socket.reset(socket_ops::socket(family, type, protocol, ec)); - if (new_socket.get() == invalid_socket) - iocp_service_.on_completion(op, ec); - else - { - DWORD bytes_read = 0; - BOOL result = ::AcceptEx(s, new_socket.get(), output_buffer, - 0, address_length, address_length, &bytes_read, op); - DWORD last_error = ::WSAGetLastError(); - if (!result && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error); - else - iocp_service_.on_pending(op); - } -} - -void win_iocp_socket_service_base::start_reactor_op( - win_iocp_socket_service_base::base_implementation_type& impl, - int op_type, reactor_op* op) -{ - select_reactor& r = get_reactor(); - update_cancellation_thread_id(impl); - - if (is_open(impl)) - { - r.start_op(op_type, impl.socket_, impl.reactor_data_, op, false, false); - return; - } - else - op->ec_ = asio::error::bad_descriptor; - - iocp_service_.post_immediate_completion(op, false); -} - -void win_iocp_socket_service_base::start_connect_op( - win_iocp_socket_service_base::base_implementation_type& impl, - int family, int type, const socket_addr_type* addr, - std::size_t addrlen, win_iocp_socket_connect_op_base* op) -{ - // If ConnectEx is available, use that. - if (family == ASIO_OS_DEF(AF_INET) - || family == ASIO_OS_DEF(AF_INET6)) - { - if (connect_ex_fn connect_ex = get_connect_ex(impl, type)) - { - union address_union - { - socket_addr_type base; - sockaddr_in4_type v4; - sockaddr_in6_type v6; - } a; - - using namespace std; // For memset. - memset(&a, 0, sizeof(a)); - a.base.sa_family = family; - - socket_ops::bind(impl.socket_, &a.base, - family == ASIO_OS_DEF(AF_INET) - ? sizeof(a.v4) : sizeof(a.v6), op->ec_); - if (op->ec_ && op->ec_ != asio::error::invalid_argument) - { - iocp_service_.post_immediate_completion(op, false); - return; - } - - op->connect_ex_ = true; - update_cancellation_thread_id(impl); - iocp_service_.work_started(); - - BOOL result = connect_ex(impl.socket_, - addr, static_cast(addrlen), 0, 0, 0, op); - DWORD last_error = ::WSAGetLastError(); - if (!result && last_error != WSA_IO_PENDING) - iocp_service_.on_completion(op, last_error); - else - iocp_service_.on_pending(op); - return; - } - } - - // Otherwise, fall back to a reactor-based implementation. - select_reactor& r = get_reactor(); - update_cancellation_thread_id(impl); - - if ((impl.state_ & socket_ops::non_blocking) != 0 - || socket_ops::set_internal_non_blocking( - impl.socket_, impl.state_, true, op->ec_)) - { - if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0) - { - if (op->ec_ == asio::error::in_progress - || op->ec_ == asio::error::would_block) - { - op->ec_ = asio::error_code(); - r.start_op(select_reactor::connect_op, impl.socket_, - impl.reactor_data_, op, false, false); - return; - } - } - } - - r.post_immediate_completion(op, false); -} - -void win_iocp_socket_service_base::close_for_destruction( - win_iocp_socket_service_base::base_implementation_type& impl) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((iocp_service_.context(), - "socket", &impl, impl.socket_, "close")); - - // Check if the reactor was created, in which case we need to close the - // socket on the reactor as well to cancel any operations that might be - // running there. - select_reactor* r = static_cast( - interlocked_compare_exchange_pointer( - reinterpret_cast(&reactor_), 0, 0)); - if (r) - r->deregister_descriptor(impl.socket_, impl.reactor_data_, true); - - asio::error_code ignored_ec; - socket_ops::close(impl.socket_, impl.state_, true, ignored_ec); - - if (r) - r->cleanup_descriptor_data(impl.reactor_data_); - } - - impl.socket_ = invalid_socket; - impl.state_ = 0; - impl.cancel_token_.reset(); -#if defined(ASIO_ENABLE_CANCELIO) - impl.safe_cancellation_thread_id_ = 0; -#endif // defined(ASIO_ENABLE_CANCELIO) -} - -void win_iocp_socket_service_base::update_cancellation_thread_id( - win_iocp_socket_service_base::base_implementation_type& impl) -{ -#if defined(ASIO_ENABLE_CANCELIO) - if (impl.safe_cancellation_thread_id_ == 0) - impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId(); - else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId()) - impl.safe_cancellation_thread_id_ = ~DWORD(0); -#else // defined(ASIO_ENABLE_CANCELIO) - (void)impl; -#endif // defined(ASIO_ENABLE_CANCELIO) -} - -select_reactor& win_iocp_socket_service_base::get_reactor() -{ - select_reactor* r = static_cast( - interlocked_compare_exchange_pointer( - reinterpret_cast(&reactor_), 0, 0)); - if (!r) - { - r = &(use_service(context_)); - interlocked_exchange_pointer(reinterpret_cast(&reactor_), r); - } - return *r; -} - -win_iocp_socket_service_base::connect_ex_fn -win_iocp_socket_service_base::get_connect_ex( - win_iocp_socket_service_base::base_implementation_type& impl, int type) -{ -#if defined(ASIO_DISABLE_CONNECTEX) - (void)impl; - (void)type; - return 0; -#else // defined(ASIO_DISABLE_CONNECTEX) - if (type != ASIO_OS_DEF(SOCK_STREAM) - && type != ASIO_OS_DEF(SOCK_SEQPACKET)) - return 0; - - void* ptr = interlocked_compare_exchange_pointer(&connect_ex_, 0, 0); - if (!ptr) - { - GUID guid = { 0x25a207b9, 0xddf3, 0x4660, - { 0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e } }; - - DWORD bytes = 0; - if (::WSAIoctl(impl.socket_, SIO_GET_EXTENSION_FUNCTION_POINTER, - &guid, sizeof(guid), &ptr, sizeof(ptr), &bytes, 0, 0) != 0) - { - // Set connect_ex_ to a special value to indicate that ConnectEx is - // unavailable. That way we won't bother trying to look it up again. - ptr = this; - } - - interlocked_exchange_pointer(&connect_ex_, ptr); - } - - return reinterpret_cast(ptr == this ? 0 : ptr); -#endif // defined(ASIO_DISABLE_CONNECTEX) -} - -win_iocp_socket_service_base::nt_set_info_fn -win_iocp_socket_service_base::get_nt_set_info() -{ - void* ptr = interlocked_compare_exchange_pointer(&nt_set_info_, 0, 0); - if (!ptr) - { - if (HMODULE h = ::GetModuleHandleA("NTDLL.DLL")) - ptr = reinterpret_cast(GetProcAddress(h, "NtSetInformationFile")); - - // On failure, set nt_set_info_ to a special value to indicate that the - // NtSetInformationFile function is unavailable. That way we won't bother - // trying to look it up again. - interlocked_exchange_pointer(&nt_set_info_, ptr ? ptr : this); - } - - return reinterpret_cast(ptr == this ? 0 : ptr); -} - -void* win_iocp_socket_service_base::interlocked_compare_exchange_pointer( - void** dest, void* exch, void* cmp) -{ -#if defined(_M_IX86) - return reinterpret_cast(InterlockedCompareExchange( - reinterpret_cast(dest), reinterpret_cast(exch), - reinterpret_cast(cmp))); -#else - return InterlockedCompareExchangePointer(dest, exch, cmp); -#endif -} - -void* win_iocp_socket_service_base::interlocked_exchange_pointer( - void** dest, void* val) -{ -#if defined(_M_IX86) - return reinterpret_cast(InterlockedExchange( - reinterpret_cast(dest), reinterpret_cast(val))); -#else - return InterlockedExchangePointer(dest, val); -#endif -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_mutex.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_mutex.ipp deleted file mode 100644 index e5088c60..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_mutex.ipp +++ /dev/null @@ -1,84 +0,0 @@ -// -// detail/impl/win_mutex.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_MUTEX_IPP -#define ASIO_DETAIL_IMPL_WIN_MUTEX_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_mutex.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_mutex::win_mutex() -{ - int error = do_init(); - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "mutex"); -} - -int win_mutex::do_init() -{ -#if defined(__MINGW32__) - // Not sure if MinGW supports structured exception handling, so for now - // we'll just call the Windows API and hope. -# if defined(UNDER_CE) - ::InitializeCriticalSection(&crit_section_); -# elif defined(ASIO_WINDOWS_APP) - if (!::InitializeCriticalSectionEx(&crit_section_, 0, 0)) - return ::GetLastError(); -# else - if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) - return ::GetLastError(); -# endif - return 0; -#else - __try - { -# if defined(UNDER_CE) - ::InitializeCriticalSection(&crit_section_); -# elif defined(ASIO_WINDOWS_APP) - if (!::InitializeCriticalSectionEx(&crit_section_, 0, 0)) - return ::GetLastError(); -# else - if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) - return ::GetLastError(); -# endif - } - __except(GetExceptionCode() == STATUS_NO_MEMORY - ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) - { - return ERROR_OUTOFMEMORY; - } - - return 0; -#endif -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_IMPL_WIN_MUTEX_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp deleted file mode 100644 index 0e80edc0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp +++ /dev/null @@ -1,448 +0,0 @@ -// -// detail/impl/win_object_handle_service.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2011 Boris Schaeling (boris@highscore.de) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP -#define ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) - -#include "asio/detail/win_object_handle_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_object_handle_service::win_object_handle_service(execution_context& context) - : execution_context_service_base(context), - scheduler_(asio::use_service(context)), - mutex_(), - impl_list_(0), - shutdown_(false) -{ -} - -void win_object_handle_service::shutdown() -{ - mutex::scoped_lock lock(mutex_); - - // Setting this flag to true prevents new objects from being registered, and - // new asynchronous wait operations from being started. We only need to worry - // about cleaning up the operations that are currently in progress. - shutdown_ = true; - - op_queue ops; - for (implementation_type* impl = impl_list_; impl; impl = impl->next_) - ops.push(impl->op_queue_); - - lock.unlock(); - - scheduler_.abandon_operations(ops); -} - -void win_object_handle_service::construct( - win_object_handle_service::implementation_type& impl) -{ - impl.handle_ = INVALID_HANDLE_VALUE; - impl.wait_handle_ = INVALID_HANDLE_VALUE; - impl.owner_ = this; - - // Insert implementation into linked list of all implementations. - mutex::scoped_lock lock(mutex_); - if (!shutdown_) - { - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; - } -} - -void win_object_handle_service::move_construct( - win_object_handle_service::implementation_type& impl, - win_object_handle_service::implementation_type& other_impl) -{ - mutex::scoped_lock lock(mutex_); - - // Insert implementation into linked list of all implementations. - if (!shutdown_) - { - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; - } - - impl.handle_ = other_impl.handle_; - other_impl.handle_ = INVALID_HANDLE_VALUE; - impl.wait_handle_ = other_impl.wait_handle_; - other_impl.wait_handle_ = INVALID_HANDLE_VALUE; - impl.op_queue_.push(other_impl.op_queue_); - impl.owner_ = this; - - // We must not hold the lock while calling UnregisterWaitEx. This is because - // the registered callback function might be invoked while we are waiting for - // UnregisterWaitEx to complete. - lock.unlock(); - - if (impl.wait_handle_ != INVALID_HANDLE_VALUE) - ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE); - - if (!impl.op_queue_.empty()) - register_wait_callback(impl, lock); -} - -void win_object_handle_service::move_assign( - win_object_handle_service::implementation_type& impl, - win_object_handle_service& other_service, - win_object_handle_service::implementation_type& other_impl) -{ - asio::error_code ignored_ec; - close(impl, ignored_ec); - - mutex::scoped_lock lock(mutex_); - - if (this != &other_service) - { - // Remove implementation from linked list of all implementations. - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; - } - - impl.handle_ = other_impl.handle_; - other_impl.handle_ = INVALID_HANDLE_VALUE; - impl.wait_handle_ = other_impl.wait_handle_; - other_impl.wait_handle_ = INVALID_HANDLE_VALUE; - impl.op_queue_.push(other_impl.op_queue_); - impl.owner_ = this; - - if (this != &other_service) - { - // Insert implementation into linked list of all implementations. - impl.next_ = other_service.impl_list_; - impl.prev_ = 0; - if (other_service.impl_list_) - other_service.impl_list_->prev_ = &impl; - other_service.impl_list_ = &impl; - } - - // We must not hold the lock while calling UnregisterWaitEx. This is because - // the registered callback function might be invoked while we are waiting for - // UnregisterWaitEx to complete. - lock.unlock(); - - if (impl.wait_handle_ != INVALID_HANDLE_VALUE) - ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE); - - if (!impl.op_queue_.empty()) - register_wait_callback(impl, lock); -} - -void win_object_handle_service::destroy( - win_object_handle_service::implementation_type& impl) -{ - mutex::scoped_lock lock(mutex_); - - // Remove implementation from linked list of all implementations. - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; - - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((scheduler_.context(), "object_handle", - &impl, reinterpret_cast(impl.wait_handle_), "close")); - - HANDLE wait_handle = impl.wait_handle_; - impl.wait_handle_ = INVALID_HANDLE_VALUE; - - op_queue ops; - while (wait_op* op = impl.op_queue_.front()) - { - op->ec_ = asio::error::operation_aborted; - impl.op_queue_.pop(); - ops.push(op); - } - - // We must not hold the lock while calling UnregisterWaitEx. This is - // because the registered callback function might be invoked while we are - // waiting for UnregisterWaitEx to complete. - lock.unlock(); - - if (wait_handle != INVALID_HANDLE_VALUE) - ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); - - ::CloseHandle(impl.handle_); - impl.handle_ = INVALID_HANDLE_VALUE; - - scheduler_.post_deferred_completions(ops); - } -} - -asio::error_code win_object_handle_service::assign( - win_object_handle_service::implementation_type& impl, - const native_handle_type& handle, asio::error_code& ec) -{ - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - impl.handle_ = handle; - ec = asio::error_code(); - return ec; -} - -asio::error_code win_object_handle_service::close( - win_object_handle_service::implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((scheduler_.context(), "object_handle", - &impl, reinterpret_cast(impl.wait_handle_), "close")); - - mutex::scoped_lock lock(mutex_); - - HANDLE wait_handle = impl.wait_handle_; - impl.wait_handle_ = INVALID_HANDLE_VALUE; - - op_queue completed_ops; - while (wait_op* op = impl.op_queue_.front()) - { - impl.op_queue_.pop(); - op->ec_ = asio::error::operation_aborted; - completed_ops.push(op); - } - - // We must not hold the lock while calling UnregisterWaitEx. This is - // because the registered callback function might be invoked while we are - // waiting for UnregisterWaitEx to complete. - lock.unlock(); - - if (wait_handle != INVALID_HANDLE_VALUE) - ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); - - if (::CloseHandle(impl.handle_)) - { - impl.handle_ = INVALID_HANDLE_VALUE; - ec = asio::error_code(); - } - else - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - } - - scheduler_.post_deferred_completions(completed_ops); - } - else - { - ec = asio::error_code(); - } - - return ec; -} - -asio::error_code win_object_handle_service::cancel( - win_object_handle_service::implementation_type& impl, - asio::error_code& ec) -{ - if (is_open(impl)) - { - ASIO_HANDLER_OPERATION((scheduler_.context(), "object_handle", - &impl, reinterpret_cast(impl.wait_handle_), "cancel")); - - mutex::scoped_lock lock(mutex_); - - HANDLE wait_handle = impl.wait_handle_; - impl.wait_handle_ = INVALID_HANDLE_VALUE; - - op_queue completed_ops; - while (wait_op* op = impl.op_queue_.front()) - { - op->ec_ = asio::error::operation_aborted; - impl.op_queue_.pop(); - completed_ops.push(op); - } - - // We must not hold the lock while calling UnregisterWaitEx. This is - // because the registered callback function might be invoked while we are - // waiting for UnregisterWaitEx to complete. - lock.unlock(); - - if (wait_handle != INVALID_HANDLE_VALUE) - ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); - - ec = asio::error_code(); - - scheduler_.post_deferred_completions(completed_ops); - } - else - { - ec = asio::error::bad_descriptor; - } - - return ec; -} - -void win_object_handle_service::wait( - win_object_handle_service::implementation_type& impl, - asio::error_code& ec) -{ - switch (::WaitForSingleObject(impl.handle_, INFINITE)) - { - case WAIT_FAILED: - { - DWORD last_error = ::GetLastError(); - ec = asio::error_code(last_error, - asio::error::get_system_category()); - break; - } - case WAIT_OBJECT_0: - case WAIT_ABANDONED: - default: - ec = asio::error_code(); - break; - } -} - -void win_object_handle_service::start_wait_op( - win_object_handle_service::implementation_type& impl, wait_op* op) -{ - scheduler_.work_started(); - - if (is_open(impl)) - { - mutex::scoped_lock lock(mutex_); - - if (!shutdown_) - { - impl.op_queue_.push(op); - - // Only the first operation to be queued gets to register a wait callback. - // Subsequent operations have to wait for the first to finish. - if (impl.op_queue_.front() == op) - register_wait_callback(impl, lock); - } - else - { - lock.unlock(); - scheduler_.post_deferred_completion(op); - } - } - else - { - op->ec_ = asio::error::bad_descriptor; - scheduler_.post_deferred_completion(op); - } -} - -void win_object_handle_service::register_wait_callback( - win_object_handle_service::implementation_type& impl, - mutex::scoped_lock& lock) -{ - lock.lock(); - - if (!RegisterWaitForSingleObject(&impl.wait_handle_, - impl.handle_, &win_object_handle_service::wait_callback, - &impl, INFINITE, WT_EXECUTEONLYONCE)) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - - op_queue completed_ops; - while (wait_op* op = impl.op_queue_.front()) - { - op->ec_ = ec; - impl.op_queue_.pop(); - completed_ops.push(op); - } - - lock.unlock(); - scheduler_.post_deferred_completions(completed_ops); - } -} - -void win_object_handle_service::wait_callback(PVOID param, BOOLEAN) -{ - implementation_type* impl = static_cast(param); - mutex::scoped_lock lock(impl->owner_->mutex_); - - if (impl->wait_handle_ != INVALID_HANDLE_VALUE) - { - ::UnregisterWaitEx(impl->wait_handle_, NULL); - impl->wait_handle_ = INVALID_HANDLE_VALUE; - } - - if (wait_op* op = impl->op_queue_.front()) - { - op_queue completed_ops; - - op->ec_ = asio::error_code(); - impl->op_queue_.pop(); - completed_ops.push(op); - - if (!impl->op_queue_.empty()) - { - if (!RegisterWaitForSingleObject(&impl->wait_handle_, - impl->handle_, &win_object_handle_service::wait_callback, - param, INFINITE, WT_EXECUTEONLYONCE)) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - - while ((op = impl->op_queue_.front()) != 0) - { - op->ec_ = ec; - impl->op_queue_.pop(); - completed_ops.push(op); - } - } - } - - scheduler_impl& sched = impl->owner_->scheduler_; - lock.unlock(); - sched.post_deferred_completions(completed_ops); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) - -#endif // ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_static_mutex.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_static_mutex.ipp deleted file mode 100644 index 0b6a6e2f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_static_mutex.ipp +++ /dev/null @@ -1,136 +0,0 @@ -// -// detail/impl/win_static_mutex.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP -#define ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_static_mutex.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -void win_static_mutex::init() -{ - int error = do_init(); - asio::error_code ec(error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "static_mutex"); -} - -int win_static_mutex::do_init() -{ - using namespace std; // For sprintf. - wchar_t mutex_name[128]; -#if defined(ASIO_HAS_SECURE_RTL) - swprintf_s( -#else // defined(ASIO_HAS_SECURE_RTL) - _snwprintf( -#endif // defined(ASIO_HAS_SECURE_RTL) - mutex_name, 128, L"asio-58CCDC44-6264-4842-90C2-F3C545CB8AA7-%u-%p", - static_cast(::GetCurrentProcessId()), this); - -#if defined(ASIO_WINDOWS_APP) - HANDLE mutex = ::CreateMutexExW(0, mutex_name, CREATE_MUTEX_INITIAL_OWNER, 0); -#else // defined(ASIO_WINDOWS_APP) - HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name); -#endif // defined(ASIO_WINDOWS_APP) - DWORD last_error = ::GetLastError(); - if (mutex == 0) - return ::GetLastError(); - - if (last_error == ERROR_ALREADY_EXISTS) - { -#if defined(ASIO_WINDOWS_APP) - ::WaitForSingleObjectEx(mutex, INFINITE, false); -#else // defined(ASIO_WINDOWS_APP) - ::WaitForSingleObject(mutex, INFINITE); -#endif // defined(ASIO_WINDOWS_APP) - } - - if (initialised_) - { - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return 0; - } - -#if defined(__MINGW32__) - // Not sure if MinGW supports structured exception handling, so for now - // we'll just call the Windows API and hope. -# if defined(UNDER_CE) - ::InitializeCriticalSection(&crit_section_); -# else - if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) - { - last_error = ::GetLastError(); - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return last_error; - } -# endif -#else - __try - { -# if defined(UNDER_CE) - ::InitializeCriticalSection(&crit_section_); -# elif defined(ASIO_WINDOWS_APP) - if (!::InitializeCriticalSectionEx(&crit_section_, 0, 0)) - { - last_error = ::GetLastError(); - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return last_error; - } -# else - if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000)) - { - last_error = ::GetLastError(); - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return last_error; - } -# endif - } - __except(GetExceptionCode() == STATUS_NO_MEMORY - ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) - { - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return ERROR_OUTOFMEMORY; - } -#endif - - initialised_ = true; - ::ReleaseMutex(mutex); - ::CloseHandle(mutex); - return 0; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_thread.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_thread.ipp deleted file mode 100644 index d2ef02f6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_thread.ipp +++ /dev/null @@ -1,150 +0,0 @@ -// -// detail/impl/win_thread.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_THREAD_IPP -#define ASIO_DETAIL_IMPL_WIN_THREAD_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_APP) \ - && !defined(UNDER_CE) - -#include -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_thread.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -win_thread::~win_thread() -{ - ::CloseHandle(thread_); - - // The exit_event_ handle is deliberately allowed to leak here since it - // is an error for the owner of an internal thread not to join() it. -} - -void win_thread::join() -{ - HANDLE handles[2] = { exit_event_, thread_ }; - ::WaitForMultipleObjects(2, handles, FALSE, INFINITE); - ::CloseHandle(exit_event_); - if (terminate_threads()) - { - ::TerminateThread(thread_, 0); - } - else - { - ::QueueUserAPC(apc_function, thread_, 0); - ::WaitForSingleObject(thread_, INFINITE); - } -} - -std::size_t win_thread::hardware_concurrency() -{ - SYSTEM_INFO system_info; - ::GetSystemInfo(&system_info); - return system_info.dwNumberOfProcessors; -} - -void win_thread::start_thread(func_base* arg, unsigned int stack_size) -{ - ::HANDLE entry_event = 0; - arg->entry_event_ = entry_event = ::CreateEventW(0, true, false, 0); - if (!entry_event) - { - DWORD last_error = ::GetLastError(); - delete arg; - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread.entry_event"); - } - - arg->exit_event_ = exit_event_ = ::CreateEventW(0, true, false, 0); - if (!exit_event_) - { - DWORD last_error = ::GetLastError(); - delete arg; - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread.exit_event"); - } - - unsigned int thread_id = 0; - thread_ = reinterpret_cast(::_beginthreadex(0, - stack_size, win_thread_function, arg, 0, &thread_id)); - if (!thread_) - { - DWORD last_error = ::GetLastError(); - delete arg; - if (entry_event) - ::CloseHandle(entry_event); - if (exit_event_) - ::CloseHandle(exit_event_); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread"); - } - - if (entry_event) - { - ::WaitForSingleObject(entry_event, INFINITE); - ::CloseHandle(entry_event); - } -} - -unsigned int __stdcall win_thread_function(void* arg) -{ - win_thread::auto_func_base_ptr func = { - static_cast(arg) }; - - ::SetEvent(func.ptr->entry_event_); - - func.ptr->run(); - - // Signal that the thread has finished its work, but rather than returning go - // to sleep to put the thread into a well known state. If the thread is being - // joined during global object destruction then it may be killed using - // TerminateThread (to avoid a deadlock in DllMain). Otherwise, the SleepEx - // call will be interrupted using QueueUserAPC and the thread will shut down - // cleanly. - HANDLE exit_event = func.ptr->exit_event_; - delete func.ptr; - func.ptr = 0; - ::SetEvent(exit_event); - ::SleepEx(INFINITE, TRUE); - - return 0; -} - -#if defined(WINVER) && (WINVER < 0x0500) -void __stdcall apc_function(ULONG) {} -#else -void __stdcall apc_function(ULONG_PTR) {} -#endif - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_APP) - // && !defined(UNDER_CE) - -#endif // ASIO_DETAIL_IMPL_WIN_THREAD_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp deleted file mode 100644 index e90c628c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp +++ /dev/null @@ -1,57 +0,0 @@ -// -// detail/impl/win_tss_ptr.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP -#define ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/throw_error.hpp" -#include "asio/detail/win_tss_ptr.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -DWORD win_tss_ptr_create() -{ -#if defined(UNDER_CE) - const DWORD out_of_indexes = 0xFFFFFFFF; -#else - const DWORD out_of_indexes = TLS_OUT_OF_INDEXES; -#endif - - DWORD tss_key = ::TlsAlloc(); - if (tss_key == out_of_indexes) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "tss"); - } - return tss_key; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp deleted file mode 100644 index 66d3f776..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp +++ /dev/null @@ -1,626 +0,0 @@ -// -// detail/impl/winrt_ssocket_service_base.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP -#define ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include -#include "asio/detail/winrt_ssocket_service_base.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/detail/winrt_utils.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -winrt_ssocket_service_base::winrt_ssocket_service_base( - execution_context& context) - : scheduler_(use_service(context)), - async_manager_(use_service(context)), - mutex_(), - impl_list_(0) -{ -} - -void winrt_ssocket_service_base::base_shutdown() -{ - // Close all implementations, causing all operations to complete. - asio::detail::mutex::scoped_lock lock(mutex_); - base_implementation_type* impl = impl_list_; - while (impl) - { - asio::error_code ignored_ec; - close(*impl, ignored_ec); - impl = impl->next_; - } -} - -void winrt_ssocket_service_base::construct( - winrt_ssocket_service_base::base_implementation_type& impl) -{ - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void winrt_ssocket_service_base::base_move_construct( - winrt_ssocket_service_base::base_implementation_type& impl, - winrt_ssocket_service_base::base_implementation_type& other_impl) - ASIO_NOEXCEPT -{ - impl.socket_ = other_impl.socket_; - other_impl.socket_ = nullptr; - - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - impl.next_ = impl_list_; - impl.prev_ = 0; - if (impl_list_) - impl_list_->prev_ = &impl; - impl_list_ = &impl; -} - -void winrt_ssocket_service_base::base_move_assign( - winrt_ssocket_service_base::base_implementation_type& impl, - winrt_ssocket_service_base& other_service, - winrt_ssocket_service_base::base_implementation_type& other_impl) -{ - asio::error_code ignored_ec; - close(impl, ignored_ec); - - if (this != &other_service) - { - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; - } - - impl.socket_ = other_impl.socket_; - other_impl.socket_ = nullptr; - - if (this != &other_service) - { - // Insert implementation into linked list of all implementations. - asio::detail::mutex::scoped_lock lock(other_service.mutex_); - impl.next_ = other_service.impl_list_; - impl.prev_ = 0; - if (other_service.impl_list_) - other_service.impl_list_->prev_ = &impl; - other_service.impl_list_ = &impl; - } -} - -void winrt_ssocket_service_base::destroy( - winrt_ssocket_service_base::base_implementation_type& impl) -{ - asio::error_code ignored_ec; - close(impl, ignored_ec); - - // Remove implementation from linked list of all implementations. - asio::detail::mutex::scoped_lock lock(mutex_); - if (impl_list_ == &impl) - impl_list_ = impl.next_; - if (impl.prev_) - impl.prev_->next_ = impl.next_; - if (impl.next_) - impl.next_->prev_= impl.prev_; - impl.next_ = 0; - impl.prev_ = 0; -} - -asio::error_code winrt_ssocket_service_base::close( - winrt_ssocket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - delete impl.socket_; - impl.socket_ = nullptr; - ec = asio::error_code(); - return ec; -} - -winrt_ssocket_service_base::native_handle_type -winrt_ssocket_service_base::release( - winrt_ssocket_service_base::base_implementation_type& impl, - asio::error_code& ec) -{ - if (!is_open(impl)) - return nullptr; - - cancel(impl, ec); - if (ec) - return nullptr; - - native_handle_type tmp = impl.socket_; - impl.socket_ = nullptr; - return tmp; -} - -std::size_t winrt_ssocket_service_base::do_get_endpoint( - const base_implementation_type& impl, bool local, - void* addr, std::size_t addr_len, asio::error_code& ec) const -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return addr_len; - } - - try - { - std::string addr_string = winrt_utils::string(local - ? impl.socket_->Information->LocalAddress->CanonicalName - : impl.socket_->Information->RemoteAddress->CanonicalName); - unsigned short port = winrt_utils::integer(local - ? impl.socket_->Information->LocalPort - : impl.socket_->Information->RemotePort); - unsigned long scope = 0; - - switch (reinterpret_cast(addr)->sa_family) - { - case ASIO_OS_DEF(AF_INET): - if (addr_len < sizeof(sockaddr_in4_type)) - { - ec = asio::error::invalid_argument; - return addr_len; - } - else - { - socket_ops::inet_pton(ASIO_OS_DEF(AF_INET), addr_string.c_str(), - &reinterpret_cast(addr)->sin_addr, &scope, ec); - reinterpret_cast(addr)->sin_port - = socket_ops::host_to_network_short(port); - ec = asio::error_code(); - return sizeof(sockaddr_in4_type); - } - case ASIO_OS_DEF(AF_INET6): - if (addr_len < sizeof(sockaddr_in6_type)) - { - ec = asio::error::invalid_argument; - return addr_len; - } - else - { - socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6), addr_string.c_str(), - &reinterpret_cast(addr)->sin6_addr, &scope, ec); - reinterpret_cast(addr)->sin6_port - = socket_ops::host_to_network_short(port); - ec = asio::error_code(); - return sizeof(sockaddr_in6_type); - } - default: - ec = asio::error::address_family_not_supported; - return addr_len; - } - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - return addr_len; - } -} - -asio::error_code winrt_ssocket_service_base::do_set_option( - winrt_ssocket_service_base::base_implementation_type& impl, - int level, int optname, const void* optval, - std::size_t optlen, asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - try - { - if (level == ASIO_OS_DEF(SOL_SOCKET) - && optname == ASIO_OS_DEF(SO_KEEPALIVE)) - { - if (optlen == sizeof(int)) - { - int value = 0; - std::memcpy(&value, optval, optlen); - impl.socket_->Control->KeepAlive = !!value; - ec = asio::error_code(); - } - else - { - ec = asio::error::invalid_argument; - } - } - else if (level == ASIO_OS_DEF(IPPROTO_TCP) - && optname == ASIO_OS_DEF(TCP_NODELAY)) - { - if (optlen == sizeof(int)) - { - int value = 0; - std::memcpy(&value, optval, optlen); - impl.socket_->Control->NoDelay = !!value; - ec = asio::error_code(); - } - else - { - ec = asio::error::invalid_argument; - } - } - else - { - ec = asio::error::invalid_argument; - } - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - } - - return ec; -} - -void winrt_ssocket_service_base::do_get_option( - const winrt_ssocket_service_base::base_implementation_type& impl, - int level, int optname, void* optval, - std::size_t* optlen, asio::error_code& ec) const -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return; - } - - try - { - if (level == ASIO_OS_DEF(SOL_SOCKET) - && optname == ASIO_OS_DEF(SO_KEEPALIVE)) - { - if (*optlen >= sizeof(int)) - { - int value = impl.socket_->Control->KeepAlive ? 1 : 0; - std::memcpy(optval, &value, sizeof(int)); - *optlen = sizeof(int); - ec = asio::error_code(); - } - else - { - ec = asio::error::invalid_argument; - } - } - else if (level == ASIO_OS_DEF(IPPROTO_TCP) - && optname == ASIO_OS_DEF(TCP_NODELAY)) - { - if (*optlen >= sizeof(int)) - { - int value = impl.socket_->Control->NoDelay ? 1 : 0; - std::memcpy(optval, &value, sizeof(int)); - *optlen = sizeof(int); - ec = asio::error_code(); - } - else - { - ec = asio::error::invalid_argument; - } - } - else - { - ec = asio::error::invalid_argument; - } - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - } -} - -asio::error_code winrt_ssocket_service_base::do_connect( - winrt_ssocket_service_base::base_implementation_type& impl, - const void* addr, asio::error_code& ec) -{ - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return ec; - } - - char addr_string[max_addr_v6_str_len]; - unsigned short port; - switch (reinterpret_cast(addr)->sa_family) - { - case ASIO_OS_DEF(AF_INET): - socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET), - &reinterpret_cast(addr)->sin_addr, - addr_string, sizeof(addr_string), 0, ec); - port = socket_ops::network_to_host_short( - reinterpret_cast(addr)->sin_port); - break; - case ASIO_OS_DEF(AF_INET6): - socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6), - &reinterpret_cast(addr)->sin6_addr, - addr_string, sizeof(addr_string), 0, ec); - port = socket_ops::network_to_host_short( - reinterpret_cast(addr)->sin6_port); - break; - default: - ec = asio::error::address_family_not_supported; - return ec; - } - - if (!ec) try - { - async_manager_.sync(impl.socket_->ConnectAsync( - ref new Windows::Networking::HostName( - winrt_utils::string(addr_string)), - winrt_utils::string(port)), ec); - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - } - - return ec; -} - -void winrt_ssocket_service_base::start_connect_op( - winrt_ssocket_service_base::base_implementation_type& impl, - const void* addr, winrt_async_op* op, bool is_continuation) -{ - if (!is_open(impl)) - { - op->ec_ = asio::error::bad_descriptor; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - char addr_string[max_addr_v6_str_len]; - unsigned short port = 0; - switch (reinterpret_cast(addr)->sa_family) - { - case ASIO_OS_DEF(AF_INET): - socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET), - &reinterpret_cast(addr)->sin_addr, - addr_string, sizeof(addr_string), 0, op->ec_); - port = socket_ops::network_to_host_short( - reinterpret_cast(addr)->sin_port); - break; - case ASIO_OS_DEF(AF_INET6): - socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6), - &reinterpret_cast(addr)->sin6_addr, - addr_string, sizeof(addr_string), 0, op->ec_); - port = socket_ops::network_to_host_short( - reinterpret_cast(addr)->sin6_port); - break; - default: - op->ec_ = asio::error::address_family_not_supported; - break; - } - - if (op->ec_) - { - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - try - { - async_manager_.async(impl.socket_->ConnectAsync( - ref new Windows::Networking::HostName( - winrt_utils::string(addr_string)), - winrt_utils::string(port)), op); - } - catch (Platform::Exception^ e) - { - op->ec_ = asio::error_code( - e->HResult, asio::system_category()); - scheduler_.post_immediate_completion(op, is_continuation); - } -} - -std::size_t winrt_ssocket_service_base::do_send( - winrt_ssocket_service_base::base_implementation_type& impl, - const asio::const_buffer& data, - socket_base::message_flags flags, asio::error_code& ec) -{ - if (flags) - { - ec = asio::error::operation_not_supported; - return 0; - } - - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return 0; - } - - try - { - buffer_sequence_adapter bufs(asio::buffer(data)); - - if (bufs.all_empty()) - { - ec = asio::error_code(); - return 0; - } - - return async_manager_.sync( - impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), ec); - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - return 0; - } -} - -void winrt_ssocket_service_base::start_send_op( - winrt_ssocket_service_base::base_implementation_type& impl, - const asio::const_buffer& data, socket_base::message_flags flags, - winrt_async_op* op, bool is_continuation) -{ - if (flags) - { - op->ec_ = asio::error::operation_not_supported; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - if (!is_open(impl)) - { - op->ec_ = asio::error::bad_descriptor; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - try - { - buffer_sequence_adapter bufs(asio::buffer(data)); - - if (bufs.all_empty()) - { - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - async_manager_.async( - impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), op); - } - catch (Platform::Exception^ e) - { - op->ec_ = asio::error_code(e->HResult, - asio::system_category()); - scheduler_.post_immediate_completion(op, is_continuation); - } -} - -std::size_t winrt_ssocket_service_base::do_receive( - winrt_ssocket_service_base::base_implementation_type& impl, - const asio::mutable_buffer& data, - socket_base::message_flags flags, asio::error_code& ec) -{ - if (flags) - { - ec = asio::error::operation_not_supported; - return 0; - } - - if (!is_open(impl)) - { - ec = asio::error::bad_descriptor; - return 0; - } - - try - { - buffer_sequence_adapter bufs(asio::buffer(data)); - - if (bufs.all_empty()) - { - ec = asio::error_code(); - return 0; - } - - async_manager_.sync( - impl.socket_->InputStream->ReadAsync( - bufs.buffers()[0], bufs.buffers()[0]->Capacity, - Windows::Storage::Streams::InputStreamOptions::Partial), ec); - - std::size_t bytes_transferred = bufs.buffers()[0]->Length; - if (bytes_transferred == 0 && !ec) - { - ec = asio::error::eof; - } - - return bytes_transferred; - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - return 0; - } -} - -void winrt_ssocket_service_base::start_receive_op( - winrt_ssocket_service_base::base_implementation_type& impl, - const asio::mutable_buffer& data, socket_base::message_flags flags, - winrt_async_op* op, - bool is_continuation) -{ - if (flags) - { - op->ec_ = asio::error::operation_not_supported; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - if (!is_open(impl)) - { - op->ec_ = asio::error::bad_descriptor; - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - try - { - buffer_sequence_adapter bufs(asio::buffer(data)); - - if (bufs.all_empty()) - { - scheduler_.post_immediate_completion(op, is_continuation); - return; - } - - async_manager_.async( - impl.socket_->InputStream->ReadAsync( - bufs.buffers()[0], bufs.buffers()[0]->Capacity, - Windows::Storage::Streams::InputStreamOptions::Partial), op); - } - catch (Platform::Exception^ e) - { - op->ec_ = asio::error_code(e->HResult, - asio::system_category()); - scheduler_.post_immediate_completion(op, is_continuation); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp deleted file mode 100644 index 17bcc821..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// -// detail/impl/winrt_timer_scheduler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP -#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -void winrt_timer_scheduler::add_timer_queue(timer_queue& queue) -{ - do_add_timer_queue(queue); -} - -// Remove a timer queue from the reactor. -template -void winrt_timer_scheduler::remove_timer_queue(timer_queue& queue) -{ - do_remove_timer_queue(queue); -} - -template -void winrt_timer_scheduler::schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - - if (shutdown_) - { - scheduler_.post_immediate_completion(op, false); - return; - } - - bool earliest = queue.enqueue_timer(time, timer, op); - scheduler_.work_started(); - if (earliest) - event_.signal(lock); -} - -template -std::size_t winrt_timer_scheduler::cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); - lock.unlock(); - scheduler_.post_deferred_completions(ops); - return n; -} - -template -void winrt_timer_scheduler::move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& to, - typename timer_queue::per_timer_data& from) -{ - asio::detail::mutex::scoped_lock lock(mutex_); - op_queue ops; - queue.cancel_timer(to, ops); - queue.move_timer(to, from); - lock.unlock(); - scheduler_.post_deferred_completions(ops); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp deleted file mode 100644 index 91042661..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp +++ /dev/null @@ -1,121 +0,0 @@ -// -// detail/impl/winrt_timer_scheduler.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP -#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/winrt_timer_scheduler.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -winrt_timer_scheduler::winrt_timer_scheduler(execution_context& context) - : execution_context_service_base(context), - scheduler_(use_service(context)), - mutex_(), - event_(), - timer_queues_(), - thread_(0), - stop_thread_(false), - shutdown_(false) -{ - thread_ = new asio::detail::thread( - bind_handler(&winrt_timer_scheduler::call_run_thread, this)); -} - -winrt_timer_scheduler::~winrt_timer_scheduler() -{ - shutdown(); -} - -void winrt_timer_scheduler::shutdown() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - shutdown_ = true; - stop_thread_ = true; - event_.signal(lock); - lock.unlock(); - - if (thread_) - { - thread_->join(); - delete thread_; - thread_ = 0; - } - - op_queue ops; - timer_queues_.get_all_timers(ops); - scheduler_.abandon_operations(ops); -} - -void winrt_timer_scheduler::notify_fork(execution_context::fork_event) -{ -} - -void winrt_timer_scheduler::init_task() -{ -} - -void winrt_timer_scheduler::run_thread() -{ - asio::detail::mutex::scoped_lock lock(mutex_); - while (!stop_thread_) - { - const long max_wait_duration = 5 * 60 * 1000000; - long wait_duration = timer_queues_.wait_duration_usec(max_wait_duration); - event_.wait_for_usec(lock, wait_duration); - event_.clear(lock); - op_queue ops; - timer_queues_.get_ready_timers(ops); - if (!ops.empty()) - { - lock.unlock(); - scheduler_.post_deferred_completions(ops); - lock.lock(); - } - } -} - -void winrt_timer_scheduler::call_run_thread(winrt_timer_scheduler* scheduler) -{ - scheduler->run_thread(); -} - -void winrt_timer_scheduler::do_add_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.insert(&queue); -} - -void winrt_timer_scheduler::do_remove_timer_queue(timer_queue_base& queue) -{ - mutex::scoped_lock lock(mutex_); - timer_queues_.erase(&queue); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winsock_init.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winsock_init.ipp deleted file mode 100644 index f5943401..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/impl/winsock_init.ipp +++ /dev/null @@ -1,82 +0,0 @@ -// -// detail/impl/winsock_init.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP -#define ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#include "asio/detail/socket_types.hpp" -#include "asio/detail/winsock_init.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -void winsock_init_base::startup(data& d, - unsigned char major, unsigned char minor) -{ - if (::InterlockedIncrement(&d.init_count_) == 1) - { - WSADATA wsa_data; - long result = ::WSAStartup(MAKEWORD(major, minor), &wsa_data); - ::InterlockedExchange(&d.result_, result); - } -} - -void winsock_init_base::manual_startup(data& d) -{ - if (::InterlockedIncrement(&d.init_count_) == 1) - { - ::InterlockedExchange(&d.result_, 0); - } -} - -void winsock_init_base::cleanup(data& d) -{ - if (::InterlockedDecrement(&d.init_count_) == 0) - { - ::WSACleanup(); - } -} - -void winsock_init_base::manual_cleanup(data& d) -{ - ::InterlockedDecrement(&d.init_count_); -} - -void winsock_init_base::throw_on_error(data& d) -{ - long result = ::InterlockedExchangeAdd(&d.result_, 0); - if (result != 0) - { - asio::error_code ec(result, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "winsock"); - } -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#endif // ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_control.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_control.hpp deleted file mode 100644 index 0e5de4a9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_control.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// detail/io_control.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IO_CONTROL_HPP -#define ASIO_DETAIL_IO_CONTROL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace io_control { - -// I/O control command for getting number of bytes available. -class bytes_readable -{ -public: - // Default constructor. - bytes_readable() - : value_(0) - { - } - - // Construct with a specific command value. - bytes_readable(std::size_t value) - : value_(static_cast(value)) - { - } - - // Get the name of the IO control command. - int name() const - { - return static_cast(ASIO_OS_DEF(FIONREAD)); - } - - // Set the value of the I/O control command. - void set(std::size_t value) - { - value_ = static_cast(value); - } - - // Get the current value of the I/O control command. - std::size_t get() const - { - return static_cast(value_); - } - - // Get the address of the command data. - detail::ioctl_arg_type* data() - { - return &value_; - } - - // Get the address of the command data. - const detail::ioctl_arg_type* data() const - { - return &value_; - } - -private: - detail::ioctl_arg_type value_; -}; - -} // namespace io_control -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IO_CONTROL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_object_impl.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_object_impl.hpp deleted file mode 100644 index 9819bed0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/io_object_impl.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// -// io_object_impl.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IO_OBJECT_IMPL_HPP -#define ASIO_DETAIL_IO_OBJECT_IMPL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/context.hpp" -#include "asio/io_context.hpp" -#include "asio/query.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class io_object_impl -{ -public: - // The type of the service that will be used to provide I/O operations. - typedef IoObjectService service_type; - - // The underlying implementation type of I/O object. - typedef typename service_type::implementation_type implementation_type; - - // The type of the executor associated with the object. - typedef Executor executor_type; - - // Construct an I/O object using an executor. - explicit io_object_impl(const executor_type& ex) - : service_(&asio::use_service( - io_object_impl::get_context(ex))), - executor_(ex) - { - service_->construct(implementation_); - } - - // Construct an I/O object using an execution context. - template - explicit io_object_impl(ExecutionContext& context, - typename enable_if::value>::type* = 0) - : service_(&asio::use_service(context)), - executor_(context.get_executor()) - { - service_->construct(implementation_); - } - -#if defined(ASIO_HAS_MOVE) - // Move-construct an I/O object. - io_object_impl(io_object_impl&& other) - : service_(&other.get_service()), - executor_(other.get_executor()) - { - service_->move_construct(implementation_, other.implementation_); - } - - // Perform a converting move-construction of an I/O object. - template - io_object_impl(io_object_impl&& other) - : service_(&asio::use_service( - io_object_impl::get_context(other.get_executor()))), - executor_(other.get_executor()) - { - service_->converting_move_construct(implementation_, - other.get_service(), other.get_implementation()); - } -#endif // defined(ASIO_HAS_MOVE) - - // Destructor. - ~io_object_impl() - { - service_->destroy(implementation_); - } - -#if defined(ASIO_HAS_MOVE) - // Move-assign an I/O object. - io_object_impl& operator=(io_object_impl&& other) - { - if (this != &other) - { - service_->move_assign(implementation_, - *other.service_, other.implementation_); - executor_.~executor_type(); - new (&executor_) executor_type( - std::move(other.executor_)); - service_ = other.service_; - } - return *this; - } -#endif // defined(ASIO_HAS_MOVE) - - // Get the executor associated with the object. - const executor_type& get_executor() ASIO_NOEXCEPT - { - return executor_; - } - - // Get the service associated with the I/O object. - service_type& get_service() - { - return *service_; - } - - // Get the service associated with the I/O object. - const service_type& get_service() const - { - return *service_; - } - - // Get the underlying implementation of the I/O object. - implementation_type& get_implementation() - { - return implementation_; - } - - // Get the underlying implementation of the I/O object. - const implementation_type& get_implementation() const - { - return implementation_; - } - -private: - // Helper function to get an executor's context. - template - static execution_context& get_context(const T& t, - typename enable_if::value>::type* = 0) - { - return asio::query(t, execution::context); - } - - // Helper function to get an executor's context. - template - static execution_context& get_context(const T& t, - typename enable_if::value>::type* = 0) - { - return t.context(); - } - - // Disallow copying and copy assignment. - io_object_impl(const io_object_impl&); - io_object_impl& operator=(const io_object_impl&); - - // The service associated with the I/O object. - service_type* service_; - - // The underlying implementation of the I/O object. - implementation_type implementation_; - - // The associated executor. - executor_type executor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IO_OBJECT_IMPL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_buffer_sequence.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_buffer_sequence.hpp deleted file mode 100644 index 06e303c3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_buffer_sequence.hpp +++ /dev/null @@ -1,312 +0,0 @@ -// -// detail/is_buffer_sequence.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IS_BUFFER_SEQUENCE_HPP -#define ASIO_DETAIL_IS_BUFFER_SEQUENCE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -class mutable_buffer; -class const_buffer; - -namespace detail { - -struct buffer_sequence_memfns_base -{ - void begin(); - void end(); - void size(); - void max_size(); - void capacity(); - void data(); - void prepare(); - void commit(); - void consume(); - void grow(); - void shrink(); -}; - -template -struct buffer_sequence_memfns_derived - : T, buffer_sequence_memfns_base -{ -}; - -template -struct buffer_sequence_memfns_check -{ -}; - -#if defined(ASIO_HAS_DECLTYPE) - -template -char buffer_sequence_begin_helper(...); - -template -char (&buffer_sequence_begin_helper(T* t, - typename enable_if::value>::type*))[2]; - -#else // defined(ASIO_HAS_DECLTYPE) - -template -char (&buffer_sequence_begin_helper(...))[2]; - -template -char buffer_sequence_begin_helper(T* t, - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::begin>*); - -#endif // defined(ASIO_HAS_DECLTYPE) - -#if defined(ASIO_HAS_DECLTYPE) - -template -char buffer_sequence_end_helper(...); - -template -char (&buffer_sequence_end_helper(T* t, - typename enable_if::value>::type*))[2]; - -#else // defined(ASIO_HAS_DECLTYPE) - -template -char (&buffer_sequence_end_helper(...))[2]; - -template -char buffer_sequence_end_helper(T* t, - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::end>*); - -#endif // defined(ASIO_HAS_DECLTYPE) - -template -char (&size_memfn_helper(...))[2]; - -template -char size_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::size>*); - -template -char (&max_size_memfn_helper(...))[2]; - -template -char max_size_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::max_size>*); - -template -char (&capacity_memfn_helper(...))[2]; - -template -char capacity_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::capacity>*); - -template -char (&data_memfn_helper(...))[2]; - -template -char data_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::data>*); - -template -char (&prepare_memfn_helper(...))[2]; - -template -char prepare_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::prepare>*); - -template -char (&commit_memfn_helper(...))[2]; - -template -char commit_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::commit>*); - -template -char (&consume_memfn_helper(...))[2]; - -template -char consume_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::consume>*); - -template -char (&grow_memfn_helper(...))[2]; - -template -char grow_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::grow>*); - -template -char (&shrink_memfn_helper(...))[2]; - -template -char shrink_memfn_helper( - buffer_sequence_memfns_check< - void (buffer_sequence_memfns_base::*)(), - &buffer_sequence_memfns_derived::shrink>*); - -template -char (&buffer_sequence_element_type_helper(...))[2]; - -#if defined(ASIO_HAS_DECLTYPE) - -template -char buffer_sequence_element_type_helper(T* t, - typename enable_if::value>::type*); - -#else // defined(ASIO_HAS_DECLTYPE) - -template -char buffer_sequence_element_type_helper( - typename T::const_iterator*, - typename enable_if::value>::type*); - -#endif // defined(ASIO_HAS_DECLTYPE) - -template -char (&const_buffers_type_typedef_helper(...))[2]; - -template -char const_buffers_type_typedef_helper( - typename T::const_buffers_type*); - -template -char (&mutable_buffers_type_typedef_helper(...))[2]; - -template -char mutable_buffers_type_typedef_helper( - typename T::mutable_buffers_type*); - -template -struct is_buffer_sequence_class - : integral_constant(0, 0)) != 1 && - sizeof(buffer_sequence_end_helper(0, 0)) != 1 && - sizeof(buffer_sequence_element_type_helper(0, 0)) == 1> -{ -}; - -template -struct is_buffer_sequence - : conditional::value, - is_buffer_sequence_class, - false_type>::type -{ -}; - -template <> -struct is_buffer_sequence - : true_type -{ -}; - -template <> -struct is_buffer_sequence - : true_type -{ -}; - -template <> -struct is_buffer_sequence - : true_type -{ -}; - -template <> -struct is_buffer_sequence - : false_type -{ -}; - -template -struct is_dynamic_buffer_class_v1 - : integral_constant(0)) != 1 && - sizeof(max_size_memfn_helper(0)) != 1 && - sizeof(capacity_memfn_helper(0)) != 1 && - sizeof(data_memfn_helper(0)) != 1 && - sizeof(consume_memfn_helper(0)) != 1 && - sizeof(prepare_memfn_helper(0)) != 1 && - sizeof(commit_memfn_helper(0)) != 1 && - sizeof(const_buffers_type_typedef_helper(0)) == 1 && - sizeof(mutable_buffers_type_typedef_helper(0)) == 1> -{ -}; - -template -struct is_dynamic_buffer_v1 - : conditional::value, - is_dynamic_buffer_class_v1, - false_type>::type -{ -}; - -template -struct is_dynamic_buffer_class_v2 - : integral_constant(0)) != 1 && - sizeof(max_size_memfn_helper(0)) != 1 && - sizeof(capacity_memfn_helper(0)) != 1 && - sizeof(data_memfn_helper(0)) != 1 && - sizeof(consume_memfn_helper(0)) != 1 && - sizeof(grow_memfn_helper(0)) != 1 && - sizeof(shrink_memfn_helper(0)) != 1 && - sizeof(const_buffers_type_typedef_helper(0)) == 1 && - sizeof(mutable_buffers_type_typedef_helper(0)) == 1> -{ -}; - -template -struct is_dynamic_buffer_v2 - : conditional::value, - is_dynamic_buffer_class_v2, - false_type>::type -{ -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IS_BUFFER_SEQUENCE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_executor.hpp deleted file mode 100644 index 9dbaf958..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/is_executor.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// -// detail/is_executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_IS_EXECUTOR_HPP -#define ASIO_DETAIL_IS_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct executor_memfns_base -{ - void context(); - void on_work_started(); - void on_work_finished(); - void dispatch(); - void post(); - void defer(); -}; - -template -struct executor_memfns_derived - : T, executor_memfns_base -{ -}; - -template -struct executor_memfns_check -{ -}; - -template -char (&context_memfn_helper(...))[2]; - -template -char context_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::context>*); - -template -char (&on_work_started_memfn_helper(...))[2]; - -template -char on_work_started_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::on_work_started>*); - -template -char (&on_work_finished_memfn_helper(...))[2]; - -template -char on_work_finished_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::on_work_finished>*); - -template -char (&dispatch_memfn_helper(...))[2]; - -template -char dispatch_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::dispatch>*); - -template -char (&post_memfn_helper(...))[2]; - -template -char post_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::post>*); - -template -char (&defer_memfn_helper(...))[2]; - -template -char defer_memfn_helper( - executor_memfns_check< - void (executor_memfns_base::*)(), - &executor_memfns_derived::defer>*); - -template -struct is_executor_class - : integral_constant(0)) != 1 && - sizeof(on_work_started_memfn_helper(0)) != 1 && - sizeof(on_work_finished_memfn_helper(0)) != 1 && - sizeof(dispatch_memfn_helper(0)) != 1 && - sizeof(post_memfn_helper(0)) != 1 && - sizeof(defer_memfn_helper(0)) != 1> -{ -}; - -template -struct is_executor - : conditional::value, - is_executor_class, - false_type>::type -{ -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_IS_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/keyword_tss_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/keyword_tss_ptr.hpp deleted file mode 100644 index 043dde1c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/keyword_tss_ptr.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -// detail/keyword_tss_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_KEYWORD_TSS_PTR_HPP -#define ASIO_DETAIL_KEYWORD_TSS_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class keyword_tss_ptr - : private noncopyable -{ -public: - // Constructor. - keyword_tss_ptr() - { - } - - // Destructor. - ~keyword_tss_ptr() - { - } - - // Get the value. - operator T*() const - { - return value_; - } - - // Set the value. - void operator=(T* value) - { - value_ = value; - } - -private: - static ASIO_THREAD_KEYWORD T* value_; -}; - -template -ASIO_THREAD_KEYWORD T* keyword_tss_ptr::value_; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) - -#endif // ASIO_DETAIL_KEYWORD_TSS_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/kqueue_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/kqueue_reactor.hpp deleted file mode 100644 index 38ae0671..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/kqueue_reactor.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// -// detail/kqueue_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_KQUEUE_REACTOR_HPP -#define ASIO_DETAIL_KQUEUE_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_KQUEUE) - -#include -#include -#include -#include -#include "asio/detail/limits.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/object_pool.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/select_interrupter.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" - -// Older versions of Mac OS X may not define EV_OOBAND. -#if !defined(EV_OOBAND) -# define EV_OOBAND EV_FLAG1 -#endif // !defined(EV_OOBAND) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class scheduler; - -class kqueue_reactor - : public execution_context_service_base -{ -private: - // The mutex type used by this reactor. - typedef conditionally_enabled_mutex mutex; - -public: - enum op_types { read_op = 0, write_op = 1, - connect_op = 1, except_op = 2, max_ops = 3 }; - - // Per-descriptor queues. - struct descriptor_state - { - descriptor_state(bool locking) : mutex_(locking) {} - - friend class kqueue_reactor; - friend class object_pool_access; - - descriptor_state* next_; - descriptor_state* prev_; - - mutex mutex_; - int descriptor_; - int num_kevents_; // 1 == read only, 2 == read and write - op_queue op_queue_[max_ops]; - bool shutdown_; - }; - - // Per-descriptor data. - typedef descriptor_state* per_descriptor_data; - - // Constructor. - ASIO_DECL kqueue_reactor(asio::execution_context& ctx); - - // Destructor. - ASIO_DECL ~kqueue_reactor(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Recreate internal descriptors following a fork. - ASIO_DECL void notify_fork( - asio::execution_context::fork_event fork_ev); - - // Initialise the task. - ASIO_DECL void init_task(); - - // Register a socket with the reactor. Returns 0 on success, system error - // code on failure. - ASIO_DECL int register_descriptor(socket_type descriptor, - per_descriptor_data& descriptor_data); - - // Register a descriptor with an associated single operation. Returns 0 on - // success, system error code on failure. - ASIO_DECL int register_internal_descriptor( - int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op); - - // Move descriptor registration from one descriptor_data object to another. - ASIO_DECL void move_descriptor(socket_type descriptor, - per_descriptor_data& target_descriptor_data, - per_descriptor_data& source_descriptor_data); - - // Post a reactor operation for immediate completion. - void post_immediate_completion(reactor_op* op, bool is_continuation) - { - scheduler_.post_immediate_completion(op, is_continuation); - } - - // Start a new operation. The reactor operation will be performed when the - // given descriptor is flagged as ready, or an error has occurred. - ASIO_DECL void start_op(int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op, - bool is_continuation, bool allow_speculative); - - // Cancel all operations associated with the given descriptor. The - // handlers associated with the descriptor will be invoked with the - // operation_aborted error. - ASIO_DECL void cancel_ops(socket_type descriptor, - per_descriptor_data& descriptor_data); - - // Cancel any operations that are running against the descriptor and remove - // its registration from the reactor. The reactor resources associated with - // the descriptor must be released by calling cleanup_descriptor_data. - ASIO_DECL void deregister_descriptor(socket_type descriptor, - per_descriptor_data& descriptor_data, bool closing); - - // Remove the descriptor's registration from the reactor. The reactor - // resources associated with the descriptor must be released by calling - // cleanup_descriptor_data. - ASIO_DECL void deregister_internal_descriptor( - socket_type descriptor, per_descriptor_data& descriptor_data); - - // Perform any post-deregistration cleanup tasks associated with the - // descriptor data. - ASIO_DECL void cleanup_descriptor_data( - per_descriptor_data& descriptor_data); - - // Add a new timer queue to the reactor. - template - void add_timer_queue(timer_queue& queue); - - // Remove a timer queue from the reactor. - template - void remove_timer_queue(timer_queue& queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer operations associated with the given token. Returns the - // number of operations that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source); - - // Run the kqueue loop. - ASIO_DECL void run(long usec, op_queue& ops); - - // Interrupt the kqueue loop. - ASIO_DECL void interrupt(); - -private: - // Create the kqueue file descriptor. Throws an exception if the descriptor - // cannot be created. - ASIO_DECL static int do_kqueue_create(); - - // Allocate a new descriptor state object. - ASIO_DECL descriptor_state* allocate_descriptor_state(); - - // Free an existing descriptor state object. - ASIO_DECL void free_descriptor_state(descriptor_state* s); - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // Get the timeout value for the kevent call. - ASIO_DECL timespec* get_timeout(long usec, timespec& ts); - - // The scheduler used to post completions. - scheduler& scheduler_; - - // Mutex to protect access to internal data. - mutex mutex_; - - // The kqueue file descriptor. - int kqueue_fd_; - - // The interrupter is used to break a blocking kevent call. - select_interrupter interrupter_; - - // The timer queues. - timer_queue_set timer_queues_; - - // Whether the service has been shut down. - bool shutdown_; - - // Mutex to protect access to the registered descriptors. - mutex registered_descriptors_mutex_; - - // Keep track of all registered descriptors. - object_pool registered_descriptors_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/kqueue_reactor.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/kqueue_reactor.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_KQUEUE) - -#endif // ASIO_DETAIL_KQUEUE_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/limits.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/limits.hpp deleted file mode 100644 index d32470d2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/limits.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// detail/limits.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_LIMITS_HPP -#define ASIO_DETAIL_LIMITS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_LIMITS) -# include -#else // defined(ASIO_HAS_BOOST_LIMITS) -# include -#endif // defined(ASIO_HAS_BOOST_LIMITS) - -#endif // ASIO_DETAIL_LIMITS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/local_free_on_block_exit.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/local_free_on_block_exit.hpp deleted file mode 100644 index e6153f02..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/local_free_on_block_exit.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// -// detail/local_free_on_block_exit.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP -#define ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -#if !defined(ASIO_WINDOWS_APP) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class local_free_on_block_exit - : private noncopyable -{ -public: - // Constructor blocks all signals for the calling thread. - explicit local_free_on_block_exit(void* p) - : p_(p) - { - } - - // Destructor restores the previous signal mask. - ~local_free_on_block_exit() - { - ::LocalFree(p_); - } - -private: - void* p_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS_APP) -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#endif // ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/macos_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/macos_fenced_block.hpp deleted file mode 100644 index ee15752c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/macos_fenced_block.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// -// detail/macos_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP -#define ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__MACH__) && defined(__APPLE__) - -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class macos_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit macos_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit macos_fenced_block(full_t) - { - OSMemoryBarrier(); - } - - // Destructor. - ~macos_fenced_block() - { - OSMemoryBarrier(); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__MACH__) && defined(__APPLE__) - -#endif // ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/memory.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/memory.hpp deleted file mode 100644 index 7c59a5fc..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/memory.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// -// detail/memory.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_MEMORY_HPP -#define ASIO_DETAIL_MEMORY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include - -#if !defined(ASIO_HAS_STD_SHARED_PTR) -# include -# include -# include -#endif // !defined(ASIO_HAS_STD_SHARED_PTR) - -#if !defined(ASIO_HAS_STD_ADDRESSOF) -# include -#endif // !defined(ASIO_HAS_STD_ADDRESSOF) - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_STD_SHARED_PTR) -using std::make_shared; -using std::shared_ptr; -using std::weak_ptr; -#else // defined(ASIO_HAS_STD_SHARED_PTR) -using boost::make_shared; -using boost::shared_ptr; -using boost::weak_ptr; -#endif // defined(ASIO_HAS_STD_SHARED_PTR) - -#if defined(ASIO_HAS_STD_ADDRESSOF) -using std::addressof; -#else // defined(ASIO_HAS_STD_ADDRESSOF) -using boost::addressof; -#endif // defined(ASIO_HAS_STD_ADDRESSOF) - -} // namespace detail - -#if defined(ASIO_HAS_CXX11_ALLOCATORS) -using std::allocator_arg_t; -# define ASIO_USES_ALLOCATOR(t) \ - namespace std { \ - template \ - struct uses_allocator : true_type {}; \ - } \ - /**/ -# define ASIO_REBIND_ALLOC(alloc, t) \ - typename std::allocator_traits::template rebind_alloc - /**/ -#else // defined(ASIO_HAS_CXX11_ALLOCATORS) -struct allocator_arg_t {}; -# define ASIO_USES_ALLOCATOR(t) -# define ASIO_REBIND_ALLOC(alloc, t) \ - typename alloc::template rebind::other - /**/ -#endif // defined(ASIO_HAS_CXX11_ALLOCATORS) - -} // namespace asio - -#endif // ASIO_DETAIL_MEMORY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/mutex.hpp deleted file mode 100644 index 8eb4764a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/mutex.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// -// detail/mutex.hpp -// ~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_MUTEX_HPP -#define ASIO_DETAIL_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_mutex.hpp" -#elif defined(ASIO_WINDOWS) -# include "asio/detail/win_mutex.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_mutex.hpp" -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -# include "asio/detail/std_mutex.hpp" -#else -# error Only Windows, POSIX and std::mutex are supported! -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) -typedef null_mutex mutex; -#elif defined(ASIO_WINDOWS) -typedef win_mutex mutex; -#elif defined(ASIO_HAS_PTHREADS) -typedef posix_mutex mutex; -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -typedef std_mutex mutex; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/non_const_lvalue.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/non_const_lvalue.hpp deleted file mode 100644 index 9a3979c0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/non_const_lvalue.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// -// detail/non_const_lvalue.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NON_CONST_LVALUE_HPP -#define ASIO_DETAIL_NON_CONST_LVALUE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct non_const_lvalue -{ -#if defined(ASIO_HAS_MOVE) - explicit non_const_lvalue(T& t) - : value(static_cast::type>::value, - typename decay::type&, T&&>::type>(t)) - { - } - - typename conditional::type>::value, - typename decay::type&, typename decay::type>::type value; -#else // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - explicit non_const_lvalue(const typename decay::type& t) - : value(t) - { - } - - typename decay::type value; -#endif // defined(ASIO_HAS_MOVE) -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_NON_CONST_LVALUE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/noncopyable.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/noncopyable.hpp deleted file mode 100644 index c730cd1a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/noncopyable.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// -// detail/noncopyable.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NONCOPYABLE_HPP -#define ASIO_DETAIL_NONCOPYABLE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class noncopyable -{ -protected: - noncopyable() {} - ~noncopyable() {} -private: - noncopyable(const noncopyable&); - const noncopyable& operator=(const noncopyable&); -}; - -} // namespace detail - -using asio::detail::noncopyable; - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_NONCOPYABLE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_event.hpp deleted file mode 100644 index 6083f1e3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_event.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// detail/null_event.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_EVENT_HPP -#define ASIO_DETAIL_NULL_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_event - : private noncopyable -{ -public: - // Constructor. - null_event() - { - } - - // Destructor. - ~null_event() - { - } - - // Signal the event. (Retained for backward compatibility.) - template - void signal(Lock&) - { - } - - // Signal all waiters. - template - void signal_all(Lock&) - { - } - - // Unlock the mutex and signal one waiter. - template - void unlock_and_signal_one(Lock&) - { - } - - // Unlock the mutex and signal one waiter who may destroy us. - template - void unlock_and_signal_one_for_destruction(Lock&) - { - } - - // If there's a waiter, unlock the mutex and signal it. - template - bool maybe_unlock_and_signal_one(Lock&) - { - return false; - } - - // Reset the event. - template - void clear(Lock&) - { - } - - // Wait for the event to become signalled. - template - void wait(Lock&) - { - do_wait(); - } - - // Timed wait for the event to become signalled. - template - bool wait_for_usec(Lock&, long usec) - { - do_wait_for_usec(usec); - return true; - } - -private: - ASIO_DECL static void do_wait(); - ASIO_DECL static void do_wait_for_usec(long usec); -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/null_event.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_NULL_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_fenced_block.hpp deleted file mode 100644 index a3e58d3c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_fenced_block.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// detail/null_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_FENCED_BLOCK_HPP -#define ASIO_DETAIL_NULL_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_fenced_block - : private noncopyable -{ -public: - enum half_or_full_t { half, full }; - - // Constructor. - explicit null_fenced_block(half_or_full_t) - { - } - - // Destructor. - ~null_fenced_block() - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_NULL_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_global.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_global.hpp deleted file mode 100644 index e67f2069..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_global.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// -// detail/null_global.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_GLOBAL_HPP -#define ASIO_DETAIL_NULL_GLOBAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct null_global_impl -{ - null_global_impl() - : ptr_(0) - { - } - - // Destructor automatically cleans up the global. - ~null_global_impl() - { - delete ptr_; - } - - static null_global_impl instance_; - T* ptr_; -}; - -template -null_global_impl null_global_impl::instance_; - -template -T& null_global() -{ - if (null_global_impl::instance_.ptr_ == 0) - null_global_impl::instance_.ptr_ = new T; - return *null_global_impl::instance_.ptr_; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_NULL_GLOBAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_mutex.hpp deleted file mode 100644 index 25a8ed1f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_mutex.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -// detail/null_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_MUTEX_HPP -#define ASIO_DETAIL_NULL_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_mutex - : private noncopyable -{ -public: - typedef asio::detail::scoped_lock scoped_lock; - - // Constructor. - null_mutex() - { - } - - // Destructor. - ~null_mutex() - { - } - - // Lock the mutex. - void lock() - { - } - - // Unlock the mutex. - void unlock() - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_THREADS) - -#endif // ASIO_DETAIL_NULL_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_reactor.hpp deleted file mode 100644 index 7c1da585..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_reactor.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// -// detail/null_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_REACTOR_HPP -#define ASIO_DETAIL_NULL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) || defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/scheduler_operation.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_reactor - : public execution_context_service_base -{ -public: - // Constructor. - null_reactor(asio::execution_context& ctx) - : execution_context_service_base(ctx) - { - } - - // Destructor. - ~null_reactor() - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - } - - // No-op because should never be called. - void run(long /*usec*/, op_queue& /*ops*/) - { - } - - // No-op. - void interrupt() - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) || defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_NULL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_signal_blocker.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_signal_blocker.hpp deleted file mode 100644 index e9e7b3ce..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_signal_blocker.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// -// detail/null_signal_blocker.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP -#define ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) \ - || defined(ASIO_WINDOWS) \ - || defined(ASIO_WINDOWS_RUNTIME) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_signal_blocker - : private noncopyable -{ -public: - // Constructor blocks all signals for the calling thread. - null_signal_blocker() - { - } - - // Destructor restores the previous signal mask. - ~null_signal_blocker() - { - } - - // Block all signals for the calling thread. - void block() - { - } - - // Restore the previous signal mask. - void unblock() - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_THREADS) - // || defined(ASIO_WINDOWS) - // || defined(ASIO_WINDOWS_RUNTIME) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - -#endif // ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_socket_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_socket_service.hpp deleted file mode 100644 index 4f6f9336..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_socket_service.hpp +++ /dev/null @@ -1,519 +0,0 @@ -// -// detail/null_socket_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP -#define ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/buffer.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/post.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/bind_handler.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class null_socket_service : - public execution_context_service_base > -{ -public: - // The protocol type. - typedef Protocol protocol_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The native type of a socket. - typedef int native_handle_type; - - // The implementation type of the socket. - struct implementation_type - { - }; - - // Constructor. - null_socket_service(execution_context& context) - : execution_context_service_base >(context) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - } - - // Construct a new socket implementation. - void construct(implementation_type&) - { - } - - // Move-construct a new socket implementation. - void move_construct(implementation_type&, implementation_type&) - { - } - - // Move-assign from another socket implementation. - void move_assign(implementation_type&, - null_socket_service&, implementation_type&) - { - } - - // Move-construct a new socket implementation from another protocol type. - template - void converting_move_construct(implementation_type&, - null_socket_service&, - typename null_socket_service::implementation_type&) - { - } - - // Destroy a socket implementation. - void destroy(implementation_type&) - { - } - - // Open a new socket implementation. - asio::error_code open(implementation_type&, - const protocol_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Assign a native socket to a socket implementation. - asio::error_code assign(implementation_type&, const protocol_type&, - const native_handle_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Determine whether the socket is open. - bool is_open(const implementation_type&) const - { - return false; - } - - // Destroy a socket implementation. - asio::error_code close(implementation_type&, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Release ownership of the socket. - native_handle_type release(implementation_type&, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Get the native socket representation. - native_handle_type native_handle(implementation_type&) - { - return 0; - } - - // Cancel all operations associated with the socket. - asio::error_code cancel(implementation_type&, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Determine whether the socket is at the out-of-band data mark. - bool at_mark(const implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return false; - } - - // Determine the number of bytes available for reading. - std::size_t available(const implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Place the socket into the state where it will listen for new connections. - asio::error_code listen(implementation_type&, - int, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Perform an IO control command on the socket. - template - asio::error_code io_control(implementation_type&, - IO_Control_Command&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Gets the non-blocking mode of the socket. - bool non_blocking(const implementation_type&) const - { - return false; - } - - // Sets the non-blocking mode of the socket. - asio::error_code non_blocking(implementation_type&, - bool, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Gets the non-blocking mode of the native socket implementation. - bool native_non_blocking(const implementation_type&) const - { - return false; - } - - // Sets the non-blocking mode of the native socket implementation. - asio::error_code native_non_blocking(implementation_type&, - bool, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Disable sends or receives on the socket. - asio::error_code shutdown(implementation_type&, - socket_base::shutdown_type, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Bind the socket to the specified local endpoint. - asio::error_code bind(implementation_type&, - const endpoint_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Set a socket option. - template - asio::error_code set_option(implementation_type&, - const Option&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Set a socket option. - template - asio::error_code get_option(const implementation_type&, - Option&, asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Get the local endpoint. - endpoint_type local_endpoint(const implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return endpoint_type(); - } - - // Get the remote endpoint. - endpoint_type remote_endpoint(const implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return endpoint_type(); - } - - // Send the given data to the peer. - template - std::size_t send(implementation_type&, const ConstBufferSequence&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Wait until data can be sent without blocking. - std::size_t send(implementation_type&, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send(implementation_type&, const ConstBufferSequence&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send(implementation_type&, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Receive some data from the peer. Returns the number of bytes received. - template - std::size_t receive(implementation_type&, const MutableBufferSequence&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Wait until data can be received without blocking. - std::size_t receive(implementation_type&, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive(implementation_type&, const MutableBufferSequence&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Wait until data can be received without blocking. - template - void async_receive(implementation_type&, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Receive some data with associated flags. Returns the number of bytes - // received. - template - std::size_t receive_with_flags(implementation_type&, - const MutableBufferSequence&, socket_base::message_flags, - socket_base::message_flags&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Wait until data can be received without blocking. - std::size_t receive_with_flags(implementation_type&, - const null_buffers&, socket_base::message_flags, - socket_base::message_flags&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive_with_flags(implementation_type&, - const MutableBufferSequence&, socket_base::message_flags, - socket_base::message_flags&, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Wait until data can be received without blocking. - template - void async_receive_with_flags(implementation_type&, const null_buffers&, - socket_base::message_flags, socket_base::message_flags&, - Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Send a datagram to the specified endpoint. Returns the number of bytes - // sent. - template - std::size_t send_to(implementation_type&, const ConstBufferSequence&, - const endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Wait until data can be sent without blocking. - std::size_t send_to(implementation_type&, const null_buffers&, - const endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send_to(implementation_type&, const ConstBufferSequence&, - const endpoint_type&, socket_base::message_flags, - Handler& handler) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send_to(implementation_type&, const null_buffers&, - const endpoint_type&, socket_base::message_flags, - Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Receive a datagram with the endpoint of the sender. Returns the number of - // bytes received. - template - std::size_t receive_from(implementation_type&, const MutableBufferSequence&, - endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Wait until data can be received without blocking. - std::size_t receive_from(implementation_type&, const null_buffers&, - endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received and - // the sender_endpoint object must both be valid for the lifetime of the - // asynchronous operation. - template - void async_receive_from(implementation_type&, const MutableBufferSequence&, - endpoint_type&, socket_base::message_flags, Handler& handler, - const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Wait until data can be received without blocking. - template - void async_receive_from(implementation_type&, const null_buffers&, - endpoint_type&, socket_base::message_flags, Handler& handler, - const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, detail::bind_handler( - handler, ec, bytes_transferred)); - } - - // Accept a new connection. - template - asio::error_code accept(implementation_type&, - Socket&, endpoint_type*, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Start an asynchronous accept. The peer and peer_endpoint objects - // must be valid until the accept's handler is invoked. - template - void async_accept(implementation_type&, Socket&, endpoint_type*, - Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - asio::post(io_ex, detail::bind_handler(handler, ec)); - } - - // Connect the socket to the specified endpoint. - asio::error_code connect(implementation_type&, - const endpoint_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Start an asynchronous connect. - template - void async_connect(implementation_type&, const endpoint_type&, - Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - asio::post(io_ex, detail::bind_handler(handler, ec)); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_static_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_static_mutex.hpp deleted file mode 100644 index 495739ee..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_static_mutex.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -// detail/null_static_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_STATIC_MUTEX_HPP -#define ASIO_DETAIL_NULL_STATIC_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) - -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct null_static_mutex -{ - typedef asio::detail::scoped_lock scoped_lock; - - // Initialise the mutex. - void init() - { - } - - // Lock the mutex. - void lock() - { - } - - // Unlock the mutex. - void unlock() - { - } - - int unused_; -}; - -#define ASIO_NULL_STATIC_MUTEX_INIT { 0 } - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_THREADS) - -#endif // ASIO_DETAIL_NULL_STATIC_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_thread.hpp deleted file mode 100644 index 3b3c5b26..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_thread.hpp +++ /dev/null @@ -1,67 +0,0 @@ -// -// detail/null_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_THREAD_HPP -#define ASIO_DETAIL_NULL_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class null_thread - : private noncopyable -{ -public: - // Constructor. - template - null_thread(Function, unsigned int = 0) - { - asio::detail::throw_error( - asio::error::operation_not_supported, "thread"); - } - - // Destructor. - ~null_thread() - { - } - - // Wait for the thread to exit. - void join() - { - } - - // Get number of CPUs. - static std::size_t hardware_concurrency() - { - return 1; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_THREADS) - -#endif // ASIO_DETAIL_NULL_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_tss_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_tss_ptr.hpp deleted file mode 100644 index 5ac594b3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/null_tss_ptr.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// -// detail/null_tss_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_NULL_TSS_PTR_HPP -#define ASIO_DETAIL_NULL_TSS_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class null_tss_ptr - : private noncopyable -{ -public: - // Constructor. - null_tss_ptr() - : value_(0) - { - } - - // Destructor. - ~null_tss_ptr() - { - } - - // Get the value. - operator T*() const - { - return value_; - } - - // Set the value. - void operator=(T* value) - { - value_ = value; - } - -private: - T* value_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_THREADS) - -#endif // ASIO_DETAIL_NULL_TSS_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/object_pool.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/object_pool.hpp deleted file mode 100644 index 7b7dc29e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/object_pool.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// -// detail/object_pool.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_OBJECT_POOL_HPP -#define ASIO_DETAIL_OBJECT_POOL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class object_pool; - -class object_pool_access -{ -public: - template - static Object* create() - { - return new Object; - } - - template - static Object* create(Arg arg) - { - return new Object(arg); - } - - template - static void destroy(Object* o) - { - delete o; - } - - template - static Object*& next(Object* o) - { - return o->next_; - } - - template - static Object*& prev(Object* o) - { - return o->prev_; - } -}; - -template -class object_pool - : private noncopyable -{ -public: - // Constructor. - object_pool() - : live_list_(0), - free_list_(0) - { - } - - // Destructor destroys all objects. - ~object_pool() - { - destroy_list(live_list_); - destroy_list(free_list_); - } - - // Get the object at the start of the live list. - Object* first() - { - return live_list_; - } - - // Allocate a new object. - Object* alloc() - { - Object* o = free_list_; - if (o) - free_list_ = object_pool_access::next(free_list_); - else - o = object_pool_access::create(); - - object_pool_access::next(o) = live_list_; - object_pool_access::prev(o) = 0; - if (live_list_) - object_pool_access::prev(live_list_) = o; - live_list_ = o; - - return o; - } - - // Allocate a new object with an argument. - template - Object* alloc(Arg arg) - { - Object* o = free_list_; - if (o) - free_list_ = object_pool_access::next(free_list_); - else - o = object_pool_access::create(arg); - - object_pool_access::next(o) = live_list_; - object_pool_access::prev(o) = 0; - if (live_list_) - object_pool_access::prev(live_list_) = o; - live_list_ = o; - - return o; - } - - // Free an object. Moves it to the free list. No destructors are run. - void free(Object* o) - { - if (live_list_ == o) - live_list_ = object_pool_access::next(o); - - if (object_pool_access::prev(o)) - { - object_pool_access::next(object_pool_access::prev(o)) - = object_pool_access::next(o); - } - - if (object_pool_access::next(o)) - { - object_pool_access::prev(object_pool_access::next(o)) - = object_pool_access::prev(o); - } - - object_pool_access::next(o) = free_list_; - object_pool_access::prev(o) = 0; - free_list_ = o; - } - -private: - // Helper function to destroy all elements in a list. - void destroy_list(Object* list) - { - while (list) - { - Object* o = list; - list = object_pool_access::next(o); - object_pool_access::destroy(o); - } - } - - // The list of live objects. - Object* live_list_; - - // The free list. - Object* free_list_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_OBJECT_POOL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/old_win_sdk_compat.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/old_win_sdk_compat.hpp deleted file mode 100644 index b0328715..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/old_win_sdk_compat.hpp +++ /dev/null @@ -1,214 +0,0 @@ -// -// detail/old_win_sdk_compat.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP -#define ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -// Guess whether we are building against on old Platform SDK. -#if !defined(IN6ADDR_ANY_INIT) -#define ASIO_HAS_OLD_WIN_SDK 1 -#endif // !defined(IN6ADDR_ANY_INIT) - -#if defined(ASIO_HAS_OLD_WIN_SDK) - -// Emulation of types that are missing from old Platform SDKs. -// -// N.B. this emulation is also used if building for a Windows 2000 target with -// a recent (i.e. Vista or later) SDK, as the SDK does not provide IPv6 support -// in that case. - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -enum -{ - sockaddr_storage_maxsize = 128, // Maximum size. - sockaddr_storage_alignsize = (sizeof(__int64)), // Desired alignment. - sockaddr_storage_pad1size = (sockaddr_storage_alignsize - sizeof(short)), - sockaddr_storage_pad2size = (sockaddr_storage_maxsize - - (sizeof(short) + sockaddr_storage_pad1size + sockaddr_storage_alignsize)) -}; - -struct sockaddr_storage_emulation -{ - short ss_family; - char __ss_pad1[sockaddr_storage_pad1size]; - __int64 __ss_align; - char __ss_pad2[sockaddr_storage_pad2size]; -}; - -struct in6_addr_emulation -{ - union - { - u_char Byte[16]; - u_short Word[8]; - } u; -}; - -#if !defined(s6_addr) -# define _S6_un u -# define _S6_u8 Byte -# define s6_addr _S6_un._S6_u8 -#endif // !defined(s6_addr) - -struct sockaddr_in6_emulation -{ - short sin6_family; - u_short sin6_port; - u_long sin6_flowinfo; - in6_addr_emulation sin6_addr; - u_long sin6_scope_id; -}; - -struct ipv6_mreq_emulation -{ - in6_addr_emulation ipv6mr_multiaddr; - unsigned int ipv6mr_interface; -}; - -struct addrinfo_emulation -{ - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - char* ai_canonname; - sockaddr* ai_addr; - addrinfo_emulation* ai_next; -}; - -#if !defined(AI_PASSIVE) -# define AI_PASSIVE 0x1 -#endif - -#if !defined(AI_CANONNAME) -# define AI_CANONNAME 0x2 -#endif - -#if !defined(AI_NUMERICHOST) -# define AI_NUMERICHOST 0x4 -#endif - -#if !defined(EAI_AGAIN) -# define EAI_AGAIN WSATRY_AGAIN -#endif - -#if !defined(EAI_BADFLAGS) -# define EAI_BADFLAGS WSAEINVAL -#endif - -#if !defined(EAI_FAIL) -# define EAI_FAIL WSANO_RECOVERY -#endif - -#if !defined(EAI_FAMILY) -# define EAI_FAMILY WSAEAFNOSUPPORT -#endif - -#if !defined(EAI_MEMORY) -# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY -#endif - -#if !defined(EAI_NODATA) -# define EAI_NODATA WSANO_DATA -#endif - -#if !defined(EAI_NONAME) -# define EAI_NONAME WSAHOST_NOT_FOUND -#endif - -#if !defined(EAI_SERVICE) -# define EAI_SERVICE WSATYPE_NOT_FOUND -#endif - -#if !defined(EAI_SOCKTYPE) -# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT -#endif - -#if !defined(NI_NOFQDN) -# define NI_NOFQDN 0x01 -#endif - -#if !defined(NI_NUMERICHOST) -# define NI_NUMERICHOST 0x02 -#endif - -#if !defined(NI_NAMEREQD) -# define NI_NAMEREQD 0x04 -#endif - -#if !defined(NI_NUMERICSERV) -# define NI_NUMERICSERV 0x08 -#endif - -#if !defined(NI_DGRAM) -# define NI_DGRAM 0x10 -#endif - -#if !defined(IPPROTO_IPV6) -# define IPPROTO_IPV6 41 -#endif - -#if !defined(IPV6_UNICAST_HOPS) -# define IPV6_UNICAST_HOPS 4 -#endif - -#if !defined(IPV6_MULTICAST_IF) -# define IPV6_MULTICAST_IF 9 -#endif - -#if !defined(IPV6_MULTICAST_HOPS) -# define IPV6_MULTICAST_HOPS 10 -#endif - -#if !defined(IPV6_MULTICAST_LOOP) -# define IPV6_MULTICAST_LOOP 11 -#endif - -#if !defined(IPV6_JOIN_GROUP) -# define IPV6_JOIN_GROUP 12 -#endif - -#if !defined(IPV6_LEAVE_GROUP) -# define IPV6_LEAVE_GROUP 13 -#endif - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_OLD_WIN_SDK) - -// Even newer Platform SDKs that support IPv6 may not define IPV6_V6ONLY. -#if !defined(IPV6_V6ONLY) -# define IPV6_V6ONLY 27 -#endif - -// Some SDKs (e.g. Windows CE) don't define IPPROTO_ICMPV6. -#if !defined(IPPROTO_ICMPV6) -# define IPPROTO_ICMPV6 58 -#endif - -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#endif // ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/op_queue.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/op_queue.hpp deleted file mode 100644 index 47a55d67..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/op_queue.hpp +++ /dev/null @@ -1,162 +0,0 @@ -// -// detail/op_queue.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_OP_QUEUE_HPP -#define ASIO_DETAIL_OP_QUEUE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class op_queue; - -class op_queue_access -{ -public: - template - static Operation* next(Operation* o) - { - return static_cast(o->next_); - } - - template - static void next(Operation1*& o1, Operation2* o2) - { - o1->next_ = o2; - } - - template - static void destroy(Operation* o) - { - o->destroy(); - } - - template - static Operation*& front(op_queue& q) - { - return q.front_; - } - - template - static Operation*& back(op_queue& q) - { - return q.back_; - } -}; - -template -class op_queue - : private noncopyable -{ -public: - // Constructor. - op_queue() - : front_(0), - back_(0) - { - } - - // Destructor destroys all operations. - ~op_queue() - { - while (Operation* op = front_) - { - pop(); - op_queue_access::destroy(op); - } - } - - // Get the operation at the front of the queue. - Operation* front() - { - return front_; - } - - // Pop an operation from the front of the queue. - void pop() - { - if (front_) - { - Operation* tmp = front_; - front_ = op_queue_access::next(front_); - if (front_ == 0) - back_ = 0; - op_queue_access::next(tmp, static_cast(0)); - } - } - - // Push an operation on to the back of the queue. - void push(Operation* h) - { - op_queue_access::next(h, static_cast(0)); - if (back_) - { - op_queue_access::next(back_, h); - back_ = h; - } - else - { - front_ = back_ = h; - } - } - - // Push all operations from another queue on to the back of the queue. The - // source queue may contain operations of a derived type. - template - void push(op_queue& q) - { - if (Operation* other_front = op_queue_access::front(q)) - { - if (back_) - op_queue_access::next(back_, other_front); - else - front_ = other_front; - back_ = op_queue_access::back(q); - op_queue_access::front(q) = 0; - op_queue_access::back(q) = 0; - } - } - - // Whether the queue is empty. - bool empty() const - { - return front_ == 0; - } - - // Test whether an operation is already enqueued. - bool is_enqueued(Operation* o) const - { - return op_queue_access::next(o) != 0 || back_ == o; - } - -private: - friend class op_queue_access; - - // The front of the queue. - Operation* front_; - - // The back of the queue. - Operation* back_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_OP_QUEUE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/operation.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/operation.hpp deleted file mode 100644 index 51d877ee..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/operation.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// -// detail/operation.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_OPERATION_HPP -#define ASIO_DETAIL_OPERATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_operation.hpp" -#else -# include "asio/detail/scheduler_operation.hpp" -#endif - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_IOCP) -typedef win_iocp_operation operation; -#else -typedef scheduler_operation operation; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_OPERATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pipe_select_interrupter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pipe_select_interrupter.hpp deleted file mode 100644 index 74077eff..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pipe_select_interrupter.hpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// detail/pipe_select_interrupter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP -#define ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) -#if !defined(ASIO_WINDOWS_RUNTIME) -#if !defined(__CYGWIN__) -#if !defined(__SYMBIAN32__) -#if !defined(ASIO_HAS_EVENTFD) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class pipe_select_interrupter -{ -public: - // Constructor. - ASIO_DECL pipe_select_interrupter(); - - // Destructor. - ASIO_DECL ~pipe_select_interrupter(); - - // Recreate the interrupter's descriptors. Used after a fork. - ASIO_DECL void recreate(); - - // Interrupt the select call. - ASIO_DECL void interrupt(); - - // Reset the select interrupter. Returns true if the reset was successful. - ASIO_DECL bool reset(); - - // Get the read descriptor to be passed to select. - int read_descriptor() const - { - return read_descriptor_; - } - -private: - // Open the descriptors. Throws on error. - ASIO_DECL void open_descriptors(); - - // Close the descriptors. - ASIO_DECL void close_descriptors(); - - // The read end of a connection used to interrupt the select call. This file - // descriptor is passed to select such that when it is time to stop, a single - // byte will be written on the other end of the connection and this - // descriptor will become readable. - int read_descriptor_; - - // The write end of a connection used to interrupt the select call. A single - // byte may be written to this to wake up the select which is waiting for the - // other end to become readable. - int write_descriptor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/pipe_select_interrupter.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // !defined(ASIO_HAS_EVENTFD) -#endif // !defined(__SYMBIAN32__) -#endif // !defined(__CYGWIN__) -#endif // !defined(ASIO_WINDOWS_RUNTIME) -#endif // !defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pop_options.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pop_options.hpp deleted file mode 100644 index f64300a8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/pop_options.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// -// detail/pop_options.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -// No header guard - -#if defined(__COMO__) - -// Comeau C++ - -#elif defined(__DMC__) - -// Digital Mars C++ - -#elif defined(__INTEL_COMPILER) || defined(__ICL) \ - || defined(__ICC) || defined(__ECC) - -// Intel C++ - -# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility pop -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) - -#elif defined(__clang__) - -// Clang - -# if defined(__OBJC__) -# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) -# if defined(ASIO_OBJC_WORKAROUND) -# undef Protocol -# undef id -# undef ASIO_OBJC_WORKAROUND -# endif -# endif -# endif - -# if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility pop -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) - -# pragma GCC diagnostic pop - -#elif defined(__GNUC__) - -// GNU C++ - -# if defined(__MINGW32__) || defined(__CYGWIN__) -# pragma pack (pop) -# endif - -# if defined(__OBJC__) -# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) -# if defined(ASIO_OBJC_WORKAROUND) -# undef Protocol -# undef id -# undef ASIO_OBJC_WORKAROUND -# endif -# endif -# endif - -# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility pop -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) - -# pragma GCC diagnostic pop - -#elif defined(__KCC) - -// Kai C++ - -#elif defined(__sgi) - -// SGI MIPSpro C++ - -#elif defined(__DECCXX) - -// Compaq Tru64 Unix cxx - -#elif defined(__ghs) - -// Greenhills C++ - -#elif defined(__BORLANDC__) && !defined(__clang__) - -// Borland C++ - -# pragma option pop -# pragma nopushoptwarn -# pragma nopackwarning - -#elif defined(__MWERKS__) - -// Metrowerks CodeWarrior - -#elif defined(__SUNPRO_CC) - -// Sun Workshop Compiler C++ - -#elif defined(__HP_aCC) - -// HP aCC - -#elif defined(__MRC__) || defined(__SC__) - -// MPW MrCpp or SCpp - -#elif defined(__IBMCPP__) - -// IBM Visual Age - -#elif defined(_MSC_VER) - -// Microsoft Visual C++ -// -// Must remain the last #elif since some other vendors (Metrowerks, for example) -// also #define _MSC_VER - -# pragma warning (pop) -# pragma pack (pop) - -# if defined(__cplusplus_cli) || defined(__cplusplus_winrt) -# if defined(ASIO_CLR_WORKAROUND) -# undef generic -# undef ASIO_CLR_WORKAROUND -# endif -# endif - -#endif diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_event.hpp deleted file mode 100644 index b194977c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_event.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// -// detail/posix_event.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_EVENT_HPP -#define ASIO_DETAIL_POSIX_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class posix_event - : private noncopyable -{ -public: - // Constructor. - ASIO_DECL posix_event(); - - // Destructor. - ~posix_event() - { - ::pthread_cond_destroy(&cond_); - } - - // Signal the event. (Retained for backward compatibility.) - template - void signal(Lock& lock) - { - this->signal_all(lock); - } - - // Signal all waiters. - template - void signal_all(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - state_ |= 1; - ::pthread_cond_broadcast(&cond_); // Ignore EINVAL. - } - - // Unlock the mutex and signal one waiter. - template - void unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - lock.unlock(); - if (have_waiters) - ::pthread_cond_signal(&cond_); // Ignore EINVAL. - } - - // Unlock the mutex and signal one waiter who may destroy us. - template - void unlock_and_signal_one_for_destruction(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - if (have_waiters) - ::pthread_cond_signal(&cond_); // Ignore EINVAL. - lock.unlock(); - } - - // If there's a waiter, unlock the mutex and signal it. - template - bool maybe_unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - if (state_ > 1) - { - lock.unlock(); - ::pthread_cond_signal(&cond_); // Ignore EINVAL. - return true; - } - return false; - } - - // Reset the event. - template - void clear(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - state_ &= ~std::size_t(1); - } - - // Wait for the event to become signalled. - template - void wait(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - while ((state_ & 1) == 0) - { - state_ += 2; - ::pthread_cond_wait(&cond_, &lock.mutex().mutex_); // Ignore EINVAL. - state_ -= 2; - } - } - - // Timed wait for the event to become signalled. - template - bool wait_for_usec(Lock& lock, long usec) - { - ASIO_ASSERT(lock.locked()); - if ((state_ & 1) == 0) - { - state_ += 2; - timespec ts; -#if (defined(__MACH__) && defined(__APPLE__)) \ - || (defined(__ANDROID__) && (__ANDROID_API__ < 21) \ - && defined(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE)) - ts.tv_sec = usec / 1000000; - ts.tv_nsec = (usec % 1000000) * 1000; - ::pthread_cond_timedwait_relative_np( - &cond_, &lock.mutex().mutex_, &ts); // Ignore EINVAL. -#else // (defined(__MACH__) && defined(__APPLE__)) - // || (defined(__ANDROID__) && (__ANDROID_API__ < 21) - // && defined(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE)) - if (::clock_gettime(CLOCK_MONOTONIC, &ts) == 0) - { - ts.tv_sec += usec / 1000000; - ts.tv_nsec += (usec % 1000000) * 1000; - ts.tv_sec += ts.tv_nsec / 1000000000; - ts.tv_nsec = ts.tv_nsec % 1000000000; - ::pthread_cond_timedwait(&cond_, - &lock.mutex().mutex_, &ts); // Ignore EINVAL. - } -#endif // (defined(__MACH__) && defined(__APPLE__)) - // || (defined(__ANDROID__) && (__ANDROID_API__ < 21) - // && defined(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE)) - state_ -= 2; - } - return (state_ & 1) != 0; - } - -private: - ::pthread_cond_t cond_; - std::size_t state_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/posix_event.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp deleted file mode 100644 index 4e57de94..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// -// detail/posix_fd_set_adapter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP -#define ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) \ - && !defined(__CYGWIN__) \ - && !defined(ASIO_WINDOWS_RUNTIME) - -#include -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/reactor_op_queue.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements. -class posix_fd_set_adapter : noncopyable -{ -public: - posix_fd_set_adapter() - : max_descriptor_(invalid_socket) - { - using namespace std; // Needed for memset on Solaris. - FD_ZERO(&fd_set_); - } - - void reset() - { - using namespace std; // Needed for memset on Solaris. - FD_ZERO(&fd_set_); - } - - bool set(socket_type descriptor) - { - if (descriptor < (socket_type)FD_SETSIZE) - { - if (max_descriptor_ == invalid_socket || descriptor > max_descriptor_) - max_descriptor_ = descriptor; - FD_SET(descriptor, &fd_set_); - return true; - } - return false; - } - - void set(reactor_op_queue& operations, op_queue& ops) - { - reactor_op_queue::iterator i = operations.begin(); - while (i != operations.end()) - { - reactor_op_queue::iterator op_iter = i++; - if (!set(op_iter->first)) - { - asio::error_code ec(error::fd_set_failure); - operations.cancel_operations(op_iter, ops, ec); - } - } - } - - bool is_set(socket_type descriptor) const - { - return FD_ISSET(descriptor, &fd_set_) != 0; - } - - operator fd_set*() - { - return &fd_set_; - } - - socket_type max_descriptor() const - { - return max_descriptor_; - } - - void perform(reactor_op_queue& operations, - op_queue& ops) const - { - reactor_op_queue::iterator i = operations.begin(); - while (i != operations.end()) - { - reactor_op_queue::iterator op_iter = i++; - if (is_set(op_iter->first)) - operations.perform_operations(op_iter, ops); - } - } - -private: - mutable fd_set fd_set_; - socket_type max_descriptor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) - // && !defined(__CYGWIN__) - // && !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_global.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_global.hpp deleted file mode 100644 index 9f3a8d12..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_global.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// -// detail/posix_global.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_GLOBAL_HPP -#define ASIO_DETAIL_POSIX_GLOBAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct posix_global_impl -{ - // Helper function to perform initialisation. - static void do_init() - { - instance_.static_ptr_ = instance_.ptr_ = new T; - } - - // Destructor automatically cleans up the global. - ~posix_global_impl() - { - delete static_ptr_; - } - - static ::pthread_once_t init_once_; - static T* static_ptr_; - static posix_global_impl instance_; - T* ptr_; -}; - -template -::pthread_once_t posix_global_impl::init_once_ = PTHREAD_ONCE_INIT; - -template -T* posix_global_impl::static_ptr_ = 0; - -template -posix_global_impl posix_global_impl::instance_; - -template -T& posix_global() -{ - int result = ::pthread_once( - &posix_global_impl::init_once_, - &posix_global_impl::do_init); - - if (result != 0) - std::terminate(); - - return *posix_global_impl::instance_.ptr_; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_GLOBAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_mutex.hpp deleted file mode 100644 index 293d4672..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_mutex.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// -// detail/posix_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_MUTEX_HPP -#define ASIO_DETAIL_POSIX_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class posix_event; - -class posix_mutex - : private noncopyable -{ -public: - typedef asio::detail::scoped_lock scoped_lock; - - // Constructor. - ASIO_DECL posix_mutex(); - - // Destructor. - ~posix_mutex() - { - ::pthread_mutex_destroy(&mutex_); // Ignore EBUSY. - } - - // Lock the mutex. - void lock() - { - (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL. - } - - // Unlock the mutex. - void unlock() - { - (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL. - } - -private: - friend class posix_event; - ::pthread_mutex_t mutex_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/posix_mutex.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_signal_blocker.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_signal_blocker.hpp deleted file mode 100644 index 08b89cb0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_signal_blocker.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// -// detail/posix_signal_blocker.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP -#define ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class posix_signal_blocker - : private noncopyable -{ -public: - // Constructor blocks all signals for the calling thread. - posix_signal_blocker() - : blocked_(false) - { - sigset_t new_mask; - sigfillset(&new_mask); - blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0); - } - - // Destructor restores the previous signal mask. - ~posix_signal_blocker() - { - if (blocked_) - pthread_sigmask(SIG_SETMASK, &old_mask_, 0); - } - - // Block all signals for the calling thread. - void block() - { - if (!blocked_) - { - sigset_t new_mask; - sigfillset(&new_mask); - blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0); - } - } - - // Restore the previous signal mask. - void unblock() - { - if (blocked_) - blocked_ = (pthread_sigmask(SIG_SETMASK, &old_mask_, 0) != 0); - } - -private: - // Have signals been blocked. - bool blocked_; - - // The previous signal mask. - sigset_t old_mask_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_static_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_static_mutex.hpp deleted file mode 100644 index 7784434a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_static_mutex.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -// detail/posix_static_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP -#define ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct posix_static_mutex -{ - typedef asio::detail::scoped_lock scoped_lock; - - // Initialise the mutex. - void init() - { - // Nothing to do. - } - - // Lock the mutex. - void lock() - { - (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL. - } - - // Unlock the mutex. - void unlock() - { - (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL. - } - - ::pthread_mutex_t mutex_; -}; - -#define ASIO_POSIX_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER } - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_thread.hpp deleted file mode 100644 index 7cd63df8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_thread.hpp +++ /dev/null @@ -1,109 +0,0 @@ -// -// detail/posix_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_THREAD_HPP -#define ASIO_DETAIL_POSIX_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -extern "C" -{ - ASIO_DECL void* asio_detail_posix_thread_function(void* arg); -} - -class posix_thread - : private noncopyable -{ -public: - // Constructor. - template - posix_thread(Function f, unsigned int = 0) - : joined_(false) - { - start_thread(new func(f)); - } - - // Destructor. - ASIO_DECL ~posix_thread(); - - // Wait for the thread to exit. - ASIO_DECL void join(); - - // Get number of CPUs. - ASIO_DECL static std::size_t hardware_concurrency(); - -private: - friend void* asio_detail_posix_thread_function(void* arg); - - class func_base - { - public: - virtual ~func_base() {} - virtual void run() = 0; - }; - - struct auto_func_base_ptr - { - func_base* ptr; - ~auto_func_base_ptr() { delete ptr; } - }; - - template - class func - : public func_base - { - public: - func(Function f) - : f_(f) - { - } - - virtual void run() - { - f_(); - } - - private: - Function f_; - }; - - ASIO_DECL void start_thread(func_base* arg); - - ::pthread_t thread_; - bool joined_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/posix_thread.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_tss_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_tss_ptr.hpp deleted file mode 100644 index b4fa0d55..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/posix_tss_ptr.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// -// detail/posix_tss_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_POSIX_TSS_PTR_HPP -#define ASIO_DETAIL_POSIX_TSS_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_PTHREADS) - -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper function to create thread-specific storage. -ASIO_DECL void posix_tss_ptr_create(pthread_key_t& key); - -template -class posix_tss_ptr - : private noncopyable -{ -public: - // Constructor. - posix_tss_ptr() - { - posix_tss_ptr_create(tss_key_); - } - - // Destructor. - ~posix_tss_ptr() - { - ::pthread_key_delete(tss_key_); - } - - // Get the value. - operator T*() const - { - return static_cast(::pthread_getspecific(tss_key_)); - } - - // Set the value. - void operator=(T* value) - { - ::pthread_setspecific(tss_key_, value); - } - -private: - // Thread-specific storage to allow unlocked access to determine whether a - // thread is a member of the pool. - pthread_key_t tss_key_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/posix_tss_ptr.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_PTHREADS) - -#endif // ASIO_DETAIL_POSIX_TSS_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/push_options.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/push_options.hpp deleted file mode 100644 index 6606a8a9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/push_options.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// -// detail/push_options.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -// No header guard - -#if defined(__COMO__) - -// Comeau C++ - -#elif defined(__DMC__) - -// Digital Mars C++ - -#elif defined(__INTEL_COMPILER) || defined(__ICL) \ - || defined(__ICC) || defined(__ECC) - -// Intel C++ - -# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility push (default) -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) - -#elif defined(__clang__) - -// Clang - -# if defined(__OBJC__) -# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) -# if !defined(ASIO_DISABLE_OBJC_WORKAROUND) -# if !defined(Protocol) && !defined(id) -# define Protocol cpp_Protocol -# define id cpp_id -# define ASIO_OBJC_WORKAROUND -# endif -# endif -# endif -# endif - -# if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility push (default) -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) - -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -# if (__clang_major__ >= 6) -# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" -# endif // (__clang_major__ >= 6) - -#elif defined(__GNUC__) - -// GNU C++ - -# if defined(__MINGW32__) || defined(__CYGWIN__) -# pragma pack (push, 8) -# endif - -# if defined(__OBJC__) -# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) -# if !defined(ASIO_DISABLE_OBJC_WORKAROUND) -# if !defined(Protocol) && !defined(id) -# define Protocol cpp_Protocol -# define id cpp_id -# define ASIO_OBJC_WORKAROUND -# endif -# endif -# endif -# endif - -# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) -# if !defined(ASIO_DISABLE_VISIBILITY) -# pragma GCC visibility push (default) -# endif // !defined(ASIO_DISABLE_VISIBILITY) -# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) - -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4) -# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" -# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4) -# if (__GNUC__ >= 7) -# pragma GCC diagnostic ignored "-Wimplicit-fallthrough" -# endif // (__GNUC__ >= 7) - -#elif defined(__KCC) - -// Kai C++ - -#elif defined(__sgi) - -// SGI MIPSpro C++ - -#elif defined(__DECCXX) - -// Compaq Tru64 Unix cxx - -#elif defined(__ghs) - -// Greenhills C++ - -#elif defined(__BORLANDC__) && !defined(__clang__) - -// Borland C++ - -# pragma option push -a8 -b -Ve- -Vx- -w-inl -vi- -# pragma nopushoptwarn -# pragma nopackwarning -# if !defined(__MT__) -# error Multithreaded RTL must be selected. -# endif // !defined(__MT__) - -#elif defined(__MWERKS__) - -// Metrowerks CodeWarrior - -#elif defined(__SUNPRO_CC) - -// Sun Workshop Compiler C++ - -#elif defined(__HP_aCC) - -// HP aCC - -#elif defined(__MRC__) || defined(__SC__) - -// MPW MrCpp or SCpp - -#elif defined(__IBMCPP__) - -// IBM Visual Age - -#elif defined(_MSC_VER) - -// Microsoft Visual C++ -// -// Must remain the last #elif since some other vendors (Metrowerks, for example) -// also #define _MSC_VER - -# pragma warning (disable:4103) -# pragma warning (push) -# pragma warning (disable:4127) -# pragma warning (disable:4180) -# pragma warning (disable:4244) -# pragma warning (disable:4355) -# pragma warning (disable:4510) -# pragma warning (disable:4512) -# pragma warning (disable:4610) -# pragma warning (disable:4675) -# if (_MSC_VER < 1600) -// Visual Studio 2008 generates spurious warnings about unused parameters. -# pragma warning (disable:4100) -# endif // (_MSC_VER < 1600) -# if defined(_M_IX86) && defined(_Wp64) -// The /Wp64 option is broken. If you want to check 64 bit portability, use a -// 64 bit compiler! -# pragma warning (disable:4311) -# pragma warning (disable:4312) -# endif // defined(_M_IX86) && defined(_Wp64) -# pragma pack (push, 8) -// Note that if the /Og optimisation flag is enabled with MSVC6, the compiler -// has a tendency to incorrectly optimise away some calls to member template -// functions, even though those functions contain code that should not be -// optimised away! Therefore we will always disable this optimisation option -// for the MSVC6 compiler. -# if (_MSC_VER < 1300) -# pragma optimize ("g", off) -# endif -# if !defined(_MT) -# error Multithreaded RTL must be selected. -# endif // !defined(_MT) - -# if defined(__cplusplus_cli) || defined(__cplusplus_winrt) -# if !defined(ASIO_DISABLE_CLR_WORKAROUND) -# if !defined(generic) -# define generic cpp_generic -# define ASIO_CLR_WORKAROUND -# endif -# endif -# endif - -#endif diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_descriptor_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_descriptor_service.hpp deleted file mode 100644 index 11f0328f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +++ /dev/null @@ -1,416 +0,0 @@ -// -// detail/reactive_descriptor_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP -#define ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - -#include "asio/buffer.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/descriptor_ops.hpp" -#include "asio/detail/descriptor_read_op.hpp" -#include "asio/detail/descriptor_write_op.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/reactive_null_buffers_op.hpp" -#include "asio/detail/reactive_wait_op.hpp" -#include "asio/detail/reactor.hpp" -#include "asio/posix/descriptor_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class reactive_descriptor_service : - public execution_context_service_base -{ -public: - // The native type of a descriptor. - typedef int native_handle_type; - - // The implementation type of the descriptor. - class implementation_type - : private asio::detail::noncopyable - { - public: - // Default constructor. - implementation_type() - : descriptor_(-1), - state_(0) - { - } - - private: - // Only this service will have access to the internal values. - friend class reactive_descriptor_service; - - // The native descriptor representation. - int descriptor_; - - // The current state of the descriptor. - descriptor_ops::state_type state_; - - // Per-descriptor data used by the reactor. - reactor::per_descriptor_data reactor_data_; - }; - - // Constructor. - ASIO_DECL reactive_descriptor_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new descriptor implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Move-construct a new descriptor implementation. - ASIO_DECL void move_construct(implementation_type& impl, - implementation_type& other_impl) ASIO_NOEXCEPT; - - // Move-assign from another descriptor implementation. - ASIO_DECL void move_assign(implementation_type& impl, - reactive_descriptor_service& other_service, - implementation_type& other_impl); - - // Destroy a descriptor implementation. - ASIO_DECL void destroy(implementation_type& impl); - - // Assign a native descriptor to a descriptor implementation. - ASIO_DECL asio::error_code assign(implementation_type& impl, - const native_handle_type& native_descriptor, - asio::error_code& ec); - - // Determine whether the descriptor is open. - bool is_open(const implementation_type& impl) const - { - return impl.descriptor_ != -1; - } - - // Destroy a descriptor implementation. - ASIO_DECL asio::error_code close(implementation_type& impl, - asio::error_code& ec); - - // Get the native descriptor representation. - native_handle_type native_handle(const implementation_type& impl) const - { - return impl.descriptor_; - } - - // Release ownership of the native descriptor representation. - ASIO_DECL native_handle_type release(implementation_type& impl); - - // Cancel all operations associated with the descriptor. - ASIO_DECL asio::error_code cancel(implementation_type& impl, - asio::error_code& ec); - - // Perform an IO control command on the descriptor. - template - asio::error_code io_control(implementation_type& impl, - IO_Control_Command& command, asio::error_code& ec) - { - descriptor_ops::ioctl(impl.descriptor_, impl.state_, - command.name(), static_cast(command.data()), ec); - return ec; - } - - // Gets the non-blocking mode of the descriptor. - bool non_blocking(const implementation_type& impl) const - { - return (impl.state_ & descriptor_ops::user_set_non_blocking) != 0; - } - - // Sets the non-blocking mode of the descriptor. - asio::error_code non_blocking(implementation_type& impl, - bool mode, asio::error_code& ec) - { - descriptor_ops::set_user_non_blocking( - impl.descriptor_, impl.state_, mode, ec); - return ec; - } - - // Gets the non-blocking mode of the native descriptor implementation. - bool native_non_blocking(const implementation_type& impl) const - { - return (impl.state_ & descriptor_ops::internal_non_blocking) != 0; - } - - // Sets the non-blocking mode of the native descriptor implementation. - asio::error_code native_non_blocking(implementation_type& impl, - bool mode, asio::error_code& ec) - { - descriptor_ops::set_internal_non_blocking( - impl.descriptor_, impl.state_, mode, ec); - return ec; - } - - // Wait for the descriptor to become ready to read, ready to write, or to have - // pending error conditions. - asio::error_code wait(implementation_type& impl, - posix::descriptor_base::wait_type w, asio::error_code& ec) - { - switch (w) - { - case posix::descriptor_base::wait_read: - descriptor_ops::poll_read(impl.descriptor_, impl.state_, ec); - break; - case posix::descriptor_base::wait_write: - descriptor_ops::poll_write(impl.descriptor_, impl.state_, ec); - break; - case posix::descriptor_base::wait_error: - descriptor_ops::poll_error(impl.descriptor_, impl.state_, ec); - break; - default: - ec = asio::error::invalid_argument; - break; - } - - return ec; - } - - // Asynchronously wait for the descriptor to become ready to read, ready to - // write, or to have pending error conditions. - template - void async_wait(implementation_type& impl, - posix::descriptor_base::wait_type w, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_wait_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "descriptor", - &impl, impl.descriptor_, "async_wait")); - - int op_type; - switch (w) - { - case posix::descriptor_base::wait_read: - op_type = reactor::read_op; - break; - case posix::descriptor_base::wait_write: - op_type = reactor::write_op; - break; - case posix::descriptor_base::wait_error: - op_type = reactor::except_op; - break; - default: - p.p->ec_ = asio::error::invalid_argument; - reactor_.post_immediate_completion(p.p, is_continuation); - p.v = p.p = 0; - return; - } - - start_op(impl, op_type, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Write some data to the descriptor. - template - size_t write_some(implementation_type& impl, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - if (bufs_type::is_single_buffer) - { - return descriptor_ops::sync_write1(impl.descriptor_, - impl.state_, bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), ec); - } - else - { - bufs_type bufs(buffers); - - return descriptor_ops::sync_write(impl.descriptor_, impl.state_, - bufs.buffers(), bufs.count(), bufs.all_empty(), ec); - } - } - - // Wait until data can be written without blocking. - size_t write_some(implementation_type& impl, - const null_buffers&, asio::error_code& ec) - { - // Wait for descriptor to become ready. - descriptor_ops::poll_write(impl.descriptor_, impl.state_, ec); - - return 0; - } - - // Start an asynchronous write. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_write_some(implementation_type& impl, - const ConstBufferSequence& buffers, Handler& handler, - const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef descriptor_write_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.descriptor_, buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "descriptor", - &impl, impl.descriptor_, "async_write_some")); - - start_op(impl, reactor::write_op, p.p, is_continuation, true, - buffer_sequence_adapter::all_empty(buffers)); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be written without blocking. - template - void async_write_some(implementation_type& impl, - const null_buffers&, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "descriptor", - &impl, impl.descriptor_, "async_write_some(null_buffers)")); - - start_op(impl, reactor::write_op, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Read some data from the stream. Returns the number of bytes read. - template - size_t read_some(implementation_type& impl, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - if (bufs_type::is_single_buffer) - { - return descriptor_ops::sync_read1(impl.descriptor_, - impl.state_, bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), ec); - } - else - { - bufs_type bufs(buffers); - - return descriptor_ops::sync_read(impl.descriptor_, impl.state_, - bufs.buffers(), bufs.count(), bufs.all_empty(), ec); - } - } - - // Wait until data can be read without blocking. - size_t read_some(implementation_type& impl, - const null_buffers&, asio::error_code& ec) - { - // Wait for descriptor to become ready. - descriptor_ops::poll_read(impl.descriptor_, impl.state_, ec); - - return 0; - } - - // Start an asynchronous read. The buffer for the data being read must be - // valid for the lifetime of the asynchronous operation. - template - void async_read_some(implementation_type& impl, - const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef descriptor_read_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.descriptor_, buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "descriptor", - &impl, impl.descriptor_, "async_read_some")); - - start_op(impl, reactor::read_op, p.p, is_continuation, true, - buffer_sequence_adapter::all_empty(buffers)); - p.v = p.p = 0; - } - - // Wait until data can be read without blocking. - template - void async_read_some(implementation_type& impl, - const null_buffers&, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "descriptor", - &impl, impl.descriptor_, "async_read_some(null_buffers)")); - - start_op(impl, reactor::read_op, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - -private: - // Start the asynchronous operation. - ASIO_DECL void start_op(implementation_type& impl, int op_type, - reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop); - - // The selector that performs event demultiplexing for the service. - reactor& reactor_; - - // Cached success value to avoid accessing category singleton. - const asio::error_code success_ec_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/reactive_descriptor_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp deleted file mode 100644 index 190fafa8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// detail/reactive_null_buffers_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP -#define ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_null_buffers_op : public reactor_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_null_buffers_op); - - reactive_null_buffers_op(const asio::error_code& success_ec, - Handler& handler, const IoExecutor& io_ex) - : reactor_op(success_ec, &reactive_null_buffers_op::do_perform, - &reactive_null_buffers_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static status do_perform(reactor_op*) - { - return done; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_null_buffers_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_serial_port_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_serial_port_service.hpp deleted file mode 100644 index f8af4113..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +++ /dev/null @@ -1,237 +0,0 @@ -// -// detail/reactive_serial_port_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP -#define ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_SERIAL_PORT) -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/serial_port_base.hpp" -#include "asio/detail/descriptor_ops.hpp" -#include "asio/detail/reactive_descriptor_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Extend reactive_descriptor_service to provide serial port support. -class reactive_serial_port_service : - public execution_context_service_base -{ -public: - // The native type of a serial port. - typedef reactive_descriptor_service::native_handle_type native_handle_type; - - // The implementation type of the serial port. - typedef reactive_descriptor_service::implementation_type implementation_type; - - ASIO_DECL reactive_serial_port_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new serial port implementation. - void construct(implementation_type& impl) - { - descriptor_service_.construct(impl); - } - - // Move-construct a new serial port implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) - { - descriptor_service_.move_construct(impl, other_impl); - } - - // Move-assign from another serial port implementation. - void move_assign(implementation_type& impl, - reactive_serial_port_service& other_service, - implementation_type& other_impl) - { - descriptor_service_.move_assign(impl, - other_service.descriptor_service_, other_impl); - } - - // Destroy a serial port implementation. - void destroy(implementation_type& impl) - { - descriptor_service_.destroy(impl); - } - - // Open the serial port using the specified device name. - ASIO_DECL asio::error_code open(implementation_type& impl, - const std::string& device, asio::error_code& ec); - - // Assign a native descriptor to a serial port implementation. - asio::error_code assign(implementation_type& impl, - const native_handle_type& native_descriptor, - asio::error_code& ec) - { - return descriptor_service_.assign(impl, native_descriptor, ec); - } - - // Determine whether the serial port is open. - bool is_open(const implementation_type& impl) const - { - return descriptor_service_.is_open(impl); - } - - // Destroy a serial port implementation. - asio::error_code close(implementation_type& impl, - asio::error_code& ec) - { - return descriptor_service_.close(impl, ec); - } - - // Get the native serial port representation. - native_handle_type native_handle(implementation_type& impl) - { - return descriptor_service_.native_handle(impl); - } - - // Cancel all operations associated with the serial port. - asio::error_code cancel(implementation_type& impl, - asio::error_code& ec) - { - return descriptor_service_.cancel(impl, ec); - } - - // Set an option on the serial port. - template - asio::error_code set_option(implementation_type& impl, - const SettableSerialPortOption& option, asio::error_code& ec) - { - return do_set_option(impl, - &reactive_serial_port_service::store_option, - &option, ec); - } - - // Get an option from the serial port. - template - asio::error_code get_option(const implementation_type& impl, - GettableSerialPortOption& option, asio::error_code& ec) const - { - return do_get_option(impl, - &reactive_serial_port_service::load_option, - &option, ec); - } - - // Send a break sequence to the serial port. - asio::error_code send_break(implementation_type& impl, - asio::error_code& ec) - { - int result = ::tcsendbreak(descriptor_service_.native_handle(impl), 0); - descriptor_ops::get_last_error(ec, result < 0); - return ec; - } - - // Write the given data. Returns the number of bytes sent. - template - size_t write_some(implementation_type& impl, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - return descriptor_service_.write_some(impl, buffers, ec); - } - - // Start an asynchronous write. The data being written must be valid for the - // lifetime of the asynchronous operation. - template - void async_write_some(implementation_type& impl, - const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - descriptor_service_.async_write_some(impl, buffers, handler, io_ex); - } - - // Read some data. Returns the number of bytes received. - template - size_t read_some(implementation_type& impl, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - return descriptor_service_.read_some(impl, buffers, ec); - } - - // Start an asynchronous read. The buffer for the data being received must be - // valid for the lifetime of the asynchronous operation. - template - void async_read_some(implementation_type& impl, - const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - descriptor_service_.async_read_some(impl, buffers, handler, io_ex); - } - -private: - // Function pointer type for storing a serial port option. - typedef asio::error_code (*store_function_type)( - const void*, termios&, asio::error_code&); - - // Helper function template to store a serial port option. - template - static asio::error_code store_option(const void* option, - termios& storage, asio::error_code& ec) - { - static_cast(option)->store(storage, ec); - return ec; - } - - // Helper function to set a serial port option. - ASIO_DECL asio::error_code do_set_option( - implementation_type& impl, store_function_type store, - const void* option, asio::error_code& ec); - - // Function pointer type for loading a serial port option. - typedef asio::error_code (*load_function_type)( - void*, const termios&, asio::error_code&); - - // Helper function template to load a serial port option. - template - static asio::error_code load_option(void* option, - const termios& storage, asio::error_code& ec) - { - static_cast(option)->load(storage, ec); - return ec; - } - - // Helper function to get a serial port option. - ASIO_DECL asio::error_code do_get_option( - const implementation_type& impl, load_function_type load, - void* option, asio::error_code& ec) const; - - // The implementation used for initiating asynchronous operations. - reactive_descriptor_service descriptor_service_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/reactive_serial_port_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) -#endif // defined(ASIO_HAS_SERIAL_PORT) - -#endif // ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp deleted file mode 100644 index 0bd92798..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// -// detail/reactive_socket_accept_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_accept_op_base : public reactor_op -{ -public: - reactive_socket_accept_op_base(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, Socket& peer, - const Protocol& protocol, typename Protocol::endpoint* peer_endpoint, - func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_accept_op_base::do_perform, complete_func), - socket_(socket), - state_(state), - peer_(peer), - protocol_(protocol), - peer_endpoint_(peer_endpoint), - addrlen_(peer_endpoint ? peer_endpoint->capacity() : 0) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_accept_op_base* o( - static_cast(base)); - - socket_type new_socket = invalid_socket; - status result = socket_ops::non_blocking_accept(o->socket_, - o->state_, o->peer_endpoint_ ? o->peer_endpoint_->data() : 0, - o->peer_endpoint_ ? &o->addrlen_ : 0, o->ec_, new_socket) - ? done : not_done; - o->new_socket_.reset(new_socket); - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_accept", o->ec_)); - - return result; - } - - void do_assign() - { - if (new_socket_.get() != invalid_socket) - { - if (peer_endpoint_) - peer_endpoint_->resize(addrlen_); - peer_.assign(protocol_, new_socket_.get(), ec_); - if (!ec_) - new_socket_.release(); - } - } - -private: - socket_type socket_; - socket_ops::state_type state_; - socket_holder new_socket_; - Socket& peer_; - Protocol protocol_; - typename Protocol::endpoint* peer_endpoint_; - std::size_t addrlen_; -}; - -template -class reactive_socket_accept_op : - public reactive_socket_accept_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_accept_op); - - reactive_socket_accept_op(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, Socket& peer, - const Protocol& protocol, typename Protocol::endpoint* peer_endpoint, - Handler& handler, const IoExecutor& io_ex) - : reactive_socket_accept_op_base( - success_ec, socket, state, peer, protocol, peer_endpoint, - &reactive_socket_accept_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_accept_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - // On success, assign new connection to peer socket object. - if (owner) - o->do_assign(); - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, o->ec_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -#if defined(ASIO_HAS_MOVE) - -template -class reactive_socket_move_accept_op : - private Protocol::socket::template rebind_executor::other, - public reactive_socket_accept_op_base< - typename Protocol::socket::template rebind_executor::other, - Protocol> -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_move_accept_op); - - reactive_socket_move_accept_op(const asio::error_code& success_ec, - const PeerIoExecutor& peer_io_ex, socket_type socket, - socket_ops::state_type state, const Protocol& protocol, - typename Protocol::endpoint* peer_endpoint, Handler& handler, - const IoExecutor& io_ex) - : peer_socket_type(peer_io_ex), - reactive_socket_accept_op_base( - success_ec, socket, state, *this, protocol, peer_endpoint, - &reactive_socket_move_accept_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_move_accept_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - // On success, assign new connection to peer socket object. - if (owner) - o->do_assign(); - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::move_binder2 - handler(0, ASIO_MOVE_CAST(Handler)(o->handler_), o->ec_, - ASIO_MOVE_CAST(peer_socket_type)(*o)); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "...")); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - typedef typename Protocol::socket::template - rebind_executor::other peer_socket_type; - - Handler handler_; - handler_work work_; -}; - -#endif // defined(ASIO_HAS_MOVE) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp deleted file mode 100644 index 14f01100..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +++ /dev/null @@ -1,123 +0,0 @@ -// -// detail/reactive_socket_connect_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class reactive_socket_connect_op_base : public reactor_op -{ -public: - reactive_socket_connect_op_base(const asio::error_code& success_ec, - socket_type socket, func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_connect_op_base::do_perform, complete_func), - socket_(socket) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_connect_op_base* o( - static_cast(base)); - - status result = socket_ops::non_blocking_connect( - o->socket_, o->ec_) ? done : not_done; - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_connect", o->ec_)); - - return result; - } - -private: - socket_type socket_; -}; - -template -class reactive_socket_connect_op : public reactive_socket_connect_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_connect_op); - - reactive_socket_connect_op(const asio::error_code& success_ec, - socket_type socket, Handler& handler, const IoExecutor& io_ex) - : reactive_socket_connect_op_base(success_ec, socket, - &reactive_socket_connect_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_connect_op* o - (static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, o->ec_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp deleted file mode 100644 index b3af2c41..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// -// detail/reactive_socket_recv_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_recv_op_base : public reactor_op -{ -public: - reactive_socket_recv_op_base(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, - const MutableBufferSequence& buffers, - socket_base::message_flags flags, func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_recv_op_base::do_perform, complete_func), - socket_(socket), - state_(state), - buffers_(buffers), - flags_(flags) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_recv_op_base* o( - static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - status result; - if (bufs_type::is_single_buffer) - { - result = socket_ops::non_blocking_recv1(o->socket_, - bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), o->flags_, - (o->state_ & socket_ops::stream_oriented) != 0, - o->ec_, o->bytes_transferred_) ? done : not_done; - } - else - { - bufs_type bufs(o->buffers_); - result = socket_ops::non_blocking_recv(o->socket_, - bufs.buffers(), bufs.count(), o->flags_, - (o->state_ & socket_ops::stream_oriented) != 0, - o->ec_, o->bytes_transferred_) ? done : not_done; - } - - if (result == done) - if ((o->state_ & socket_ops::stream_oriented) != 0) - if (o->bytes_transferred_ == 0) - result = done_and_exhausted; - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_recv", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - socket_type socket_; - socket_ops::state_type state_; - MutableBufferSequence buffers_; - socket_base::message_flags flags_; -}; - -template -class reactive_socket_recv_op : - public reactive_socket_recv_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_recv_op); - - reactive_socket_recv_op(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, - const MutableBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - : reactive_socket_recv_op_base(success_ec, socket, - state, buffers, flags, &reactive_socket_recv_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_recv_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp deleted file mode 100644 index f45bb2cb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +++ /dev/null @@ -1,164 +0,0 @@ -// -// detail/reactive_socket_recvfrom_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_recvfrom_op_base : public reactor_op -{ -public: - reactive_socket_recvfrom_op_base(const asio::error_code& success_ec, - socket_type socket, int protocol_type, - const MutableBufferSequence& buffers, Endpoint& endpoint, - socket_base::message_flags flags, func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_recvfrom_op_base::do_perform, complete_func), - socket_(socket), - protocol_type_(protocol_type), - buffers_(buffers), - sender_endpoint_(endpoint), - flags_(flags) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_recvfrom_op_base* o( - static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - std::size_t addr_len = o->sender_endpoint_.capacity(); - status result; - if (bufs_type::is_single_buffer) - { - result = socket_ops::non_blocking_recvfrom1( - o->socket_, bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), o->flags_, - o->sender_endpoint_.data(), &addr_len, - o->ec_, o->bytes_transferred_) ? done : not_done; - } - else - { - bufs_type bufs(o->buffers_); - result = socket_ops::non_blocking_recvfrom(o->socket_, - bufs.buffers(), bufs.count(), o->flags_, - o->sender_endpoint_.data(), &addr_len, - o->ec_, o->bytes_transferred_) ? done : not_done; - } - - if (result && !o->ec_) - o->sender_endpoint_.resize(addr_len); - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_recvfrom", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - socket_type socket_; - int protocol_type_; - MutableBufferSequence buffers_; - Endpoint& sender_endpoint_; - socket_base::message_flags flags_; -}; - -template -class reactive_socket_recvfrom_op : - public reactive_socket_recvfrom_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvfrom_op); - - reactive_socket_recvfrom_op(const asio::error_code& success_ec, - socket_type socket, int protocol_type, - const MutableBufferSequence& buffers, Endpoint& endpoint, - socket_base::message_flags flags, Handler& handler, - const IoExecutor& io_ex) - : reactive_socket_recvfrom_op_base( - success_ec, socket, protocol_type, buffers, endpoint, flags, - &reactive_socket_recvfrom_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_recvfrom_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp deleted file mode 100644 index ca49b6b1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// -// detail/reactive_socket_recvmsg_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/socket_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_recvmsg_op_base : public reactor_op -{ -public: - reactive_socket_recvmsg_op_base(const asio::error_code& success_ec, - socket_type socket, const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_recvmsg_op_base::do_perform, complete_func), - socket_(socket), - buffers_(buffers), - in_flags_(in_flags), - out_flags_(out_flags) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_recvmsg_op_base* o( - static_cast(base)); - - buffer_sequence_adapter bufs(o->buffers_); - - status result = socket_ops::non_blocking_recvmsg(o->socket_, - bufs.buffers(), bufs.count(), - o->in_flags_, o->out_flags_, - o->ec_, o->bytes_transferred_) ? done : not_done; - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_recvmsg", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - socket_type socket_; - MutableBufferSequence buffers_; - socket_base::message_flags in_flags_; - socket_base::message_flags& out_flags_; -}; - -template -class reactive_socket_recvmsg_op : - public reactive_socket_recvmsg_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvmsg_op); - - reactive_socket_recvmsg_op(const asio::error_code& success_ec, - socket_type socket, const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler& handler, - const IoExecutor& io_ex) - : reactive_socket_recvmsg_op_base( - success_ec, socket, buffers, in_flags, out_flags, - &reactive_socket_recvmsg_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_recvmsg_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_send_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_send_op.hpp deleted file mode 100644 index 4a611c4e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +++ /dev/null @@ -1,162 +0,0 @@ -// -// detail/reactive_socket_send_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_send_op_base : public reactor_op -{ -public: - reactive_socket_send_op_base(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, - const ConstBufferSequence& buffers, - socket_base::message_flags flags, func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_send_op_base::do_perform, complete_func), - socket_(socket), - state_(state), - buffers_(buffers), - flags_(flags) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_send_op_base* o( - static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - status result; - if (bufs_type::is_single_buffer) - { - result = socket_ops::non_blocking_send1(o->socket_, - bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), o->flags_, - o->ec_, o->bytes_transferred_) ? done : not_done; - - if (result == done) - if ((o->state_ & socket_ops::stream_oriented) != 0) - if (o->bytes_transferred_ < bufs_type::first(o->buffers_).size()) - result = done_and_exhausted; - } - else - { - bufs_type bufs(o->buffers_); - result = socket_ops::non_blocking_send(o->socket_, - bufs.buffers(), bufs.count(), o->flags_, - o->ec_, o->bytes_transferred_) ? done : not_done; - - if (result == done) - if ((o->state_ & socket_ops::stream_oriented) != 0) - if (o->bytes_transferred_ < bufs.total_size()) - result = done_and_exhausted; - } - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_send", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - socket_type socket_; - socket_ops::state_type state_; - ConstBufferSequence buffers_; - socket_base::message_flags flags_; -}; - -template -class reactive_socket_send_op : - public reactive_socket_send_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_send_op); - - reactive_socket_send_op(const asio::error_code& success_ec, - socket_type socket, socket_ops::state_type state, - const ConstBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - : reactive_socket_send_op_base(success_ec, socket, - state, buffers, flags, &reactive_socket_send_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_send_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp deleted file mode 100644 index 622b92d2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +++ /dev/null @@ -1,156 +0,0 @@ -// -// detail/reactive_socket_sendto_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_sendto_op_base : public reactor_op -{ -public: - reactive_socket_sendto_op_base(const asio::error_code& success_ec, - socket_type socket, const ConstBufferSequence& buffers, - const Endpoint& endpoint, socket_base::message_flags flags, - func_type complete_func) - : reactor_op(success_ec, - &reactive_socket_sendto_op_base::do_perform, complete_func), - socket_(socket), - buffers_(buffers), - destination_(endpoint), - flags_(flags) - { - } - - static status do_perform(reactor_op* base) - { - reactive_socket_sendto_op_base* o( - static_cast(base)); - - typedef buffer_sequence_adapter bufs_type; - - status result; - if (bufs_type::is_single_buffer) - { - result = socket_ops::non_blocking_sendto1(o->socket_, - bufs_type::first(o->buffers_).data(), - bufs_type::first(o->buffers_).size(), o->flags_, - o->destination_.data(), o->destination_.size(), - o->ec_, o->bytes_transferred_) ? done : not_done; - } - else - { - bufs_type bufs(o->buffers_); - result = socket_ops::non_blocking_sendto(o->socket_, - bufs.buffers(), bufs.count(), o->flags_, - o->destination_.data(), o->destination_.size(), - o->ec_, o->bytes_transferred_) ? done : not_done; - } - - ASIO_HANDLER_REACTOR_OPERATION((*o, "non_blocking_sendto", - o->ec_, o->bytes_transferred_)); - - return result; - } - -private: - socket_type socket_; - ConstBufferSequence buffers_; - Endpoint destination_; - socket_base::message_flags flags_; -}; - -template -class reactive_socket_sendto_op : - public reactive_socket_sendto_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_socket_sendto_op); - - reactive_socket_sendto_op(const asio::error_code& success_ec, - socket_type socket, const ConstBufferSequence& buffers, - const Endpoint& endpoint, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - : reactive_socket_sendto_op_base( - success_ec, socket, buffers, endpoint, flags, - &reactive_socket_sendto_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_socket_sendto_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->bytes_transferred_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service.hpp deleted file mode 100644 index bbb2b843..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service.hpp +++ /dev/null @@ -1,528 +0,0 @@ -// -// detail/reactive_socket_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_IOCP) - -#include "asio/buffer.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/reactive_null_buffers_op.hpp" -#include "asio/detail/reactive_socket_accept_op.hpp" -#include "asio/detail/reactive_socket_connect_op.hpp" -#include "asio/detail/reactive_socket_recvfrom_op.hpp" -#include "asio/detail/reactive_socket_sendto_op.hpp" -#include "asio/detail/reactive_socket_service_base.hpp" -#include "asio/detail/reactor.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_socket_service : - public execution_context_service_base >, - public reactive_socket_service_base -{ -public: - // The protocol type. - typedef Protocol protocol_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The native type of a socket. - typedef socket_type native_handle_type; - - // The implementation type of the socket. - struct implementation_type : - reactive_socket_service_base::base_implementation_type - { - // Default constructor. - implementation_type() - : protocol_(endpoint_type().protocol()) - { - } - - // The protocol associated with the socket. - protocol_type protocol_; - }; - - // Constructor. - reactive_socket_service(execution_context& context) - : execution_context_service_base< - reactive_socket_service >(context), - reactive_socket_service_base(context) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - this->base_shutdown(); - } - - // Move-construct a new socket implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) ASIO_NOEXCEPT - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - } - - // Move-assign from another socket implementation. - void move_assign(implementation_type& impl, - reactive_socket_service_base& other_service, - implementation_type& other_impl) - { - this->base_move_assign(impl, other_service, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - } - - // Move-construct a new socket implementation from another protocol type. - template - void converting_move_construct(implementation_type& impl, - reactive_socket_service&, - typename reactive_socket_service< - Protocol1>::implementation_type& other_impl) - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = protocol_type(other_impl.protocol_); - other_impl.protocol_ = typename Protocol1::endpoint().protocol(); - } - - // Open a new socket implementation. - asio::error_code open(implementation_type& impl, - const protocol_type& protocol, asio::error_code& ec) - { - if (!do_open(impl, protocol.family(), - protocol.type(), protocol.protocol(), ec)) - impl.protocol_ = protocol; - return ec; - } - - // Assign a native socket to a socket implementation. - asio::error_code assign(implementation_type& impl, - const protocol_type& protocol, const native_handle_type& native_socket, - asio::error_code& ec) - { - if (!do_assign(impl, protocol.type(), native_socket, ec)) - impl.protocol_ = protocol; - return ec; - } - - // Get the native socket representation. - native_handle_type native_handle(implementation_type& impl) - { - return impl.socket_; - } - - // Bind the socket to the specified local endpoint. - asio::error_code bind(implementation_type& impl, - const endpoint_type& endpoint, asio::error_code& ec) - { - socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec); - return ec; - } - - // Set a socket option. - template - asio::error_code set_option(implementation_type& impl, - const Option& option, asio::error_code& ec) - { - socket_ops::setsockopt(impl.socket_, impl.state_, - option.level(impl.protocol_), option.name(impl.protocol_), - option.data(impl.protocol_), option.size(impl.protocol_), ec); - return ec; - } - - // Set a socket option. - template - asio::error_code get_option(const implementation_type& impl, - Option& option, asio::error_code& ec) const - { - std::size_t size = option.size(impl.protocol_); - socket_ops::getsockopt(impl.socket_, impl.state_, - option.level(impl.protocol_), option.name(impl.protocol_), - option.data(impl.protocol_), &size, ec); - if (!ec) - option.resize(impl.protocol_, size); - return ec; - } - - // Get the local endpoint. - endpoint_type local_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint; - std::size_t addr_len = endpoint.capacity(); - if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec)) - return endpoint_type(); - endpoint.resize(addr_len); - return endpoint; - } - - // Get the remote endpoint. - endpoint_type remote_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint; - std::size_t addr_len = endpoint.capacity(); - if (socket_ops::getpeername(impl.socket_, - endpoint.data(), &addr_len, false, ec)) - return endpoint_type(); - endpoint.resize(addr_len); - return endpoint; - } - - // Disable sends or receives on the socket. - asio::error_code shutdown(base_implementation_type& impl, - socket_base::shutdown_type what, asio::error_code& ec) - { - socket_ops::shutdown(impl.socket_, what, ec); - return ec; - } - - // Send a datagram to the specified endpoint. Returns the number of bytes - // sent. - template - size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - if (bufs_type::is_single_buffer) - { - return socket_ops::sync_sendto1(impl.socket_, impl.state_, - bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), flags, - destination.data(), destination.size(), ec); - } - else - { - bufs_type bufs(buffers); - return socket_ops::sync_sendto(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, - destination.data(), destination.size(), ec); - } - } - - // Wait until data can be sent without blocking. - size_t send_to(implementation_type& impl, const null_buffers&, - const endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send_to(implementation_type& impl, - const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_sendto_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, - buffers, destination, flags, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_send_to")); - - start_op(impl, reactor::write_op, p.p, is_continuation, true, false); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send_to(implementation_type& impl, const null_buffers&, - const endpoint_type&, socket_base::message_flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_send_to(null_buffers)")); - - start_op(impl, reactor::write_op, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Receive a datagram with the endpoint of the sender. Returns the number of - // bytes received. - template - size_t receive_from(implementation_type& impl, - const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - std::size_t addr_len = sender_endpoint.capacity(); - std::size_t bytes_recvd; - if (bufs_type::is_single_buffer) - { - bytes_recvd = socket_ops::sync_recvfrom1(impl.socket_, - impl.state_, bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), flags, - sender_endpoint.data(), &addr_len, ec); - } - else - { - bufs_type bufs(buffers); - bytes_recvd = socket_ops::sync_recvfrom( - impl.socket_, impl.state_, bufs.buffers(), bufs.count(), - flags, sender_endpoint.data(), &addr_len, ec); - } - - if (!ec) - sender_endpoint.resize(addr_len); - - return bytes_recvd; - } - - // Wait until data can be received without blocking. - size_t receive_from(implementation_type& impl, const null_buffers&, - endpoint_type& sender_endpoint, socket_base::message_flags, - asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - // Reset endpoint since it can be given no sensible value at this time. - sender_endpoint = endpoint_type(); - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received and - // the sender_endpoint object must both be valid for the lifetime of the - // asynchronous operation. - template - void async_receive_from(implementation_type& impl, - const MutableBufferSequence& buffers, endpoint_type& sender_endpoint, - socket_base::message_flags flags, Handler& handler, - const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_recvfrom_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - int protocol = impl.protocol_.type(); - p.p = new (p.v) op(success_ec_, impl.socket_, protocol, - buffers, sender_endpoint, flags, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive_from")); - - start_op(impl, - (flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, true, false); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive_from(implementation_type& impl, const null_buffers&, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive_from(null_buffers)")); - - // Reset endpoint since it can be given no sensible value at this time. - sender_endpoint = endpoint_type(); - - start_op(impl, - (flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Accept a new connection. - template - asio::error_code accept(implementation_type& impl, - Socket& peer, endpoint_type* peer_endpoint, asio::error_code& ec) - { - // We cannot accept a socket that is already open. - if (peer.is_open()) - { - ec = asio::error::already_open; - return ec; - } - - std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0; - socket_holder new_socket(socket_ops::sync_accept(impl.socket_, - impl.state_, peer_endpoint ? peer_endpoint->data() : 0, - peer_endpoint ? &addr_len : 0, ec)); - - // On success, assign new connection to peer socket object. - if (new_socket.get() != invalid_socket) - { - if (peer_endpoint) - peer_endpoint->resize(addr_len); - peer.assign(impl.protocol_, new_socket.get(), ec); - if (!ec) - new_socket.release(); - } - - return ec; - } - - // Start an asynchronous accept. The peer and peer_endpoint objects must be - // valid until the accept's handler is invoked. - template - void async_accept(implementation_type& impl, Socket& peer, - endpoint_type* peer_endpoint, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_accept_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, impl.state_, - peer, impl.protocol_, peer_endpoint, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_accept")); - - start_accept_op(impl, p.p, is_continuation, peer.is_open()); - p.v = p.p = 0; - } - -#if defined(ASIO_HAS_MOVE) - // Start an asynchronous accept. The peer_endpoint object must be valid until - // the accept's handler is invoked. - template - void async_move_accept(implementation_type& impl, - const PeerIoExecutor& peer_io_ex, endpoint_type* peer_endpoint, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_move_accept_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, peer_io_ex, impl.socket_, - impl.state_, impl.protocol_, peer_endpoint, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_accept")); - - start_accept_op(impl, p.p, is_continuation, false); - p.v = p.p = 0; - } -#endif // defined(ASIO_HAS_MOVE) - - // Connect the socket to the specified endpoint. - asio::error_code connect(implementation_type& impl, - const endpoint_type& peer_endpoint, asio::error_code& ec) - { - socket_ops::sync_connect(impl.socket_, - peer_endpoint.data(), peer_endpoint.size(), ec); - return ec; - } - - // Start an asynchronous connect. - template - void async_connect(implementation_type& impl, - const endpoint_type& peer_endpoint, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_connect_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_connect")); - - start_connect_op(impl, p.p, is_continuation, - peer_endpoint.data(), peer_endpoint.size()); - p.v = p.p = 0; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service_base.hpp deleted file mode 100644 index d94b2cc4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +++ /dev/null @@ -1,541 +0,0 @@ -// -// detail/reactive_socket_service_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP -#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_IOCP) \ - && !defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/buffer.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactive_null_buffers_op.hpp" -#include "asio/detail/reactive_socket_recv_op.hpp" -#include "asio/detail/reactive_socket_recvmsg_op.hpp" -#include "asio/detail/reactive_socket_send_op.hpp" -#include "asio/detail/reactive_wait_op.hpp" -#include "asio/detail/reactor.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class reactive_socket_service_base -{ -public: - // The native type of a socket. - typedef socket_type native_handle_type; - - // The implementation type of the socket. - struct base_implementation_type - { - // The native socket representation. - socket_type socket_; - - // The current state of the socket. - socket_ops::state_type state_; - - // Per-descriptor data used by the reactor. - reactor::per_descriptor_data reactor_data_; - }; - - // Constructor. - ASIO_DECL reactive_socket_service_base(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void base_shutdown(); - - // Construct a new socket implementation. - ASIO_DECL void construct(base_implementation_type& impl); - - // Move-construct a new socket implementation. - ASIO_DECL void base_move_construct(base_implementation_type& impl, - base_implementation_type& other_impl) ASIO_NOEXCEPT; - - // Move-assign from another socket implementation. - ASIO_DECL void base_move_assign(base_implementation_type& impl, - reactive_socket_service_base& other_service, - base_implementation_type& other_impl); - - // Destroy a socket implementation. - ASIO_DECL void destroy(base_implementation_type& impl); - - // Determine whether the socket is open. - bool is_open(const base_implementation_type& impl) const - { - return impl.socket_ != invalid_socket; - } - - // Destroy a socket implementation. - ASIO_DECL asio::error_code close( - base_implementation_type& impl, asio::error_code& ec); - - // Release ownership of the socket. - ASIO_DECL socket_type release( - base_implementation_type& impl, asio::error_code& ec); - - // Get the native socket representation. - native_handle_type native_handle(base_implementation_type& impl) - { - return impl.socket_; - } - - // Cancel all operations associated with the socket. - ASIO_DECL asio::error_code cancel( - base_implementation_type& impl, asio::error_code& ec); - - // Determine whether the socket is at the out-of-band data mark. - bool at_mark(const base_implementation_type& impl, - asio::error_code& ec) const - { - return socket_ops::sockatmark(impl.socket_, ec); - } - - // Determine the number of bytes available for reading. - std::size_t available(const base_implementation_type& impl, - asio::error_code& ec) const - { - return socket_ops::available(impl.socket_, ec); - } - - // Place the socket into the state where it will listen for new connections. - asio::error_code listen(base_implementation_type& impl, - int backlog, asio::error_code& ec) - { - socket_ops::listen(impl.socket_, backlog, ec); - return ec; - } - - // Perform an IO control command on the socket. - template - asio::error_code io_control(base_implementation_type& impl, - IO_Control_Command& command, asio::error_code& ec) - { - socket_ops::ioctl(impl.socket_, impl.state_, command.name(), - static_cast(command.data()), ec); - return ec; - } - - // Gets the non-blocking mode of the socket. - bool non_blocking(const base_implementation_type& impl) const - { - return (impl.state_ & socket_ops::user_set_non_blocking) != 0; - } - - // Sets the non-blocking mode of the socket. - asio::error_code non_blocking(base_implementation_type& impl, - bool mode, asio::error_code& ec) - { - socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec); - return ec; - } - - // Gets the non-blocking mode of the native socket implementation. - bool native_non_blocking(const base_implementation_type& impl) const - { - return (impl.state_ & socket_ops::internal_non_blocking) != 0; - } - - // Sets the non-blocking mode of the native socket implementation. - asio::error_code native_non_blocking(base_implementation_type& impl, - bool mode, asio::error_code& ec) - { - socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec); - return ec; - } - - // Wait for the socket to become ready to read, ready to write, or to have - // pending error conditions. - asio::error_code wait(base_implementation_type& impl, - socket_base::wait_type w, asio::error_code& ec) - { - switch (w) - { - case socket_base::wait_read: - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - break; - case socket_base::wait_write: - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - break; - case socket_base::wait_error: - socket_ops::poll_error(impl.socket_, impl.state_, -1, ec); - break; - default: - ec = asio::error::invalid_argument; - break; - } - - return ec; - } - - // Asynchronously wait for the socket to become ready to read, ready to - // write, or to have pending error conditions. - template - void async_wait(base_implementation_type& impl, - socket_base::wait_type w, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_wait_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_wait")); - - int op_type; - switch (w) - { - case socket_base::wait_read: - op_type = reactor::read_op; - break; - case socket_base::wait_write: - op_type = reactor::write_op; - break; - case socket_base::wait_error: - op_type = reactor::except_op; - break; - default: - p.p->ec_ = asio::error::invalid_argument; - reactor_.post_immediate_completion(p.p, is_continuation); - p.v = p.p = 0; - return; - } - - start_op(impl, op_type, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Send the given data to the peer. - template - size_t send(base_implementation_type& impl, - const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - if (bufs_type::is_single_buffer) - { - return socket_ops::sync_send1(impl.socket_, - impl.state_, bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), flags, ec); - } - else - { - bufs_type bufs(buffers); - return socket_ops::sync_send(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec); - } - } - - // Wait until data can be sent without blocking. - size_t send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send(base_implementation_type& impl, - const ConstBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_send_op< - ConstBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, - impl.state_, buffers, flags, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_send")); - - start_op(impl, reactor::write_op, p.p, is_continuation, true, - ((impl.state_ & socket_ops::stream_oriented) - && buffer_sequence_adapter::all_empty(buffers))); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_send(null_buffers)")); - - start_op(impl, reactor::write_op, p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Receive some data from the peer. Returns the number of bytes received. - template - size_t receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - typedef buffer_sequence_adapter bufs_type; - - if (bufs_type::is_single_buffer) - { - return socket_ops::sync_recv1(impl.socket_, - impl.state_, bufs_type::first(buffers).data(), - bufs_type::first(buffers).size(), flags, ec); - } - else - { - bufs_type bufs(buffers); - return socket_ops::sync_recv(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec); - } - } - - // Wait until data can be received without blocking. - size_t receive(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_recv_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, - impl.state_, buffers, flags, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive")); - - start_op(impl, - (flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, - (flags & socket_base::message_out_of_band) == 0, - ((impl.state_ & socket_ops::stream_oriented) - && buffer_sequence_adapter::all_empty(buffers))); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive(null_buffers)")); - - start_op(impl, - (flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, false, false); - p.v = p.p = 0; - } - - // Receive some data with associated flags. Returns the number of bytes - // received. - template - size_t receive_with_flags(base_implementation_type& impl, - const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - return socket_ops::sync_recvmsg(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), in_flags, out_flags, ec); - } - - // Wait until data can be received without blocking. - size_t receive_with_flags(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags, - socket_base::message_flags& out_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - // Clear out_flags, since we cannot give it any other sensible value when - // performing a null_buffers operation. - out_flags = 0; - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive_with_flags(base_implementation_type& impl, - const MutableBufferSequence& buffers, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler& handler, - const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_recvmsg_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, impl.socket_, - buffers, in_flags, out_flags, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive_with_flags")); - - start_op(impl, - (in_flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, - (in_flags & socket_base::message_out_of_band) == 0, false); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive_with_flags(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler& handler, - const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef reactive_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(success_ec_, handler, io_ex); - - ASIO_HANDLER_CREATION((reactor_.context(), *p.p, "socket", - &impl, impl.socket_, "async_receive_with_flags(null_buffers)")); - - // Clear out_flags, since we cannot give it any other sensible value when - // performing a null_buffers operation. - out_flags = 0; - - start_op(impl, - (in_flags & socket_base::message_out_of_band) - ? reactor::except_op : reactor::read_op, - p.p, is_continuation, false, false); - p.v = p.p = 0; - } - -protected: - // Open a new socket implementation. - ASIO_DECL asio::error_code do_open( - base_implementation_type& impl, int af, - int type, int protocol, asio::error_code& ec); - - // Assign a native socket to a socket implementation. - ASIO_DECL asio::error_code do_assign( - base_implementation_type& impl, int type, - const native_handle_type& native_socket, asio::error_code& ec); - - // Start the asynchronous read or write operation. - ASIO_DECL void start_op(base_implementation_type& impl, int op_type, - reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop); - - // Start the asynchronous accept operation. - ASIO_DECL void start_accept_op(base_implementation_type& impl, - reactor_op* op, bool is_continuation, bool peer_is_open); - - // Start the asynchronous connect operation. - ASIO_DECL void start_connect_op(base_implementation_type& impl, - reactor_op* op, bool is_continuation, - const socket_addr_type* addr, size_t addrlen); - - // The selector that performs event demultiplexing for the service. - reactor& reactor_; - - // Cached success value to avoid accessing category singleton. - const asio::error_code success_ec_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/reactive_socket_service_base.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // !defined(ASIO_HAS_IOCP) - // && !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_wait_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_wait_op.hpp deleted file mode 100644 index 19f1659e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactive_wait_op.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// detail/reactive_wait_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTIVE_WAIT_OP_HPP -#define ASIO_DETAIL_REACTIVE_WAIT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactive_wait_op : public reactor_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(reactive_wait_op); - - reactive_wait_op(const asio::error_code& success_ec, - Handler& handler, const IoExecutor& io_ex) - : reactor_op(success_ec, &reactive_wait_op::do_perform, - &reactive_wait_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static status do_perform(reactor_op*) - { - return done; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - reactive_wait_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, o->ec_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTIVE_WAIT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor.hpp deleted file mode 100644 index 79891341..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// detail/reactor.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTOR_HPP -#define ASIO_DETAIL_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/reactor_fwd.hpp" - -#if defined(ASIO_HAS_EPOLL) -# include "asio/detail/epoll_reactor.hpp" -#elif defined(ASIO_HAS_KQUEUE) -# include "asio/detail/kqueue_reactor.hpp" -#elif defined(ASIO_HAS_DEV_POLL) -# include "asio/detail/dev_poll_reactor.hpp" -#elif defined(ASIO_HAS_IOCP) || defined(ASIO_WINDOWS_RUNTIME) -# include "asio/detail/null_reactor.hpp" -#else -# include "asio/detail/select_reactor.hpp" -#endif - -#endif // ASIO_DETAIL_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_fwd.hpp deleted file mode 100644 index a5c94368..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_fwd.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -// detail/reactor_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTOR_FWD_HPP -#define ASIO_DETAIL_REACTOR_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_IOCP) || defined(ASIO_WINDOWS_RUNTIME) -typedef class null_reactor reactor; -#elif defined(ASIO_HAS_IOCP) -typedef class select_reactor reactor; -#elif defined(ASIO_HAS_EPOLL) -typedef class epoll_reactor reactor; -#elif defined(ASIO_HAS_KQUEUE) -typedef class kqueue_reactor reactor; -#elif defined(ASIO_HAS_DEV_POLL) -typedef class dev_poll_reactor reactor; -#else -typedef class select_reactor reactor; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_REACTOR_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op.hpp deleted file mode 100644 index b7f88a4b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op.hpp +++ /dev/null @@ -1,67 +0,0 @@ -// -// detail/reactor_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTOR_OP_HPP -#define ASIO_DETAIL_REACTOR_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class reactor_op - : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - - // The number of bytes transferred, to be passed to the completion handler. - std::size_t bytes_transferred_; - - // Status returned by perform function. May be used to decide whether it is - // worth performing more operations on the descriptor immediately. - enum status { not_done, done, done_and_exhausted }; - - // Perform the operation. Returns true if it is finished. - status perform() - { - return perform_func_(this); - } - -protected: - typedef status (*perform_func_type)(reactor_op*); - - reactor_op(const asio::error_code& success_ec, - perform_func_type perform_func, func_type complete_func) - : operation(complete_func), - ec_(success_ec), - bytes_transferred_(0), - perform_func_(perform_func) - { - } - -private: - perform_func_type perform_func_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTOR_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op_queue.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op_queue.hpp deleted file mode 100644 index 96eca520..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/reactor_op_queue.hpp +++ /dev/null @@ -1,168 +0,0 @@ -// -// detail/reactor_op_queue.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REACTOR_OP_QUEUE_HPP -#define ASIO_DETAIL_REACTOR_OP_QUEUE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/hash_map.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class reactor_op_queue - : private noncopyable -{ -public: - typedef Descriptor key_type; - - struct mapped_type : op_queue - { - mapped_type() {} - mapped_type(const mapped_type&) {} - void operator=(const mapped_type&) {} - }; - - typedef typename hash_map::value_type value_type; - typedef typename hash_map::iterator iterator; - - // Constructor. - reactor_op_queue() - : operations_() - { - } - - // Obtain iterators to all registered descriptors. - iterator begin() { return operations_.begin(); } - iterator end() { return operations_.end(); } - - // Add a new operation to the queue. Returns true if this is the only - // operation for the given descriptor, in which case the reactor's event - // demultiplexing function call may need to be interrupted and restarted. - bool enqueue_operation(Descriptor descriptor, reactor_op* op) - { - std::pair entry = - operations_.insert(value_type(descriptor, mapped_type())); - entry.first->second.push(op); - return entry.second; - } - - // Cancel all operations associated with the descriptor identified by the - // supplied iterator. Any operations pending for the descriptor will be - // cancelled. Returns true if any operations were cancelled, in which case - // the reactor's event demultiplexing function may need to be interrupted and - // restarted. - bool cancel_operations(iterator i, op_queue& ops, - const asio::error_code& ec = - asio::error::operation_aborted) - { - if (i != operations_.end()) - { - while (reactor_op* op = i->second.front()) - { - op->ec_ = ec; - i->second.pop(); - ops.push(op); - } - operations_.erase(i); - return true; - } - - return false; - } - - // Cancel all operations associated with the descriptor. Any operations - // pending for the descriptor will be cancelled. Returns true if any - // operations were cancelled, in which case the reactor's event - // demultiplexing function may need to be interrupted and restarted. - bool cancel_operations(Descriptor descriptor, op_queue& ops, - const asio::error_code& ec = - asio::error::operation_aborted) - { - return this->cancel_operations(operations_.find(descriptor), ops, ec); - } - - // Whether there are no operations in the queue. - bool empty() const - { - return operations_.empty(); - } - - // Determine whether there are any operations associated with the descriptor. - bool has_operation(Descriptor descriptor) const - { - return operations_.find(descriptor) != operations_.end(); - } - - // Perform the operations corresponding to the descriptor identified by the - // supplied iterator. Returns true if there are still unfinished operations - // queued for the descriptor. - bool perform_operations(iterator i, op_queue& ops) - { - if (i != operations_.end()) - { - while (reactor_op* op = i->second.front()) - { - if (op->perform()) - { - i->second.pop(); - ops.push(op); - } - else - { - return true; - } - } - operations_.erase(i); - } - return false; - } - - // Perform the operations corresponding to the descriptor. Returns true if - // there are still unfinished operations queued for the descriptor. - bool perform_operations(Descriptor descriptor, op_queue& ops) - { - return this->perform_operations(operations_.find(descriptor), ops); - } - - // Get all operations owned by the queue. - void get_all_operations(op_queue& ops) - { - iterator i = operations_.begin(); - while (i != operations_.end()) - { - iterator op_iter = i++; - ops.push(op_iter->second); - operations_.erase(op_iter); - } - } - -private: - // The operations that are currently executing asynchronously. - hash_map operations_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_REACTOR_OP_QUEUE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/recycling_allocator.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/recycling_allocator.hpp deleted file mode 100644 index 6c905cdf..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/recycling_allocator.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// detail/recycling_allocator.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RECYCLING_ALLOCATOR_HPP -#define ASIO_DETAIL_RECYCLING_ALLOCATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/thread_context.hpp" -#include "asio/detail/thread_info_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class recycling_allocator -{ -public: - typedef T value_type; - - template - struct rebind - { - typedef recycling_allocator other; - }; - - recycling_allocator() - { - } - - template - recycling_allocator(const recycling_allocator&) - { - } - - T* allocate(std::size_t n) - { - typedef thread_context::thread_call_stack call_stack; - void* p = thread_info_base::allocate(Purpose(), - call_stack::top(), sizeof(T) * n); - return static_cast(p); - } - - void deallocate(T* p, std::size_t n) - { - typedef thread_context::thread_call_stack call_stack; - thread_info_base::deallocate(Purpose(), - call_stack::top(), p, sizeof(T) * n); - } -}; - -template -class recycling_allocator -{ -public: - typedef void value_type; - - template - struct rebind - { - typedef recycling_allocator other; - }; - - recycling_allocator() - { - } - - template - recycling_allocator(const recycling_allocator&) - { - } -}; - -template -struct get_recycling_allocator -{ - typedef Allocator type; - static type get(const Allocator& a) { return a; } -}; - -template -struct get_recycling_allocator, Purpose> -{ - typedef recycling_allocator type; - static type get(const std::allocator&) { return type(); } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_RECYCLING_ALLOCATOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/regex_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/regex_fwd.hpp deleted file mode 100644 index 6d7b4049..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/regex_fwd.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// detail/regex_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_REGEX_FWD_HPP -#define ASIO_DETAIL_REGEX_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#if defined(ASIO_HAS_BOOST_REGEX) - -#include -#include - -namespace boost { - -template -struct sub_match; - -template -class match_results; - -} // namespace boost - -#endif // defined(ASIO_HAS_BOOST_REGEX) - -#endif // ASIO_DETAIL_REGEX_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_endpoint_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_endpoint_op.hpp deleted file mode 100644 index a9fe0535..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +++ /dev/null @@ -1,140 +0,0 @@ -// -// detail/resolve_endpoint_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP -#define ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/resolve_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" -#include "asio/ip/basic_resolver_results.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class resolve_endpoint_op : public resolve_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(resolve_endpoint_op); - - typedef typename Protocol::endpoint endpoint_type; - typedef asio::ip::basic_resolver_results results_type; - -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - - resolve_endpoint_op(socket_ops::weak_cancel_token_type cancel_token, - const endpoint_type& endpoint, scheduler_impl& sched, - Handler& handler, const IoExecutor& io_ex) - : resolve_op(&resolve_endpoint_op::do_complete), - cancel_token_(cancel_token), - endpoint_(endpoint), - scheduler_(sched), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the operation object. - resolve_endpoint_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - if (owner && owner != &o->scheduler_) - { - // The operation is being run on the worker io_context. Time to perform - // the resolver operation. - - // Perform the blocking endpoint resolution operation. - char host_name[NI_MAXHOST]; - char service_name[NI_MAXSERV]; - socket_ops::background_getnameinfo(o->cancel_token_, o->endpoint_.data(), - o->endpoint_.size(), host_name, NI_MAXHOST, service_name, NI_MAXSERV, - o->endpoint_.protocol().type(), o->ec_); - o->results_ = results_type::create(o->endpoint_, host_name, service_name); - - // Pass operation back to main io_context for completion. - o->scheduler_.post_deferred_completion(o); - p.v = p.p = 0; - } - else - { - // The operation has been returned to the main io_context. The completion - // handler is ready to be delivered. - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated - // before the upcall is made. Even if we're not about to make an upcall, - // a sub-object of the handler may be the true owner of the memory - // associated with the handler. Consequently, a local copy of the handler - // is required to ensure that any owning sub-object remains valid until - // after we have deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->results_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "...")); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - endpoint_type endpoint_; - scheduler_impl& scheduler_; - Handler handler_; - handler_work work_; - results_type results_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_op.hpp deleted file mode 100644 index a4c6409e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_op.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// detail/resolve_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RESOLVE_OP_HPP -#define ASIO_DETAIL_RESOLVE_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/error.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class resolve_op : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - -protected: - resolve_op(func_type complete_func) - : operation(complete_func) - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_RESOLVE_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_query_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_query_op.hpp deleted file mode 100644 index 9b99a681..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolve_query_op.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// -// detail/resolve_query_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RESOLVE_QUERY_OP_HPP -#define ASIO_DETAIL_RESOLVE_QUERY_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/resolve_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" -#include "asio/ip/basic_resolver_query.hpp" -#include "asio/ip/basic_resolver_results.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class resolve_query_op : public resolve_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(resolve_query_op); - - typedef asio::ip::basic_resolver_query query_type; - typedef asio::ip::basic_resolver_results results_type; - -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - - resolve_query_op(socket_ops::weak_cancel_token_type cancel_token, - const query_type& qry, scheduler_impl& sched, - Handler& handler, const IoExecutor& io_ex) - : resolve_op(&resolve_query_op::do_complete), - cancel_token_(cancel_token), - query_(qry), - scheduler_(sched), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex), - addrinfo_(0) - { - } - - ~resolve_query_op() - { - if (addrinfo_) - socket_ops::freeaddrinfo(addrinfo_); - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the operation object. - resolve_query_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - if (owner && owner != &o->scheduler_) - { - // The operation is being run on the worker io_context. Time to perform - // the resolver operation. - - // Perform the blocking host resolution operation. - socket_ops::background_getaddrinfo(o->cancel_token_, - o->query_.host_name().c_str(), o->query_.service_name().c_str(), - o->query_.hints(), &o->addrinfo_, o->ec_); - - // Pass operation back to main io_context for completion. - o->scheduler_.post_deferred_completion(o); - p.v = p.p = 0; - } - else - { - // The operation has been returned to the main io_context. The completion - // handler is ready to be delivered. - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated - // before the upcall is made. Even if we're not about to make an upcall, - // a sub-object of the handler may be the true owner of the memory - // associated with the handler. Consequently, a local copy of the handler - // is required to ensure that any owning sub-object remains valid until - // after we have deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, results_type()); - p.h = asio::detail::addressof(handler.handler_); - if (o->addrinfo_) - { - handler.arg2_ = results_type::create(o->addrinfo_, - o->query_.host_name(), o->query_.service_name()); - } - p.reset(); - - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "...")); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - query_type query_; - scheduler_impl& scheduler_; - Handler handler_; - handler_work work_; - asio::detail::addrinfo_type* addrinfo_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_RESOLVE_QUERY_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service.hpp deleted file mode 100644 index eae25efc..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// -// detail/resolver_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RESOLVER_SERVICE_HPP -#define ASIO_DETAIL_RESOLVER_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/ip/basic_resolver_query.hpp" -#include "asio/ip/basic_resolver_results.hpp" -#include "asio/detail/concurrency_hint.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/resolve_endpoint_op.hpp" -#include "asio/detail/resolve_query_op.hpp" -#include "asio/detail/resolver_service_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class resolver_service : - public execution_context_service_base >, - public resolver_service_base -{ -public: - // The implementation type of the resolver. A cancellation token is used to - // indicate to the background thread that the operation has been cancelled. - typedef socket_ops::shared_cancel_token_type implementation_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The query type. - typedef asio::ip::basic_resolver_query query_type; - - // The results type. - typedef asio::ip::basic_resolver_results results_type; - - // Constructor. - resolver_service(execution_context& context) - : execution_context_service_base >(context), - resolver_service_base(context) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - this->base_shutdown(); - } - - // Perform any fork-related housekeeping. - void notify_fork(execution_context::fork_event fork_ev) - { - this->base_notify_fork(fork_ev); - } - - // Resolve a query to a list of entries. - results_type resolve(implementation_type&, const query_type& qry, - asio::error_code& ec) - { - asio::detail::addrinfo_type* address_info = 0; - - socket_ops::getaddrinfo(qry.host_name().c_str(), - qry.service_name().c_str(), qry.hints(), &address_info, ec); - auto_addrinfo auto_address_info(address_info); - - return ec ? results_type() : results_type::create( - address_info, qry.host_name(), qry.service_name()); - } - - // Asynchronously resolve a query to a list of entries. - template - void async_resolve(implementation_type& impl, const query_type& qry, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef resolve_query_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl, qry, scheduler_, handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "resolver", &impl, 0, "async_resolve")); - - start_resolve_op(p.p); - p.v = p.p = 0; - } - - // Resolve an endpoint to a list of entries. - results_type resolve(implementation_type&, - const endpoint_type& endpoint, asio::error_code& ec) - { - char host_name[NI_MAXHOST]; - char service_name[NI_MAXSERV]; - socket_ops::sync_getnameinfo(endpoint.data(), endpoint.size(), - host_name, NI_MAXHOST, service_name, NI_MAXSERV, - endpoint.protocol().type(), ec); - - return ec ? results_type() : results_type::create( - endpoint, host_name, service_name); - } - - // Asynchronously resolve an endpoint to a list of entries. - template - void async_resolve(implementation_type& impl, const endpoint_type& endpoint, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef resolve_endpoint_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl, endpoint, scheduler_, handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "resolver", &impl, 0, "async_resolve")); - - start_resolve_op(p.p); - p.v = p.p = 0; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_RESOLVER_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service_base.hpp deleted file mode 100644 index 03bc6b7a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/resolver_service_base.hpp +++ /dev/null @@ -1,158 +0,0 @@ -// -// detail/resolver_service_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP -#define ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/resolve_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/thread.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class resolver_service_base -{ -public: - // The implementation type of the resolver. A cancellation token is used to - // indicate to the background thread that the operation has been cancelled. - typedef socket_ops::shared_cancel_token_type implementation_type; - - // Constructor. - ASIO_DECL resolver_service_base(execution_context& context); - - // Destructor. - ASIO_DECL ~resolver_service_base(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void base_shutdown(); - - // Perform any fork-related housekeeping. - ASIO_DECL void base_notify_fork( - execution_context::fork_event fork_ev); - - // Construct a new resolver implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Destroy a resolver implementation. - ASIO_DECL void destroy(implementation_type&); - - // Move-construct a new resolver implementation. - ASIO_DECL void move_construct(implementation_type& impl, - implementation_type& other_impl); - - // Move-assign from another resolver implementation. - ASIO_DECL void move_assign(implementation_type& impl, - resolver_service_base& other_service, - implementation_type& other_impl); - - // Move-construct a new timer implementation. - void converting_move_construct(implementation_type& impl, - resolver_service_base&, implementation_type& other_impl) - { - move_construct(impl, other_impl); - } - - // Move-assign from another timer implementation. - void converting_move_assign(implementation_type& impl, - resolver_service_base& other_service, - implementation_type& other_impl) - { - move_assign(impl, other_service, other_impl); - } - - // Cancel pending asynchronous operations. - ASIO_DECL void cancel(implementation_type& impl); - -protected: - // Helper function to start an asynchronous resolve operation. - ASIO_DECL void start_resolve_op(resolve_op* op); - -#if !defined(ASIO_WINDOWS_RUNTIME) - // Helper class to perform exception-safe cleanup of addrinfo objects. - class auto_addrinfo - : private asio::detail::noncopyable - { - public: - explicit auto_addrinfo(asio::detail::addrinfo_type* ai) - : ai_(ai) - { - } - - ~auto_addrinfo() - { - if (ai_) - socket_ops::freeaddrinfo(ai_); - } - - operator asio::detail::addrinfo_type*() - { - return ai_; - } - - private: - asio::detail::addrinfo_type* ai_; - }; -#endif // !defined(ASIO_WINDOWS_RUNTIME) - - // Helper class to run the work scheduler in a thread. - class work_scheduler_runner; - - // Start the work scheduler if it's not already running. - ASIO_DECL void start_work_thread(); - - // The scheduler implementation used to post completions. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - -private: - // Mutex to protect access to internal data. - asio::detail::mutex mutex_; - - // Private scheduler used for performing asynchronous host resolution. - asio::detail::scoped_ptr work_scheduler_; - - // Thread used for running the work io_context's run loop. - asio::detail::scoped_ptr work_thread_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/resolver_service_base.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler.hpp deleted file mode 100644 index f367c8f6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler.hpp +++ /dev/null @@ -1,232 +0,0 @@ -// -// detail/scheduler.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SCHEDULER_HPP -#define ASIO_DETAIL_SCHEDULER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/error_code.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/atomic_count.hpp" -#include "asio/detail/conditionally_enabled_event.hpp" -#include "asio/detail/conditionally_enabled_mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_fwd.hpp" -#include "asio/detail/scheduler_operation.hpp" -#include "asio/detail/thread.hpp" -#include "asio/detail/thread_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct scheduler_thread_info; - -class scheduler - : public execution_context_service_base, - public thread_context -{ -public: - typedef scheduler_operation operation; - - // Constructor. Specifies the number of concurrent threads that are likely to - // run the scheduler. If set to 1 certain optimisation are performed. - ASIO_DECL scheduler(asio::execution_context& ctx, - int concurrency_hint = 0, bool own_thread = true); - - // Destructor. - ASIO_DECL ~scheduler(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Initialise the task, if required. - ASIO_DECL void init_task(); - - // Run the event loop until interrupted or no more work. - ASIO_DECL std::size_t run(asio::error_code& ec); - - // Run until interrupted or one operation is performed. - ASIO_DECL std::size_t run_one(asio::error_code& ec); - - // Run until timeout, interrupted, or one operation is performed. - ASIO_DECL std::size_t wait_one( - long usec, asio::error_code& ec); - - // Poll for operations without blocking. - ASIO_DECL std::size_t poll(asio::error_code& ec); - - // Poll for one operation without blocking. - ASIO_DECL std::size_t poll_one(asio::error_code& ec); - - // Interrupt the event processing loop. - ASIO_DECL void stop(); - - // Determine whether the scheduler is stopped. - ASIO_DECL bool stopped() const; - - // Restart in preparation for a subsequent run invocation. - ASIO_DECL void restart(); - - // Notify that some work has started. - void work_started() - { - ++outstanding_work_; - } - - // Used to compensate for a forthcoming work_finished call. Must be called - // from within a scheduler-owned thread. - ASIO_DECL void compensating_work_started(); - - // Notify that some work has finished. - void work_finished() - { - if (--outstanding_work_ == 0) - stop(); - } - - // Return whether a handler can be dispatched immediately. - bool can_dispatch() - { - return thread_call_stack::contains(this) != 0; - } - - /// Capture the current exception so it can be rethrown from a run function. - ASIO_DECL void capture_current_exception(); - - // Request invocation of the given operation and return immediately. Assumes - // that work_started() has not yet been called for the operation. - ASIO_DECL void post_immediate_completion( - operation* op, bool is_continuation); - - // Request invocation of the given operations and return immediately. Assumes - // that work_started() has not yet been called for the operations. - ASIO_DECL void post_immediate_completions(std::size_t n, - op_queue& ops, bool is_continuation); - - // Request invocation of the given operation and return immediately. Assumes - // that work_started() was previously called for the operation. - ASIO_DECL void post_deferred_completion(operation* op); - - // Request invocation of the given operations and return immediately. Assumes - // that work_started() was previously called for each operation. - ASIO_DECL void post_deferred_completions(op_queue& ops); - - // Enqueue the given operation following a failed attempt to dispatch the - // operation for immediate invocation. - ASIO_DECL void do_dispatch(operation* op); - - // Process unfinished operations as part of a shutdownoperation. Assumes that - // work_started() was previously called for the operations. - ASIO_DECL void abandon_operations(op_queue& ops); - - // Get the concurrency hint that was used to initialise the scheduler. - int concurrency_hint() const - { - return concurrency_hint_; - } - -private: - // The mutex type used by this scheduler. - typedef conditionally_enabled_mutex mutex; - - // The event type used by this scheduler. - typedef conditionally_enabled_event event; - - // Structure containing thread-specific data. - typedef scheduler_thread_info thread_info; - - // Run at most one operation. May block. - ASIO_DECL std::size_t do_run_one(mutex::scoped_lock& lock, - thread_info& this_thread, const asio::error_code& ec); - - // Run at most one operation with a timeout. May block. - ASIO_DECL std::size_t do_wait_one(mutex::scoped_lock& lock, - thread_info& this_thread, long usec, const asio::error_code& ec); - - // Poll for at most one operation. - ASIO_DECL std::size_t do_poll_one(mutex::scoped_lock& lock, - thread_info& this_thread, const asio::error_code& ec); - - // Stop the task and all idle threads. - ASIO_DECL void stop_all_threads(mutex::scoped_lock& lock); - - // Wake a single idle thread, or the task, and always unlock the mutex. - ASIO_DECL void wake_one_thread_and_unlock( - mutex::scoped_lock& lock); - - // Helper class to run the scheduler in its own thread. - class thread_function; - friend class thread_function; - - // Helper class to perform task-related operations on block exit. - struct task_cleanup; - friend struct task_cleanup; - - // Helper class to call work-related operations on block exit. - struct work_cleanup; - friend struct work_cleanup; - - // Whether to optimise for single-threaded use cases. - const bool one_thread_; - - // Mutex to protect access to internal data. - mutable mutex mutex_; - - // Event to wake up blocked threads. - event wakeup_event_; - - // The task to be run by this service. - reactor* task_; - - // Operation object to represent the position of the task in the queue. - struct task_operation : operation - { - task_operation() : operation(0) {} - } task_operation_; - - // Whether the task has been interrupted. - bool task_interrupted_; - - // The count of unfinished work. - atomic_count outstanding_work_; - - // The queue of handlers that are ready to be delivered. - op_queue op_queue_; - - // Flag to indicate that the dispatcher has been stopped. - bool stopped_; - - // Flag to indicate that the dispatcher has been shut down. - bool shutdown_; - - // The concurrency hint used to initialise the scheduler. - const int concurrency_hint_; - - // The thread that is running the scheduler. - asio::detail::thread* thread_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/scheduler.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_SCHEDULER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_operation.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_operation.hpp deleted file mode 100644 index c8732988..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_operation.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// -// detail/scheduler_operation.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SCHEDULER_OPERATION_HPP -#define ASIO_DETAIL_SCHEDULER_OPERATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/error_code.hpp" -#include "asio/detail/handler_tracking.hpp" -#include "asio/detail/op_queue.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class scheduler; - -// Base class for all operations. A function pointer is used instead of virtual -// functions to avoid the associated overhead. -class scheduler_operation ASIO_INHERIT_TRACKED_HANDLER -{ -public: - typedef scheduler_operation operation_type; - - void complete(void* owner, const asio::error_code& ec, - std::size_t bytes_transferred) - { - func_(owner, this, ec, bytes_transferred); - } - - void destroy() - { - func_(0, this, asio::error_code(), 0); - } - -protected: - typedef void (*func_type)(void*, - scheduler_operation*, - const asio::error_code&, std::size_t); - - scheduler_operation(func_type func) - : next_(0), - func_(func), - task_result_(0) - { - } - - // Prevents deletion through this type. - ~scheduler_operation() - { - } - -private: - friend class op_queue_access; - scheduler_operation* next_; - func_type func_; -protected: - friend class scheduler; - unsigned int task_result_; // Passed into bytes transferred. -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SCHEDULER_OPERATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_thread_info.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_thread_info.hpp deleted file mode 100644 index d69ab9ed..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scheduler_thread_info.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -// detail/scheduler_thread_info.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SCHEDULER_THREAD_INFO_HPP -#define ASIO_DETAIL_SCHEDULER_THREAD_INFO_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/op_queue.hpp" -#include "asio/detail/thread_info_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class scheduler; -class scheduler_operation; - -struct scheduler_thread_info : public thread_info_base -{ - op_queue private_op_queue; - long private_outstanding_work; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SCHEDULER_THREAD_INFO_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_lock.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_lock.hpp deleted file mode 100644 index c0d4f9f8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_lock.hpp +++ /dev/null @@ -1,101 +0,0 @@ -// -// detail/scoped_lock.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SCOPED_LOCK_HPP -#define ASIO_DETAIL_SCOPED_LOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper class to lock and unlock a mutex automatically. -template -class scoped_lock - : private noncopyable -{ -public: - // Tag type used to distinguish constructors. - enum adopt_lock_t { adopt_lock }; - - // Constructor adopts a lock that is already held. - scoped_lock(Mutex& m, adopt_lock_t) - : mutex_(m), - locked_(true) - { - } - - // Constructor acquires the lock. - explicit scoped_lock(Mutex& m) - : mutex_(m) - { - mutex_.lock(); - locked_ = true; - } - - // Destructor releases the lock. - ~scoped_lock() - { - if (locked_) - mutex_.unlock(); - } - - // Explicitly acquire the lock. - void lock() - { - if (!locked_) - { - mutex_.lock(); - locked_ = true; - } - } - - // Explicitly release the lock. - void unlock() - { - if (locked_) - { - mutex_.unlock(); - locked_ = false; - } - } - - // Test whether the lock is held. - bool locked() const - { - return locked_; - } - - // Get the underlying mutex. - Mutex& mutex() - { - return mutex_; - } - -private: - // The underlying mutex. - Mutex& mutex_; - - // Whether the mutex is currently locked or unlocked. - bool locked_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SCOPED_LOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_ptr.hpp deleted file mode 100644 index f1e81b66..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/scoped_ptr.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// -// detail/scoped_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SCOPED_PTR_HPP -#define ASIO_DETAIL_SCOPED_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class scoped_ptr -{ -public: - // Constructor. - explicit scoped_ptr(T* p = 0) - : p_(p) - { - } - - // Destructor. - ~scoped_ptr() - { - delete p_; - } - - // Access. - T* get() - { - return p_; - } - - // Access. - T* operator->() - { - return p_; - } - - // Dereference. - T& operator*() - { - return *p_; - } - - // Reset pointer. - void reset(T* p = 0) - { - delete p_; - p_ = p; - } - - // Release ownership of the pointer. - T* release() - { - T* tmp = p_; - p_ = 0; - return tmp; - } - -private: - // Disallow copying and assignment. - scoped_ptr(const scoped_ptr&); - scoped_ptr& operator=(const scoped_ptr&); - - T* p_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SCOPED_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_interrupter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_interrupter.hpp deleted file mode 100644 index 5976cc6f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_interrupter.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// -// detail/select_interrupter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SELECT_INTERRUPTER_HPP -#define ASIO_DETAIL_SELECT_INTERRUPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__) -# include "asio/detail/socket_select_interrupter.hpp" -#elif defined(ASIO_HAS_EVENTFD) -# include "asio/detail/eventfd_select_interrupter.hpp" -#else -# include "asio/detail/pipe_select_interrupter.hpp" -#endif - -namespace asio { -namespace detail { - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__) -typedef socket_select_interrupter select_interrupter; -#elif defined(ASIO_HAS_EVENTFD) -typedef eventfd_select_interrupter select_interrupter; -#else -typedef pipe_select_interrupter select_interrupter; -#endif - -} // namespace detail -} // namespace asio - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_SELECT_INTERRUPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_reactor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_reactor.hpp deleted file mode 100644 index 01eb716b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/select_reactor.hpp +++ /dev/null @@ -1,238 +0,0 @@ -// -// detail/select_reactor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SELECT_REACTOR_HPP -#define ASIO_DETAIL_SELECT_REACTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) \ - || (!defined(ASIO_HAS_DEV_POLL) \ - && !defined(ASIO_HAS_EPOLL) \ - && !defined(ASIO_HAS_KQUEUE) \ - && !defined(ASIO_WINDOWS_RUNTIME)) - -#include -#include "asio/detail/fd_set_adapter.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/reactor_op_queue.hpp" -#include "asio/detail/select_interrupter.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/execution_context.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/thread.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class select_reactor - : public execution_context_service_base -{ -public: -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - enum op_types { read_op = 0, write_op = 1, except_op = 2, - max_select_ops = 3, connect_op = 3, max_ops = 4 }; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - enum op_types { read_op = 0, write_op = 1, except_op = 2, - max_select_ops = 3, connect_op = 1, max_ops = 3 }; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - - // Per-descriptor data. - struct per_descriptor_data - { - }; - - // Constructor. - ASIO_DECL select_reactor(asio::execution_context& ctx); - - // Destructor. - ASIO_DECL ~select_reactor(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Recreate internal descriptors following a fork. - ASIO_DECL void notify_fork( - asio::execution_context::fork_event fork_ev); - - // Initialise the task, but only if the reactor is not in its own thread. - ASIO_DECL void init_task(); - - // Register a socket with the reactor. Returns 0 on success, system error - // code on failure. - ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&); - - // Register a descriptor with an associated single operation. Returns 0 on - // success, system error code on failure. - ASIO_DECL int register_internal_descriptor( - int op_type, socket_type descriptor, - per_descriptor_data& descriptor_data, reactor_op* op); - - // Post a reactor operation for immediate completion. - void post_immediate_completion(reactor_op* op, bool is_continuation) - { - scheduler_.post_immediate_completion(op, is_continuation); - } - - // Start a new operation. The reactor operation will be performed when the - // given descriptor is flagged as ready, or an error has occurred. - ASIO_DECL void start_op(int op_type, socket_type descriptor, - per_descriptor_data&, reactor_op* op, bool is_continuation, bool); - - // Cancel all operations associated with the given descriptor. The - // handlers associated with the descriptor will be invoked with the - // operation_aborted error. - ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&); - - // Cancel any operations that are running against the descriptor and remove - // its registration from the reactor. The reactor resources associated with - // the descriptor must be released by calling cleanup_descriptor_data. - ASIO_DECL void deregister_descriptor(socket_type descriptor, - per_descriptor_data&, bool closing); - - // Remove the descriptor's registration from the reactor. The reactor - // resources associated with the descriptor must be released by calling - // cleanup_descriptor_data. - ASIO_DECL void deregister_internal_descriptor( - socket_type descriptor, per_descriptor_data&); - - // Perform any post-deregistration cleanup tasks associated with the - // descriptor data. - ASIO_DECL void cleanup_descriptor_data(per_descriptor_data&); - - // Move descriptor registration from one descriptor_data object to another. - ASIO_DECL void move_descriptor(socket_type descriptor, - per_descriptor_data& target_descriptor_data, - per_descriptor_data& source_descriptor_data); - - // Add a new timer queue to the reactor. - template - void add_timer_queue(timer_queue& queue); - - // Remove a timer queue from the reactor. - template - void remove_timer_queue(timer_queue& queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer operations associated with the given token. Returns the - // number of operations that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& target, - typename timer_queue::per_timer_data& source); - - // Run select once until interrupted or events are ready to be dispatched. - ASIO_DECL void run(long usec, op_queue& ops); - - // Interrupt the select loop. - ASIO_DECL void interrupt(); - -private: -#if defined(ASIO_HAS_IOCP) - // Run the select loop in the thread. - ASIO_DECL void run_thread(); -#endif // defined(ASIO_HAS_IOCP) - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // Get the timeout value for the select call. - ASIO_DECL timeval* get_timeout(long usec, timeval& tv); - - // Cancel all operations associated with the given descriptor. This function - // does not acquire the select_reactor's mutex. - ASIO_DECL void cancel_ops_unlocked(socket_type descriptor, - const asio::error_code& ec); - - // The scheduler implementation used to post completions. -# if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_type; -# else // defined(ASIO_HAS_IOCP) - typedef class scheduler scheduler_type; -# endif // defined(ASIO_HAS_IOCP) - scheduler_type& scheduler_; - - // Mutex to protect access to internal data. - asio::detail::mutex mutex_; - - // The interrupter is used to break a blocking select call. - select_interrupter interrupter_; - - // The queues of read, write and except operations. - reactor_op_queue op_queue_[max_ops]; - - // The file descriptor sets to be passed to the select system call. - fd_set_adapter fd_sets_[max_select_ops]; - - // The timer queues. - timer_queue_set timer_queues_; - -#if defined(ASIO_HAS_IOCP) - // Helper class to run the reactor loop in a thread. - class thread_function; - friend class thread_function; - - // Does the reactor loop thread need to stop. - bool stop_thread_; - - // The thread that is running the reactor loop. - asio::detail::thread* thread_; -#endif // defined(ASIO_HAS_IOCP) - - // Whether the service has been shut down. - bool shutdown_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/select_reactor.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/select_reactor.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_IOCP) - // || (!defined(ASIO_HAS_DEV_POLL) - // && !defined(ASIO_HAS_EPOLL) - // && !defined(ASIO_HAS_KQUEUE) - // && !defined(ASIO_WINDOWS_RUNTIME)) - -#endif // ASIO_DETAIL_SELECT_REACTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/service_registry.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/service_registry.hpp deleted file mode 100644 index ba2d3efb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/service_registry.hpp +++ /dev/null @@ -1,164 +0,0 @@ -// -// detail/service_registry.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SERVICE_REGISTRY_HPP -#define ASIO_DETAIL_SERVICE_REGISTRY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/mutex.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -class io_context; - -namespace detail { - -template -class typeid_wrapper {}; - -class service_registry - : private noncopyable -{ -public: - // Constructor. - ASIO_DECL service_registry(execution_context& owner); - - // Destructor. - ASIO_DECL ~service_registry(); - - // Shutdown all services. - ASIO_DECL void shutdown_services(); - - // Destroy all services. - ASIO_DECL void destroy_services(); - - // Notify all services of a fork event. - ASIO_DECL void notify_fork(execution_context::fork_event fork_ev); - - // Get the service object corresponding to the specified service type. Will - // create a new service object automatically if no such object already - // exists. Ownership of the service object is not transferred to the caller. - template - Service& use_service(); - - // Get the service object corresponding to the specified service type. Will - // create a new service object automatically if no such object already - // exists. Ownership of the service object is not transferred to the caller. - // This overload is used for backwards compatibility with services that - // inherit from io_context::service. - template - Service& use_service(io_context& owner); - - // Add a service object. Throws on error, in which case ownership of the - // object is retained by the caller. - template - void add_service(Service* new_service); - - // Check whether a service object of the specified type already exists. - template - bool has_service() const; - -private: - // Initalise a service's key when the key_type typedef is not available. - template - static void init_key(execution_context::service::key& key, ...); - -#if !defined(ASIO_NO_TYPEID) - // Initalise a service's key when the key_type typedef is available. - template - static void init_key(execution_context::service::key& key, - typename enable_if< - is_base_of::value>::type*); -#endif // !defined(ASIO_NO_TYPEID) - - // Initialise a service's key based on its id. - ASIO_DECL static void init_key_from_id( - execution_context::service::key& key, - const execution_context::id& id); - -#if !defined(ASIO_NO_TYPEID) - // Initialise a service's key based on its id. - template - static void init_key_from_id(execution_context::service::key& key, - const service_id& /*id*/); -#endif // !defined(ASIO_NO_TYPEID) - - // Check if a service matches the given id. - ASIO_DECL static bool keys_match( - const execution_context::service::key& key1, - const execution_context::service::key& key2); - - // The type of a factory function used for creating a service instance. - typedef execution_context::service*(*factory_type)(void*); - - // Factory function for creating a service instance. - template - static execution_context::service* create(void* owner); - - // Destroy a service instance. - ASIO_DECL static void destroy(execution_context::service* service); - - // Helper class to manage service pointers. - struct auto_service_ptr; - friend struct auto_service_ptr; - struct auto_service_ptr - { - execution_context::service* ptr_; - ~auto_service_ptr() { destroy(ptr_); } - }; - - // Get the service object corresponding to the specified service key. Will - // create a new service object automatically if no such object already - // exists. Ownership of the service object is not transferred to the caller. - ASIO_DECL execution_context::service* do_use_service( - const execution_context::service::key& key, - factory_type factory, void* owner); - - // Add a service object. Throws on error, in which case ownership of the - // object is retained by the caller. - ASIO_DECL void do_add_service( - const execution_context::service::key& key, - execution_context::service* new_service); - - // Check whether a service object with the specified key already exists. - ASIO_DECL bool do_has_service( - const execution_context::service::key& key) const; - - // Mutex to protect access to internal data. - mutable asio::detail::mutex mutex_; - - // The owner of this service registry and the services it contains. - execution_context& owner_; - - // The first service in the list of contained services. - execution_context::service* first_service_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/service_registry.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/service_registry.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_SERVICE_REGISTRY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_blocker.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_blocker.hpp deleted file mode 100644 index aefba118..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_blocker.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// -// detail/signal_blocker.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SIGNAL_BLOCKER_HPP -#define ASIO_DETAIL_SIGNAL_BLOCKER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) || defined(ASIO_WINDOWS) \ - || defined(ASIO_WINDOWS_RUNTIME) \ - || defined(__CYGWIN__) || defined(__SYMBIAN32__) -# include "asio/detail/null_signal_blocker.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_signal_blocker.hpp" -#else -# error Only Windows and POSIX are supported! -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) || defined(ASIO_WINDOWS) \ - || defined(ASIO_WINDOWS_RUNTIME) \ - || defined(__CYGWIN__) || defined(__SYMBIAN32__) -typedef null_signal_blocker signal_blocker; -#elif defined(ASIO_HAS_PTHREADS) -typedef posix_signal_blocker signal_blocker; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_SIGNAL_BLOCKER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_handler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_handler.hpp deleted file mode 100644 index 23ac7b34..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_handler.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// detail/signal_handler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SIGNAL_HANDLER_HPP -#define ASIO_DETAIL_SIGNAL_HANDLER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/signal_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class signal_handler : public signal_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(signal_handler); - - signal_handler(Handler& h, const IoExecutor& io_ex) - : signal_op(&signal_handler::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(h)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - signal_handler* h(static_cast(base)); - ptr p = { asio::detail::addressof(h->handler_), h, h }; - - ASIO_HANDLER_COMPLETION((*h)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - h->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(h->handler_, h->ec_, h->signal_number_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SIGNAL_HANDLER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_init.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_init.hpp deleted file mode 100644 index dbffde24..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_init.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// detail/signal_init.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SIGNAL_INIT_HPP -#define ASIO_DETAIL_SIGNAL_INIT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class signal_init -{ -public: - // Constructor. - signal_init() - { - std::signal(Signal, SIG_IGN); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#endif // ASIO_DETAIL_SIGNAL_INIT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_op.hpp deleted file mode 100644 index 863fc5d2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_op.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// -// detail/signal_op.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SIGNAL_OP_HPP -#define ASIO_DETAIL_SIGNAL_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class signal_op - : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - - // The signal number to be passed to the completion handler. - int signal_number_; - -protected: - signal_op(func_type func) - : operation(func), - signal_number_(0) - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SIGNAL_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_set_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_set_service.hpp deleted file mode 100644 index a9a89603..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/signal_set_service.hpp +++ /dev/null @@ -1,229 +0,0 @@ -// -// detail/signal_set_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP -#define ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include -#include -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/signal_handler.hpp" -#include "asio/detail/signal_op.hpp" -#include "asio/detail/socket_types.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) -# include "asio/detail/reactor.hpp" -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(NSIG) && (NSIG > 0) -enum { max_signal_number = NSIG }; -#else -enum { max_signal_number = 128 }; -#endif - -extern ASIO_DECL struct signal_state* get_signal_state(); - -extern "C" ASIO_DECL void asio_signal_handler(int signal_number); - -class signal_set_service : - public execution_context_service_base -{ -public: - // Type used for tracking an individual signal registration. - class registration - { - public: - // Default constructor. - registration() - : signal_number_(0), - queue_(0), - undelivered_(0), - next_in_table_(0), - prev_in_table_(0), - next_in_set_(0) - { - } - - private: - // Only this service will have access to the internal values. - friend class signal_set_service; - - // The signal number that is registered. - int signal_number_; - - // The waiting signal handlers. - op_queue* queue_; - - // The number of undelivered signals. - std::size_t undelivered_; - - // Pointers to adjacent registrations in the registrations_ table. - registration* next_in_table_; - registration* prev_in_table_; - - // Link to next registration in the signal set. - registration* next_in_set_; - }; - - // The implementation type of the signal_set. - class implementation_type - { - public: - // Default constructor. - implementation_type() - : signals_(0) - { - } - - private: - // Only this service will have access to the internal values. - friend class signal_set_service; - - // The pending signal handlers. - op_queue queue_; - - // Linked list of registered signals. - registration* signals_; - }; - - // Constructor. - ASIO_DECL signal_set_service(execution_context& context); - - // Destructor. - ASIO_DECL ~signal_set_service(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Perform fork-related housekeeping. - ASIO_DECL void notify_fork( - asio::execution_context::fork_event fork_ev); - - // Construct a new signal_set implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Destroy a signal_set implementation. - ASIO_DECL void destroy(implementation_type& impl); - - // Add a signal to a signal_set. - ASIO_DECL asio::error_code add(implementation_type& impl, - int signal_number, asio::error_code& ec); - - // Remove a signal to a signal_set. - ASIO_DECL asio::error_code remove(implementation_type& impl, - int signal_number, asio::error_code& ec); - - // Remove all signals from a signal_set. - ASIO_DECL asio::error_code clear(implementation_type& impl, - asio::error_code& ec); - - // Cancel all operations associated with the signal set. - ASIO_DECL asio::error_code cancel(implementation_type& impl, - asio::error_code& ec); - - // Start an asynchronous operation to wait for a signal to be delivered. - template - void async_wait(implementation_type& impl, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef signal_handler op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "signal_set", &impl, 0, "async_wait")); - - start_wait_op(impl, p.p); - p.v = p.p = 0; - } - - // Deliver notification that a particular signal occurred. - ASIO_DECL static void deliver_signal(int signal_number); - -private: - // Helper function to add a service to the global signal state. - ASIO_DECL static void add_service(signal_set_service* service); - - // Helper function to remove a service from the global signal state. - ASIO_DECL static void remove_service(signal_set_service* service); - - // Helper function to create the pipe descriptors. - ASIO_DECL static void open_descriptors(); - - // Helper function to close the pipe descriptors. - ASIO_DECL static void close_descriptors(); - - // Helper function to start a wait operation. - ASIO_DECL void start_wait_op(implementation_type& impl, signal_op* op); - - // The scheduler used for dispatching handlers. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - -#if !defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_RUNTIME) \ - && !defined(__CYGWIN__) - // The type used for registering for pipe reactor notifications. - class pipe_read_op; - - // The reactor used for waiting for pipe readiness. - reactor& reactor_; - - // The per-descriptor reactor data used for the pipe. - reactor::per_descriptor_data reactor_data_; -#endif // !defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_RUNTIME) - // && !defined(__CYGWIN__) - - // A mapping from signal number to the registered signal sets. - registration* registrations_[max_signal_number]; - - // Pointers to adjacent services in linked list. - signal_set_service* next_; - signal_set_service* prev_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/signal_set_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_holder.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_holder.hpp deleted file mode 100644 index bf631a64..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_holder.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// detail/socket_holder.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_HOLDER_HPP -#define ASIO_DETAIL_SOCKET_HOLDER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Implement the resource acquisition is initialisation idiom for sockets. -class socket_holder - : private noncopyable -{ -public: - // Construct as an uninitialised socket. - socket_holder() - : socket_(invalid_socket) - { - } - - // Construct to take ownership of the specified socket. - explicit socket_holder(socket_type s) - : socket_(s) - { - } - - // Destructor. - ~socket_holder() - { - if (socket_ != invalid_socket) - { - asio::error_code ec; - socket_ops::state_type state = 0; - socket_ops::close(socket_, state, true, ec); - } - } - - // Get the underlying socket. - socket_type get() const - { - return socket_; - } - - // Reset to an uninitialised socket. - void reset() - { - if (socket_ != invalid_socket) - { - asio::error_code ec; - socket_ops::state_type state = 0; - socket_ops::close(socket_, state, true, ec); - socket_ = invalid_socket; - } - } - - // Reset to take ownership of the specified socket. - void reset(socket_type s) - { - reset(); - socket_ = s; - } - - // Release ownership of the socket. - socket_type release() - { - socket_type tmp = socket_; - socket_ = invalid_socket; - return tmp; - } - -private: - // The underlying socket. - socket_type socket_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SOCKET_HOLDER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_ops.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_ops.hpp deleted file mode 100644 index 5098c412..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_ops.hpp +++ /dev/null @@ -1,383 +0,0 @@ -// -// detail/socket_ops.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_OPS_HPP -#define ASIO_DETAIL_SOCKET_OPS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/error_code.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace socket_ops { - -// Socket state bits. -enum -{ - // The user wants a non-blocking socket. - user_set_non_blocking = 1, - - // The socket has been set non-blocking. - internal_non_blocking = 2, - - // Helper "state" used to determine whether the socket is non-blocking. - non_blocking = user_set_non_blocking | internal_non_blocking, - - // User wants connection_aborted errors, which are disabled by default. - enable_connection_aborted = 4, - - // The user set the linger option. Needs to be checked when closing. - user_set_linger = 8, - - // The socket is stream-oriented. - stream_oriented = 16, - - // The socket is datagram-oriented. - datagram_oriented = 32, - - // The socket may have been dup()-ed. - possible_dup = 64 -}; - -typedef unsigned char state_type; - -struct noop_deleter { void operator()(void*) {} }; -typedef shared_ptr shared_cancel_token_type; -typedef weak_ptr weak_cancel_token_type; - -#if !defined(ASIO_WINDOWS_RUNTIME) - -ASIO_DECL socket_type accept(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -ASIO_DECL socket_type sync_accept(socket_type s, - state_type state, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_accept(socket_type s, - void* output_buffer, DWORD address_length, - socket_addr_type* addr, std::size_t* addrlen, - socket_type new_socket, asio::error_code& ec); - -#else // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_accept(socket_type s, - state_type state, socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, socket_type& new_socket); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL int bind(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -ASIO_DECL int close(socket_type s, state_type& state, - bool destruction, asio::error_code& ec); - -ASIO_DECL bool set_user_non_blocking(socket_type s, - state_type& state, bool value, asio::error_code& ec); - -ASIO_DECL bool set_internal_non_blocking(socket_type s, - state_type& state, bool value, asio::error_code& ec); - -ASIO_DECL int shutdown(socket_type s, - int what, asio::error_code& ec); - -ASIO_DECL int connect(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -ASIO_DECL void sync_connect(socket_type s, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_connect(socket_type s, - asio::error_code& ec); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_connect(socket_type s, - asio::error_code& ec); - -ASIO_DECL int socketpair(int af, int type, int protocol, - socket_type sv[2], asio::error_code& ec); - -ASIO_DECL bool sockatmark(socket_type s, asio::error_code& ec); - -ASIO_DECL size_t available(socket_type s, asio::error_code& ec); - -ASIO_DECL int listen(socket_type s, - int backlog, asio::error_code& ec); - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef WSABUF buf; -#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef iovec buf; -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -ASIO_DECL void init_buf(buf& b, void* data, size_t size); - -ASIO_DECL void init_buf(buf& b, const void* data, size_t size); - -ASIO_DECL signed_size_type recv(socket_type s, buf* bufs, - size_t count, int flags, asio::error_code& ec); - -ASIO_DECL signed_size_type recv1(socket_type s, - void* data, size_t size, int flags, asio::error_code& ec); - -ASIO_DECL size_t sync_recv(socket_type s, state_type state, buf* bufs, - size_t count, int flags, bool all_empty, asio::error_code& ec); - -ASIO_DECL size_t sync_recv1(socket_type s, state_type state, - void* data, size_t size, int flags, asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_recv(state_type state, - const weak_cancel_token_type& cancel_token, bool all_empty, - asio::error_code& ec, size_t bytes_transferred); - -#else // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_recv(socket_type s, - buf* bufs, size_t count, int flags, bool is_stream, - asio::error_code& ec, size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_recv1(socket_type s, - void* data, size_t size, int flags, bool is_stream, - asio::error_code& ec, size_t& bytes_transferred); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL signed_size_type recvfrom(socket_type s, buf* bufs, - size_t count, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -ASIO_DECL signed_size_type recvfrom1(socket_type s, void* data, - size_t size, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -ASIO_DECL size_t sync_recvfrom(socket_type s, state_type state, - buf* bufs, size_t count, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -ASIO_DECL size_t sync_recvfrom1(socket_type s, state_type state, - void* data, size_t size, int flags, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_recvfrom( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec); - -#else // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_recvfrom(socket_type s, - buf* bufs, size_t count, int flags, - socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_recvfrom1(socket_type s, - void* data, size_t size, int flags, - socket_addr_type* addr, std::size_t* addrlen, - asio::error_code& ec, size_t& bytes_transferred); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL signed_size_type recvmsg(socket_type s, buf* bufs, - size_t count, int in_flags, int& out_flags, - asio::error_code& ec); - -ASIO_DECL size_t sync_recvmsg(socket_type s, state_type state, - buf* bufs, size_t count, int in_flags, int& out_flags, - asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_recvmsg( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec); - -#else // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_recvmsg(socket_type s, - buf* bufs, size_t count, int in_flags, int& out_flags, - asio::error_code& ec, size_t& bytes_transferred); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL signed_size_type send(socket_type s, const buf* bufs, - size_t count, int flags, asio::error_code& ec); - -ASIO_DECL signed_size_type send1(socket_type s, - const void* data, size_t size, int flags, asio::error_code& ec); - -ASIO_DECL size_t sync_send(socket_type s, state_type state, - const buf* bufs, size_t count, int flags, - bool all_empty, asio::error_code& ec); - -ASIO_DECL size_t sync_send1(socket_type s, state_type state, - const void* data, size_t size, int flags, asio::error_code& ec); - -#if defined(ASIO_HAS_IOCP) - -ASIO_DECL void complete_iocp_send( - const weak_cancel_token_type& cancel_token, - asio::error_code& ec); - -#else // defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_send(socket_type s, - const buf* bufs, size_t count, int flags, - asio::error_code& ec, size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_send1(socket_type s, - const void* data, size_t size, int flags, - asio::error_code& ec, size_t& bytes_transferred); - -#endif // defined(ASIO_HAS_IOCP) - -ASIO_DECL signed_size_type sendto(socket_type s, const buf* bufs, - size_t count, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -ASIO_DECL signed_size_type sendto1(socket_type s, const void* data, - size_t size, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -ASIO_DECL size_t sync_sendto(socket_type s, state_type state, - const buf* bufs, size_t count, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -ASIO_DECL size_t sync_sendto1(socket_type s, state_type state, - const void* data, size_t size, int flags, const socket_addr_type* addr, - std::size_t addrlen, asio::error_code& ec); - -#if !defined(ASIO_HAS_IOCP) - -ASIO_DECL bool non_blocking_sendto(socket_type s, - const buf* bufs, size_t count, int flags, - const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec, size_t& bytes_transferred); - -ASIO_DECL bool non_blocking_sendto1(socket_type s, - const void* data, size_t size, int flags, - const socket_addr_type* addr, std::size_t addrlen, - asio::error_code& ec, size_t& bytes_transferred); - -#endif // !defined(ASIO_HAS_IOCP) - -ASIO_DECL socket_type socket(int af, int type, int protocol, - asio::error_code& ec); - -ASIO_DECL int setsockopt(socket_type s, state_type& state, - int level, int optname, const void* optval, - std::size_t optlen, asio::error_code& ec); - -ASIO_DECL int getsockopt(socket_type s, state_type state, - int level, int optname, void* optval, - size_t* optlen, asio::error_code& ec); - -ASIO_DECL int getpeername(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, bool cached, asio::error_code& ec); - -ASIO_DECL int getsockname(socket_type s, socket_addr_type* addr, - std::size_t* addrlen, asio::error_code& ec); - -ASIO_DECL int ioctl(socket_type s, state_type& state, - int cmd, ioctl_arg_type* arg, asio::error_code& ec); - -ASIO_DECL int select(int nfds, fd_set* readfds, fd_set* writefds, - fd_set* exceptfds, timeval* timeout, asio::error_code& ec); - -ASIO_DECL int poll_read(socket_type s, - state_type state, int msec, asio::error_code& ec); - -ASIO_DECL int poll_write(socket_type s, - state_type state, int msec, asio::error_code& ec); - -ASIO_DECL int poll_error(socket_type s, - state_type state, int msec, asio::error_code& ec); - -ASIO_DECL int poll_connect(socket_type s, - int msec, asio::error_code& ec); - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -ASIO_DECL const char* inet_ntop(int af, const void* src, char* dest, - size_t length, unsigned long scope_id, asio::error_code& ec); - -ASIO_DECL int inet_pton(int af, const char* src, void* dest, - unsigned long* scope_id, asio::error_code& ec); - -ASIO_DECL int gethostname(char* name, - int namelen, asio::error_code& ec); - -#if !defined(ASIO_WINDOWS_RUNTIME) - -ASIO_DECL asio::error_code getaddrinfo(const char* host, - const char* service, const addrinfo_type& hints, - addrinfo_type** result, asio::error_code& ec); - -ASIO_DECL asio::error_code background_getaddrinfo( - const weak_cancel_token_type& cancel_token, const char* host, - const char* service, const addrinfo_type& hints, - addrinfo_type** result, asio::error_code& ec); - -ASIO_DECL void freeaddrinfo(addrinfo_type* ai); - -ASIO_DECL asio::error_code getnameinfo( - const socket_addr_type* addr, std::size_t addrlen, - char* host, std::size_t hostlen, char* serv, - std::size_t servlen, int flags, asio::error_code& ec); - -ASIO_DECL asio::error_code sync_getnameinfo( - const socket_addr_type* addr, std::size_t addrlen, - char* host, std::size_t hostlen, char* serv, - std::size_t servlen, int sock_type, asio::error_code& ec); - -ASIO_DECL asio::error_code background_getnameinfo( - const weak_cancel_token_type& cancel_token, - const socket_addr_type* addr, std::size_t addrlen, - char* host, std::size_t hostlen, char* serv, - std::size_t servlen, int sock_type, asio::error_code& ec); - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -ASIO_DECL u_long_type network_to_host_long(u_long_type value); - -ASIO_DECL u_long_type host_to_network_long(u_long_type value); - -ASIO_DECL u_short_type network_to_host_short(u_short_type value); - -ASIO_DECL u_short_type host_to_network_short(u_short_type value); - -} // namespace socket_ops -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/socket_ops.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_SOCKET_OPS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_option.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_option.hpp deleted file mode 100644 index 4fe93ace..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_option.hpp +++ /dev/null @@ -1,316 +0,0 @@ -// -// detail/socket_option.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_OPTION_HPP -#define ASIO_DETAIL_SOCKET_OPTION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/detail/socket_types.hpp" -#include "asio/detail/throw_exception.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace socket_option { - -// Helper template for implementing boolean-based options. -template -class boolean -{ -public: - // Default constructor. - boolean() - : value_(0) - { - } - - // Construct with a specific option value. - explicit boolean(bool v) - : value_(v ? 1 : 0) - { - } - - // Set the current value of the boolean. - boolean& operator=(bool v) - { - value_ = v ? 1 : 0; - return *this; - } - - // Get the current value of the boolean. - bool value() const - { - return !!value_; - } - - // Convert to bool. - operator bool() const - { - return !!value_; - } - - // Test for false. - bool operator!() const - { - return !value_; - } - - // Get the level of the socket option. - template - int level(const Protocol&) const - { - return Level; - } - - // Get the name of the socket option. - template - int name(const Protocol&) const - { - return Name; - } - - // Get the address of the boolean data. - template - int* data(const Protocol&) - { - return &value_; - } - - // Get the address of the boolean data. - template - const int* data(const Protocol&) const - { - return &value_; - } - - // Get the size of the boolean data. - template - std::size_t size(const Protocol&) const - { - return sizeof(value_); - } - - // Set the size of the boolean data. - template - void resize(const Protocol&, std::size_t s) - { - // On some platforms (e.g. Windows Vista), the getsockopt function will - // return the size of a boolean socket option as one byte, even though a - // four byte integer was passed in. - switch (s) - { - case sizeof(char): - value_ = *reinterpret_cast(&value_) ? 1 : 0; - break; - case sizeof(value_): - break; - default: - { - std::length_error ex("boolean socket option resize"); - asio::detail::throw_exception(ex); - } - } - } - -private: - int value_; -}; - -// Helper template for implementing integer options. -template -class integer -{ -public: - // Default constructor. - integer() - : value_(0) - { - } - - // Construct with a specific option value. - explicit integer(int v) - : value_(v) - { - } - - // Set the value of the int option. - integer& operator=(int v) - { - value_ = v; - return *this; - } - - // Get the current value of the int option. - int value() const - { - return value_; - } - - // Get the level of the socket option. - template - int level(const Protocol&) const - { - return Level; - } - - // Get the name of the socket option. - template - int name(const Protocol&) const - { - return Name; - } - - // Get the address of the int data. - template - int* data(const Protocol&) - { - return &value_; - } - - // Get the address of the int data. - template - const int* data(const Protocol&) const - { - return &value_; - } - - // Get the size of the int data. - template - std::size_t size(const Protocol&) const - { - return sizeof(value_); - } - - // Set the size of the int data. - template - void resize(const Protocol&, std::size_t s) - { - if (s != sizeof(value_)) - { - std::length_error ex("integer socket option resize"); - asio::detail::throw_exception(ex); - } - } - -private: - int value_; -}; - -// Helper template for implementing linger options. -template -class linger -{ -public: - // Default constructor. - linger() - { - value_.l_onoff = 0; - value_.l_linger = 0; - } - - // Construct with specific option values. - linger(bool e, int t) - { - enabled(e); - timeout ASIO_PREVENT_MACRO_SUBSTITUTION(t); - } - - // Set the value for whether linger is enabled. - void enabled(bool value) - { - value_.l_onoff = value ? 1 : 0; - } - - // Get the value for whether linger is enabled. - bool enabled() const - { - return value_.l_onoff != 0; - } - - // Set the value for the linger timeout. - void timeout ASIO_PREVENT_MACRO_SUBSTITUTION(int value) - { -#if defined(WIN32) - value_.l_linger = static_cast(value); -#else - value_.l_linger = value; -#endif - } - - // Get the value for the linger timeout. - int timeout ASIO_PREVENT_MACRO_SUBSTITUTION() const - { - return static_cast(value_.l_linger); - } - - // Get the level of the socket option. - template - int level(const Protocol&) const - { - return Level; - } - - // Get the name of the socket option. - template - int name(const Protocol&) const - { - return Name; - } - - // Get the address of the linger data. - template - detail::linger_type* data(const Protocol&) - { - return &value_; - } - - // Get the address of the linger data. - template - const detail::linger_type* data(const Protocol&) const - { - return &value_; - } - - // Get the size of the linger data. - template - std::size_t size(const Protocol&) const - { - return sizeof(value_); - } - - // Set the size of the int data. - template - void resize(const Protocol&, std::size_t s) - { - if (s != sizeof(value_)) - { - std::length_error ex("linger socket option resize"); - asio::detail::throw_exception(ex); - } - } - -private: - detail::linger_type value_; -}; - -} // namespace socket_option -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SOCKET_OPTION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_select_interrupter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_select_interrupter.hpp deleted file mode 100644 index 561ad052..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_select_interrupter.hpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// detail/socket_select_interrupter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP -#define ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_WINDOWS_RUNTIME) - -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(__SYMBIAN32__) - -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class socket_select_interrupter -{ -public: - // Constructor. - ASIO_DECL socket_select_interrupter(); - - // Destructor. - ASIO_DECL ~socket_select_interrupter(); - - // Recreate the interrupter's descriptors. Used after a fork. - ASIO_DECL void recreate(); - - // Interrupt the select call. - ASIO_DECL void interrupt(); - - // Reset the select interrupter. Returns true if the reset was successful. - ASIO_DECL bool reset(); - - // Get the read descriptor to be passed to select. - socket_type read_descriptor() const - { - return read_descriptor_; - } - -private: - // Open the descriptors. Throws on error. - ASIO_DECL void open_descriptors(); - - // Close the descriptors. - ASIO_DECL void close_descriptors(); - - // The read end of a connection used to interrupt the select call. This file - // descriptor is passed to select such that when it is time to stop, a single - // byte will be written on the other end of the connection and this - // descriptor will become readable. - socket_type read_descriptor_; - - // The write end of a connection used to interrupt the select call. A single - // byte may be written to this to wake up the select which is waiting for the - // other end to become readable. - socket_type write_descriptor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/socket_select_interrupter.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - // || defined(__CYGWIN__) - // || defined(__SYMBIAN32__) - -#endif // !defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_types.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_types.hpp deleted file mode 100644 index a45e9fc7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/socket_types.hpp +++ /dev/null @@ -1,417 +0,0 @@ -// -// detail/socket_types.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOCKET_TYPES_HPP -#define ASIO_DETAIL_SOCKET_TYPES_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -// Empty. -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) -# error WinSock.h has already been included -# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) -# if defined(__BORLANDC__) -# include // Needed for __errno -# if !defined(_WSPIAPI_H_) -# define _WSPIAPI_H_ -# define ASIO_WSPIAPI_H_DEFINED -# endif // !defined(_WSPIAPI_H_) -# endif // defined(__BORLANDC__) -# include -# include -# if defined(WINAPI_FAMILY) -# if ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) -# include -# endif // ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) -# endif // defined(WINAPI_FAMILY) -# if !defined(ASIO_WINDOWS_APP) -# include -# endif // !defined(ASIO_WINDOWS_APP) -# if defined(ASIO_WSPIAPI_H_DEFINED) -# undef _WSPIAPI_H_ -# undef ASIO_WSPIAPI_H_DEFINED -# endif // defined(ASIO_WSPIAPI_H_DEFINED) -# if !defined(ASIO_NO_DEFAULT_LINKED_LIBS) -# if defined(UNDER_CE) -# pragma comment(lib, "ws2.lib") -# elif defined(_MSC_VER) || defined(__BORLANDC__) -# pragma comment(lib, "ws2_32.lib") -# if !defined(ASIO_WINDOWS_APP) -# pragma comment(lib, "mswsock.lib") -# endif // !defined(ASIO_WINDOWS_APP) -# endif // defined(_MSC_VER) || defined(__BORLANDC__) -# endif // !defined(ASIO_NO_DEFAULT_LINKED_LIBS) -# include "asio/detail/old_win_sdk_compat.hpp" -#else -# include -# if (defined(__MACH__) && defined(__APPLE__)) \ - || defined(__FreeBSD__) || defined(__NetBSD__) \ - || defined(__OpenBSD__) || defined(__linux__) \ - || defined(__EMSCRIPTEN__) -# include -# elif !defined(__SYMBIAN32__) -# include -# endif -# include -# include -# include -# if defined(__hpux) -# include -# endif -# if !defined(__hpux) || defined(__SELECT) -# include -# endif -# include -# include -# include -# include -# if !defined(__SYMBIAN32__) -# include -# endif -# include -# include -# include -# include -# if defined(__sun) -# include -# include -# endif -#endif - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_WINDOWS_RUNTIME) -const int max_addr_v4_str_len = 256; -const int max_addr_v6_str_len = 256; -typedef unsigned __int32 u_long_type; -typedef unsigned __int16 u_short_type; -struct in4_addr_type { u_long_type s_addr; }; -struct in4_mreq_type { in4_addr_type imr_multiaddr, imr_interface; }; -struct in6_addr_type { unsigned char s6_addr[16]; }; -struct in6_mreq_type { in6_addr_type ipv6mr_multiaddr; - unsigned long ipv6mr_interface; }; -struct socket_addr_type { int sa_family; }; -struct sockaddr_in4_type { int sin_family; - in4_addr_type sin_addr; u_short_type sin_port; }; -struct sockaddr_in6_type { int sin6_family; - in6_addr_type sin6_addr; u_short_type sin6_port; - u_long_type sin6_flowinfo; u_long_type sin6_scope_id; }; -struct sockaddr_storage_type { int ss_family; - unsigned char ss_bytes[128 - sizeof(int)]; }; -struct addrinfo_type { int ai_flags; - int ai_family, ai_socktype, ai_protocol; - int ai_addrlen; const void* ai_addr; - const char* ai_canonname; addrinfo_type* ai_next; }; -struct linger_type { u_short_type l_onoff, l_linger; }; -typedef u_long_type ioctl_arg_type; -typedef int signed_size_type; -# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c -# define ASIO_OS_DEF_AF_UNSPEC 0 -# define ASIO_OS_DEF_AF_INET 2 -# define ASIO_OS_DEF_AF_INET6 23 -# define ASIO_OS_DEF_SOCK_STREAM 1 -# define ASIO_OS_DEF_SOCK_DGRAM 2 -# define ASIO_OS_DEF_SOCK_RAW 3 -# define ASIO_OS_DEF_SOCK_SEQPACKET 5 -# define ASIO_OS_DEF_IPPROTO_IP 0 -# define ASIO_OS_DEF_IPPROTO_IPV6 41 -# define ASIO_OS_DEF_IPPROTO_TCP 6 -# define ASIO_OS_DEF_IPPROTO_UDP 17 -# define ASIO_OS_DEF_IPPROTO_ICMP 1 -# define ASIO_OS_DEF_IPPROTO_ICMPV6 58 -# define ASIO_OS_DEF_FIONBIO 1 -# define ASIO_OS_DEF_FIONREAD 2 -# define ASIO_OS_DEF_INADDR_ANY 0 -# define ASIO_OS_DEF_MSG_OOB 0x1 -# define ASIO_OS_DEF_MSG_PEEK 0x2 -# define ASIO_OS_DEF_MSG_DONTROUTE 0x4 -# define ASIO_OS_DEF_MSG_EOR 0 // Not supported. -# define ASIO_OS_DEF_SHUT_RD 0x0 -# define ASIO_OS_DEF_SHUT_WR 0x1 -# define ASIO_OS_DEF_SHUT_RDWR 0x2 -# define ASIO_OS_DEF_SOMAXCONN 0x7fffffff -# define ASIO_OS_DEF_SOL_SOCKET 0xffff -# define ASIO_OS_DEF_SO_BROADCAST 0x20 -# define ASIO_OS_DEF_SO_DEBUG 0x1 -# define ASIO_OS_DEF_SO_DONTROUTE 0x10 -# define ASIO_OS_DEF_SO_KEEPALIVE 0x8 -# define ASIO_OS_DEF_SO_LINGER 0x80 -# define ASIO_OS_DEF_SO_OOBINLINE 0x100 -# define ASIO_OS_DEF_SO_SNDBUF 0x1001 -# define ASIO_OS_DEF_SO_RCVBUF 0x1002 -# define ASIO_OS_DEF_SO_SNDLOWAT 0x1003 -# define ASIO_OS_DEF_SO_RCVLOWAT 0x1004 -# define ASIO_OS_DEF_SO_REUSEADDR 0x4 -# define ASIO_OS_DEF_TCP_NODELAY 0x1 -# define ASIO_OS_DEF_IP_MULTICAST_IF 2 -# define ASIO_OS_DEF_IP_MULTICAST_TTL 3 -# define ASIO_OS_DEF_IP_MULTICAST_LOOP 4 -# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP 5 -# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP 6 -# define ASIO_OS_DEF_IP_TTL 7 -# define ASIO_OS_DEF_IPV6_UNICAST_HOPS 4 -# define ASIO_OS_DEF_IPV6_MULTICAST_IF 9 -# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS 10 -# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP 11 -# define ASIO_OS_DEF_IPV6_JOIN_GROUP 12 -# define ASIO_OS_DEF_IPV6_LEAVE_GROUP 13 -# define ASIO_OS_DEF_AI_CANONNAME 0x2 -# define ASIO_OS_DEF_AI_PASSIVE 0x1 -# define ASIO_OS_DEF_AI_NUMERICHOST 0x4 -# define ASIO_OS_DEF_AI_NUMERICSERV 0x8 -# define ASIO_OS_DEF_AI_V4MAPPED 0x800 -# define ASIO_OS_DEF_AI_ALL 0x100 -# define ASIO_OS_DEF_AI_ADDRCONFIG 0x400 -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) -typedef SOCKET socket_type; -const SOCKET invalid_socket = INVALID_SOCKET; -const int socket_error_retval = SOCKET_ERROR; -const int max_addr_v4_str_len = 256; -const int max_addr_v6_str_len = 256; -typedef sockaddr socket_addr_type; -typedef in_addr in4_addr_type; -typedef ip_mreq in4_mreq_type; -typedef sockaddr_in sockaddr_in4_type; -# if defined(ASIO_HAS_OLD_WIN_SDK) -typedef in6_addr_emulation in6_addr_type; -typedef ipv6_mreq_emulation in6_mreq_type; -typedef sockaddr_in6_emulation sockaddr_in6_type; -typedef sockaddr_storage_emulation sockaddr_storage_type; -typedef addrinfo_emulation addrinfo_type; -# else -typedef in6_addr in6_addr_type; -typedef ipv6_mreq in6_mreq_type; -typedef sockaddr_in6 sockaddr_in6_type; -typedef sockaddr_storage sockaddr_storage_type; -typedef addrinfo addrinfo_type; -# endif -typedef ::linger linger_type; -typedef unsigned long ioctl_arg_type; -typedef u_long u_long_type; -typedef u_short u_short_type; -typedef int signed_size_type; -struct sockaddr_un_type { u_short sun_family; char sun_path[108]; }; -# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c -# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC -# define ASIO_OS_DEF_AF_INET AF_INET -# define ASIO_OS_DEF_AF_INET6 AF_INET6 -# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM -# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM -# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW -# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET -# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP -# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 -# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP -# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP -# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP -# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 -# define ASIO_OS_DEF_FIONBIO FIONBIO -# define ASIO_OS_DEF_FIONREAD FIONREAD -# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY -# define ASIO_OS_DEF_MSG_OOB MSG_OOB -# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK -# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE -# define ASIO_OS_DEF_MSG_EOR 0 // Not supported on Windows. -# define ASIO_OS_DEF_SHUT_RD SD_RECEIVE -# define ASIO_OS_DEF_SHUT_WR SD_SEND -# define ASIO_OS_DEF_SHUT_RDWR SD_BOTH -# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN -# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET -# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST -# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG -# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE -# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE -# define ASIO_OS_DEF_SO_LINGER SO_LINGER -# define ASIO_OS_DEF_SO_OOBINLINE SO_OOBINLINE -# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF -# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF -# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT -# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT -# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR -# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY -# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF -# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL -# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP -# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP -# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP -# define ASIO_OS_DEF_IP_TTL IP_TTL -# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS -# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF -# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS -# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP -# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP -# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP -# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME -# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE -# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST -# if defined(AI_NUMERICSERV) -# define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV -# else -# define ASIO_OS_DEF_AI_NUMERICSERV 0 -# endif -# if defined(AI_V4MAPPED) -# define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED -# else -# define ASIO_OS_DEF_AI_V4MAPPED 0 -# endif -# if defined(AI_ALL) -# define ASIO_OS_DEF_AI_ALL AI_ALL -# else -# define ASIO_OS_DEF_AI_ALL 0 -# endif -# if defined(AI_ADDRCONFIG) -# define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG -# else -# define ASIO_OS_DEF_AI_ADDRCONFIG 0 -# endif -# if defined (_WIN32_WINNT) -const int max_iov_len = 64; -# else -const int max_iov_len = 16; -# endif -#else -typedef int socket_type; -const int invalid_socket = -1; -const int socket_error_retval = -1; -const int max_addr_v4_str_len = INET_ADDRSTRLEN; -#if defined(INET6_ADDRSTRLEN) -const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE; -#else // defined(INET6_ADDRSTRLEN) -const int max_addr_v6_str_len = 256; -#endif // defined(INET6_ADDRSTRLEN) -typedef sockaddr socket_addr_type; -typedef in_addr in4_addr_type; -# if defined(__hpux) -// HP-UX doesn't provide ip_mreq when _XOPEN_SOURCE_EXTENDED is defined. -struct in4_mreq_type -{ - struct in_addr imr_multiaddr; - struct in_addr imr_interface; -}; -# else -typedef ip_mreq in4_mreq_type; -# endif -typedef sockaddr_in sockaddr_in4_type; -typedef in6_addr in6_addr_type; -typedef ipv6_mreq in6_mreq_type; -typedef sockaddr_in6 sockaddr_in6_type; -typedef sockaddr_storage sockaddr_storage_type; -typedef sockaddr_un sockaddr_un_type; -typedef addrinfo addrinfo_type; -typedef ::linger linger_type; -typedef int ioctl_arg_type; -typedef uint32_t u_long_type; -typedef uint16_t u_short_type; -#if defined(ASIO_HAS_SSIZE_T) -typedef ssize_t signed_size_type; -#else // defined(ASIO_HAS_SSIZE_T) -typedef int signed_size_type; -#endif // defined(ASIO_HAS_SSIZE_T) -# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c -# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC -# define ASIO_OS_DEF_AF_INET AF_INET -# define ASIO_OS_DEF_AF_INET6 AF_INET6 -# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM -# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM -# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW -# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET -# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP -# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 -# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP -# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP -# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP -# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 -# define ASIO_OS_DEF_FIONBIO FIONBIO -# define ASIO_OS_DEF_FIONREAD FIONREAD -# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY -# define ASIO_OS_DEF_MSG_OOB MSG_OOB -# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK -# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE -# define ASIO_OS_DEF_MSG_EOR MSG_EOR -# define ASIO_OS_DEF_SHUT_RD SHUT_RD -# define ASIO_OS_DEF_SHUT_WR SHUT_WR -# define ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR -# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN -# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET -# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST -# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG -# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE -# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE -# define ASIO_OS_DEF_SO_LINGER SO_LINGER -# define ASIO_OS_DEF_SO_OOBINLINE SO_OOBINLINE -# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF -# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF -# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT -# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT -# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR -# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY -# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF -# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL -# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP -# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP -# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP -# define ASIO_OS_DEF_IP_TTL IP_TTL -# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS -# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF -# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS -# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP -# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP -# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP -# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME -# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE -# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST -# if defined(AI_NUMERICSERV) -# define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV -# else -# define ASIO_OS_DEF_AI_NUMERICSERV 0 -# endif -// Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but -// does not implement them. Therefore they are specifically excluded here. -# if defined(AI_V4MAPPED) && !defined(__QNXNTO__) -# define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED -# else -# define ASIO_OS_DEF_AI_V4MAPPED 0 -# endif -# if defined(AI_ALL) && !defined(__QNXNTO__) -# define ASIO_OS_DEF_AI_ALL AI_ALL -# else -# define ASIO_OS_DEF_AI_ALL 0 -# endif -# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__) -# define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG -# else -# define ASIO_OS_DEF_AI_ADDRCONFIG 0 -# endif -# if defined(IOV_MAX) -const int max_iov_len = IOV_MAX; -# else -// POSIX platforms are not required to define IOV_MAX. -const int max_iov_len = 16; -# endif -#endif -const int custom_socket_option_level = 0xA5100000; -const int enable_connection_aborted_option = 1; -const int always_fail_option = 2; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_SOCKET_TYPES_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/solaris_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/solaris_fenced_block.hpp deleted file mode 100644 index 20f83330..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/solaris_fenced_block.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// -// detail/solaris_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP -#define ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(__sun) - -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class solaris_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit solaris_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit solaris_fenced_block(full_t) - { - membar_consumer(); - } - - // Destructor. - ~solaris_fenced_block() - { - membar_producer(); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(__sun) - -#endif // ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/source_location.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/source_location.hpp deleted file mode 100644 index 7f831757..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/source_location.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// detail/source_location.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_SOURCE_LOCATION_HPP -#define ASIO_DETAIL_SOURCE_LOCATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_SOURCE_LOCATION) - -#if defined(ASIO_HAS_STD_SOURCE_LOCATION) -# include -#elif defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -# include -#else // defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -# error ASIO_HAS_SOURCE_LOCATION is set \ - but no source_location is available -#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_STD_SOURCE_LOCATION) -using std::source_location; -#elif defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) -using std::experimental::source_location; -#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION) - -} // namespace detail -} // namespace asio - -#endif // defined(ASIO_HAS_SOURCE_LOCATION) - -#endif // ASIO_DETAIL_SOURCE_LOCATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/static_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/static_mutex.hpp deleted file mode 100644 index 2efd1670..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/static_mutex.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// detail/static_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STATIC_MUTEX_HPP -#define ASIO_DETAIL_STATIC_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_static_mutex.hpp" -#elif defined(ASIO_WINDOWS) -# include "asio/detail/win_static_mutex.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_static_mutex.hpp" -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -# include "asio/detail/std_static_mutex.hpp" -#else -# error Only Windows and POSIX are supported! -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) -typedef null_static_mutex static_mutex; -# define ASIO_STATIC_MUTEX_INIT ASIO_NULL_STATIC_MUTEX_INIT -#elif defined(ASIO_WINDOWS) -typedef win_static_mutex static_mutex; -# define ASIO_STATIC_MUTEX_INIT ASIO_WIN_STATIC_MUTEX_INIT -#elif defined(ASIO_HAS_PTHREADS) -typedef posix_static_mutex static_mutex; -# define ASIO_STATIC_MUTEX_INIT ASIO_POSIX_STATIC_MUTEX_INIT -#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) -typedef std_static_mutex static_mutex; -# define ASIO_STATIC_MUTEX_INIT ASIO_STD_STATIC_MUTEX_INIT -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_STATIC_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_event.hpp deleted file mode 100644 index 2e35345b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_event.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// -// detail/std_event.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_EVENT_HPP -#define ASIO_DETAIL_STD_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#include -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class std_event - : private noncopyable -{ -public: - // Constructor. - std_event() - : state_(0) - { - } - - // Destructor. - ~std_event() - { - } - - // Signal the event. (Retained for backward compatibility.) - template - void signal(Lock& lock) - { - this->signal_all(lock); - } - - // Signal all waiters. - template - void signal_all(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - state_ |= 1; - cond_.notify_all(); - } - - // Unlock the mutex and signal one waiter. - template - void unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - lock.unlock(); - if (have_waiters) - cond_.notify_one(); - } - - // Unlock the mutex and signal one waiter who may destroy us. - template - void unlock_and_signal_one_for_destruction(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - if (have_waiters) - cond_.notify_one(); - lock.unlock(); - } - - // If there's a waiter, unlock the mutex and signal it. - template - bool maybe_unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - if (state_ > 1) - { - lock.unlock(); - cond_.notify_one(); - return true; - } - return false; - } - - // Reset the event. - template - void clear(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - state_ &= ~std::size_t(1); - } - - // Wait for the event to become signalled. - template - void wait(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - unique_lock_adapter u_lock(lock); - while ((state_ & 1) == 0) - { - waiter w(state_); - cond_.wait(u_lock.unique_lock_); - } - } - - // Timed wait for the event to become signalled. - template - bool wait_for_usec(Lock& lock, long usec) - { - ASIO_ASSERT(lock.locked()); - unique_lock_adapter u_lock(lock); - if ((state_ & 1) == 0) - { - waiter w(state_); - cond_.wait_for(u_lock.unique_lock_, std::chrono::microseconds(usec)); - } - return (state_ & 1) != 0; - } - -private: - // Helper class to temporarily adapt a scoped_lock into a unique_lock so that - // it can be passed to std::condition_variable::wait(). - struct unique_lock_adapter - { - template - explicit unique_lock_adapter(Lock& lock) - : unique_lock_(lock.mutex().mutex_, std::adopt_lock) - { - } - - ~unique_lock_adapter() - { - unique_lock_.release(); - } - - std::unique_lock unique_lock_; - }; - - // Helper to increment and decrement the state to track outstanding waiters. - class waiter - { - public: - explicit waiter(std::size_t& state) - : state_(state) - { - state_ += 2; - } - - ~waiter() - { - state_ -= 2; - } - - private: - std::size_t& state_; - }; - - std::condition_variable cond_; - std::size_t state_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#endif // ASIO_DETAIL_STD_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_fenced_block.hpp deleted file mode 100644 index 0d0b0546..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_fenced_block.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// -// detail/std_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_FENCED_BLOCK_HPP -#define ASIO_DETAIL_STD_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_ATOMIC) - -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class std_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit std_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit std_fenced_block(full_t) - { - std::atomic_thread_fence(std::memory_order_acquire); - } - - // Destructor. - ~std_fenced_block() - { - std::atomic_thread_fence(std::memory_order_release); - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_ATOMIC) - -#endif // ASIO_DETAIL_STD_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_global.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_global.hpp deleted file mode 100644 index ac1d3ca7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_global.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -// detail/std_global.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_GLOBAL_HPP -#define ASIO_DETAIL_STD_GLOBAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_CALL_ONCE) - -#include -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct std_global_impl -{ - // Helper function to perform initialisation. - static void do_init() - { - instance_.ptr_ = new T; - } - - // Destructor automatically cleans up the global. - ~std_global_impl() - { - delete ptr_; - } - - static std::once_flag init_once_; - static std_global_impl instance_; - T* ptr_; -}; - -template -std::once_flag std_global_impl::init_once_; - -template -std_global_impl std_global_impl::instance_; - -template -T& std_global() -{ - std::call_once(std_global_impl::init_once_, &std_global_impl::do_init); - return *std_global_impl::instance_.ptr_; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_CALL_ONCE) - -#endif // ASIO_DETAIL_STD_GLOBAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_mutex.hpp deleted file mode 100644 index 0fdff3dd..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_mutex.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// -// detail/std_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_MUTEX_HPP -#define ASIO_DETAIL_STD_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#include -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class std_event; - -class std_mutex - : private noncopyable -{ -public: - typedef asio::detail::scoped_lock scoped_lock; - - // Constructor. - std_mutex() - { - } - - // Destructor. - ~std_mutex() - { - } - - // Lock the mutex. - void lock() - { - mutex_.lock(); - } - - // Unlock the mutex. - void unlock() - { - mutex_.unlock(); - } - -private: - friend class std_event; - std::mutex mutex_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#endif // ASIO_DETAIL_STD_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_static_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_static_mutex.hpp deleted file mode 100644 index abcb6e86..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_static_mutex.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// -// detail/std_static_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_STATIC_MUTEX_HPP -#define ASIO_DETAIL_STD_STATIC_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#include -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class std_event; - -class std_static_mutex - : private noncopyable -{ -public: - typedef asio::detail::scoped_lock scoped_lock; - - // Constructor. - std_static_mutex(int) - { - } - - // Destructor. - ~std_static_mutex() - { - } - - // Initialise the mutex. - void init() - { - // Nothing to do. - } - - // Lock the mutex. - void lock() - { - mutex_.lock(); - } - - // Unlock the mutex. - void unlock() - { - mutex_.unlock(); - } - -private: - friend class std_event; - std::mutex mutex_; -}; - -#define ASIO_STD_STATIC_MUTEX_INIT 0 - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR) - -#endif // ASIO_DETAIL_STD_STATIC_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_thread.hpp deleted file mode 100644 index 7d6386d7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/std_thread.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// detail/std_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STD_THREAD_HPP -#define ASIO_DETAIL_STD_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_THREAD) - -#include -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class std_thread - : private noncopyable -{ -public: - // Constructor. - template - std_thread(Function f, unsigned int = 0) - : thread_(f) - { - } - - // Destructor. - ~std_thread() - { - join(); - } - - // Wait for the thread to exit. - void join() - { - if (thread_.joinable()) - thread_.join(); - } - - // Get number of CPUs. - static std::size_t hardware_concurrency() - { - return std::thread::hardware_concurrency(); - } - -private: - std::thread thread_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_STD_THREAD) - -#endif // ASIO_DETAIL_STD_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_executor_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_executor_service.hpp deleted file mode 100644 index 1a984d84..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_executor_service.hpp +++ /dev/null @@ -1,166 +0,0 @@ -// -// detail/strand_executor_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STRAND_EXECUTOR_SERVICE_HPP -#define ASIO_DETAIL_STRAND_EXECUTOR_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/atomic_count.hpp" -#include "asio/detail/executor_op.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/scheduler_operation.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Default service implementation for a strand. -class strand_executor_service - : public execution_context_service_base -{ -public: - // The underlying implementation of a strand. - class strand_impl - { - public: - ASIO_DECL ~strand_impl(); - - private: - friend class strand_executor_service; - - // Mutex to protect access to internal data. - mutex* mutex_; - - // Indicates whether the strand is currently "locked" by a handler. This - // means that there is a handler upcall in progress, or that the strand - // itself has been scheduled in order to invoke some pending handlers. - bool locked_; - - // Indicates that the strand has been shut down and will accept no further - // handlers. - bool shutdown_; - - // The handlers that are waiting on the strand but should not be run until - // after the next time the strand is scheduled. This queue must only be - // modified while the mutex is locked. - op_queue waiting_queue_; - - // The handlers that are ready to be run. Logically speaking, these are the - // handlers that hold the strand's lock. The ready queue is only modified - // from within the strand and so may be accessed without locking the mutex. - op_queue ready_queue_; - - // Pointers to adjacent handle implementations in linked list. - strand_impl* next_; - strand_impl* prev_; - - // The strand service in where the implementation is held. - strand_executor_service* service_; - }; - - typedef shared_ptr implementation_type; - - // Construct a new strand service for the specified context. - ASIO_DECL explicit strand_executor_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Create a new strand_executor implementation. - ASIO_DECL implementation_type create_implementation(); - - // Request invocation of the given function. - template - static void execute(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, - typename enable_if< - can_query >::value - >::type* = 0); - - // Request invocation of the given function. - template - static void execute(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, - typename enable_if< - !can_query >::value - >::type* = 0); - - // Request invocation of the given function. - template - static void dispatch(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, const Allocator& a); - - // Request invocation of the given function and return immediately. - template - static void post(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, const Allocator& a); - - // Request invocation of the given function and return immediately. - template - static void defer(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, const Allocator& a); - - // Determine whether the strand is running in the current thread. - ASIO_DECL static bool running_in_this_thread( - const implementation_type& impl); - -private: - friend class strand_impl; - template class allocator_binder; - template class invoker; - - // Adds a function to the strand. Returns true if it acquires the lock. - ASIO_DECL static bool enqueue(const implementation_type& impl, - scheduler_operation* op); - - // Helper function to request invocation of the given function. - template - static void do_execute(const implementation_type& impl, Executor& ex, - ASIO_MOVE_ARG(Function) function, const Allocator& a); - - // Mutex to protect access to the service-wide state. - mutex mutex_; - - // Number of mutexes shared between all strand objects. - enum { num_mutexes = 193 }; - - // Pool of mutexes. - scoped_ptr mutexes_[num_mutexes]; - - // Extra value used when hashing to prevent recycled memory locations from - // getting the same mutex. - std::size_t salt_; - - // The head of a linked list of all implementations. - strand_impl* impl_list_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/strand_executor_service.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/strand_executor_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_STRAND_EXECUTOR_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_service.hpp deleted file mode 100644 index 5289ac80..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/strand_service.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// -// detail/strand_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STRAND_SERVICE_HPP -#define ASIO_DETAIL_STRAND_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/io_context.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/scoped_ptr.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Default service implementation for a strand. -class strand_service - : public asio::detail::service_base -{ -private: - // Helper class to re-post the strand on exit. - struct on_do_complete_exit; - - // Helper class to re-post the strand on exit. - struct on_dispatch_exit; - -public: - - // The underlying implementation of a strand. - class strand_impl - : public operation - { - public: - strand_impl(); - - private: - // Only this service will have access to the internal values. - friend class strand_service; - friend struct on_do_complete_exit; - friend struct on_dispatch_exit; - - // Mutex to protect access to internal data. - asio::detail::mutex mutex_; - - // Indicates whether the strand is currently "locked" by a handler. This - // means that there is a handler upcall in progress, or that the strand - // itself has been scheduled in order to invoke some pending handlers. - bool locked_; - - // The handlers that are waiting on the strand but should not be run until - // after the next time the strand is scheduled. This queue must only be - // modified while the mutex is locked. - op_queue waiting_queue_; - - // The handlers that are ready to be run. Logically speaking, these are the - // handlers that hold the strand's lock. The ready queue is only modified - // from within the strand and so may be accessed without locking the mutex. - op_queue ready_queue_; - }; - - typedef strand_impl* implementation_type; - - // Construct a new strand service for the specified io_context. - ASIO_DECL explicit strand_service(asio::io_context& io_context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new strand implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Request the io_context to invoke the given handler. - template - void dispatch(implementation_type& impl, Handler& handler); - - // Request the io_context to invoke the given handler and return immediately. - template - void post(implementation_type& impl, Handler& handler); - - // Determine whether the strand is running in the current thread. - ASIO_DECL bool running_in_this_thread( - const implementation_type& impl) const; - -private: - // Helper function to dispatch a handler. Returns true if the handler should - // be dispatched immediately. - ASIO_DECL bool do_dispatch(implementation_type& impl, operation* op); - - // Helper fiunction to post a handler. - ASIO_DECL void do_post(implementation_type& impl, - operation* op, bool is_continuation); - - ASIO_DECL static void do_complete(void* owner, - operation* base, const asio::error_code& ec, - std::size_t bytes_transferred); - - // The io_context used to obtain an I/O executor. - io_context& io_context_; - - // The io_context implementation used to post completions. - io_context_impl& io_context_impl_; - - // Mutex to protect access to the array of implementations. - asio::detail::mutex mutex_; - - // Number of implementations shared between all strand objects. -#if defined(ASIO_STRAND_IMPLEMENTATIONS) - enum { num_implementations = ASIO_STRAND_IMPLEMENTATIONS }; -#else // defined(ASIO_STRAND_IMPLEMENTATIONS) - enum { num_implementations = 193 }; -#endif // defined(ASIO_STRAND_IMPLEMENTATIONS) - - // Pool of implementations. - scoped_ptr implementations_[num_implementations]; - - // Extra value used when hashing to prevent recycled memory locations from - // getting the same strand implementation. - std::size_t salt_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/strand_service.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/strand_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_STRAND_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/string_view.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/string_view.hpp deleted file mode 100644 index 29b894ce..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/string_view.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// detail/string_view.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_STRING_VIEW_HPP -#define ASIO_DETAIL_STRING_VIEW_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STRING_VIEW) - -#if defined(ASIO_HAS_STD_STRING_VIEW) -# include -#elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -# include -#else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -# error ASIO_HAS_STRING_VIEW is set but no string_view is available -#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) - -namespace asio { - -#if defined(ASIO_HAS_STD_STRING_VIEW) -using std::basic_string_view; -using std::string_view; -#elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) -using std::experimental::basic_string_view; -using std::experimental::string_view; -#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) - -} // namespace asio - -# define ASIO_STRING_VIEW_PARAM asio::string_view -#else // defined(ASIO_HAS_STRING_VIEW) -# define ASIO_STRING_VIEW_PARAM const std::string& -#endif // defined(ASIO_HAS_STRING_VIEW) - -#endif // ASIO_DETAIL_STRING_VIEW_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread.hpp deleted file mode 100644 index 47899e94..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -// detail/thread.hpp -// ~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THREAD_HPP -#define ASIO_DETAIL_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_thread.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_thread.hpp" -#elif defined(ASIO_WINDOWS) -# if defined(UNDER_CE) -# include "asio/detail/wince_thread.hpp" -# elif defined(ASIO_WINDOWS_APP) -# include "asio/detail/winapp_thread.hpp" -# else -# include "asio/detail/win_thread.hpp" -# endif -#elif defined(ASIO_HAS_STD_THREAD) -# include "asio/detail/std_thread.hpp" -#else -# error Only Windows, POSIX and std::thread are supported! -#endif - -namespace asio { -namespace detail { - -#if !defined(ASIO_HAS_THREADS) -typedef null_thread thread; -#elif defined(ASIO_HAS_PTHREADS) -typedef posix_thread thread; -#elif defined(ASIO_WINDOWS) -# if defined(UNDER_CE) -typedef wince_thread thread; -# elif defined(ASIO_WINDOWS_APP) -typedef winapp_thread thread; -# else -typedef win_thread thread; -# endif -#elif defined(ASIO_HAS_STD_THREAD) -typedef std_thread thread; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_context.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_context.hpp deleted file mode 100644 index 289f3104..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_context.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// -// detail/thread_context.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THREAD_CONTEXT_HPP -#define ASIO_DETAIL_THREAD_CONTEXT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include -#include -#include "asio/detail/call_stack.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class thread_info_base; - -// Base class for things that manage threads (scheduler, win_iocp_io_context). -class thread_context -{ -public: - // Per-thread call stack to track the state of each thread in the context. - typedef call_stack thread_call_stack; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_THREAD_CONTEXT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_group.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_group.hpp deleted file mode 100644 index da774a86..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_group.hpp +++ /dev/null @@ -1,99 +0,0 @@ -// -// detail/thread_group.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THREAD_GROUP_HPP -#define ASIO_DETAIL_THREAD_GROUP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/thread.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class thread_group -{ -public: - // Constructor initialises an empty thread group. - thread_group() - : first_(0) - { - } - - // Destructor joins any remaining threads in the group. - ~thread_group() - { - join(); - } - - // Create a new thread in the group. - template - void create_thread(Function f) - { - first_ = new item(f, first_); - } - - // Create new threads in the group. - template - void create_threads(Function f, std::size_t num_threads) - { - for (std::size_t i = 0; i < num_threads; ++i) - create_thread(f); - } - - // Wait for all threads in the group to exit. - void join() - { - while (first_) - { - first_->thread_.join(); - item* tmp = first_; - first_ = first_->next_; - delete tmp; - } - } - - // Test whether the group is empty. - bool empty() const - { - return first_ == 0; - } - -private: - // Structure used to track a single thread in the group. - struct item - { - template - explicit item(Function f, item* next) - : thread_(f), - next_(next) - { - } - - asio::detail::thread thread_; - item* next_; - }; - - // The first thread in the group. - item* first_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_THREAD_GROUP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_info_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_info_base.hpp deleted file mode 100644 index bc9def55..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/thread_info_base.hpp +++ /dev/null @@ -1,190 +0,0 @@ -// -// detail/thread_info_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THREAD_INFO_BASE_HPP -#define ASIO_DETAIL_THREAD_INFO_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/detail/noncopyable.hpp" - -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) \ - && !defined(ASIO_NO_EXCEPTIONS) -# include -# include "asio/multiple_exceptions.hpp" -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - // && !defined(ASIO_NO_EXCEPTIONS) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class thread_info_base - : private noncopyable -{ -public: - struct default_tag - { - enum { mem_index = 0 }; - }; - - struct awaitable_frame_tag - { - enum { mem_index = 1 }; - }; - - struct executor_function_tag - { - enum { mem_index = 2 }; - }; - - thread_info_base() -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) \ - && !defined(ASIO_NO_EXCEPTIONS) - : has_pending_exception_(0) -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - // && !defined(ASIO_NO_EXCEPTIONS) - { - for (int i = 0; i < max_mem_index; ++i) - reusable_memory_[i] = 0; - } - - ~thread_info_base() - { - for (int i = 0; i < max_mem_index; ++i) - { - // The following test for non-null pointers is technically redundant, but - // it is significantly faster when using a tight io_context::poll() loop - // in latency sensitive applications. - if (reusable_memory_[i]) - ::operator delete(reusable_memory_[i]); - } - } - - static void* allocate(thread_info_base* this_thread, std::size_t size) - { - return allocate(default_tag(), this_thread, size); - } - - static void deallocate(thread_info_base* this_thread, - void* pointer, std::size_t size) - { - deallocate(default_tag(), this_thread, pointer, size); - } - - template - static void* allocate(Purpose, thread_info_base* this_thread, - std::size_t size) - { - std::size_t chunks = (size + chunk_size - 1) / chunk_size; - - if (this_thread && this_thread->reusable_memory_[Purpose::mem_index]) - { - void* const pointer = this_thread->reusable_memory_[Purpose::mem_index]; - this_thread->reusable_memory_[Purpose::mem_index] = 0; - - unsigned char* const mem = static_cast(pointer); - if (static_cast(mem[0]) >= chunks) - { - mem[size] = mem[0]; - return pointer; - } - - ::operator delete(pointer); - } - - void* const pointer = ::operator new(chunks * chunk_size + 1); - unsigned char* const mem = static_cast(pointer); - mem[size] = (chunks <= UCHAR_MAX) ? static_cast(chunks) : 0; - return pointer; - } - - template - static void deallocate(Purpose, thread_info_base* this_thread, - void* pointer, std::size_t size) - { - if (size <= chunk_size * UCHAR_MAX) - { - if (this_thread && this_thread->reusable_memory_[Purpose::mem_index] == 0) - { - unsigned char* const mem = static_cast(pointer); - mem[0] = mem[size]; - this_thread->reusable_memory_[Purpose::mem_index] = pointer; - return; - } - } - - ::operator delete(pointer); - } - - void capture_current_exception() - { -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) \ - && !defined(ASIO_NO_EXCEPTIONS) - switch (has_pending_exception_) - { - case 0: - has_pending_exception_ = 1; - pending_exception_ = std::current_exception(); - break; - case 1: - has_pending_exception_ = 2; - pending_exception_ = - std::make_exception_ptr( - multiple_exceptions(pending_exception_)); - break; - default: - break; - } -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - // && !defined(ASIO_NO_EXCEPTIONS) - } - - void rethrow_pending_exception() - { -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) \ - && !defined(ASIO_NO_EXCEPTIONS) - if (has_pending_exception_ > 0) - { - has_pending_exception_ = 0; - std::exception_ptr ex( - ASIO_MOVE_CAST(std::exception_ptr)( - pending_exception_)); - std::rethrow_exception(ex); - } -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - // && !defined(ASIO_NO_EXCEPTIONS) - } - -private: - enum { chunk_size = 4 }; - enum { max_mem_index = 3 }; - void* reusable_memory_[max_mem_index]; - -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) \ - && !defined(ASIO_NO_EXCEPTIONS) - int has_pending_exception_; - std::exception_ptr pending_exception_; -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - // && !defined(ASIO_NO_EXCEPTIONS) -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_THREAD_INFO_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_error.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_error.hpp deleted file mode 100644 index 6ed31127..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_error.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// -// detail/throw_error.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THROW_ERROR_HPP -#define ASIO_DETAIL_THROW_ERROR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/error_code.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -ASIO_DECL void do_throw_error(const asio::error_code& err); - -ASIO_DECL void do_throw_error(const asio::error_code& err, - const char* location); - -inline void throw_error(const asio::error_code& err) -{ - if (err) - do_throw_error(err); -} - -inline void throw_error(const asio::error_code& err, - const char* location) -{ - if (err) - do_throw_error(err, location); -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/throw_error.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_THROW_ERROR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_exception.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_exception.hpp deleted file mode 100644 index d6dcaab5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/throw_exception.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// -// detail/throw_exception.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_THROW_EXCEPTION_HPP -#define ASIO_DETAIL_THROW_EXCEPTION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_THROW_EXCEPTION) -# include -#endif // defined(ASIO_BOOST_THROW_EXCEPTION) - -namespace asio { -namespace detail { - -#if defined(ASIO_HAS_BOOST_THROW_EXCEPTION) -using boost::throw_exception; -#else // defined(ASIO_HAS_BOOST_THROW_EXCEPTION) - -// Declare the throw_exception function for all targets. -template -void throw_exception(const Exception& e); - -// Only define the throw_exception function when exceptions are enabled. -// Otherwise, it is up to the application to provide a definition of this -// function. -# if !defined(ASIO_NO_EXCEPTIONS) -template -void throw_exception(const Exception& e) -{ - throw e; -} -# endif // !defined(ASIO_NO_EXCEPTIONS) - -#endif // defined(ASIO_HAS_BOOST_THROW_EXCEPTION) - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_THROW_EXCEPTION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue.hpp deleted file mode 100644 index 32ebdc7c..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue.hpp +++ /dev/null @@ -1,360 +0,0 @@ -// -// detail/timer_queue.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_QUEUE_HPP -#define ASIO_DETAIL_TIMER_QUEUE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/detail/cstdint.hpp" -#include "asio/detail/date_time_fwd.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class timer_queue - : public timer_queue_base -{ -public: - // The time type. - typedef typename Time_Traits::time_type time_type; - - // The duration type. - typedef typename Time_Traits::duration_type duration_type; - - // Per-timer data. - class per_timer_data - { - public: - per_timer_data() : - heap_index_((std::numeric_limits::max)()), - next_(0), prev_(0) - { - } - - private: - friend class timer_queue; - - // The operations waiting on the timer. - op_queue op_queue_; - - // The index of the timer in the heap. - std::size_t heap_index_; - - // Pointers to adjacent timers in a linked list. - per_timer_data* next_; - per_timer_data* prev_; - }; - - // Constructor. - timer_queue() - : timers_(), - heap_() - { - } - - // Add a new timer to the queue. Returns true if this is the timer that is - // earliest in the queue, in which case the reactor's event demultiplexing - // function call may need to be interrupted and restarted. - bool enqueue_timer(const time_type& time, per_timer_data& timer, wait_op* op) - { - // Enqueue the timer object. - if (timer.prev_ == 0 && &timer != timers_) - { - if (this->is_positive_infinity(time)) - { - // No heap entry is required for timers that never expire. - timer.heap_index_ = (std::numeric_limits::max)(); - } - else - { - // Put the new timer at the correct position in the heap. This is done - // first since push_back() can throw due to allocation failure. - timer.heap_index_ = heap_.size(); - heap_entry entry = { time, &timer }; - heap_.push_back(entry); - up_heap(heap_.size() - 1); - } - - // Insert the new timer into the linked list of active timers. - timer.next_ = timers_; - timer.prev_ = 0; - if (timers_) - timers_->prev_ = &timer; - timers_ = &timer; - } - - // Enqueue the individual timer operation. - timer.op_queue_.push(op); - - // Interrupt reactor only if newly added timer is first to expire. - return timer.heap_index_ == 0 && timer.op_queue_.front() == op; - } - - // Whether there are no timers in the queue. - virtual bool empty() const - { - return timers_ == 0; - } - - // Get the time for the timer that is earliest in the queue. - virtual long wait_duration_msec(long max_duration) const - { - if (heap_.empty()) - return max_duration; - - return this->to_msec( - Time_Traits::to_posix_duration( - Time_Traits::subtract(heap_[0].time_, Time_Traits::now())), - max_duration); - } - - // Get the time for the timer that is earliest in the queue. - virtual long wait_duration_usec(long max_duration) const - { - if (heap_.empty()) - return max_duration; - - return this->to_usec( - Time_Traits::to_posix_duration( - Time_Traits::subtract(heap_[0].time_, Time_Traits::now())), - max_duration); - } - - // Dequeue all timers not later than the current time. - virtual void get_ready_timers(op_queue& ops) - { - if (!heap_.empty()) - { - const time_type now = Time_Traits::now(); - while (!heap_.empty() && !Time_Traits::less_than(now, heap_[0].time_)) - { - per_timer_data* timer = heap_[0].timer_; - ops.push(timer->op_queue_); - remove_timer(*timer); - } - } - } - - // Dequeue all timers. - virtual void get_all_timers(op_queue& ops) - { - while (timers_) - { - per_timer_data* timer = timers_; - timers_ = timers_->next_; - ops.push(timer->op_queue_); - timer->next_ = 0; - timer->prev_ = 0; - } - - heap_.clear(); - } - - // Cancel and dequeue operations for the given timer. - std::size_t cancel_timer(per_timer_data& timer, op_queue& ops, - std::size_t max_cancelled = (std::numeric_limits::max)()) - { - std::size_t num_cancelled = 0; - if (timer.prev_ != 0 || &timer == timers_) - { - while (wait_op* op = (num_cancelled != max_cancelled) - ? timer.op_queue_.front() : 0) - { - op->ec_ = asio::error::operation_aborted; - timer.op_queue_.pop(); - ops.push(op); - ++num_cancelled; - } - if (timer.op_queue_.empty()) - remove_timer(timer); - } - return num_cancelled; - } - - // Move operations from one timer to another, empty timer. - void move_timer(per_timer_data& target, per_timer_data& source) - { - target.op_queue_.push(source.op_queue_); - - target.heap_index_ = source.heap_index_; - source.heap_index_ = (std::numeric_limits::max)(); - - if (target.heap_index_ < heap_.size()) - heap_[target.heap_index_].timer_ = ⌖ - - if (timers_ == &source) - timers_ = ⌖ - if (source.prev_) - source.prev_->next_ = ⌖ - if (source.next_) - source.next_->prev_= ⌖ - target.next_ = source.next_; - target.prev_ = source.prev_; - source.next_ = 0; - source.prev_ = 0; - } - -private: - // Move the item at the given index up the heap to its correct position. - void up_heap(std::size_t index) - { - while (index > 0) - { - std::size_t parent = (index - 1) / 2; - if (!Time_Traits::less_than(heap_[index].time_, heap_[parent].time_)) - break; - swap_heap(index, parent); - index = parent; - } - } - - // Move the item at the given index down the heap to its correct position. - void down_heap(std::size_t index) - { - std::size_t child = index * 2 + 1; - while (child < heap_.size()) - { - std::size_t min_child = (child + 1 == heap_.size() - || Time_Traits::less_than( - heap_[child].time_, heap_[child + 1].time_)) - ? child : child + 1; - if (Time_Traits::less_than(heap_[index].time_, heap_[min_child].time_)) - break; - swap_heap(index, min_child); - index = min_child; - child = index * 2 + 1; - } - } - - // Swap two entries in the heap. - void swap_heap(std::size_t index1, std::size_t index2) - { - heap_entry tmp = heap_[index1]; - heap_[index1] = heap_[index2]; - heap_[index2] = tmp; - heap_[index1].timer_->heap_index_ = index1; - heap_[index2].timer_->heap_index_ = index2; - } - - // Remove a timer from the heap and list of timers. - void remove_timer(per_timer_data& timer) - { - // Remove the timer from the heap. - std::size_t index = timer.heap_index_; - if (!heap_.empty() && index < heap_.size()) - { - if (index == heap_.size() - 1) - { - timer.heap_index_ = (std::numeric_limits::max)(); - heap_.pop_back(); - } - else - { - swap_heap(index, heap_.size() - 1); - timer.heap_index_ = (std::numeric_limits::max)(); - heap_.pop_back(); - if (index > 0 && Time_Traits::less_than( - heap_[index].time_, heap_[(index - 1) / 2].time_)) - up_heap(index); - else - down_heap(index); - } - } - - // Remove the timer from the linked list of active timers. - if (timers_ == &timer) - timers_ = timer.next_; - if (timer.prev_) - timer.prev_->next_ = timer.next_; - if (timer.next_) - timer.next_->prev_= timer.prev_; - timer.next_ = 0; - timer.prev_ = 0; - } - - // Determine if the specified absolute time is positive infinity. - template - static bool is_positive_infinity(const Time_Type&) - { - return false; - } - - // Determine if the specified absolute time is positive infinity. - template - static bool is_positive_infinity( - const boost::date_time::base_time& time) - { - return time.is_pos_infinity(); - } - - // Helper function to convert a duration into milliseconds. - template - long to_msec(const Duration& d, long max_duration) const - { - if (d.ticks() <= 0) - return 0; - int64_t msec = d.total_milliseconds(); - if (msec == 0) - return 1; - if (msec > max_duration) - return max_duration; - return static_cast(msec); - } - - // Helper function to convert a duration into microseconds. - template - long to_usec(const Duration& d, long max_duration) const - { - if (d.ticks() <= 0) - return 0; - int64_t usec = d.total_microseconds(); - if (usec == 0) - return 1; - if (usec > max_duration) - return max_duration; - return static_cast(usec); - } - - // The head of a linked list of all active timers. - per_timer_data* timers_; - - struct heap_entry - { - // The time when the timer should fire. - time_type time_; - - // The associated timer with enqueued operations. - per_timer_data* timer_; - }; - - // The heap of timers, with the earliest timer at the front. - std::vector heap_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_TIMER_QUEUE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_base.hpp deleted file mode 100644 index 28e5b276..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_base.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// -// detail/timer_queue_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_QUEUE_BASE_HPP -#define ASIO_DETAIL_TIMER_QUEUE_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class timer_queue_base - : private noncopyable -{ -public: - // Constructor. - timer_queue_base() : next_(0) {} - - // Destructor. - virtual ~timer_queue_base() {} - - // Whether there are no timers in the queue. - virtual bool empty() const = 0; - - // Get the time to wait until the next timer. - virtual long wait_duration_msec(long max_duration) const = 0; - - // Get the time to wait until the next timer. - virtual long wait_duration_usec(long max_duration) const = 0; - - // Dequeue all ready timers. - virtual void get_ready_timers(op_queue& ops) = 0; - - // Dequeue all timers. - virtual void get_all_timers(op_queue& ops) = 0; - -private: - friend class timer_queue_set; - - // Next timer queue in the set. - timer_queue_base* next_; -}; - -template -class timer_queue; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_TIMER_QUEUE_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_ptime.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_ptime.hpp deleted file mode 100644 index ec25861a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_ptime.hpp +++ /dev/null @@ -1,99 +0,0 @@ -// -// detail/timer_queue_ptime.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP -#define ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_BOOST_DATE_TIME) - -#include "asio/time_traits.hpp" -#include "asio/detail/timer_queue.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct forwarding_posix_time_traits : time_traits {}; - -// Template specialisation for the commonly used instantation. -template <> -class timer_queue > - : public timer_queue_base -{ -public: - // The time type. - typedef boost::posix_time::ptime time_type; - - // The duration type. - typedef boost::posix_time::time_duration duration_type; - - // Per-timer data. - typedef timer_queue::per_timer_data - per_timer_data; - - // Constructor. - ASIO_DECL timer_queue(); - - // Destructor. - ASIO_DECL virtual ~timer_queue(); - - // Add a new timer to the queue. Returns true if this is the timer that is - // earliest in the queue, in which case the reactor's event demultiplexing - // function call may need to be interrupted and restarted. - ASIO_DECL bool enqueue_timer(const time_type& time, - per_timer_data& timer, wait_op* op); - - // Whether there are no timers in the queue. - ASIO_DECL virtual bool empty() const; - - // Get the time for the timer that is earliest in the queue. - ASIO_DECL virtual long wait_duration_msec(long max_duration) const; - - // Get the time for the timer that is earliest in the queue. - ASIO_DECL virtual long wait_duration_usec(long max_duration) const; - - // Dequeue all timers not later than the current time. - ASIO_DECL virtual void get_ready_timers(op_queue& ops); - - // Dequeue all timers. - ASIO_DECL virtual void get_all_timers(op_queue& ops); - - // Cancel and dequeue operations for the given timer. - ASIO_DECL std::size_t cancel_timer( - per_timer_data& timer, op_queue& ops, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move operations from one timer to another, empty timer. - ASIO_DECL void move_timer(per_timer_data& target, - per_timer_data& source); - -private: - timer_queue impl_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/timer_queue_ptime.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_BOOST_DATE_TIME) - -#endif // ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_set.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_set.hpp deleted file mode 100644 index 9a3389f2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_queue_set.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -// detail/timer_queue_set.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_QUEUE_SET_HPP -#define ASIO_DETAIL_TIMER_QUEUE_SET_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/timer_queue_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class timer_queue_set -{ -public: - // Constructor. - ASIO_DECL timer_queue_set(); - - // Add a timer queue to the set. - ASIO_DECL void insert(timer_queue_base* q); - - // Remove a timer queue from the set. - ASIO_DECL void erase(timer_queue_base* q); - - // Determine whether all queues are empty. - ASIO_DECL bool all_empty() const; - - // Get the wait duration in milliseconds. - ASIO_DECL long wait_duration_msec(long max_duration) const; - - // Get the wait duration in microseconds. - ASIO_DECL long wait_duration_usec(long max_duration) const; - - // Dequeue all ready timers. - ASIO_DECL void get_ready_timers(op_queue& ops); - - // Dequeue all timers. - ASIO_DECL void get_all_timers(op_queue& ops); - -private: - timer_queue_base* first_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/timer_queue_set.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_DETAIL_TIMER_QUEUE_SET_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler.hpp deleted file mode 100644 index 5f4ab9e6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// detail/timer_scheduler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_SCHEDULER_HPP -#define ASIO_DETAIL_TIMER_SCHEDULER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/timer_scheduler_fwd.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) -# include "asio/detail/winrt_timer_scheduler.hpp" -#elif defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#elif defined(ASIO_HAS_EPOLL) -# include "asio/detail/epoll_reactor.hpp" -#elif defined(ASIO_HAS_KQUEUE) -# include "asio/detail/kqueue_reactor.hpp" -#elif defined(ASIO_HAS_DEV_POLL) -# include "asio/detail/dev_poll_reactor.hpp" -#else -# include "asio/detail/select_reactor.hpp" -#endif - -#endif // ASIO_DETAIL_TIMER_SCHEDULER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp deleted file mode 100644 index ab4e0a78..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -// detail/timer_scheduler_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP -#define ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -namespace asio { -namespace detail { - -#if defined(ASIO_WINDOWS_RUNTIME) -typedef class winrt_timer_scheduler timer_scheduler; -#elif defined(ASIO_HAS_IOCP) -typedef class win_iocp_io_context timer_scheduler; -#elif defined(ASIO_HAS_EPOLL) -typedef class epoll_reactor timer_scheduler; -#elif defined(ASIO_HAS_KQUEUE) -typedef class kqueue_reactor timer_scheduler; -#elif defined(ASIO_HAS_DEV_POLL) -typedef class dev_poll_reactor timer_scheduler; -#else -typedef class select_reactor timer_scheduler; -#endif - -} // namespace detail -} // namespace asio - -#endif // ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/tss_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/tss_ptr.hpp deleted file mode 100644 index 9bc8ab19..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/tss_ptr.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// -// detail/tss_ptr.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TSS_PTR_HPP -#define ASIO_DETAIL_TSS_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_THREADS) -# include "asio/detail/null_tss_ptr.hpp" -#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) -# include "asio/detail/keyword_tss_ptr.hpp" -#elif defined(ASIO_WINDOWS) -# include "asio/detail/win_tss_ptr.hpp" -#elif defined(ASIO_HAS_PTHREADS) -# include "asio/detail/posix_tss_ptr.hpp" -#else -# error Only Windows and POSIX are supported! -#endif - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class tss_ptr -#if !defined(ASIO_HAS_THREADS) - : public null_tss_ptr -#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) - : public keyword_tss_ptr -#elif defined(ASIO_WINDOWS) - : public win_tss_ptr -#elif defined(ASIO_HAS_PTHREADS) - : public posix_tss_ptr -#endif -{ -public: - void operator=(T* value) - { -#if !defined(ASIO_HAS_THREADS) - null_tss_ptr::operator=(value); -#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION) - keyword_tss_ptr::operator=(value); -#elif defined(ASIO_WINDOWS) - win_tss_ptr::operator=(value); -#elif defined(ASIO_HAS_PTHREADS) - posix_tss_ptr::operator=(value); -#endif - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_TSS_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/type_traits.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/type_traits.hpp deleted file mode 100644 index 92792aa7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/type_traits.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// detail/type_traits.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_TYPE_TRAITS_HPP -#define ASIO_DETAIL_TYPE_TRAITS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_TYPE_TRAITS) -# include -#else // defined(ASIO_HAS_STD_TYPE_TRAITS) -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -#endif // defined(ASIO_HAS_STD_TYPE_TRAITS) - -namespace asio { - -#if defined(ASIO_HAS_STD_TYPE_TRAITS) -using std::add_const; -using std::add_lvalue_reference; -using std::aligned_storage; -using std::alignment_of; -using std::conditional; -using std::decay; -using std::declval; -using std::enable_if; -using std::false_type; -using std::integral_constant; -using std::is_base_of; -using std::is_class; -using std::is_const; -using std::is_constructible; -using std::is_convertible; -using std::is_copy_constructible; -using std::is_destructible; -using std::is_function; -using std::is_move_constructible; -using std::is_nothrow_copy_constructible; -using std::is_nothrow_destructible; -using std::is_object; -using std::is_reference; -using std::is_same; -using std::is_scalar; -using std::remove_cv; -template -struct remove_cvref : remove_cv::type> {}; -using std::remove_pointer; -using std::remove_reference; -#if defined(ASIO_HAS_STD_INVOKE_RESULT) -template struct result_of; -template -struct result_of : std::invoke_result {}; -#else // defined(ASIO_HAS_STD_INVOKE_RESULT) -using std::result_of; -#endif // defined(ASIO_HAS_STD_INVOKE_RESULT) -using std::true_type; -#else // defined(ASIO_HAS_STD_TYPE_TRAITS) -using boost::add_const; -using boost::add_lvalue_reference; -using boost::aligned_storage; -using boost::alignment_of; -template -struct enable_if : boost::enable_if_c {}; -using boost::conditional; -using boost::decay; -using boost::declval; -using boost::false_type; -using boost::integral_constant; -using boost::is_base_of; -using boost::is_class; -using boost::is_const; -using boost::is_constructible; -using boost::is_convertible; -using boost::is_copy_constructible; -using boost::is_destructible; -using boost::is_function; -#if defined(ASIO_HAS_MOVE) -template -struct is_move_constructible : false_type {}; -#else // defined(ASIO_HAS_MOVE) -template -struct is_move_constructible : is_copy_constructible {}; -#endif // defined(ASIO_HAS_MOVE) -template -struct is_nothrow_copy_constructible : boost::has_nothrow_copy {}; -template -struct is_nothrow_destructible : boost::has_nothrow_destructor {}; -using boost::is_object; -using boost::is_reference; -using boost::is_same; -using boost::is_scalar; -using boost::remove_cv; -template -struct remove_cvref : remove_cv::type> {}; -using boost::remove_pointer; -using boost::remove_reference; -using boost::result_of; -using boost::true_type; -#endif // defined(ASIO_HAS_STD_TYPE_TRAITS) - -template struct void_type { typedef void type; }; - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template struct conjunction : true_type {}; -template struct conjunction : T {}; -template struct conjunction : - conditional, Head>::type {}; - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -} // namespace asio - -#endif // ASIO_DETAIL_TYPE_TRAITS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/variadic_templates.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/variadic_templates.hpp deleted file mode 100644 index 3ef67235..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/variadic_templates.hpp +++ /dev/null @@ -1,294 +0,0 @@ -// -// detail/variadic_templates.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_VARIADIC_TEMPLATES_HPP -#define ASIO_DETAIL_VARIADIC_TEMPLATES_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -# define ASIO_VARIADIC_TPARAMS(n) ASIO_VARIADIC_TPARAMS_##n - -# define ASIO_VARIADIC_TPARAMS_1 \ - typename T1 -# define ASIO_VARIADIC_TPARAMS_2 \ - typename T1, typename T2 -# define ASIO_VARIADIC_TPARAMS_3 \ - typename T1, typename T2, typename T3 -# define ASIO_VARIADIC_TPARAMS_4 \ - typename T1, typename T2, typename T3, typename T4 -# define ASIO_VARIADIC_TPARAMS_5 \ - typename T1, typename T2, typename T3, typename T4, typename T5 -# define ASIO_VARIADIC_TPARAMS_6 \ - typename T1, typename T2, typename T3, typename T4, typename T5, \ - typename T6 -# define ASIO_VARIADIC_TPARAMS_7 \ - typename T1, typename T2, typename T3, typename T4, typename T5, \ - typename T6, typename T7 -# define ASIO_VARIADIC_TPARAMS_8 \ - typename T1, typename T2, typename T3, typename T4, typename T5, \ - typename T6, typename T7, typename T8 - -# define ASIO_VARIADIC_TARGS(n) ASIO_VARIADIC_TARGS_##n - -# define ASIO_VARIADIC_TARGS_1 T1 -# define ASIO_VARIADIC_TARGS_2 T1, T2 -# define ASIO_VARIADIC_TARGS_3 T1, T2, T3 -# define ASIO_VARIADIC_TARGS_4 T1, T2, T3, T4 -# define ASIO_VARIADIC_TARGS_5 T1, T2, T3, T4, T5 -# define ASIO_VARIADIC_TARGS_6 T1, T2, T3, T4, T5, T6 -# define ASIO_VARIADIC_TARGS_7 T1, T2, T3, T4, T5, T6, T7 -# define ASIO_VARIADIC_TARGS_8 T1, T2, T3, T4, T5, T6, T7, T8 - -# define ASIO_VARIADIC_BYVAL_PARAMS(n) \ - ASIO_VARIADIC_BYVAL_PARAMS_##n - -# define ASIO_VARIADIC_BYVAL_PARAMS_1 T1 x1 -# define ASIO_VARIADIC_BYVAL_PARAMS_2 T1 x1, T2 x2 -# define ASIO_VARIADIC_BYVAL_PARAMS_3 T1 x1, T2 x2, T3 x3 -# define ASIO_VARIADIC_BYVAL_PARAMS_4 T1 x1, T2 x2, T3 x3, T4 x4 -# define ASIO_VARIADIC_BYVAL_PARAMS_5 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5 -# define ASIO_VARIADIC_BYVAL_PARAMS_6 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, \ - T6 x6 -# define ASIO_VARIADIC_BYVAL_PARAMS_7 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, \ - T6 x6, T7 x7 -# define ASIO_VARIADIC_BYVAL_PARAMS_8 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, \ - T6 x6, T7 x7, T8 x8 - -# define ASIO_VARIADIC_BYVAL_ARGS(n) \ - ASIO_VARIADIC_BYVAL_ARGS_##n - -# define ASIO_VARIADIC_BYVAL_ARGS_1 x1 -# define ASIO_VARIADIC_BYVAL_ARGS_2 x1, x2 -# define ASIO_VARIADIC_BYVAL_ARGS_3 x1, x2, x3 -# define ASIO_VARIADIC_BYVAL_ARGS_4 x1, x2, x3, x4 -# define ASIO_VARIADIC_BYVAL_ARGS_5 x1, x2, x3, x4, x5 -# define ASIO_VARIADIC_BYVAL_ARGS_6 x1, x2, x3, x4, x5, x6 -# define ASIO_VARIADIC_BYVAL_ARGS_7 x1, x2, x3, x4, x5, x6, x7 -# define ASIO_VARIADIC_BYVAL_ARGS_8 x1, x2, x3, x4, x5, x6, x7, x8 - -# define ASIO_VARIADIC_CONSTREF_PARAMS(n) \ - ASIO_VARIADIC_CONSTREF_PARAMS_##n - -# define ASIO_VARIADIC_CONSTREF_PARAMS_1 \ - const T1& x1 -# define ASIO_VARIADIC_CONSTREF_PARAMS_2 \ - const T1& x1, const T2& x2 -# define ASIO_VARIADIC_CONSTREF_PARAMS_3 \ - const T1& x1, const T2& x2, const T3& x3 -# define ASIO_VARIADIC_CONSTREF_PARAMS_4 \ - const T1& x1, const T2& x2, const T3& x3, const T4& x4 -# define ASIO_VARIADIC_CONSTREF_PARAMS_5 \ - const T1& x1, const T2& x2, const T3& x3, const T4& x4, const T5& x5 -# define ASIO_VARIADIC_CONSTREF_PARAMS_6 \ - const T1& x1, const T2& x2, const T3& x3, const T4& x4, const T5& x5, \ - const T6& x6 -# define ASIO_VARIADIC_CONSTREF_PARAMS_7 \ - const T1& x1, const T2& x2, const T3& x3, const T4& x4, const T5& x5, \ - const T6& x6, const T7& x7 -# define ASIO_VARIADIC_CONSTREF_PARAMS_8 \ - const T1& x1, const T2& x2, const T3& x3, const T4& x4, const T5& x5, \ - const T6& x6, const T7& x7, const T8& x8 - -# define ASIO_VARIADIC_MOVE_PARAMS(n) \ - ASIO_VARIADIC_MOVE_PARAMS_##n - -# define ASIO_VARIADIC_MOVE_PARAMS_1 \ - ASIO_MOVE_ARG(T1) x1 -# define ASIO_VARIADIC_MOVE_PARAMS_2 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2 -# define ASIO_VARIADIC_MOVE_PARAMS_3 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3 -# define ASIO_VARIADIC_MOVE_PARAMS_4 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3, ASIO_MOVE_ARG(T4) x4 -# define ASIO_VARIADIC_MOVE_PARAMS_5 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3, ASIO_MOVE_ARG(T4) x4, \ - ASIO_MOVE_ARG(T5) x5 -# define ASIO_VARIADIC_MOVE_PARAMS_6 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3, ASIO_MOVE_ARG(T4) x4, \ - ASIO_MOVE_ARG(T5) x5, ASIO_MOVE_ARG(T6) x6 -# define ASIO_VARIADIC_MOVE_PARAMS_7 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3, ASIO_MOVE_ARG(T4) x4, \ - ASIO_MOVE_ARG(T5) x5, ASIO_MOVE_ARG(T6) x6, \ - ASIO_MOVE_ARG(T7) x7 -# define ASIO_VARIADIC_MOVE_PARAMS_8 \ - ASIO_MOVE_ARG(T1) x1, ASIO_MOVE_ARG(T2) x2, \ - ASIO_MOVE_ARG(T3) x3, ASIO_MOVE_ARG(T4) x4, \ - ASIO_MOVE_ARG(T5) x5, ASIO_MOVE_ARG(T6) x6, \ - ASIO_MOVE_ARG(T7) x7, ASIO_MOVE_ARG(T8) x8 - -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS(n) \ - ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_##n - -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_1 \ - ASIO_MOVE_ARG(T1) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_2 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_3 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_4 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3), ASIO_MOVE_ARG(T4) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_5 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3), ASIO_MOVE_ARG(T4), \ - ASIO_MOVE_ARG(T5) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_6 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3), ASIO_MOVE_ARG(T4), \ - ASIO_MOVE_ARG(T5), ASIO_MOVE_ARG(T6) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_7 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3), ASIO_MOVE_ARG(T4), \ - ASIO_MOVE_ARG(T5), ASIO_MOVE_ARG(T6), \ - ASIO_MOVE_ARG(T7) -# define ASIO_VARIADIC_UNNAMED_MOVE_PARAMS_8 \ - ASIO_MOVE_ARG(T1), ASIO_MOVE_ARG(T2), \ - ASIO_MOVE_ARG(T3), ASIO_MOVE_ARG(T4), \ - ASIO_MOVE_ARG(T5), ASIO_MOVE_ARG(T6), \ - ASIO_MOVE_ARG(T7), ASIO_MOVE_ARG(T8) - -# define ASIO_VARIADIC_MOVE_ARGS(n) \ - ASIO_VARIADIC_MOVE_ARGS_##n - -# define ASIO_VARIADIC_MOVE_ARGS_1 \ - ASIO_MOVE_CAST(T1)(x1) -# define ASIO_VARIADIC_MOVE_ARGS_2 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2) -# define ASIO_VARIADIC_MOVE_ARGS_3 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3) -# define ASIO_VARIADIC_MOVE_ARGS_4 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3), ASIO_MOVE_CAST(T4)(x4) -# define ASIO_VARIADIC_MOVE_ARGS_5 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3), ASIO_MOVE_CAST(T4)(x4), \ - ASIO_MOVE_CAST(T5)(x5) -# define ASIO_VARIADIC_MOVE_ARGS_6 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3), ASIO_MOVE_CAST(T4)(x4), \ - ASIO_MOVE_CAST(T5)(x5), ASIO_MOVE_CAST(T6)(x6) -# define ASIO_VARIADIC_MOVE_ARGS_7 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3), ASIO_MOVE_CAST(T4)(x4), \ - ASIO_MOVE_CAST(T5)(x5), ASIO_MOVE_CAST(T6)(x6), \ - ASIO_MOVE_CAST(T7)(x7) -# define ASIO_VARIADIC_MOVE_ARGS_8 \ - ASIO_MOVE_CAST(T1)(x1), ASIO_MOVE_CAST(T2)(x2), \ - ASIO_MOVE_CAST(T3)(x3), ASIO_MOVE_CAST(T4)(x4), \ - ASIO_MOVE_CAST(T5)(x5), ASIO_MOVE_CAST(T6)(x6), \ - ASIO_MOVE_CAST(T7)(x7), ASIO_MOVE_CAST(T8)(x8) - -# define ASIO_VARIADIC_DECLVAL(n) \ - ASIO_VARIADIC_DECLVAL_##n - -# define ASIO_VARIADIC_DECLVAL_1 \ - declval() -# define ASIO_VARIADIC_DECLVAL_2 \ - declval(), declval() -# define ASIO_VARIADIC_DECLVAL_3 \ - declval(), declval(), declval() -# define ASIO_VARIADIC_DECLVAL_4 \ - declval(), declval(), declval(), declval() -# define ASIO_VARIADIC_DECLVAL_5 \ - declval(), declval(), declval(), declval(), \ - declval() -# define ASIO_VARIADIC_DECLVAL_6 \ - declval(), declval(), declval(), declval(), \ - declval(), declval() -# define ASIO_VARIADIC_DECLVAL_7 \ - declval(), declval(), declval(), declval(), \ - declval(), declval(), declval() -# define ASIO_VARIADIC_DECLVAL_8 \ - declval(), declval(), declval(), declval(), \ - declval(), declval(), declval(), declval() - -# define ASIO_VARIADIC_MOVE_DECLVAL(n) \ - ASIO_VARIADIC_MOVE_DECLVAL_##n - -# define ASIO_VARIADIC_MOVE_DECLVAL_1 \ - declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_2 \ - declval(), declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_3 \ - declval(), declval(), \ - declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_4 \ - declval(), declval(), \ - declval(), declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_5 \ - declval(), declval(), \ - declval(), declval(), \ - declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_6 \ - declval(), declval(), \ - declval(), declval(), \ - declval(), declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_7 \ - declval(), declval(), \ - declval(), declval(), \ - declval(), declval(), \ - declval() -# define ASIO_VARIADIC_MOVE_DECLVAL_8 \ - declval(), declval(), \ - declval(), declval(), \ - declval(), declval(), \ - declval(), declval() - -# define ASIO_VARIADIC_DECAY(n) \ - ASIO_VARIADIC_DECAY_##n - -# define ASIO_VARIADIC_DECAY_1 \ - typename decay::type -# define ASIO_VARIADIC_DECAY_2 \ - typename decay::type, typename decay::type -# define ASIO_VARIADIC_DECAY_3 \ - typename decay::type, typename decay::type, \ - typename decay::type -# define ASIO_VARIADIC_DECAY_4 \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type -# define ASIO_VARIADIC_DECAY_5 \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type -# define ASIO_VARIADIC_DECAY_6 \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type -# define ASIO_VARIADIC_DECAY_7 \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type -# define ASIO_VARIADIC_DECAY_8 \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type, \ - typename decay::type, typename decay::type - -# define ASIO_VARIADIC_GENERATE(m) m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) -# define ASIO_VARIADIC_GENERATE_5(m) m(1) m(2) m(3) m(4) m(5) - -#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#endif // ASIO_DETAIL_VARIADIC_TEMPLATES_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_handler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_handler.hpp deleted file mode 100644 index 0c098198..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_handler.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// detail/wait_handler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WAIT_HANDLER_HPP -#define ASIO_DETAIL_WAIT_HANDLER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/wait_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class wait_handler : public wait_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(wait_handler); - - wait_handler(Handler& h, const IoExecutor& io_ex) - : wait_op(&wait_handler::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(h)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& /*ec*/, - std::size_t /*bytes_transferred*/) - { - // Take ownership of the handler object. - wait_handler* h(static_cast(base)); - ptr p = { asio::detail::addressof(h->handler_), h, h }; - - ASIO_HANDLER_COMPLETION((*h)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - h->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(h->handler_, h->ec_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WAIT_HANDLER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_op.hpp deleted file mode 100644 index 9ea7c7b5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wait_op.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// detail/wait_op.hpp -// ~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WAIT_OP_HPP -#define ASIO_DETAIL_WAIT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class wait_op - : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - -protected: - wait_op(func_type func) - : operation(func) - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WAIT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_event.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_event.hpp deleted file mode 100644 index 721795b0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_event.hpp +++ /dev/null @@ -1,164 +0,0 @@ -// -// detail/win_event.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_EVENT_HPP -#define ASIO_DETAIL_WIN_EVENT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_event - : private noncopyable -{ -public: - // Constructor. - ASIO_DECL win_event(); - - // Destructor. - ASIO_DECL ~win_event(); - - // Signal the event. (Retained for backward compatibility.) - template - void signal(Lock& lock) - { - this->signal_all(lock); - } - - // Signal all waiters. - template - void signal_all(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - state_ |= 1; - ::SetEvent(events_[0]); - } - - // Unlock the mutex and signal one waiter. - template - void unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - lock.unlock(); - if (have_waiters) - ::SetEvent(events_[1]); - } - - // Unlock the mutex and signal one waiter who may destroy us. - template - void unlock_and_signal_one_for_destruction(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - bool have_waiters = (state_ > 1); - if (have_waiters) - ::SetEvent(events_[1]); - lock.unlock(); - } - - // If there's a waiter, unlock the mutex and signal it. - template - bool maybe_unlock_and_signal_one(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - state_ |= 1; - if (state_ > 1) - { - lock.unlock(); - ::SetEvent(events_[1]); - return true; - } - return false; - } - - // Reset the event. - template - void clear(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - (void)lock; - ::ResetEvent(events_[0]); - state_ &= ~std::size_t(1); - } - - // Wait for the event to become signalled. - template - void wait(Lock& lock) - { - ASIO_ASSERT(lock.locked()); - while ((state_ & 1) == 0) - { - state_ += 2; - lock.unlock(); -#if defined(ASIO_WINDOWS_APP) - ::WaitForMultipleObjectsEx(2, events_, false, INFINITE, false); -#else // defined(ASIO_WINDOWS_APP) - ::WaitForMultipleObjects(2, events_, false, INFINITE); -#endif // defined(ASIO_WINDOWS_APP) - lock.lock(); - state_ -= 2; - } - } - - // Timed wait for the event to become signalled. - template - bool wait_for_usec(Lock& lock, long usec) - { - ASIO_ASSERT(lock.locked()); - if ((state_ & 1) == 0) - { - state_ += 2; - lock.unlock(); - DWORD msec = usec > 0 ? (usec < 1000 ? 1 : usec / 1000) : 0; -#if defined(ASIO_WINDOWS_APP) - ::WaitForMultipleObjectsEx(2, events_, false, msec, false); -#else // defined(ASIO_WINDOWS_APP) - ::WaitForMultipleObjects(2, events_, false, msec); -#endif // defined(ASIO_WINDOWS_APP) - lock.lock(); - state_ -= 2; - } - return (state_ & 1) != 0; - } - -private: - HANDLE events_[2]; - std::size_t state_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_event.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_WIN_EVENT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fd_set_adapter.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fd_set_adapter.hpp deleted file mode 100644 index f8101804..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fd_set_adapter.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// -// detail/win_fd_set_adapter.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP -#define ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/reactor_op_queue.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements. -class win_fd_set_adapter : noncopyable -{ -public: - enum { default_fd_set_size = 1024 }; - - win_fd_set_adapter() - : capacity_(default_fd_set_size), - max_descriptor_(invalid_socket) - { - fd_set_ = static_cast(::operator new( - sizeof(win_fd_set) - sizeof(SOCKET) - + sizeof(SOCKET) * (capacity_))); - fd_set_->fd_count = 0; - } - - ~win_fd_set_adapter() - { - ::operator delete(fd_set_); - } - - void reset() - { - fd_set_->fd_count = 0; - max_descriptor_ = invalid_socket; - } - - bool set(socket_type descriptor) - { - for (u_int i = 0; i < fd_set_->fd_count; ++i) - if (fd_set_->fd_array[i] == descriptor) - return true; - - reserve(fd_set_->fd_count + 1); - fd_set_->fd_array[fd_set_->fd_count++] = descriptor; - return true; - } - - void set(reactor_op_queue& operations, op_queue&) - { - reactor_op_queue::iterator i = operations.begin(); - while (i != operations.end()) - { - reactor_op_queue::iterator op_iter = i++; - reserve(fd_set_->fd_count + 1); - fd_set_->fd_array[fd_set_->fd_count++] = op_iter->first; - } - } - - bool is_set(socket_type descriptor) const - { - return !!__WSAFDIsSet(descriptor, - const_cast(reinterpret_cast(fd_set_))); - } - - operator fd_set*() - { - return reinterpret_cast(fd_set_); - } - - socket_type max_descriptor() const - { - return max_descriptor_; - } - - void perform(reactor_op_queue& operations, - op_queue& ops) const - { - for (u_int i = 0; i < fd_set_->fd_count; ++i) - operations.perform_operations(fd_set_->fd_array[i], ops); - } - -private: - // This structure is defined to be compatible with the Windows API fd_set - // structure, but without being dependent on the value of FD_SETSIZE. We use - // the "struct hack" to allow the number of descriptors to be varied at - // runtime. - struct win_fd_set - { - u_int fd_count; - SOCKET fd_array[1]; - }; - - // Increase the fd_set_ capacity to at least the specified number of elements. - void reserve(u_int n) - { - if (n <= capacity_) - return; - - u_int new_capacity = capacity_ + capacity_ / 2; - if (new_capacity < n) - new_capacity = n; - - win_fd_set* new_fd_set = static_cast(::operator new( - sizeof(win_fd_set) - sizeof(SOCKET) - + sizeof(SOCKET) * (new_capacity))); - - new_fd_set->fd_count = fd_set_->fd_count; - for (u_int i = 0; i < fd_set_->fd_count; ++i) - new_fd_set->fd_array[i] = fd_set_->fd_array[i]; - - ::operator delete(fd_set_); - fd_set_ = new_fd_set; - capacity_ = new_capacity; - } - - win_fd_set* fd_set_; - u_int capacity_; - socket_type max_descriptor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#endif // ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fenced_block.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fenced_block.hpp deleted file mode 100644 index 17a07853..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_fenced_block.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// detail/win_fenced_block.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_FENCED_BLOCK_HPP -#define ASIO_DETAIL_WIN_FENCED_BLOCK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) && !defined(UNDER_CE) - -#include "asio/detail/socket_types.hpp" -#include "asio/detail/noncopyable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_fenced_block - : private noncopyable -{ -public: - enum half_t { half }; - enum full_t { full }; - - // Constructor for a half fenced block. - explicit win_fenced_block(half_t) - { - } - - // Constructor for a full fenced block. - explicit win_fenced_block(full_t) - { -#if defined(__BORLANDC__) - LONG barrier = 0; - ::InterlockedExchange(&barrier, 1); -#elif defined(ASIO_MSVC) \ - && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier)) -# if defined(_M_IX86) -# pragma warning(push) -# pragma warning(disable:4793) - LONG barrier; - __asm { xchg barrier, eax } -# pragma warning(pop) -# endif // defined(_M_IX86) -#else - MemoryBarrier(); -#endif - } - - // Destructor. - ~win_fenced_block() - { -#if defined(__BORLANDC__) - LONG barrier = 0; - ::InterlockedExchange(&barrier, 1); -#elif defined(ASIO_MSVC) \ - && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier)) -# if defined(_M_IX86) -# pragma warning(push) -# pragma warning(disable:4793) - LONG barrier; - __asm { xchg barrier, eax } -# pragma warning(pop) -# endif // defined(_M_IX86) -#else - MemoryBarrier(); -#endif - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE) - -#endif // ASIO_DETAIL_WIN_FENCED_BLOCK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_global.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_global.hpp deleted file mode 100644 index feaa3a37..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_global.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// detail/win_global.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_GLOBAL_HPP -#define ASIO_DETAIL_WIN_GLOBAL_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/static_mutex.hpp" -#include "asio/detail/tss_ptr.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct win_global_impl -{ - // Destructor automatically cleans up the global. - ~win_global_impl() - { - delete ptr_; - } - - static win_global_impl instance_; - static static_mutex mutex_; - T* ptr_; - static tss_ptr tss_ptr_; -}; - -template -win_global_impl win_global_impl::instance_ = { 0 }; - -template -static_mutex win_global_impl::mutex_ = ASIO_STATIC_MUTEX_INIT; - -template -tss_ptr win_global_impl::tss_ptr_; - -template -T& win_global() -{ - if (static_cast(win_global_impl::tss_ptr_) == 0) - { - win_global_impl::mutex_.init(); - static_mutex::scoped_lock lock(win_global_impl::mutex_); - if (win_global_impl::instance_.ptr_ == 0) - win_global_impl::instance_.ptr_ = new T; - win_global_impl::tss_ptr_ = win_global_impl::instance_.ptr_; - } - - return *win_global_impl::tss_ptr_; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WIN_GLOBAL_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp deleted file mode 100644 index 9135cba7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// -// detail/win_iocp_handle_read_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_handle_read_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_read_op); - - win_iocp_handle_read_op(const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_handle_read_op::do_complete), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_handle_read_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - if (owner) - { - // Check whether buffers are still valid. - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_HANDLE_EOF) - ec = asio::error::eof; - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - MutableBufferSequence buffers_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_service.hpp deleted file mode 100644 index d3311d10..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_service.hpp +++ /dev/null @@ -1,335 +0,0 @@ -// -// detail/win_iocp_handle_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP -#define ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/cstdint.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/win_iocp_handle_read_op.hpp" -#include "asio/detail/win_iocp_handle_write_op.hpp" -#include "asio/detail/win_iocp_io_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_iocp_handle_service : - public execution_context_service_base -{ -public: - // The native type of a stream handle. - typedef HANDLE native_handle_type; - - // The implementation type of the stream handle. - class implementation_type - { - public: - // Default constructor. - implementation_type() - : handle_(INVALID_HANDLE_VALUE), - safe_cancellation_thread_id_(0), - next_(0), - prev_(0) - { - } - - private: - // Only this service will have access to the internal values. - friend class win_iocp_handle_service; - - // The native stream handle representation. - native_handle_type handle_; - - // The ID of the thread from which it is safe to cancel asynchronous - // operations. 0 means no asynchronous operations have been started yet. - // ~0 means asynchronous operations have been started from more than one - // thread, and cancellation is not supported for the handle. - DWORD safe_cancellation_thread_id_; - - // Pointers to adjacent handle implementations in linked list. - implementation_type* next_; - implementation_type* prev_; - }; - - ASIO_DECL win_iocp_handle_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new handle implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Move-construct a new handle implementation. - ASIO_DECL void move_construct(implementation_type& impl, - implementation_type& other_impl); - - // Move-assign from another handle implementation. - ASIO_DECL void move_assign(implementation_type& impl, - win_iocp_handle_service& other_service, - implementation_type& other_impl); - - // Destroy a handle implementation. - ASIO_DECL void destroy(implementation_type& impl); - - // Assign a native handle to a handle implementation. - ASIO_DECL asio::error_code assign(implementation_type& impl, - const native_handle_type& handle, asio::error_code& ec); - - // Determine whether the handle is open. - bool is_open(const implementation_type& impl) const - { - return impl.handle_ != INVALID_HANDLE_VALUE; - } - - // Destroy a handle implementation. - ASIO_DECL asio::error_code close(implementation_type& impl, - asio::error_code& ec); - - // Get the native handle representation. - native_handle_type native_handle(const implementation_type& impl) const - { - return impl.handle_; - } - - // Cancel all operations associated with the handle. - ASIO_DECL asio::error_code cancel(implementation_type& impl, - asio::error_code& ec); - - // Write the given data. Returns the number of bytes written. - template - size_t write_some(implementation_type& impl, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - return write_some_at(impl, 0, buffers, ec); - } - - // Write the given data at the specified offset. Returns the number of bytes - // written. - template - size_t write_some_at(implementation_type& impl, uint64_t offset, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - asio::const_buffer buffer = - buffer_sequence_adapter::first(buffers); - - return do_write(impl, offset, buffer, ec); - } - - // Start an asynchronous write. The data being written must be valid for the - // lifetime of the asynchronous operation. - template - void async_write_some(implementation_type& impl, - const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_handle_write_op< - ConstBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((iocp_service_.context(), *p.p, "handle", &impl, - reinterpret_cast(impl.handle_), "async_write_some")); - - start_write_op(impl, 0, - buffer_sequence_adapter::first(buffers), p.p); - p.v = p.p = 0; - } - - // Start an asynchronous write at a specified offset. The data being written - // must be valid for the lifetime of the asynchronous operation. - template - void async_write_some_at(implementation_type& impl, - uint64_t offset, const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_handle_write_op< - ConstBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((iocp_service_.context(), *p.p, "handle", &impl, - reinterpret_cast(impl.handle_), "async_write_some_at")); - - start_write_op(impl, offset, - buffer_sequence_adapter::first(buffers), p.p); - p.v = p.p = 0; - } - - // Read some data. Returns the number of bytes received. - template - size_t read_some(implementation_type& impl, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - return read_some_at(impl, 0, buffers, ec); - } - - // Read some data at a specified offset. Returns the number of bytes received. - template - size_t read_some_at(implementation_type& impl, uint64_t offset, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - asio::mutable_buffer buffer = - buffer_sequence_adapter::first(buffers); - - return do_read(impl, offset, buffer, ec); - } - - // Start an asynchronous read. The buffer for the data being received must be - // valid for the lifetime of the asynchronous operation. - template - void async_read_some(implementation_type& impl, - const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_handle_read_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((iocp_service_.context(), *p.p, "handle", &impl, - reinterpret_cast(impl.handle_), "async_read_some")); - - start_read_op(impl, 0, - buffer_sequence_adapter::first(buffers), p.p); - p.v = p.p = 0; - } - - // Start an asynchronous read at a specified offset. The buffer for the data - // being received must be valid for the lifetime of the asynchronous - // operation. - template - void async_read_some_at(implementation_type& impl, - uint64_t offset, const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_handle_read_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((iocp_service_.context(), *p.p, "handle", &impl, - reinterpret_cast(impl.handle_), "async_read_some_at")); - - start_read_op(impl, offset, - buffer_sequence_adapter::first(buffers), p.p); - p.v = p.p = 0; - } - -private: - // Prevent the use of the null_buffers type with this service. - size_t write_some(implementation_type& impl, - const null_buffers& buffers, asio::error_code& ec); - size_t write_some_at(implementation_type& impl, uint64_t offset, - const null_buffers& buffers, asio::error_code& ec); - template - void async_write_some(implementation_type& impl, - const null_buffers& buffers, Handler& handler, - const IoExecutor& io_ex); - template - void async_write_some_at(implementation_type& impl, uint64_t offset, - const null_buffers& buffers, Handler& handler, const IoExecutor& io_ex); - size_t read_some(implementation_type& impl, - const null_buffers& buffers, asio::error_code& ec); - size_t read_some_at(implementation_type& impl, uint64_t offset, - const null_buffers& buffers, asio::error_code& ec); - template - void async_read_some(implementation_type& impl, - const null_buffers& buffers, Handler& handler, - const IoExecutor& io_ex); - template - void async_read_some_at(implementation_type& impl, uint64_t offset, - const null_buffers& buffers, Handler& handler, const IoExecutor& io_ex); - - // Helper class for waiting for synchronous operations to complete. - class overlapped_wrapper; - - // Helper function to perform a synchronous write operation. - ASIO_DECL size_t do_write(implementation_type& impl, - uint64_t offset, const asio::const_buffer& buffer, - asio::error_code& ec); - - // Helper function to start a write operation. - ASIO_DECL void start_write_op(implementation_type& impl, - uint64_t offset, const asio::const_buffer& buffer, - operation* op); - - // Helper function to perform a synchronous write operation. - ASIO_DECL size_t do_read(implementation_type& impl, - uint64_t offset, const asio::mutable_buffer& buffer, - asio::error_code& ec); - - // Helper function to start a read operation. - ASIO_DECL void start_read_op(implementation_type& impl, - uint64_t offset, const asio::mutable_buffer& buffer, - operation* op); - - // Update the ID of the thread from which cancellation is safe. - ASIO_DECL void update_cancellation_thread_id(implementation_type& impl); - - // Helper function to close a handle when the associated object is being - // destroyed. - ASIO_DECL void close_for_destruction(implementation_type& impl); - - // The IOCP service used for running asynchronous operations and dispatching - // handlers. - win_iocp_io_context& iocp_service_; - - // Mutex to protect access to the linked list of implementations. - mutex mutex_; - - // The head of a linked list of all implementations. - implementation_type* impl_list_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_iocp_handle_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp deleted file mode 100644 index c03df654..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +++ /dev/null @@ -1,110 +0,0 @@ -// -// detail/win_iocp_handle_write_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_handle_write_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_write_op); - - win_iocp_handle_write_op(const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_handle_write_op::do_complete), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& ec, std::size_t bytes_transferred) - { - // Take ownership of the operation object. - win_iocp_handle_write_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - if (owner) - { - // Check whether buffers are still valid. - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - ConstBufferSequence buffers_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_io_context.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_io_context.hpp deleted file mode 100644 index b1a27ee3..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_io_context.hpp +++ /dev/null @@ -1,342 +0,0 @@ -// -// detail/win_iocp_io_context.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_IO_CONTEXT_HPP -#define ASIO_DETAIL_WIN_IOCP_IO_CONTEXT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/limits.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/thread.hpp" -#include "asio/detail/thread_context.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/detail/win_iocp_operation.hpp" -#include "asio/detail/win_iocp_thread_info.hpp" -#include "asio/execution_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class wait_op; - -class win_iocp_io_context - : public execution_context_service_base, - public thread_context -{ -public: - // Constructor. Specifies a concurrency hint that is passed through to the - // underlying I/O completion port. - ASIO_DECL win_iocp_io_context(asio::execution_context& ctx, - int concurrency_hint = -1, bool own_thread = true); - - // Destructor. - ASIO_DECL ~win_iocp_io_context(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Initialise the task. Nothing to do here. - void init_task() - { - } - - // Register a handle with the IO completion port. - ASIO_DECL asio::error_code register_handle( - HANDLE handle, asio::error_code& ec); - - // Run the event loop until stopped or no more work. - ASIO_DECL size_t run(asio::error_code& ec); - - // Run until stopped or one operation is performed. - ASIO_DECL size_t run_one(asio::error_code& ec); - - // Run until timeout, interrupted, or one operation is performed. - ASIO_DECL size_t wait_one(long usec, asio::error_code& ec); - - // Poll for operations without blocking. - ASIO_DECL size_t poll(asio::error_code& ec); - - // Poll for one operation without blocking. - ASIO_DECL size_t poll_one(asio::error_code& ec); - - // Stop the event processing loop. - ASIO_DECL void stop(); - - // Determine whether the io_context is stopped. - bool stopped() const - { - return ::InterlockedExchangeAdd(&stopped_, 0) != 0; - } - - // Restart in preparation for a subsequent run invocation. - void restart() - { - ::InterlockedExchange(&stopped_, 0); - } - - // Notify that some work has started. - void work_started() - { - ::InterlockedIncrement(&outstanding_work_); - } - - // Notify that some work has finished. - void work_finished() - { - if (::InterlockedDecrement(&outstanding_work_) == 0) - stop(); - } - - // Return whether a handler can be dispatched immediately. - bool can_dispatch() - { - return thread_call_stack::contains(this) != 0; - } - - /// Capture the current exception so it can be rethrown from a run function. - ASIO_DECL void capture_current_exception(); - - // Request invocation of the given operation and return immediately. Assumes - // that work_started() has not yet been called for the operation. - void post_immediate_completion(win_iocp_operation* op, bool) - { - work_started(); - post_deferred_completion(op); - } - - // Request invocation of the given operation and return immediately. Assumes - // that work_started() was previously called for the operation. - ASIO_DECL void post_deferred_completion(win_iocp_operation* op); - - // Request invocation of the given operation and return immediately. Assumes - // that work_started() was previously called for the operations. - ASIO_DECL void post_deferred_completions( - op_queue& ops); - - // Request invocation of the given operation using the thread-private queue - // and return immediately. Assumes that work_started() has not yet been - // called for the operation. - void post_private_immediate_completion(win_iocp_operation* op) - { - post_immediate_completion(op, false); - } - - // Request invocation of the given operation using the thread-private queue - // and return immediately. Assumes that work_started() was previously called - // for the operation. - void post_private_deferred_completion(win_iocp_operation* op) - { - post_deferred_completion(op); - } - - // Enqueue the given operation following a failed attempt to dispatch the - // operation for immediate invocation. - void do_dispatch(operation* op) - { - post_immediate_completion(op, false); - } - - // Process unfinished operations as part of a shutdown operation. Assumes - // that work_started() was previously called for the operations. - ASIO_DECL void abandon_operations(op_queue& ops); - - // Called after starting an overlapped I/O operation that did not complete - // immediately. The caller must have already called work_started() prior to - // starting the operation. - ASIO_DECL void on_pending(win_iocp_operation* op); - - // Called after starting an overlapped I/O operation that completed - // immediately. The caller must have already called work_started() prior to - // starting the operation. - ASIO_DECL void on_completion(win_iocp_operation* op, - DWORD last_error = 0, DWORD bytes_transferred = 0); - - // Called after starting an overlapped I/O operation that completed - // immediately. The caller must have already called work_started() prior to - // starting the operation. - ASIO_DECL void on_completion(win_iocp_operation* op, - const asio::error_code& ec, DWORD bytes_transferred = 0); - - // Add a new timer queue to the service. - template - void add_timer_queue(timer_queue& timer_queue); - - // Remove a timer queue from the service. - template - void remove_timer_queue(timer_queue& timer_queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer associated with the given token. Returns the number of - // handlers that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& to, - typename timer_queue::per_timer_data& from); - - // Get the concurrency hint that was used to initialise the io_context. - int concurrency_hint() const - { - return concurrency_hint_; - } - -private: -#if defined(WINVER) && (WINVER < 0x0500) - typedef DWORD dword_ptr_t; - typedef ULONG ulong_ptr_t; -#else // defined(WINVER) && (WINVER < 0x0500) - typedef DWORD_PTR dword_ptr_t; - typedef ULONG_PTR ulong_ptr_t; -#endif // defined(WINVER) && (WINVER < 0x0500) - - // Dequeues at most one operation from the I/O completion port, and then - // executes it. Returns the number of operations that were dequeued (i.e. - // either 0 or 1). - ASIO_DECL size_t do_one(DWORD msec, - win_iocp_thread_info& this_thread, asio::error_code& ec); - - // Helper to calculate the GetQueuedCompletionStatus timeout. - ASIO_DECL static DWORD get_gqcs_timeout(); - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // Called to recalculate and update the timeout. - ASIO_DECL void update_timeout(); - - // Helper class to call work_finished() on block exit. - struct work_finished_on_block_exit; - - // Helper class for managing a HANDLE. - struct auto_handle - { - HANDLE handle; - auto_handle() : handle(0) {} - ~auto_handle() { if (handle) ::CloseHandle(handle); } - }; - - // The IO completion port used for queueing operations. - auto_handle iocp_; - - // The count of unfinished work. - long outstanding_work_; - - // Flag to indicate whether the event loop has been stopped. - mutable long stopped_; - - // Flag to indicate whether there is an in-flight stop event. Every event - // posted using PostQueuedCompletionStatus consumes non-paged pool, so to - // avoid exhausting this resouce we limit the number of outstanding events. - long stop_event_posted_; - - // Flag to indicate whether the service has been shut down. - long shutdown_; - - enum - { - // Timeout to use with GetQueuedCompletionStatus on older versions of - // Windows. Some versions of windows have a "bug" where a call to - // GetQueuedCompletionStatus can appear stuck even though there are events - // waiting on the queue. Using a timeout helps to work around the issue. - default_gqcs_timeout = 500, - - // Maximum waitable timer timeout, in milliseconds. - max_timeout_msec = 5 * 60 * 1000, - - // Maximum waitable timer timeout, in microseconds. - max_timeout_usec = max_timeout_msec * 1000, - - // Completion key value used to wake up a thread to dispatch timers or - // completed operations. - wake_for_dispatch = 1, - - // Completion key value to indicate that an operation has posted with the - // original last_error and bytes_transferred values stored in the fields of - // the OVERLAPPED structure. - overlapped_contains_result = 2 - }; - - // Timeout to use with GetQueuedCompletionStatus. - const DWORD gqcs_timeout_; - - // Helper class to run the scheduler in its own thread. - struct thread_function; - friend struct thread_function; - - // Function object for processing timeouts in a background thread. - struct timer_thread_function; - friend struct timer_thread_function; - - // Background thread used for processing timeouts. - scoped_ptr timer_thread_; - - // A waitable timer object used for waiting for timeouts. - auto_handle waitable_timer_; - - // Non-zero if timers or completed operations need to be dispatched. - long dispatch_required_; - - // Mutex for protecting access to the timer queues and completed operations. - mutex dispatch_mutex_; - - // The timer queues. - timer_queue_set timer_queues_; - - // The operations that are ready to dispatch. - op_queue completed_ops_; - - // The concurrency hint used to initialise the io_context. - const int concurrency_hint_; - - // The thread that is running the io_context. - scoped_ptr thread_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/win_iocp_io_context.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_iocp_io_context.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_IO_CONTEXT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp deleted file mode 100644 index 091832fe..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +++ /dev/null @@ -1,127 +0,0 @@ -// -// detail/win_iocp_null_buffers_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_null_buffers_op : public reactor_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_null_buffers_op); - - win_iocp_null_buffers_op(socket_ops::weak_cancel_token_type cancel_token, - Handler& handler, const IoExecutor& io_ex) - : reactor_op(asio::error_code(), - &win_iocp_null_buffers_op::do_perform, - &win_iocp_null_buffers_op::do_complete), - cancel_token_(cancel_token), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static status do_perform(reactor_op*) - { - return done; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_null_buffers_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // The reactor may have stored a result in the operation object. - if (o->ec_) - ec = o->ec_; - - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (o->cancel_token_.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_operation.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_operation.hpp deleted file mode 100644 index 984f4f58..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_operation.hpp +++ /dev/null @@ -1,96 +0,0 @@ -// -// detail/win_iocp_operation.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_OPERATION_HPP -#define ASIO_DETAIL_WIN_IOCP_OPERATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/handler_tracking.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/error_code.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_iocp_io_context; - -// Base class for all operations. A function pointer is used instead of virtual -// functions to avoid the associated overhead. -class win_iocp_operation - : public OVERLAPPED - ASIO_ALSO_INHERIT_TRACKED_HANDLER -{ -public: - typedef win_iocp_operation operation_type; - - void complete(void* owner, const asio::error_code& ec, - std::size_t bytes_transferred) - { - func_(owner, this, ec, bytes_transferred); - } - - void destroy() - { - func_(0, this, asio::error_code(), 0); - } - -protected: - typedef void (*func_type)( - void*, win_iocp_operation*, - const asio::error_code&, std::size_t); - - win_iocp_operation(func_type func) - : next_(0), - func_(func) - { - reset(); - } - - // Prevents deletion through this type. - ~win_iocp_operation() - { - } - - void reset() - { - Internal = 0; - InternalHigh = 0; - Offset = 0; - OffsetHigh = 0; - hEvent = 0; - ready_ = 0; - } - -private: - friend class op_queue_access; - friend class win_iocp_io_context; - win_iocp_operation* next_; - func_type func_; - long ready_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_OPERATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp deleted file mode 100644 index 71bd73f1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +++ /dev/null @@ -1,96 +0,0 @@ -// -// detail/win_iocp_overlapped_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_overlapped_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_overlapped_op); - - win_iocp_overlapped_op(Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_overlapped_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& ec, std::size_t bytes_transferred) - { - // Take ownership of the operation object. - win_iocp_overlapped_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp deleted file mode 100644 index 985bbea7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// -// detail/win_iocp_overlapped_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP -#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/io_context.hpp" -#include "asio/query.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/win_iocp_overlapped_op.hpp" -#include "asio/detail/win_iocp_io_context.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O. -class win_iocp_overlapped_ptr - : private noncopyable -{ -public: - // Construct an empty win_iocp_overlapped_ptr. - win_iocp_overlapped_ptr() - : ptr_(0), - iocp_service_(0) - { - } - - // Construct an win_iocp_overlapped_ptr to contain the specified handler. - template - explicit win_iocp_overlapped_ptr(const Executor& ex, - ASIO_MOVE_ARG(Handler) handler) - : ptr_(0), - iocp_service_(0) - { - this->reset(ex, ASIO_MOVE_CAST(Handler)(handler)); - } - - // Destructor automatically frees the OVERLAPPED object unless released. - ~win_iocp_overlapped_ptr() - { - reset(); - } - - // Reset to empty. - void reset() - { - if (ptr_) - { - ptr_->destroy(); - ptr_ = 0; - iocp_service_->work_finished(); - iocp_service_ = 0; - } - } - - // Reset to contain the specified handler, freeing any current OVERLAPPED - // object. - template - void reset(const Executor& ex, Handler handler) - { - win_iocp_io_context* iocp_service = this->get_iocp_service(ex); - - typedef win_iocp_overlapped_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, ex); - - ASIO_HANDLER_CREATION((ex.context(), *p.p, - "iocp_service", iocp_service, 0, "overlapped")); - - iocp_service->work_started(); - reset(); - ptr_ = p.p; - p.v = p.p = 0; - iocp_service_ = iocp_service; - } - - // Get the contained OVERLAPPED object. - OVERLAPPED* get() - { - return ptr_; - } - - // Get the contained OVERLAPPED object. - const OVERLAPPED* get() const - { - return ptr_; - } - - // Release ownership of the OVERLAPPED object. - OVERLAPPED* release() - { - if (ptr_) - iocp_service_->on_pending(ptr_); - - OVERLAPPED* tmp = ptr_; - ptr_ = 0; - iocp_service_ = 0; - return tmp; - } - - // Post completion notification for overlapped operation. Releases ownership. - void complete(const asio::error_code& ec, - std::size_t bytes_transferred) - { - if (ptr_) - { - iocp_service_->on_completion(ptr_, ec, - static_cast(bytes_transferred)); - ptr_ = 0; - iocp_service_ = 0; - } - } - -private: - template - static win_iocp_io_context* get_iocp_service(const Executor& ex, - typename enable_if< - can_query::value - >::type* = 0) - { - return &use_service( - asio::query(ex, execution::context)); - } - - template - static win_iocp_io_context* get_iocp_service(const Executor& ex, - typename enable_if< - !can_query::value - >::type* = 0) - { - return &use_service(ex.context()); - } - - static win_iocp_io_context* get_iocp_service( - const io_context::executor_type& ex) - { - return &asio::query(ex, execution::context).impl_; - } - - win_iocp_operation* ptr_; - win_iocp_io_context* iocp_service_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp deleted file mode 100644 index d4c2b4bc..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp +++ /dev/null @@ -1,232 +0,0 @@ -// -// detail/win_iocp_serial_port_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP -#define ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT) - -#include -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/win_iocp_handle_service.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Extend win_iocp_handle_service to provide serial port support. -class win_iocp_serial_port_service : - public execution_context_service_base -{ -public: - // The native type of a serial port. - typedef win_iocp_handle_service::native_handle_type native_handle_type; - - // The implementation type of the serial port. - typedef win_iocp_handle_service::implementation_type implementation_type; - - // Constructor. - ASIO_DECL win_iocp_serial_port_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new serial port implementation. - void construct(implementation_type& impl) - { - handle_service_.construct(impl); - } - - // Move-construct a new serial port implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) - { - handle_service_.move_construct(impl, other_impl); - } - - // Move-assign from another serial port implementation. - void move_assign(implementation_type& impl, - win_iocp_serial_port_service& other_service, - implementation_type& other_impl) - { - handle_service_.move_assign(impl, - other_service.handle_service_, other_impl); - } - - // Destroy a serial port implementation. - void destroy(implementation_type& impl) - { - handle_service_.destroy(impl); - } - - // Open the serial port using the specified device name. - ASIO_DECL asio::error_code open(implementation_type& impl, - const std::string& device, asio::error_code& ec); - - // Assign a native handle to a serial port implementation. - asio::error_code assign(implementation_type& impl, - const native_handle_type& handle, asio::error_code& ec) - { - return handle_service_.assign(impl, handle, ec); - } - - // Determine whether the serial port is open. - bool is_open(const implementation_type& impl) const - { - return handle_service_.is_open(impl); - } - - // Destroy a serial port implementation. - asio::error_code close(implementation_type& impl, - asio::error_code& ec) - { - return handle_service_.close(impl, ec); - } - - // Get the native serial port representation. - native_handle_type native_handle(implementation_type& impl) - { - return handle_service_.native_handle(impl); - } - - // Cancel all operations associated with the handle. - asio::error_code cancel(implementation_type& impl, - asio::error_code& ec) - { - return handle_service_.cancel(impl, ec); - } - - // Set an option on the serial port. - template - asio::error_code set_option(implementation_type& impl, - const SettableSerialPortOption& option, asio::error_code& ec) - { - return do_set_option(impl, - &win_iocp_serial_port_service::store_option, - &option, ec); - } - - // Get an option from the serial port. - template - asio::error_code get_option(const implementation_type& impl, - GettableSerialPortOption& option, asio::error_code& ec) const - { - return do_get_option(impl, - &win_iocp_serial_port_service::load_option, - &option, ec); - } - - // Send a break sequence to the serial port. - asio::error_code send_break(implementation_type&, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Write the given data. Returns the number of bytes sent. - template - size_t write_some(implementation_type& impl, - const ConstBufferSequence& buffers, asio::error_code& ec) - { - return handle_service_.write_some(impl, buffers, ec); - } - - // Start an asynchronous write. The data being written must be valid for the - // lifetime of the asynchronous operation. - template - void async_write_some(implementation_type& impl, - const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - handle_service_.async_write_some(impl, buffers, handler, io_ex); - } - - // Read some data. Returns the number of bytes received. - template - size_t read_some(implementation_type& impl, - const MutableBufferSequence& buffers, asio::error_code& ec) - { - return handle_service_.read_some(impl, buffers, ec); - } - - // Start an asynchronous read. The buffer for the data being received must be - // valid for the lifetime of the asynchronous operation. - template - void async_read_some(implementation_type& impl, - const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - { - handle_service_.async_read_some(impl, buffers, handler, io_ex); - } - -private: - // Function pointer type for storing a serial port option. - typedef asio::error_code (*store_function_type)( - const void*, ::DCB&, asio::error_code&); - - // Helper function template to store a serial port option. - template - static asio::error_code store_option(const void* option, - ::DCB& storage, asio::error_code& ec) - { - static_cast(option)->store(storage, ec); - return ec; - } - - // Helper function to set a serial port option. - ASIO_DECL asio::error_code do_set_option( - implementation_type& impl, store_function_type store, - const void* option, asio::error_code& ec); - - // Function pointer type for loading a serial port option. - typedef asio::error_code (*load_function_type)( - void*, const ::DCB&, asio::error_code&); - - // Helper function template to load a serial port option. - template - static asio::error_code load_option(void* option, - const ::DCB& storage, asio::error_code& ec) - { - static_cast(option)->load(storage, ec); - return ec; - } - - // Helper function to get a serial port option. - ASIO_DECL asio::error_code do_get_option( - const implementation_type& impl, load_function_type load, - void* option, asio::error_code& ec) const; - - // The implementation used for initiating asynchronous operations. - win_iocp_handle_service handle_service_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_iocp_serial_port_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT) - -#endif // ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp deleted file mode 100644 index 745125bf..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +++ /dev/null @@ -1,312 +0,0 @@ -// -// detail/win_iocp_socket_accept_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/win_iocp_socket_service_base.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_accept_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_accept_op); - - win_iocp_socket_accept_op(win_iocp_socket_service_base& socket_service, - socket_type socket, Socket& peer, const Protocol& protocol, - typename Protocol::endpoint* peer_endpoint, - bool enable_connection_aborted, Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_socket_accept_op::do_complete), - socket_service_(socket_service), - socket_(socket), - peer_(peer), - protocol_(protocol), - peer_endpoint_(peer_endpoint), - enable_connection_aborted_(enable_connection_aborted), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - socket_holder& new_socket() - { - return new_socket_; - } - - void* output_buffer() - { - return output_buffer_; - } - - DWORD address_length() - { - return sizeof(sockaddr_storage_type) + 16; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t /*bytes_transferred*/) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_accept_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - if (owner) - { - typename Protocol::endpoint peer_endpoint; - std::size_t addr_len = peer_endpoint.capacity(); - socket_ops::complete_iocp_accept(o->socket_, - o->output_buffer(), o->address_length(), - peer_endpoint.data(), &addr_len, - o->new_socket_.get(), ec); - - // Restart the accept operation if we got the connection_aborted error - // and the enable_connection_aborted socket option is not set. - if (ec == asio::error::connection_aborted - && !o->enable_connection_aborted_) - { - o->reset(); - o->socket_service_.restart_accept_op(o->socket_, - o->new_socket_, o->protocol_.family(), - o->protocol_.type(), o->protocol_.protocol(), - o->output_buffer(), o->address_length(), o); - p.v = p.p = 0; - return; - } - - // If the socket was successfully accepted, transfer ownership of the - // socket to the peer object. - if (!ec) - { - o->peer_.assign(o->protocol_, - typename Socket::native_handle_type( - o->new_socket_.get(), peer_endpoint), ec); - if (!ec) - o->new_socket_.release(); - } - - // Pass endpoint back to caller. - if (o->peer_endpoint_) - *o->peer_endpoint_ = peer_endpoint; - } - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, ec); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - win_iocp_socket_service_base& socket_service_; - socket_type socket_; - socket_holder new_socket_; - Socket& peer_; - Protocol protocol_; - typename Protocol::endpoint* peer_endpoint_; - unsigned char output_buffer_[(sizeof(sockaddr_storage_type) + 16) * 2]; - bool enable_connection_aborted_; - Handler handler_; - handler_work work_; -}; - -#if defined(ASIO_HAS_MOVE) - -template -class win_iocp_socket_move_accept_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_move_accept_op); - - win_iocp_socket_move_accept_op( - win_iocp_socket_service_base& socket_service, socket_type socket, - const Protocol& protocol, const PeerIoExecutor& peer_io_ex, - typename Protocol::endpoint* peer_endpoint, - bool enable_connection_aborted, Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_socket_move_accept_op::do_complete), - socket_service_(socket_service), - socket_(socket), - peer_(peer_io_ex), - protocol_(protocol), - peer_endpoint_(peer_endpoint), - enable_connection_aborted_(enable_connection_aborted), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - socket_holder& new_socket() - { - return new_socket_; - } - - void* output_buffer() - { - return output_buffer_; - } - - DWORD address_length() - { - return sizeof(sockaddr_storage_type) + 16; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t /*bytes_transferred*/) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_move_accept_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - if (owner) - { - typename Protocol::endpoint peer_endpoint; - std::size_t addr_len = peer_endpoint.capacity(); - socket_ops::complete_iocp_accept(o->socket_, - o->output_buffer(), o->address_length(), - peer_endpoint.data(), &addr_len, - o->new_socket_.get(), ec); - - // Restart the accept operation if we got the connection_aborted error - // and the enable_connection_aborted socket option is not set. - if (ec == asio::error::connection_aborted - && !o->enable_connection_aborted_) - { - o->reset(); - o->socket_service_.restart_accept_op(o->socket_, - o->new_socket_, o->protocol_.family(), - o->protocol_.type(), o->protocol_.protocol(), - o->output_buffer(), o->address_length(), o); - p.v = p.p = 0; - return; - } - - // If the socket was successfully accepted, transfer ownership of the - // socket to the peer object. - if (!ec) - { - o->peer_.assign(o->protocol_, - typename Protocol::socket::native_handle_type( - o->new_socket_.get(), peer_endpoint), ec); - if (!ec) - o->new_socket_.release(); - } - - // Pass endpoint back to caller. - if (o->peer_endpoint_) - *o->peer_endpoint_ = peer_endpoint; - } - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::move_binder2 - handler(0, ASIO_MOVE_CAST(Handler)(o->handler_), ec, - ASIO_MOVE_CAST(peer_socket_type)(o->peer_)); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "...")); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - typedef typename Protocol::socket::template - rebind_executor::other peer_socket_type; - - win_iocp_socket_service_base& socket_service_; - socket_type socket_; - socket_holder new_socket_; - peer_socket_type peer_; - Protocol protocol_; - typename Protocol::endpoint* peer_endpoint_; - unsigned char output_buffer_[(sizeof(sockaddr_storage_type) + 16) * 2]; - bool enable_connection_aborted_; - Handler handler_; - handler_work work_; -}; - -#endif // defined(ASIO_HAS_MOVE) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp deleted file mode 100644 index 8971499b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +++ /dev/null @@ -1,135 +0,0 @@ -// -// detail/win_iocp_socket_connect_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_iocp_socket_connect_op_base : public reactor_op -{ -public: - win_iocp_socket_connect_op_base(socket_type socket, func_type complete_func) - : reactor_op(asio::error_code(), - &win_iocp_socket_connect_op_base::do_perform, complete_func), - socket_(socket), - connect_ex_(false) - { - } - - static status do_perform(reactor_op* base) - { - win_iocp_socket_connect_op_base* o( - static_cast(base)); - - return socket_ops::non_blocking_connect( - o->socket_, o->ec_) ? done : not_done; - } - - socket_type socket_; - bool connect_ex_; -}; - -template -class win_iocp_socket_connect_op : public win_iocp_socket_connect_op_base -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_connect_op); - - win_iocp_socket_connect_op(socket_type socket, - Handler& handler, const IoExecutor& io_ex) - : win_iocp_socket_connect_op_base(socket, - &win_iocp_socket_connect_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t /*bytes_transferred*/) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_connect_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - if (owner) - { - if (o->connect_ex_) - socket_ops::complete_iocp_connect(o->socket_, ec); - else - ec = o->ec_; - } - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, ec); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp deleted file mode 100644 index 4b57107d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// -// detail/win_iocp_socket_recv_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_recv_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recv_op); - - win_iocp_socket_recv_op(socket_ops::state_type state, - socket_ops::weak_cancel_token_type cancel_token, - const MutableBufferSequence& buffers, Handler& handler, - const IoExecutor& io_ex) - : operation(&win_iocp_socket_recv_op::do_complete), - state_(state), - cancel_token_(cancel_token), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_recv_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - socket_ops::complete_iocp_recv(o->state_, o->cancel_token_, - buffer_sequence_adapter::all_empty(o->buffers_), - ec, bytes_transferred); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - socket_ops::state_type state_; - socket_ops::weak_cancel_token_type cancel_token_; - MutableBufferSequence buffers_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp deleted file mode 100644 index b8f6abd0..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// -// detail/win_iocp_socket_recvfrom_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_recvfrom_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvfrom_op); - - win_iocp_socket_recvfrom_op(Endpoint& endpoint, - socket_ops::weak_cancel_token_type cancel_token, - const MutableBufferSequence& buffers, Handler& handler, - const IoExecutor& io_ex) - : operation(&win_iocp_socket_recvfrom_op::do_complete), - endpoint_(endpoint), - endpoint_size_(static_cast(endpoint.capacity())), - cancel_token_(cancel_token), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - int& endpoint_size() - { - return endpoint_size_; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_recvfrom_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - socket_ops::complete_iocp_recvfrom(o->cancel_token_, ec); - - // Record the size of the endpoint returned by the operation. - o->endpoint_.resize(o->endpoint_size_); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Endpoint& endpoint_; - int endpoint_size_; - socket_ops::weak_cancel_token_type cancel_token_; - MutableBufferSequence buffers_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp deleted file mode 100644 index 79f17896..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// detail/win_iocp_socket_recvmsg_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" -#include "asio/socket_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_recvmsg_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvmsg_op); - - win_iocp_socket_recvmsg_op( - socket_ops::weak_cancel_token_type cancel_token, - const MutableBufferSequence& buffers, - socket_base::message_flags& out_flags, - Handler& handler, const IoExecutor& io_ex) - : operation(&win_iocp_socket_recvmsg_op::do_complete), - cancel_token_(cancel_token), - buffers_(buffers), - out_flags_(out_flags), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_recvmsg_op* o( - static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - socket_ops::complete_iocp_recvmsg(o->cancel_token_, ec); - o->out_flags_ = 0; - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - MutableBufferSequence buffers_; - socket_base::message_flags& out_flags_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp deleted file mode 100644 index 15a46321..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// -// detail/win_iocp_socket_send_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_send_op : public operation -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_send_op); - - win_iocp_socket_send_op(socket_ops::weak_cancel_token_type cancel_token, - const ConstBufferSequence& buffers, Handler& handler, - const IoExecutor& io_ex) - : operation(&win_iocp_socket_send_op::do_complete), - cancel_token_(cancel_token), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t bytes_transferred) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_socket_send_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - socket_ops::complete_iocp_send(o->cancel_token_, ec); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, ec, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - ConstBufferSequence buffers_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service.hpp deleted file mode 100644 index 53dc1632..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service.hpp +++ /dev/null @@ -1,581 +0,0 @@ -// -// detail/win_iocp_socket_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/select_reactor.hpp" -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/win_iocp_io_context.hpp" -#include "asio/detail/win_iocp_null_buffers_op.hpp" -#include "asio/detail/win_iocp_socket_accept_op.hpp" -#include "asio/detail/win_iocp_socket_connect_op.hpp" -#include "asio/detail/win_iocp_socket_recvfrom_op.hpp" -#include "asio/detail/win_iocp_socket_send_op.hpp" -#include "asio/detail/win_iocp_socket_service_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_socket_service : - public execution_context_service_base >, - public win_iocp_socket_service_base -{ -public: - // The protocol type. - typedef Protocol protocol_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The native type of a socket. - class native_handle_type - { - public: - native_handle_type(socket_type s) - : socket_(s), - have_remote_endpoint_(false) - { - } - - native_handle_type(socket_type s, const endpoint_type& ep) - : socket_(s), - have_remote_endpoint_(true), - remote_endpoint_(ep) - { - } - - void operator=(socket_type s) - { - socket_ = s; - have_remote_endpoint_ = false; - remote_endpoint_ = endpoint_type(); - } - - operator socket_type() const - { - return socket_; - } - - bool have_remote_endpoint() const - { - return have_remote_endpoint_; - } - - endpoint_type remote_endpoint() const - { - return remote_endpoint_; - } - - private: - socket_type socket_; - bool have_remote_endpoint_; - endpoint_type remote_endpoint_; - }; - - // The implementation type of the socket. - struct implementation_type : - win_iocp_socket_service_base::base_implementation_type - { - // Default constructor. - implementation_type() - : protocol_(endpoint_type().protocol()), - have_remote_endpoint_(false), - remote_endpoint_() - { - } - - // The protocol associated with the socket. - protocol_type protocol_; - - // Whether we have a cached remote endpoint. - bool have_remote_endpoint_; - - // A cached remote endpoint. - endpoint_type remote_endpoint_; - }; - - // Constructor. - win_iocp_socket_service(execution_context& context) - : execution_context_service_base< - win_iocp_socket_service >(context), - win_iocp_socket_service_base(context) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - this->base_shutdown(); - } - - // Move-construct a new socket implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) ASIO_NOEXCEPT - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - - impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_; - other_impl.have_remote_endpoint_ = false; - - impl.remote_endpoint_ = other_impl.remote_endpoint_; - other_impl.remote_endpoint_ = endpoint_type(); - } - - // Move-assign from another socket implementation. - void move_assign(implementation_type& impl, - win_iocp_socket_service_base& other_service, - implementation_type& other_impl) - { - this->base_move_assign(impl, other_service, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - - impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_; - other_impl.have_remote_endpoint_ = false; - - impl.remote_endpoint_ = other_impl.remote_endpoint_; - other_impl.remote_endpoint_ = endpoint_type(); - } - - // Move-construct a new socket implementation from another protocol type. - template - void converting_move_construct(implementation_type& impl, - win_iocp_socket_service&, - typename win_iocp_socket_service< - Protocol1>::implementation_type& other_impl) - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = protocol_type(other_impl.protocol_); - other_impl.protocol_ = typename Protocol1::endpoint().protocol(); - - impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_; - other_impl.have_remote_endpoint_ = false; - - impl.remote_endpoint_ = other_impl.remote_endpoint_; - other_impl.remote_endpoint_ = typename Protocol1::endpoint(); - } - - // Open a new socket implementation. - asio::error_code open(implementation_type& impl, - const protocol_type& protocol, asio::error_code& ec) - { - if (!do_open(impl, protocol.family(), - protocol.type(), protocol.protocol(), ec)) - { - impl.protocol_ = protocol; - impl.have_remote_endpoint_ = false; - impl.remote_endpoint_ = endpoint_type(); - } - return ec; - } - - // Assign a native socket to a socket implementation. - asio::error_code assign(implementation_type& impl, - const protocol_type& protocol, const native_handle_type& native_socket, - asio::error_code& ec) - { - if (!do_assign(impl, protocol.type(), native_socket, ec)) - { - impl.protocol_ = protocol; - impl.have_remote_endpoint_ = native_socket.have_remote_endpoint(); - impl.remote_endpoint_ = native_socket.remote_endpoint(); - } - return ec; - } - - // Get the native socket representation. - native_handle_type native_handle(implementation_type& impl) - { - if (impl.have_remote_endpoint_) - return native_handle_type(impl.socket_, impl.remote_endpoint_); - return native_handle_type(impl.socket_); - } - - // Bind the socket to the specified local endpoint. - asio::error_code bind(implementation_type& impl, - const endpoint_type& endpoint, asio::error_code& ec) - { - socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec); - return ec; - } - - // Set a socket option. - template - asio::error_code set_option(implementation_type& impl, - const Option& option, asio::error_code& ec) - { - socket_ops::setsockopt(impl.socket_, impl.state_, - option.level(impl.protocol_), option.name(impl.protocol_), - option.data(impl.protocol_), option.size(impl.protocol_), ec); - return ec; - } - - // Set a socket option. - template - asio::error_code get_option(const implementation_type& impl, - Option& option, asio::error_code& ec) const - { - std::size_t size = option.size(impl.protocol_); - socket_ops::getsockopt(impl.socket_, impl.state_, - option.level(impl.protocol_), option.name(impl.protocol_), - option.data(impl.protocol_), &size, ec); - if (!ec) - option.resize(impl.protocol_, size); - return ec; - } - - // Get the local endpoint. - endpoint_type local_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint; - std::size_t addr_len = endpoint.capacity(); - if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec)) - return endpoint_type(); - endpoint.resize(addr_len); - return endpoint; - } - - // Get the remote endpoint. - endpoint_type remote_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint = impl.remote_endpoint_; - std::size_t addr_len = endpoint.capacity(); - if (socket_ops::getpeername(impl.socket_, endpoint.data(), - &addr_len, impl.have_remote_endpoint_, ec)) - return endpoint_type(); - endpoint.resize(addr_len); - return endpoint; - } - - // Disable sends or receives on the socket. - asio::error_code shutdown(base_implementation_type& impl, - socket_base::shutdown_type what, asio::error_code& ec) - { - socket_ops::shutdown(impl.socket_, what, ec); - return ec; - } - - // Send a datagram to the specified endpoint. Returns the number of bytes - // sent. - template - size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers, - const endpoint_type& destination, socket_base::message_flags flags, - asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - return socket_ops::sync_sendto(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, - destination.data(), destination.size(), ec); - } - - // Wait until data can be sent without blocking. - size_t send_to(implementation_type& impl, const null_buffers&, - const endpoint_type&, socket_base::message_flags, - asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send_to(implementation_type& impl, - const ConstBufferSequence& buffers, const endpoint_type& destination, - socket_base::message_flags flags, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_send_op< - ConstBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_send_to")); - - buffer_sequence_adapter bufs(buffers); - - start_send_to_op(impl, bufs.buffers(), bufs.count(), - destination.data(), static_cast(destination.size()), - flags, p.p); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send_to(implementation_type& impl, const null_buffers&, - const endpoint_type&, socket_base::message_flags, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_send_to(null_buffers)")); - - start_reactor_op(impl, select_reactor::write_op, p.p); - p.v = p.p = 0; - } - - // Receive a datagram with the endpoint of the sender. Returns the number of - // bytes received. - template - size_t receive_from(implementation_type& impl, - const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - std::size_t addr_len = sender_endpoint.capacity(); - std::size_t bytes_recvd = socket_ops::sync_recvfrom( - impl.socket_, impl.state_, bufs.buffers(), bufs.count(), - flags, sender_endpoint.data(), &addr_len, ec); - - if (!ec) - sender_endpoint.resize(addr_len); - - return bytes_recvd; - } - - // Wait until data can be received without blocking. - size_t receive_from(implementation_type& impl, - const null_buffers&, endpoint_type& sender_endpoint, - socket_base::message_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - // Reset endpoint since it can be given no sensible value at this time. - sender_endpoint = endpoint_type(); - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received and - // the sender_endpoint object must both be valid for the lifetime of the - // asynchronous operation. - template - void async_receive_from(implementation_type& impl, - const MutableBufferSequence& buffers, endpoint_type& sender_endp, - socket_base::message_flags flags, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_recvfrom_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(sender_endp, impl.cancel_token_, - buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive_from")); - - buffer_sequence_adapter bufs(buffers); - - start_receive_from_op(impl, bufs.buffers(), bufs.count(), - sender_endp.data(), flags, &p.p->endpoint_size(), p.p); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive_from(implementation_type& impl, const null_buffers&, - endpoint_type& sender_endpoint, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive_from(null_buffers)")); - - // Reset endpoint since it can be given no sensible value at this time. - sender_endpoint = endpoint_type(); - - start_null_buffers_receive_op(impl, flags, p.p); - p.v = p.p = 0; - } - - // Accept a new connection. - template - asio::error_code accept(implementation_type& impl, Socket& peer, - endpoint_type* peer_endpoint, asio::error_code& ec) - { - // We cannot accept a socket that is already open. - if (peer.is_open()) - { - ec = asio::error::already_open; - return ec; - } - - std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0; - socket_holder new_socket(socket_ops::sync_accept(impl.socket_, - impl.state_, peer_endpoint ? peer_endpoint->data() : 0, - peer_endpoint ? &addr_len : 0, ec)); - - // On success, assign new connection to peer socket object. - if (new_socket.get() != invalid_socket) - { - if (peer_endpoint) - peer_endpoint->resize(addr_len); - peer.assign(impl.protocol_, new_socket.get(), ec); - if (!ec) - new_socket.release(); - } - - return ec; - } - - // Start an asynchronous accept. The peer and peer_endpoint objects - // must be valid until the accept's handler is invoked. - template - void async_accept(implementation_type& impl, Socket& peer, - endpoint_type* peer_endpoint, Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_accept_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - bool enable_connection_aborted = - (impl.state_ & socket_ops::enable_connection_aborted) != 0; - p.p = new (p.v) op(*this, impl.socket_, peer, impl.protocol_, - peer_endpoint, enable_connection_aborted, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_accept")); - - start_accept_op(impl, peer.is_open(), p.p->new_socket(), - impl.protocol_.family(), impl.protocol_.type(), - impl.protocol_.protocol(), p.p->output_buffer(), - p.p->address_length(), p.p); - p.v = p.p = 0; - } - -#if defined(ASIO_HAS_MOVE) - // Start an asynchronous accept. The peer and peer_endpoint objects - // must be valid until the accept's handler is invoked. - template - void async_move_accept(implementation_type& impl, - const PeerIoExecutor& peer_io_ex, endpoint_type* peer_endpoint, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_move_accept_op< - protocol_type, PeerIoExecutor, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - bool enable_connection_aborted = - (impl.state_ & socket_ops::enable_connection_aborted) != 0; - p.p = new (p.v) op(*this, impl.socket_, impl.protocol_, - peer_io_ex, peer_endpoint, enable_connection_aborted, - handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_accept")); - - start_accept_op(impl, false, p.p->new_socket(), - impl.protocol_.family(), impl.protocol_.type(), - impl.protocol_.protocol(), p.p->output_buffer(), - p.p->address_length(), p.p); - p.v = p.p = 0; - } -#endif // defined(ASIO_HAS_MOVE) - - // Connect the socket to the specified endpoint. - asio::error_code connect(implementation_type& impl, - const endpoint_type& peer_endpoint, asio::error_code& ec) - { - socket_ops::sync_connect(impl.socket_, - peer_endpoint.data(), peer_endpoint.size(), ec); - return ec; - } - - // Start an asynchronous connect. - template - void async_connect(implementation_type& impl, - const endpoint_type& peer_endpoint, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_connect_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.socket_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_connect")); - - start_connect_op(impl, impl.protocol_.family(), impl.protocol_.type(), - peer_endpoint.data(), static_cast(peer_endpoint.size()), p.p); - p.v = p.p = 0; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp deleted file mode 100644 index 6e37745d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp +++ /dev/null @@ -1,600 +0,0 @@ -// -// detail/win_iocp_socket_service_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP -#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/operation.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/select_reactor.hpp" -#include "asio/detail/socket_holder.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/win_iocp_io_context.hpp" -#include "asio/detail/win_iocp_null_buffers_op.hpp" -#include "asio/detail/win_iocp_socket_connect_op.hpp" -#include "asio/detail/win_iocp_socket_send_op.hpp" -#include "asio/detail/win_iocp_socket_recv_op.hpp" -#include "asio/detail/win_iocp_socket_recvmsg_op.hpp" -#include "asio/detail/win_iocp_wait_op.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_iocp_socket_service_base -{ -public: - // The implementation type of the socket. - struct base_implementation_type - { - // The native socket representation. - socket_type socket_; - - // The current state of the socket. - socket_ops::state_type state_; - - // We use a shared pointer as a cancellation token here to work around the - // broken Windows support for cancellation. MSDN says that when you call - // closesocket any outstanding WSARecv or WSASend operations will complete - // with the error ERROR_OPERATION_ABORTED. In practice they complete with - // ERROR_NETNAME_DELETED, which means you can't tell the difference between - // a local cancellation and the socket being hard-closed by the peer. - socket_ops::shared_cancel_token_type cancel_token_; - - // Per-descriptor data used by the reactor. - select_reactor::per_descriptor_data reactor_data_; - -#if defined(ASIO_ENABLE_CANCELIO) - // The ID of the thread from which it is safe to cancel asynchronous - // operations. 0 means no asynchronous operations have been started yet. - // ~0 means asynchronous operations have been started from more than one - // thread, and cancellation is not supported for the socket. - DWORD safe_cancellation_thread_id_; -#endif // defined(ASIO_ENABLE_CANCELIO) - - // Pointers to adjacent socket implementations in linked list. - base_implementation_type* next_; - base_implementation_type* prev_; - }; - - // Constructor. - ASIO_DECL win_iocp_socket_service_base(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void base_shutdown(); - - // Construct a new socket implementation. - ASIO_DECL void construct(base_implementation_type& impl); - - // Move-construct a new socket implementation. - ASIO_DECL void base_move_construct(base_implementation_type& impl, - base_implementation_type& other_impl) ASIO_NOEXCEPT; - - // Move-assign from another socket implementation. - ASIO_DECL void base_move_assign(base_implementation_type& impl, - win_iocp_socket_service_base& other_service, - base_implementation_type& other_impl); - - // Destroy a socket implementation. - ASIO_DECL void destroy(base_implementation_type& impl); - - // Determine whether the socket is open. - bool is_open(const base_implementation_type& impl) const - { - return impl.socket_ != invalid_socket; - } - - // Destroy a socket implementation. - ASIO_DECL asio::error_code close( - base_implementation_type& impl, asio::error_code& ec); - - // Release ownership of the socket. - ASIO_DECL socket_type release( - base_implementation_type& impl, asio::error_code& ec); - - // Cancel all operations associated with the socket. - ASIO_DECL asio::error_code cancel( - base_implementation_type& impl, asio::error_code& ec); - - // Determine whether the socket is at the out-of-band data mark. - bool at_mark(const base_implementation_type& impl, - asio::error_code& ec) const - { - return socket_ops::sockatmark(impl.socket_, ec); - } - - // Determine the number of bytes available for reading. - std::size_t available(const base_implementation_type& impl, - asio::error_code& ec) const - { - return socket_ops::available(impl.socket_, ec); - } - - // Place the socket into the state where it will listen for new connections. - asio::error_code listen(base_implementation_type& impl, - int backlog, asio::error_code& ec) - { - socket_ops::listen(impl.socket_, backlog, ec); - return ec; - } - - // Perform an IO control command on the socket. - template - asio::error_code io_control(base_implementation_type& impl, - IO_Control_Command& command, asio::error_code& ec) - { - socket_ops::ioctl(impl.socket_, impl.state_, command.name(), - static_cast(command.data()), ec); - return ec; - } - - // Gets the non-blocking mode of the socket. - bool non_blocking(const base_implementation_type& impl) const - { - return (impl.state_ & socket_ops::user_set_non_blocking) != 0; - } - - // Sets the non-blocking mode of the socket. - asio::error_code non_blocking(base_implementation_type& impl, - bool mode, asio::error_code& ec) - { - socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec); - return ec; - } - - // Gets the non-blocking mode of the native socket implementation. - bool native_non_blocking(const base_implementation_type& impl) const - { - return (impl.state_ & socket_ops::internal_non_blocking) != 0; - } - - // Sets the non-blocking mode of the native socket implementation. - asio::error_code native_non_blocking(base_implementation_type& impl, - bool mode, asio::error_code& ec) - { - socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec); - return ec; - } - - // Wait for the socket to become ready to read, ready to write, or to have - // pending error conditions. - asio::error_code wait(base_implementation_type& impl, - socket_base::wait_type w, asio::error_code& ec) - { - switch (w) - { - case socket_base::wait_read: - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - break; - case socket_base::wait_write: - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - break; - case socket_base::wait_error: - socket_ops::poll_error(impl.socket_, impl.state_, -1, ec); - break; - default: - ec = asio::error::invalid_argument; - break; - } - - return ec; - } - - // Asynchronously wait for the socket to become ready to read, ready to - // write, or to have pending error conditions. - template - void async_wait(base_implementation_type& impl, - socket_base::wait_type w, Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_wait_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_wait")); - - switch (w) - { - case socket_base::wait_read: - start_null_buffers_receive_op(impl, 0, p.p); - break; - case socket_base::wait_write: - start_reactor_op(impl, select_reactor::write_op, p.p); - break; - case socket_base::wait_error: - start_reactor_op(impl, select_reactor::except_op, p.p); - break; - default: - p.p->ec_ = asio::error::invalid_argument; - iocp_service_.post_immediate_completion(p.p, is_continuation); - break; - } - - p.v = p.p = 0; - } - - // Send the given data to the peer. Returns the number of bytes sent. - template - size_t send(base_implementation_type& impl, - const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - return socket_ops::sync_send(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec); - } - - // Wait until data can be sent without blocking. - size_t send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_write(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send(base_implementation_type& impl, - const ConstBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_send_op< - ConstBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_send")); - - buffer_sequence_adapter bufs(buffers); - - start_send_op(impl, bufs.buffers(), bufs.count(), flags, - (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(), - p.p); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_send(null_buffers)")); - - start_reactor_op(impl, select_reactor::write_op, p.p); - p.v = p.p = 0; - } - - // Receive some data from the peer. Returns the number of bytes received. - template - size_t receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - return socket_ops::sync_recv(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec); - } - - // Wait until data can be received without blocking. - size_t receive(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_recv_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.state_, impl.cancel_token_, - buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive")); - - buffer_sequence_adapter bufs(buffers); - - start_receive_op(impl, bufs.buffers(), bufs.count(), flags, - (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(), - p.p); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive(null_buffers)")); - - start_null_buffers_receive_op(impl, flags, p.p); - p.v = p.p = 0; - } - - // Receive some data with associated flags. Returns the number of bytes - // received. - template - size_t receive_with_flags(base_implementation_type& impl, - const MutableBufferSequence& buffers, - socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, asio::error_code& ec) - { - buffer_sequence_adapter bufs(buffers); - - return socket_ops::sync_recvmsg(impl.socket_, impl.state_, - bufs.buffers(), bufs.count(), in_flags, out_flags, ec); - } - - // Wait until data can be received without blocking. - size_t receive_with_flags(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags, - socket_base::message_flags& out_flags, asio::error_code& ec) - { - // Wait for socket to become ready. - socket_ops::poll_read(impl.socket_, impl.state_, -1, ec); - - // Clear out_flags, since we cannot give it any other sensible value when - // performing a null_buffers operation. - out_flags = 0; - - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive_with_flags(base_implementation_type& impl, - const MutableBufferSequence& buffers, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_socket_recvmsg_op< - MutableBufferSequence, Handler, IoExecutor> op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, - buffers, out_flags, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive_with_flags")); - - buffer_sequence_adapter bufs(buffers); - - start_receive_op(impl, bufs.buffers(), bufs.count(), in_flags, false, p.p); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive_with_flags(base_implementation_type& impl, - const null_buffers&, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler& handler, - const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef win_iocp_null_buffers_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(impl.cancel_token_, handler, io_ex); - - ASIO_HANDLER_CREATION((context_, *p.p, "socket", - &impl, impl.socket_, "async_receive_with_flags(null_buffers)")); - - // Reset out_flags since it can be given no sensible value at this time. - out_flags = 0; - - start_null_buffers_receive_op(impl, in_flags, p.p); - p.v = p.p = 0; - } - - // Helper function to restart an asynchronous accept operation. - ASIO_DECL void restart_accept_op(socket_type s, - socket_holder& new_socket, int family, int type, int protocol, - void* output_buffer, DWORD address_length, operation* op); - -protected: - // Open a new socket implementation. - ASIO_DECL asio::error_code do_open( - base_implementation_type& impl, int family, int type, - int protocol, asio::error_code& ec); - - // Assign a native socket to a socket implementation. - ASIO_DECL asio::error_code do_assign( - base_implementation_type& impl, int type, - socket_type native_socket, asio::error_code& ec); - - // Helper function to start an asynchronous send operation. - ASIO_DECL void start_send_op(base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - socket_base::message_flags flags, bool noop, operation* op); - - // Helper function to start an asynchronous send_to operation. - ASIO_DECL void start_send_to_op(base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - const socket_addr_type* addr, int addrlen, - socket_base::message_flags flags, operation* op); - - // Helper function to start an asynchronous receive operation. - ASIO_DECL void start_receive_op(base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, - socket_base::message_flags flags, bool noop, operation* op); - - // Helper function to start an asynchronous null_buffers receive operation. - ASIO_DECL void start_null_buffers_receive_op( - base_implementation_type& impl, - socket_base::message_flags flags, reactor_op* op); - - // Helper function to start an asynchronous receive_from operation. - ASIO_DECL void start_receive_from_op(base_implementation_type& impl, - WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr, - socket_base::message_flags flags, int* addrlen, operation* op); - - // Helper function to start an asynchronous accept operation. - ASIO_DECL void start_accept_op(base_implementation_type& impl, - bool peer_is_open, socket_holder& new_socket, int family, int type, - int protocol, void* output_buffer, DWORD address_length, operation* op); - - // Start an asynchronous read or write operation using the reactor. - ASIO_DECL void start_reactor_op(base_implementation_type& impl, - int op_type, reactor_op* op); - - // Start the asynchronous connect operation using the reactor. - ASIO_DECL void start_connect_op(base_implementation_type& impl, - int family, int type, const socket_addr_type* remote_addr, - std::size_t remote_addrlen, win_iocp_socket_connect_op_base* op); - - // Helper function to close a socket when the associated object is being - // destroyed. - ASIO_DECL void close_for_destruction(base_implementation_type& impl); - - // Update the ID of the thread from which cancellation is safe. - ASIO_DECL void update_cancellation_thread_id( - base_implementation_type& impl); - - // Helper function to get the reactor. If no reactor has been created yet, a - // new one is obtained from the execution context and a pointer to it is - // cached in this service. - ASIO_DECL select_reactor& get_reactor(); - - // The type of a ConnectEx function pointer, as old SDKs may not provide it. - typedef BOOL (PASCAL *connect_ex_fn)(SOCKET, - const socket_addr_type*, int, void*, DWORD, DWORD*, OVERLAPPED*); - - // Helper function to get the ConnectEx pointer. If no ConnectEx pointer has - // been obtained yet, one is obtained using WSAIoctl and the pointer is - // cached. Returns a null pointer if ConnectEx is not available. - ASIO_DECL connect_ex_fn get_connect_ex( - base_implementation_type& impl, int type); - - // The type of a NtSetInformationFile function pointer. - typedef LONG (NTAPI *nt_set_info_fn)(HANDLE, ULONG_PTR*, void*, ULONG, ULONG); - - // Helper function to get the NtSetInformationFile function pointer. If no - // NtSetInformationFile pointer has been obtained yet, one is obtained using - // GetProcAddress and the pointer is cached. Returns a null pointer if - // NtSetInformationFile is not available. - ASIO_DECL nt_set_info_fn get_nt_set_info(); - - // Helper function to emulate InterlockedCompareExchangePointer functionality - // for: - // - very old Platform SDKs; and - // - platform SDKs where MSVC's /Wp64 option causes spurious warnings. - ASIO_DECL void* interlocked_compare_exchange_pointer( - void** dest, void* exch, void* cmp); - - // Helper function to emulate InterlockedExchangePointer functionality for: - // - very old Platform SDKs; and - // - platform SDKs where MSVC's /Wp64 option causes spurious warnings. - ASIO_DECL void* interlocked_exchange_pointer(void** dest, void* val); - - // The execution context used to obtain the reactor, if required. - execution_context& context_; - - // The IOCP service used for running asynchronous operations and dispatching - // handlers. - win_iocp_io_context& iocp_service_; - - // The reactor used for performing connect operations. This object is created - // only if needed. - select_reactor* reactor_; - - // Pointer to ConnectEx implementation. - void* connect_ex_; - - // Pointer to NtSetInformationFile implementation. - void* nt_set_info_; - - // Mutex to protect access to the linked list of implementations. - asio::detail::mutex mutex_; - - // The head of a linked list of all implementations. - base_implementation_type* impl_list_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_iocp_socket_service_base.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_thread_info.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_thread_info.hpp deleted file mode 100644 index 90fa3ba8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_thread_info.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// detail/win_iocp_thread_info.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP -#define ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/thread_info_base.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct win_iocp_thread_info : public thread_info_base -{ -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_wait_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_wait_op.hpp deleted file mode 100644 index f6c61e1b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// -// detail/win_iocp_wait_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_IOCP_WAIT_OP_HPP -#define ASIO_DETAIL_WIN_IOCP_WAIT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_IOCP) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/reactor_op.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class win_iocp_wait_op : public reactor_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(win_iocp_wait_op); - - win_iocp_wait_op(socket_ops::weak_cancel_token_type cancel_token, - Handler& handler, const IoExecutor& io_ex) - : reactor_op(asio::error_code(), - &win_iocp_wait_op::do_perform, - &win_iocp_wait_op::do_complete), - cancel_token_(cancel_token), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static status do_perform(reactor_op*) - { - return done; - } - - static void do_complete(void* owner, operation* base, - const asio::error_code& result_ec, - std::size_t /*bytes_transferred*/) - { - asio::error_code ec(result_ec); - - // Take ownership of the operation object. - win_iocp_wait_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // The reactor may have stored a result in the operation object. - if (o->ec_) - ec = o->ec_; - - // Map non-portable errors to their portable counterparts. - if (ec.value() == ERROR_NETNAME_DELETED) - { - if (o->cancel_token_.expired()) - ec = asio::error::operation_aborted; - else - ec = asio::error::connection_reset; - } - else if (ec.value() == ERROR_PORT_UNREACHABLE) - { - ec = asio::error::connection_refused; - } - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, ec); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - socket_ops::weak_cancel_token_type cancel_token_; - Handler handler_; - handler_work work_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_HAS_IOCP) - -#endif // ASIO_DETAIL_WIN_IOCP_WAIT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_mutex.hpp deleted file mode 100644 index e02f34e8..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_mutex.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// -// detail/win_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_MUTEX_HPP -#define ASIO_DETAIL_WIN_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_lock.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_mutex - : private noncopyable -{ -public: - typedef asio::detail::scoped_lock scoped_lock; - - // Constructor. - ASIO_DECL win_mutex(); - - // Destructor. - ~win_mutex() - { - ::DeleteCriticalSection(&crit_section_); - } - - // Lock the mutex. - void lock() - { - ::EnterCriticalSection(&crit_section_); - } - - // Unlock the mutex. - void unlock() - { - ::LeaveCriticalSection(&crit_section_); - } - -private: - // Initialisation must be performed in a separate function to the constructor - // since the compiler does not support the use of structured exceptions and - // C++ exceptions in the same function. - ASIO_DECL int do_init(); - - ::CRITICAL_SECTION crit_section_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_mutex.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_WIN_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_object_handle_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_object_handle_service.hpp deleted file mode 100644 index bba4a921..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_object_handle_service.hpp +++ /dev/null @@ -1,195 +0,0 @@ -// -// detail/win_object_handle_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2011 Boris Schaeling (boris@highscore.de) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP -#define ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) - -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/wait_handler.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class win_object_handle_service : - public execution_context_service_base -{ -public: - // The native type of an object handle. - typedef HANDLE native_handle_type; - - // The implementation type of the object handle. - class implementation_type - { - public: - // Default constructor. - implementation_type() - : handle_(INVALID_HANDLE_VALUE), - wait_handle_(INVALID_HANDLE_VALUE), - owner_(0), - next_(0), - prev_(0) - { - } - - private: - // Only this service will have access to the internal values. - friend class win_object_handle_service; - - // The native object handle representation. May be accessed or modified - // without locking the mutex. - native_handle_type handle_; - - // The handle used to unregister the wait operation. The mutex must be - // locked when accessing or modifying this member. - HANDLE wait_handle_; - - // The operations waiting on the object handle. If there is a registered - // wait then the mutex must be locked when accessing or modifying this - // member - op_queue op_queue_; - - // The service instance that owns the object handle implementation. - win_object_handle_service* owner_; - - // Pointers to adjacent handle implementations in linked list. The mutex - // must be locked when accessing or modifying these members. - implementation_type* next_; - implementation_type* prev_; - }; - - // Constructor. - ASIO_DECL win_object_handle_service(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Construct a new handle implementation. - ASIO_DECL void construct(implementation_type& impl); - - // Move-construct a new handle implementation. - ASIO_DECL void move_construct(implementation_type& impl, - implementation_type& other_impl); - - // Move-assign from another handle implementation. - ASIO_DECL void move_assign(implementation_type& impl, - win_object_handle_service& other_service, - implementation_type& other_impl); - - // Destroy a handle implementation. - ASIO_DECL void destroy(implementation_type& impl); - - // Assign a native handle to a handle implementation. - ASIO_DECL asio::error_code assign(implementation_type& impl, - const native_handle_type& handle, asio::error_code& ec); - - // Determine whether the handle is open. - bool is_open(const implementation_type& impl) const - { - return impl.handle_ != INVALID_HANDLE_VALUE && impl.handle_ != 0; - } - - // Destroy a handle implementation. - ASIO_DECL asio::error_code close(implementation_type& impl, - asio::error_code& ec); - - // Get the native handle representation. - native_handle_type native_handle(const implementation_type& impl) const - { - return impl.handle_; - } - - // Cancel all operations associated with the handle. - ASIO_DECL asio::error_code cancel(implementation_type& impl, - asio::error_code& ec); - - // Perform a synchronous wait for the object to enter a signalled state. - ASIO_DECL void wait(implementation_type& impl, - asio::error_code& ec); - - /// Start an asynchronous wait. - template - void async_wait(implementation_type& impl, - Handler& handler, const IoExecutor& io_ex) - { - // Allocate and construct an operation to wrap the handler. - typedef wait_handler op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), *p.p, "object_handle", - &impl, reinterpret_cast(impl.wait_handle_), "async_wait")); - - start_wait_op(impl, p.p); - p.v = p.p = 0; - } - -private: - // Helper function to start an asynchronous wait operation. - ASIO_DECL void start_wait_op(implementation_type& impl, wait_op* op); - - // Helper function to register a wait operation. - ASIO_DECL void register_wait_callback( - implementation_type& impl, mutex::scoped_lock& lock); - - // Callback function invoked when the registered wait completes. - static ASIO_DECL VOID CALLBACK wait_callback( - PVOID param, BOOLEAN timeout); - - // The scheduler used to post completions. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - - // Mutex to protect access to internal state. - mutex mutex_; - - // The head of a linked list of all implementations. - implementation_type* impl_list_; - - // Flag to indicate that the dispatcher has been shut down. - bool shutdown_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_object_handle_service.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) - -#endif // ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_static_mutex.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_static_mutex.hpp deleted file mode 100644 index c96e708a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_static_mutex.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// -// detail/win_static_mutex.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_STATIC_MUTEX_HPP -#define ASIO_DETAIL_WIN_STATIC_MUTEX_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/scoped_lock.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct win_static_mutex -{ - typedef asio::detail::scoped_lock scoped_lock; - - // Initialise the mutex. - ASIO_DECL void init(); - - // Initialisation must be performed in a separate function to the "public" - // init() function since the compiler does not support the use of structured - // exceptions and C++ exceptions in the same function. - ASIO_DECL int do_init(); - - // Lock the mutex. - void lock() - { - ::EnterCriticalSection(&crit_section_); - } - - // Unlock the mutex. - void unlock() - { - ::LeaveCriticalSection(&crit_section_); - } - - bool initialised_; - ::CRITICAL_SECTION crit_section_; -}; - -#if defined(UNDER_CE) -# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0 } } -#else // defined(UNDER_CE) -# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0, 0 } } -#endif // defined(UNDER_CE) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_static_mutex.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_WIN_STATIC_MUTEX_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_thread.hpp deleted file mode 100644 index 6c7168c9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_thread.hpp +++ /dev/null @@ -1,147 +0,0 @@ -// -// detail/win_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_THREAD_HPP -#define ASIO_DETAIL_WIN_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) \ - && !defined(ASIO_WINDOWS_APP) \ - && !defined(UNDER_CE) - -#include -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -ASIO_DECL unsigned int __stdcall win_thread_function(void* arg); - -#if defined(WINVER) && (WINVER < 0x0500) -ASIO_DECL void __stdcall apc_function(ULONG data); -#else -ASIO_DECL void __stdcall apc_function(ULONG_PTR data); -#endif - -template -class win_thread_base -{ -public: - static bool terminate_threads() - { - return ::InterlockedExchangeAdd(&terminate_threads_, 0) != 0; - } - - static void set_terminate_threads(bool b) - { - ::InterlockedExchange(&terminate_threads_, b ? 1 : 0); - } - -private: - static long terminate_threads_; -}; - -template -long win_thread_base::terminate_threads_ = 0; - -class win_thread - : private noncopyable, - public win_thread_base -{ -public: - // Constructor. - template - win_thread(Function f, unsigned int stack_size = 0) - : thread_(0), - exit_event_(0) - { - start_thread(new func(f), stack_size); - } - - // Destructor. - ASIO_DECL ~win_thread(); - - // Wait for the thread to exit. - ASIO_DECL void join(); - - // Get number of CPUs. - ASIO_DECL static std::size_t hardware_concurrency(); - -private: - friend ASIO_DECL unsigned int __stdcall win_thread_function(void* arg); - -#if defined(WINVER) && (WINVER < 0x0500) - friend ASIO_DECL void __stdcall apc_function(ULONG); -#else - friend ASIO_DECL void __stdcall apc_function(ULONG_PTR); -#endif - - class func_base - { - public: - virtual ~func_base() {} - virtual void run() = 0; - ::HANDLE entry_event_; - ::HANDLE exit_event_; - }; - - struct auto_func_base_ptr - { - func_base* ptr; - ~auto_func_base_ptr() { delete ptr; } - }; - - template - class func - : public func_base - { - public: - func(Function f) - : f_(f) - { - } - - virtual void run() - { - f_(); - } - - private: - Function f_; - }; - - ASIO_DECL void start_thread(func_base* arg, unsigned int stack_size); - - ::HANDLE thread_; - ::HANDLE exit_event_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_thread.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - // && !defined(ASIO_WINDOWS_APP) - // && !defined(UNDER_CE) - -#endif // ASIO_DETAIL_WIN_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_tss_ptr.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_tss_ptr.hpp deleted file mode 100644 index 7044cd12..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/win_tss_ptr.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// -// detail/win_tss_ptr.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WIN_TSS_PTR_HPP -#define ASIO_DETAIL_WIN_TSS_PTR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/socket_types.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -// Helper function to create thread-specific storage. -ASIO_DECL DWORD win_tss_ptr_create(); - -template -class win_tss_ptr - : private noncopyable -{ -public: - // Constructor. - win_tss_ptr() - : tss_key_(win_tss_ptr_create()) - { - } - - // Destructor. - ~win_tss_ptr() - { - ::TlsFree(tss_key_); - } - - // Get the value. - operator T*() const - { - return static_cast(::TlsGetValue(tss_key_)); - } - - // Set the value. - void operator=(T* value) - { - ::TlsSetValue(tss_key_, value); - } - -private: - // Thread-specific storage to allow unlocked access to determine whether a - // thread is a member of the pool. - DWORD tss_key_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/win_tss_ptr.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) - -#endif // ASIO_DETAIL_WIN_TSS_PTR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winapp_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winapp_thread.hpp deleted file mode 100644 index 74e3fddc..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winapp_thread.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// -// detail/winapp_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINAPP_THREAD_HPP -#define ASIO_DETAIL_WINAPP_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) && defined(ASIO_WINDOWS_APP) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -DWORD WINAPI winapp_thread_function(LPVOID arg); - -class winapp_thread - : private noncopyable -{ -public: - // Constructor. - template - winapp_thread(Function f, unsigned int = 0) - { - scoped_ptr arg(new func(f)); - DWORD thread_id = 0; - thread_ = ::CreateThread(0, 0, winapp_thread_function, - arg.get(), 0, &thread_id); - if (!thread_) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread"); - } - arg.release(); - } - - // Destructor. - ~winapp_thread() - { - ::CloseHandle(thread_); - } - - // Wait for the thread to exit. - void join() - { - ::WaitForSingleObjectEx(thread_, INFINITE, false); - } - - // Get number of CPUs. - static std::size_t hardware_concurrency() - { - SYSTEM_INFO system_info; - ::GetNativeSystemInfo(&system_info); - return system_info.dwNumberOfProcessors; - } - -private: - friend DWORD WINAPI winapp_thread_function(LPVOID arg); - - class func_base - { - public: - virtual ~func_base() {} - virtual void run() = 0; - }; - - template - class func - : public func_base - { - public: - func(Function f) - : f_(f) - { - } - - virtual void run() - { - f_(); - } - - private: - Function f_; - }; - - ::HANDLE thread_; -}; - -inline DWORD WINAPI winapp_thread_function(LPVOID arg) -{ - scoped_ptr func( - static_cast(arg)); - func->run(); - return 0; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) && defined(ASIO_WINDOWS_APP) - -#endif // ASIO_DETAIL_WINAPP_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wince_thread.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wince_thread.hpp deleted file mode 100644 index 37bf2ad7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wince_thread.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// -// detail/wince_thread.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINCE_THREAD_HPP -#define ASIO_DETAIL_WINCE_THREAD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) && defined(UNDER_CE) - -#include "asio/detail/noncopyable.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/throw_error.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -DWORD WINAPI wince_thread_function(LPVOID arg); - -class wince_thread - : private noncopyable -{ -public: - // Constructor. - template - wince_thread(Function f, unsigned int = 0) - { - scoped_ptr arg(new func(f)); - DWORD thread_id = 0; - thread_ = ::CreateThread(0, 0, wince_thread_function, - arg.get(), 0, &thread_id); - if (!thread_) - { - DWORD last_error = ::GetLastError(); - asio::error_code ec(last_error, - asio::error::get_system_category()); - asio::detail::throw_error(ec, "thread"); - } - arg.release(); - } - - // Destructor. - ~wince_thread() - { - ::CloseHandle(thread_); - } - - // Wait for the thread to exit. - void join() - { - ::WaitForSingleObject(thread_, INFINITE); - } - - // Get number of CPUs. - static std::size_t hardware_concurrency() - { - SYSTEM_INFO system_info; - ::GetSystemInfo(&system_info); - return system_info.dwNumberOfProcessors; - } - -private: - friend DWORD WINAPI wince_thread_function(LPVOID arg); - - class func_base - { - public: - virtual ~func_base() {} - virtual void run() = 0; - }; - - template - class func - : public func_base - { - public: - func(Function f) - : f_(f) - { - } - - virtual void run() - { - f_(); - } - - private: - Function f_; - }; - - ::HANDLE thread_; -}; - -inline DWORD WINAPI wince_thread_function(LPVOID arg) -{ - scoped_ptr func( - static_cast(arg)); - func->run(); - return 0; -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS) && defined(UNDER_CE) - -#endif // ASIO_DETAIL_WINCE_THREAD_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_manager.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_manager.hpp deleted file mode 100644 index 6058be27..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_manager.hpp +++ /dev/null @@ -1,305 +0,0 @@ -// -// detail/winrt_async_manager.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP -#define ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include -#include "asio/detail/atomic_count.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class winrt_async_manager - : public execution_context_service_base -{ -public: - // Constructor. - winrt_async_manager(execution_context& context) - : execution_context_service_base(context), - scheduler_(use_service(context)), - outstanding_ops_(1) - { - } - - // Destructor. - ~winrt_async_manager() - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - if (--outstanding_ops_ > 0) - { - // Block until last operation is complete. - std::future f = promise_.get_future(); - f.wait(); - } - } - - void sync(Windows::Foundation::IAsyncAction^ action, - asio::error_code& ec) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto promise = std::make_shared>(); - auto future = promise->get_future(); - - action->Completed = ref new AsyncActionCompletedHandler( - [promise](IAsyncAction^ action, AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - promise->set_value(asio::error::operation_aborted); - break; - case AsyncStatus::Error: - case AsyncStatus::Completed: - default: - asio::error_code ec( - action->ErrorCode.Value, - asio::system_category()); - promise->set_value(ec); - break; - } - }); - - ec = future.get(); - } - - template - TResult sync(Windows::Foundation::IAsyncOperation^ operation, - asio::error_code& ec) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto promise = std::make_shared>(); - auto future = promise->get_future(); - - operation->Completed = ref new AsyncOperationCompletedHandler( - [promise](IAsyncOperation^ operation, AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - promise->set_value(asio::error::operation_aborted); - break; - case AsyncStatus::Error: - case AsyncStatus::Completed: - default: - asio::error_code ec( - operation->ErrorCode.Value, - asio::system_category()); - promise->set_value(ec); - break; - } - }); - - ec = future.get(); - return operation->GetResults(); - } - - template - TResult sync( - Windows::Foundation::IAsyncOperationWithProgress< - TResult, TProgress>^ operation, - asio::error_code& ec) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto promise = std::make_shared>(); - auto future = promise->get_future(); - - operation->Completed - = ref new AsyncOperationWithProgressCompletedHandler( - [promise](IAsyncOperationWithProgress^ operation, - AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - promise->set_value(asio::error::operation_aborted); - break; - case AsyncStatus::Started: - break; - case AsyncStatus::Error: - case AsyncStatus::Completed: - default: - asio::error_code ec( - operation->ErrorCode.Value, - asio::system_category()); - promise->set_value(ec); - break; - } - }); - - ec = future.get(); - return operation->GetResults(); - } - - void async(Windows::Foundation::IAsyncAction^ action, - winrt_async_op* handler) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto on_completed = ref new AsyncActionCompletedHandler( - [this, handler](IAsyncAction^ action, AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - handler->ec_ = asio::error::operation_aborted; - break; - case AsyncStatus::Started: - return; - case AsyncStatus::Completed: - case AsyncStatus::Error: - default: - handler->ec_ = asio::error_code( - action->ErrorCode.Value, - asio::system_category()); - break; - } - scheduler_.post_deferred_completion(handler); - if (--outstanding_ops_ == 0) - promise_.set_value(); - }); - - scheduler_.work_started(); - ++outstanding_ops_; - action->Completed = on_completed; - } - - template - void async(Windows::Foundation::IAsyncOperation^ operation, - winrt_async_op* handler) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto on_completed = ref new AsyncOperationCompletedHandler( - [this, handler](IAsyncOperation^ operation, AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - handler->ec_ = asio::error::operation_aborted; - break; - case AsyncStatus::Started: - return; - case AsyncStatus::Completed: - handler->result_ = operation->GetResults(); - // Fall through. - case AsyncStatus::Error: - default: - handler->ec_ = asio::error_code( - operation->ErrorCode.Value, - asio::system_category()); - break; - } - scheduler_.post_deferred_completion(handler); - if (--outstanding_ops_ == 0) - promise_.set_value(); - }); - - scheduler_.work_started(); - ++outstanding_ops_; - operation->Completed = on_completed; - } - - template - void async( - Windows::Foundation::IAsyncOperationWithProgress< - TResult, TProgress>^ operation, - winrt_async_op* handler) - { - using namespace Windows::Foundation; - using Windows::Foundation::AsyncStatus; - - auto on_completed - = ref new AsyncOperationWithProgressCompletedHandler( - [this, handler](IAsyncOperationWithProgress< - TResult, TProgress>^ operation, AsyncStatus status) - { - switch (status) - { - case AsyncStatus::Canceled: - handler->ec_ = asio::error::operation_aborted; - break; - case AsyncStatus::Started: - return; - case AsyncStatus::Completed: - handler->result_ = operation->GetResults(); - // Fall through. - case AsyncStatus::Error: - default: - handler->ec_ = asio::error_code( - operation->ErrorCode.Value, - asio::system_category()); - break; - } - scheduler_.post_deferred_completion(handler); - if (--outstanding_ops_ == 0) - promise_.set_value(); - }); - - scheduler_.work_started(); - ++outstanding_ops_; - operation->Completed = on_completed; - } - -private: - // The scheduler implementation used to post completed handlers. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - - // Count of outstanding operations. - atomic_count outstanding_ops_; - - // Used to keep wait for outstanding operations to complete. - std::promise promise_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_op.hpp deleted file mode 100644 index 78c411b4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_async_op.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// detail/winrt_async_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_ASYNC_OP_HPP -#define ASIO_DETAIL_WINRT_ASYNC_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/operation.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_async_op - : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - - // The result of the operation, to be passed to the completion handler. - TResult result_; - -protected: - winrt_async_op(func_type complete_func) - : operation(complete_func), - result_() - { - } -}; - -template <> -class winrt_async_op - : public operation -{ -public: - // The error code to be passed to the completion handler. - asio::error_code ec_; - -protected: - winrt_async_op(func_type complete_func) - : operation(complete_func) - { - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WINRT_ASYNC_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolve_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolve_op.hpp deleted file mode 100644 index d2537b92..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolve_op.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// detail/winrt_resolve_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_RESOLVE_OP_HPP -#define ASIO_DETAIL_WINRT_RESOLVE_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/ip/basic_resolver_results.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_resolve_op : - public winrt_async_op< - Windows::Foundation::Collections::IVectorView< - Windows::Networking::EndpointPair^>^> -{ -public: - ASIO_DEFINE_HANDLER_PTR(winrt_resolve_op); - - typedef typename Protocol::endpoint endpoint_type; - typedef asio::ip::basic_resolver_query query_type; - typedef asio::ip::basic_resolver_results results_type; - - winrt_resolve_op(const query_type& query, - Handler& handler, const IoExecutor& io_ex) - : winrt_async_op< - Windows::Foundation::Collections::IVectorView< - Windows::Networking::EndpointPair^>^>( - &winrt_resolve_op::do_complete), - query_(query), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code&, std::size_t) - { - // Take ownership of the operation object. - winrt_resolve_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - results_type results = results_type(); - if (!o->ec_) - { - try - { - results = results_type::create(o->result_, o->query_.hints(), - o->query_.host_name(), o->query_.service_name()); - } - catch (Platform::Exception^ e) - { - o->ec_ = asio::error_code(e->HResult, - asio::system_category()); - } - } - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, results); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "...")); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - query_type query_; - Handler handler_; - handler_work executor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_RESOLVE_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolver_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolver_service.hpp deleted file mode 100644 index e3d2859d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_resolver_service.hpp +++ /dev/null @@ -1,212 +0,0 @@ -// -// detail/winrt_resolver_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP -#define ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/ip/basic_resolver_query.hpp" -#include "asio/ip/basic_resolver_results.hpp" -#include "asio/post.hpp" -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/socket_ops.hpp" -#include "asio/detail/winrt_async_manager.hpp" -#include "asio/detail/winrt_resolve_op.hpp" -#include "asio/detail/winrt_utils.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_resolver_service : - public execution_context_service_base > -{ -public: - // The implementation type of the resolver. A cancellation token is used to - // indicate to the asynchronous operation that the operation has been - // cancelled. - typedef socket_ops::shared_cancel_token_type implementation_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The query type. - typedef asio::ip::basic_resolver_query query_type; - - // The results type. - typedef asio::ip::basic_resolver_results results_type; - - // Constructor. - winrt_resolver_service(execution_context& context) - : execution_context_service_base< - winrt_resolver_service >(context), - scheduler_(use_service(context)), - async_manager_(use_service(context)) - { - } - - // Destructor. - ~winrt_resolver_service() - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - } - - // Perform any fork-related housekeeping. - void notify_fork(execution_context::fork_event) - { - } - - // Construct a new resolver implementation. - void construct(implementation_type&) - { - } - - // Move-construct a new resolver implementation. - void move_construct(implementation_type&, - implementation_type&) - { - } - - // Move-assign from another resolver implementation. - void move_assign(implementation_type&, - winrt_resolver_service&, implementation_type&) - { - } - - // Destroy a resolver implementation. - void destroy(implementation_type&) - { - } - - // Cancel pending asynchronous operations. - void cancel(implementation_type&) - { - } - - // Resolve a query to a list of entries. - results_type resolve(implementation_type&, - const query_type& query, asio::error_code& ec) - { - try - { - using namespace Windows::Networking::Sockets; - auto endpoint_pairs = async_manager_.sync( - DatagramSocket::GetEndpointPairsAsync( - winrt_utils::host_name(query.host_name()), - winrt_utils::string(query.service_name())), ec); - - if (ec) - return results_type(); - - return results_type::create( - endpoint_pairs, query.hints(), - query.host_name(), query.service_name()); - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - return results_type(); - } - } - - // Asynchronously resolve a query to a list of entries. - template - void async_resolve(implementation_type& impl, const query_type& query, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef winrt_resolve_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(query, handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "resolver", &impl, 0, "async_resolve")); - (void)impl; - - try - { - using namespace Windows::Networking::Sockets; - async_manager_.async(DatagramSocket::GetEndpointPairsAsync( - winrt_utils::host_name(query.host_name()), - winrt_utils::string(query.service_name())), p.p); - p.v = p.p = 0; - } - catch (Platform::Exception^ e) - { - p.p->ec_ = asio::error_code( - e->HResult, asio::system_category()); - scheduler_.post_immediate_completion(p.p, is_continuation); - p.v = p.p = 0; - } - } - - // Resolve an endpoint to a list of entries. - results_type resolve(implementation_type&, - const endpoint_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return results_type(); - } - - // Asynchronously resolve an endpoint to a list of entries. - template - void async_resolve(implementation_type&, const endpoint_type&, - Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const results_type results; - asio::post(io_ex, detail::bind_handler(handler, ec, results)); - } - -private: - // The scheduler implementation used for delivering completions. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - - winrt_async_manager& async_manager_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp deleted file mode 100644 index 004fc09f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// detail/winrt_socket_connect_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP -#define ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_socket_connect_op : - public winrt_async_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(winrt_socket_connect_op); - - winrt_socket_connect_op(Handler& handler, const IoExecutor& io_ex) - : winrt_async_op(&winrt_socket_connect_op::do_complete), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code&, std::size_t) - { - // Take ownership of the operation object. - winrt_socket_connect_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder1 - handler(o->handler_, o->ec_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - Handler handler_; - handler_work executor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp deleted file mode 100644 index 74fae762..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// -// detail/winrt_socket_recv_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP -#define ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_socket_recv_op : - public winrt_async_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(winrt_socket_recv_op); - - winrt_socket_recv_op(const MutableBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : winrt_async_op( - &winrt_socket_recv_op::do_complete), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code&, std::size_t) - { - // Take ownership of the operation object. - winrt_socket_recv_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - std::size_t bytes_transferred = o->result_ ? o->result_->Length : 0; - if (bytes_transferred == 0 && !o->ec_ && - !buffer_sequence_adapter::all_empty(o->buffers_)) - { - o->ec_ = asio::error::eof; - } - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, bytes_transferred); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - MutableBufferSequence buffers_; - Handler handler_; - handler_work executor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_send_op.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_send_op.hpp deleted file mode 100644 index 6129c800..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +++ /dev/null @@ -1,110 +0,0 @@ -// -// detail/winrt_socket_send_op.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP -#define ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/fenced_block.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" -#include "asio/detail/handler_work.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/winrt_async_op.hpp" -#include "asio/error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_socket_send_op : - public winrt_async_op -{ -public: - ASIO_DEFINE_HANDLER_PTR(winrt_socket_send_op); - - winrt_socket_send_op(const ConstBufferSequence& buffers, - Handler& handler, const IoExecutor& io_ex) - : winrt_async_op(&winrt_socket_send_op::do_complete), - buffers_(buffers), - handler_(ASIO_MOVE_CAST(Handler)(handler)), - work_(handler_, io_ex) - { - } - - static void do_complete(void* owner, operation* base, - const asio::error_code&, std::size_t) - { - // Take ownership of the operation object. - winrt_socket_send_op* o(static_cast(base)); - ptr p = { asio::detail::addressof(o->handler_), o, o }; - - ASIO_HANDLER_COMPLETION((*o)); - - // Take ownership of the operation's outstanding work. - handler_work w( - ASIO_MOVE_CAST2(handler_work)( - o->work_)); - -#if defined(ASIO_ENABLE_BUFFER_DEBUGGING) - // Check whether buffers are still valid. - if (owner) - { - buffer_sequence_adapter::validate(o->buffers_); - } -#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING) - - // Make a copy of the handler so that the memory can be deallocated before - // the upcall is made. Even if we're not about to make an upcall, a - // sub-object of the handler may be the true owner of the memory associated - // with the handler. Consequently, a local copy of the handler is required - // to ensure that any owning sub-object remains valid until after we have - // deallocated the memory here. - detail::binder2 - handler(o->handler_, o->ec_, o->result_); - p.h = asio::detail::addressof(handler.handler_); - p.reset(); - - // Make the upcall if required. - if (owner) - { - fenced_block b(fenced_block::half); - ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); - w.complete(handler, handler.handler_); - ASIO_HANDLER_INVOCATION_END; - } - } - -private: - ConstBufferSequence buffers_; - Handler handler_; - handler_work executor_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service.hpp deleted file mode 100644 index 45b614ac..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service.hpp +++ /dev/null @@ -1,250 +0,0 @@ -// -// detail/winrt_ssocket_service.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP -#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/winrt_socket_connect_op.hpp" -#include "asio/detail/winrt_ssocket_service_base.hpp" -#include "asio/detail/winrt_utils.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -class winrt_ssocket_service : - public execution_context_service_base >, - public winrt_ssocket_service_base -{ -public: - // The protocol type. - typedef Protocol protocol_type; - - // The endpoint type. - typedef typename Protocol::endpoint endpoint_type; - - // The native type of a socket. - typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type; - - // The implementation type of the socket. - struct implementation_type : base_implementation_type - { - // Default constructor. - implementation_type() - : base_implementation_type(), - protocol_(endpoint_type().protocol()) - { - } - - // The protocol associated with the socket. - protocol_type protocol_; - }; - - // Constructor. - winrt_ssocket_service(execution_context& context) - : execution_context_service_base >(context), - winrt_ssocket_service_base(context) - { - } - - // Destroy all user-defined handler objects owned by the service. - void shutdown() - { - this->base_shutdown(); - } - - // Move-construct a new socket implementation. - void move_construct(implementation_type& impl, - implementation_type& other_impl) ASIO_NOEXCEPT - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - } - - // Move-assign from another socket implementation. - void move_assign(implementation_type& impl, - winrt_ssocket_service& other_service, - implementation_type& other_impl) - { - this->base_move_assign(impl, other_service, other_impl); - - impl.protocol_ = other_impl.protocol_; - other_impl.protocol_ = endpoint_type().protocol(); - } - - // Move-construct a new socket implementation from another protocol type. - template - void converting_move_construct(implementation_type& impl, - winrt_ssocket_service&, - typename winrt_ssocket_service< - Protocol1>::implementation_type& other_impl) - { - this->base_move_construct(impl, other_impl); - - impl.protocol_ = protocol_type(other_impl.protocol_); - other_impl.protocol_ = typename Protocol1::endpoint().protocol(); - } - - // Open a new socket implementation. - asio::error_code open(implementation_type& impl, - const protocol_type& protocol, asio::error_code& ec) - { - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - try - { - impl.socket_ = ref new Windows::Networking::Sockets::StreamSocket; - impl.protocol_ = protocol; - ec = asio::error_code(); - } - catch (Platform::Exception^ e) - { - ec = asio::error_code(e->HResult, - asio::system_category()); - } - - return ec; - } - - // Assign a native socket to a socket implementation. - asio::error_code assign(implementation_type& impl, - const protocol_type& protocol, const native_handle_type& native_socket, - asio::error_code& ec) - { - if (is_open(impl)) - { - ec = asio::error::already_open; - return ec; - } - - impl.socket_ = native_socket; - impl.protocol_ = protocol; - ec = asio::error_code(); - - return ec; - } - - // Bind the socket to the specified local endpoint. - asio::error_code bind(implementation_type&, - const endpoint_type&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Get the local endpoint. - endpoint_type local_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint; - endpoint.resize(do_get_endpoint(impl, true, - endpoint.data(), endpoint.size(), ec)); - return endpoint; - } - - // Get the remote endpoint. - endpoint_type remote_endpoint(const implementation_type& impl, - asio::error_code& ec) const - { - endpoint_type endpoint; - endpoint.resize(do_get_endpoint(impl, false, - endpoint.data(), endpoint.size(), ec)); - return endpoint; - } - - // Disable sends or receives on the socket. - asio::error_code shutdown(implementation_type&, - socket_base::shutdown_type, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Set a socket option. - template - asio::error_code set_option(implementation_type& impl, - const Option& option, asio::error_code& ec) - { - return do_set_option(impl, option.level(impl.protocol_), - option.name(impl.protocol_), option.data(impl.protocol_), - option.size(impl.protocol_), ec); - } - - // Get a socket option. - template - asio::error_code get_option(const implementation_type& impl, - Option& option, asio::error_code& ec) const - { - std::size_t size = option.size(impl.protocol_); - do_get_option(impl, option.level(impl.protocol_), - option.name(impl.protocol_), - option.data(impl.protocol_), &size, ec); - if (!ec) - option.resize(impl.protocol_, size); - return ec; - } - - // Connect the socket to the specified endpoint. - asio::error_code connect(implementation_type& impl, - const endpoint_type& peer_endpoint, asio::error_code& ec) - { - return do_connect(impl, peer_endpoint.data(), ec); - } - - // Start an asynchronous connect. - template - void async_connect(implementation_type& impl, - const endpoint_type& peer_endpoint, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef winrt_socket_connect_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "socket", &impl, 0, "async_connect")); - - start_connect_op(impl, peer_endpoint.data(), p.p, is_continuation); - p.v = p.p = 0; - } -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp deleted file mode 100644 index ec2722f5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp +++ /dev/null @@ -1,362 +0,0 @@ -// -// detail/winrt_ssocket_service_base.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP -#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include "asio/buffer.hpp" -#include "asio/error.hpp" -#include "asio/execution_context.hpp" -#include "asio/socket_base.hpp" -#include "asio/detail/buffer_sequence_adapter.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/socket_types.hpp" -#include "asio/detail/winrt_async_manager.hpp" -#include "asio/detail/winrt_socket_recv_op.hpp" -#include "asio/detail/winrt_socket_send_op.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class winrt_ssocket_service_base -{ -public: - // The native type of a socket. - typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type; - - // The implementation type of the socket. - struct base_implementation_type - { - // Default constructor. - base_implementation_type() - : socket_(nullptr), - next_(0), - prev_(0) - { - } - - // The underlying native socket. - native_handle_type socket_; - - // Pointers to adjacent socket implementations in linked list. - base_implementation_type* next_; - base_implementation_type* prev_; - }; - - // Constructor. - ASIO_DECL winrt_ssocket_service_base(execution_context& context); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void base_shutdown(); - - // Construct a new socket implementation. - ASIO_DECL void construct(base_implementation_type&); - - // Move-construct a new socket implementation. - ASIO_DECL void base_move_construct(base_implementation_type& impl, - base_implementation_type& other_impl) ASIO_NOEXCEPT; - - // Move-assign from another socket implementation. - ASIO_DECL void base_move_assign(base_implementation_type& impl, - winrt_ssocket_service_base& other_service, - base_implementation_type& other_impl); - - // Destroy a socket implementation. - ASIO_DECL void destroy(base_implementation_type& impl); - - // Determine whether the socket is open. - bool is_open(const base_implementation_type& impl) const - { - return impl.socket_ != nullptr; - } - - // Destroy a socket implementation. - ASIO_DECL asio::error_code close( - base_implementation_type& impl, asio::error_code& ec); - - // Release ownership of the socket. - ASIO_DECL native_handle_type release( - base_implementation_type& impl, asio::error_code& ec); - - // Get the native socket representation. - native_handle_type native_handle(base_implementation_type& impl) - { - return impl.socket_; - } - - // Cancel all operations associated with the socket. - asio::error_code cancel(base_implementation_type&, - asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Determine whether the socket is at the out-of-band data mark. - bool at_mark(const base_implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return false; - } - - // Determine the number of bytes available for reading. - std::size_t available(const base_implementation_type&, - asio::error_code& ec) const - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Perform an IO control command on the socket. - template - asio::error_code io_control(base_implementation_type&, - IO_Control_Command&, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Gets the non-blocking mode of the socket. - bool non_blocking(const base_implementation_type&) const - { - return false; - } - - // Sets the non-blocking mode of the socket. - asio::error_code non_blocking(base_implementation_type&, - bool, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Gets the non-blocking mode of the native socket implementation. - bool native_non_blocking(const base_implementation_type&) const - { - return false; - } - - // Sets the non-blocking mode of the native socket implementation. - asio::error_code native_non_blocking(base_implementation_type&, - bool, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return ec; - } - - // Send the given data to the peer. - template - std::size_t send(base_implementation_type& impl, - const ConstBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return do_send(impl, - buffer_sequence_adapter::first(buffers), flags, ec); - } - - // Wait until data can be sent without blocking. - std::size_t send(base_implementation_type&, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous send. The data being sent must be valid for the - // lifetime of the asynchronous operation. - template - void async_send(base_implementation_type& impl, - const ConstBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef winrt_socket_send_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "socket", &impl, 0, "async_send")); - - start_send_op(impl, - buffer_sequence_adapter::first(buffers), - flags, p.p, is_continuation); - p.v = p.p = 0; - } - - // Start an asynchronous wait until data can be sent without blocking. - template - void async_send(base_implementation_type&, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, - detail::bind_handler(handler, ec, bytes_transferred)); - } - - // Receive some data from the peer. Returns the number of bytes received. - template - std::size_t receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, - socket_base::message_flags flags, asio::error_code& ec) - { - return do_receive(impl, - buffer_sequence_adapter::first(buffers), flags, ec); - } - - // Wait until data can be received without blocking. - std::size_t receive(base_implementation_type&, const null_buffers&, - socket_base::message_flags, asio::error_code& ec) - { - ec = asio::error::operation_not_supported; - return 0; - } - - // Start an asynchronous receive. The buffer for the data being received - // must be valid for the lifetime of the asynchronous operation. - template - void async_receive(base_implementation_type& impl, - const MutableBufferSequence& buffers, socket_base::message_flags flags, - Handler& handler, const IoExecutor& io_ex) - { - bool is_continuation = - asio_handler_cont_helpers::is_continuation(handler); - - // Allocate and construct an operation to wrap the handler. - typedef winrt_socket_recv_op op; - typename op::ptr p = { asio::detail::addressof(handler), - op::ptr::allocate(handler), 0 }; - p.p = new (p.v) op(buffers, handler, io_ex); - - ASIO_HANDLER_CREATION((scheduler_.context(), - *p.p, "socket", &impl, 0, "async_receive")); - - start_receive_op(impl, - buffer_sequence_adapter::first(buffers), - flags, p.p, is_continuation); - p.v = p.p = 0; - } - - // Wait until data can be received without blocking. - template - void async_receive(base_implementation_type&, const null_buffers&, - socket_base::message_flags, Handler& handler, const IoExecutor& io_ex) - { - asio::error_code ec = asio::error::operation_not_supported; - const std::size_t bytes_transferred = 0; - asio::post(io_ex, - detail::bind_handler(handler, ec, bytes_transferred)); - } - -protected: - // Helper function to obtain endpoints associated with the connection. - ASIO_DECL std::size_t do_get_endpoint( - const base_implementation_type& impl, bool local, - void* addr, std::size_t addr_len, asio::error_code& ec) const; - - // Helper function to set a socket option. - ASIO_DECL asio::error_code do_set_option( - base_implementation_type& impl, - int level, int optname, const void* optval, - std::size_t optlen, asio::error_code& ec); - - // Helper function to get a socket option. - ASIO_DECL void do_get_option( - const base_implementation_type& impl, - int level, int optname, void* optval, - std::size_t* optlen, asio::error_code& ec) const; - - // Helper function to perform a synchronous connect. - ASIO_DECL asio::error_code do_connect( - base_implementation_type& impl, - const void* addr, asio::error_code& ec); - - // Helper function to start an asynchronous connect. - ASIO_DECL void start_connect_op( - base_implementation_type& impl, const void* addr, - winrt_async_op* op, bool is_continuation); - - // Helper function to perform a synchronous send. - ASIO_DECL std::size_t do_send( - base_implementation_type& impl, const asio::const_buffer& data, - socket_base::message_flags flags, asio::error_code& ec); - - // Helper function to start an asynchronous send. - ASIO_DECL void start_send_op(base_implementation_type& impl, - const asio::const_buffer& data, socket_base::message_flags flags, - winrt_async_op* op, bool is_continuation); - - // Helper function to perform a synchronous receive. - ASIO_DECL std::size_t do_receive( - base_implementation_type& impl, const asio::mutable_buffer& data, - socket_base::message_flags flags, asio::error_code& ec); - - // Helper function to start an asynchronous receive. - ASIO_DECL void start_receive_op(base_implementation_type& impl, - const asio::mutable_buffer& data, socket_base::message_flags flags, - winrt_async_op* op, - bool is_continuation); - - // The scheduler implementation used for delivering completions. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - - // The manager that keeps track of outstanding operations. - winrt_async_manager& async_manager_; - - // Mutex to protect access to the linked list of implementations. - asio::detail::mutex mutex_; - - // The head of a linked list of all implementations. - base_implementation_type* impl_list_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/winrt_ssocket_service_base.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp deleted file mode 100644 index f27ed365..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp +++ /dev/null @@ -1,147 +0,0 @@ -// -// detail/winrt_timer_scheduler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP -#define ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include -#include "asio/detail/event.hpp" -#include "asio/detail/limits.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/op_queue.hpp" -#include "asio/detail/thread.hpp" -#include "asio/detail/timer_queue_base.hpp" -#include "asio/detail/timer_queue_set.hpp" -#include "asio/detail/wait_op.hpp" -#include "asio/execution_context.hpp" - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/win_iocp_io_context.hpp" -#else // defined(ASIO_HAS_IOCP) -# include "asio/detail/scheduler.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#if defined(ASIO_HAS_IOCP) -# include "asio/detail/thread.hpp" -#endif // defined(ASIO_HAS_IOCP) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class winrt_timer_scheduler - : public execution_context_service_base -{ -public: - // Constructor. - ASIO_DECL winrt_timer_scheduler(execution_context& context); - - // Destructor. - ASIO_DECL ~winrt_timer_scheduler(); - - // Destroy all user-defined handler objects owned by the service. - ASIO_DECL void shutdown(); - - // Recreate internal descriptors following a fork. - ASIO_DECL void notify_fork(execution_context::fork_event fork_ev); - - // Initialise the task. No effect as this class uses its own thread. - ASIO_DECL void init_task(); - - // Add a new timer queue to the reactor. - template - void add_timer_queue(timer_queue& queue); - - // Remove a timer queue from the reactor. - template - void remove_timer_queue(timer_queue& queue); - - // Schedule a new operation in the given timer queue to expire at the - // specified absolute time. - template - void schedule_timer(timer_queue& queue, - const typename Time_Traits::time_type& time, - typename timer_queue::per_timer_data& timer, wait_op* op); - - // Cancel the timer operations associated with the given token. Returns the - // number of operations that have been posted or dispatched. - template - std::size_t cancel_timer(timer_queue& queue, - typename timer_queue::per_timer_data& timer, - std::size_t max_cancelled = (std::numeric_limits::max)()); - - // Move the timer operations associated with the given timer. - template - void move_timer(timer_queue& queue, - typename timer_queue::per_timer_data& to, - typename timer_queue::per_timer_data& from); - -private: - // Run the select loop in the thread. - ASIO_DECL void run_thread(); - - // Entry point for the select loop thread. - ASIO_DECL static void call_run_thread(winrt_timer_scheduler* reactor); - - // Helper function to add a new timer queue. - ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); - - // Helper function to remove a timer queue. - ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); - - // The scheduler implementation used to post completions. -#if defined(ASIO_HAS_IOCP) - typedef class win_iocp_io_context scheduler_impl; -#else - typedef class scheduler scheduler_impl; -#endif - scheduler_impl& scheduler_; - - // Mutex used to protect internal variables. - asio::detail::mutex mutex_; - - // Event used to wake up background thread. - asio::detail::event event_; - - // The timer queues. - timer_queue_set timer_queues_; - - // The background thread that is waiting for timers to expire. - asio::detail::thread* thread_; - - // Does the background thread need to stop. - bool stop_thread_; - - // Whether the service has been shut down. - bool shutdown_; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/detail/impl/winrt_timer_scheduler.hpp" -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/winrt_timer_scheduler.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_utils.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_utils.hpp deleted file mode 100644 index 04b3e6fb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winrt_utils.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// detail/winrt_utils.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINRT_UTILS_HPP -#define ASIO_DETAIL_WINRT_UTILS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS_RUNTIME) - -#include -#include -#include -#include -#include -#include -#include -#include "asio/buffer.hpp" -#include "asio/error_code.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/socket_ops.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { -namespace winrt_utils { - -inline Platform::String^ string(const char* from) -{ - std::wstring tmp(from, from + std::strlen(from)); - return ref new Platform::String(tmp.c_str()); -} - -inline Platform::String^ string(const std::string& from) -{ - std::wstring tmp(from.begin(), from.end()); - return ref new Platform::String(tmp.c_str()); -} - -inline std::string string(Platform::String^ from) -{ - std::wstring_convert> converter; - return converter.to_bytes(from->Data()); -} - -inline Platform::String^ string(unsigned short from) -{ - return string(std::to_string(from)); -} - -template -inline Platform::String^ string(const T& from) -{ - return string(from.to_string()); -} - -inline int integer(Platform::String^ from) -{ - return _wtoi(from->Data()); -} - -template -inline Windows::Networking::HostName^ host_name(const T& from) -{ - return ref new Windows::Networking::HostName((string)(from)); -} - -template -inline Windows::Storage::Streams::IBuffer^ buffer_dup( - const ConstBufferSequence& buffers) -{ - using Microsoft::WRL::ComPtr; - using asio::buffer_size; - std::size_t size = buffer_size(buffers); - auto b = ref new Windows::Storage::Streams::Buffer(size); - ComPtr insp = reinterpret_cast(b); - ComPtr bacc; - insp.As(&bacc); - byte* bytes = nullptr; - bacc->Buffer(&bytes); - asio::buffer_copy(asio::buffer(bytes, size), buffers); - b->Length = size; - return b; -} - -} // namespace winrt_utils -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // defined(ASIO_WINDOWS_RUNTIME) - -#endif // ASIO_DETAIL_WINRT_UTILS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winsock_init.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winsock_init.hpp deleted file mode 100644 index cde044f4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/winsock_init.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// -// detail/winsock_init.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WINSOCK_INIT_HPP -#define ASIO_DETAIL_WINSOCK_INIT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -class winsock_init_base -{ -protected: - // Structure to track result of initialisation and number of uses. POD is used - // to ensure that the values are zero-initialised prior to any code being run. - struct data - { - long init_count_; - long result_; - }; - - ASIO_DECL static void startup(data& d, - unsigned char major, unsigned char minor); - - ASIO_DECL static void manual_startup(data& d); - - ASIO_DECL static void cleanup(data& d); - - ASIO_DECL static void manual_cleanup(data& d); - - ASIO_DECL static void throw_on_error(data& d); -}; - -template -class winsock_init : private winsock_init_base -{ -public: - winsock_init(bool allow_throw = true) - { - startup(data_, Major, Minor); - if (allow_throw) - throw_on_error(data_); - } - - winsock_init(const winsock_init&) - { - startup(data_, Major, Minor); - throw_on_error(data_); - } - - ~winsock_init() - { - cleanup(data_); - } - - // This class may be used to indicate that user code will manage Winsock - // initialisation and cleanup. This may be required in the case of a DLL, for - // example, where it is not safe to initialise Winsock from global object - // constructors. - // - // To prevent asio from initialising Winsock, the object must be constructed - // before any Asio's own global objects. With MSVC, this may be accomplished - // by adding the following code to the DLL: - // - // #pragma warning(push) - // #pragma warning(disable:4073) - // #pragma init_seg(lib) - // asio::detail::winsock_init<>::manual manual_winsock_init; - // #pragma warning(pop) - class manual - { - public: - manual() - { - manual_startup(data_); - } - - manual(const manual&) - { - manual_startup(data_); - } - - ~manual() - { - manual_cleanup(data_); - } - }; - -private: - friend class manual; - static data data_; -}; - -template -winsock_init_base::data winsock_init::data_; - -// Static variable to ensure that winsock is initialised before main, and -// therefore before any other threads can get started. -static const winsock_init<>& winsock_init_instance = winsock_init<>(false); - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/detail/impl/winsock_init.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__) - -#endif // ASIO_DETAIL_WINSOCK_INIT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/work_dispatcher.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/work_dispatcher.hpp deleted file mode 100644 index 5b4433d7..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/work_dispatcher.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// detail/work_dispatcher.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WORK_DISPATCHER_HPP -#define ASIO_DETAIL_WORK_DISPATCHER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/associated_executor.hpp" -#include "asio/associated_allocator.hpp" -#include "asio/executor_work_guard.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/allocator.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/outstanding_work.hpp" -#include "asio/prefer.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -template -struct is_work_dispatcher_required : true_type -{ -}; - -template -struct is_work_dispatcher_required::asio_associated_executor_is_unspecialised, - void - >::value - >::type> : false_type -{ -}; - -template -class work_dispatcher -{ -public: - template - work_dispatcher(ASIO_MOVE_ARG(CompletionHandler) handler, - const Executor& handler_ex) - : handler_(ASIO_MOVE_CAST(CompletionHandler)(handler)), - executor_(asio::prefer(handler_ex, - execution::outstanding_work.tracked)) - { - } - -#if defined(ASIO_HAS_MOVE) - work_dispatcher(const work_dispatcher& other) - : handler_(other.handler_), - executor_(other.executor_) - { - } - - work_dispatcher(work_dispatcher&& other) - : handler_(ASIO_MOVE_CAST(Handler)(other.handler_)), - executor_(ASIO_MOVE_CAST(work_executor_type)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - execution::execute( - asio::prefer(executor_, - execution::blocking.possibly, - execution::allocator((get_associated_allocator)(handler_))), - ASIO_MOVE_CAST(Handler)(handler_)); - } - -private: - typedef typename decay< - typename prefer_result::type - >::type work_executor_type; - - Handler handler_; - work_executor_type executor_; -}; - -#if !defined(ASIO_NO_TS_EXECUTORS) - -template -class work_dispatcher::value>::type> -{ -public: - template - work_dispatcher(ASIO_MOVE_ARG(CompletionHandler) handler, - const Executor& handler_ex) - : work_(handler_ex), - handler_(ASIO_MOVE_CAST(CompletionHandler)(handler)) - { - } - -#if defined(ASIO_HAS_MOVE) - work_dispatcher(const work_dispatcher& other) - : work_(other.work_), - handler_(other.handler_) - { - } - - work_dispatcher(work_dispatcher&& other) - : work_(ASIO_MOVE_CAST(executor_work_guard)(other.work_)), - handler_(ASIO_MOVE_CAST(Handler)(other.handler_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - typename associated_allocator::type alloc( - (get_associated_allocator)(handler_)); - work_.get_executor().dispatch( - ASIO_MOVE_CAST(Handler)(handler_), alloc); - work_.reset(); - } - -private: - executor_work_guard work_; - Handler handler_; -}; - -#endif // !defined(ASIO_NO_TS_EXECUTORS) - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WORK_DISPATCHER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wrapped_handler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wrapped_handler.hpp deleted file mode 100644 index b1aed8bb..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/detail/wrapped_handler.hpp +++ /dev/null @@ -1,327 +0,0 @@ -// -// detail/wrapped_handler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DETAIL_WRAPPED_HANDLER_HPP -#define ASIO_DETAIL_WRAPPED_HANDLER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/bind_handler.hpp" -#include "asio/detail/handler_alloc_helpers.hpp" -#include "asio/detail/handler_cont_helpers.hpp" -#include "asio/detail/handler_invoke_helpers.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace detail { - -struct is_continuation_delegated -{ - template - bool operator()(Dispatcher&, Handler& handler) const - { - return asio_handler_cont_helpers::is_continuation(handler); - } -}; - -struct is_continuation_if_running -{ - template - bool operator()(Dispatcher& dispatcher, Handler&) const - { - return dispatcher.running_in_this_thread(); - } -}; - -template -class wrapped_handler -{ -public: - typedef void result_type; - - wrapped_handler(Dispatcher dispatcher, Handler& handler) - : dispatcher_(dispatcher), - handler_(ASIO_MOVE_CAST(Handler)(handler)) - { - } - -#if defined(ASIO_HAS_MOVE) - wrapped_handler(const wrapped_handler& other) - : dispatcher_(other.dispatcher_), - handler_(other.handler_) - { - } - - wrapped_handler(wrapped_handler&& other) - : dispatcher_(other.dispatcher_), - handler_(ASIO_MOVE_CAST(Handler)(other.handler_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - dispatcher_.dispatch(ASIO_MOVE_CAST(Handler)(handler_)); - } - - void operator()() const - { - dispatcher_.dispatch(handler_); - } - - template - void operator()(const Arg1& arg1) - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1)); - } - - template - void operator()(const Arg1& arg1) const - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2) - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2) const - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) const - { - dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, - const Arg4& arg4) - { - dispatcher_.dispatch( - detail::bind_handler(handler_, arg1, arg2, arg3, arg4)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, - const Arg4& arg4) const - { - dispatcher_.dispatch( - detail::bind_handler(handler_, arg1, arg2, arg3, arg4)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, - const Arg4& arg4, const Arg5& arg5) - { - dispatcher_.dispatch( - detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5)); - } - - template - void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, - const Arg4& arg4, const Arg5& arg5) const - { - dispatcher_.dispatch( - detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5)); - } - -//private: - Dispatcher dispatcher_; - Handler handler_; -}; - -template -class rewrapped_handler -{ -public: - explicit rewrapped_handler(Handler& handler, const Context& context) - : context_(context), - handler_(ASIO_MOVE_CAST(Handler)(handler)) - { - } - - explicit rewrapped_handler(const Handler& handler, const Context& context) - : context_(context), - handler_(handler) - { - } - -#if defined(ASIO_HAS_MOVE) - rewrapped_handler(const rewrapped_handler& other) - : context_(other.context_), - handler_(other.handler_) - { - } - - rewrapped_handler(rewrapped_handler&& other) - : context_(ASIO_MOVE_CAST(Context)(other.context_)), - handler_(ASIO_MOVE_CAST(Handler)(other.handler_)) - { - } -#endif // defined(ASIO_HAS_MOVE) - - void operator()() - { - handler_(); - } - - void operator()() const - { - handler_(); - } - -//private: - Context context_; - Handler handler_; -}; - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - wrapped_handler* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - wrapped_handler* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->handler_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - wrapped_handler* this_handler) -{ - return IsContinuation()(this_handler->dispatcher_, this_handler->handler_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - wrapped_handler* this_handler) -{ - this_handler->dispatcher_.dispatch( - rewrapped_handler( - function, this_handler->handler_)); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - wrapped_handler* this_handler) -{ - this_handler->dispatcher_.dispatch( - rewrapped_handler( - function, this_handler->handler_)); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_allocate_is_deprecated -asio_handler_allocate(std::size_t size, - rewrapped_handler* this_handler) -{ -#if defined(ASIO_NO_DEPRECATED) - asio_handler_alloc_helpers::allocate(size, this_handler->handler_); - return asio_handler_allocate_is_no_longer_used(); -#else // defined(ASIO_NO_DEPRECATED) - return asio_handler_alloc_helpers::allocate( - size, this_handler->handler_); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_deallocate_is_deprecated -asio_handler_deallocate(void* pointer, std::size_t size, - rewrapped_handler* this_handler) -{ - asio_handler_alloc_helpers::deallocate( - pointer, size, this_handler->context_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_deallocate_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline bool asio_handler_is_continuation( - rewrapped_handler* this_handler) -{ - return asio_handler_cont_helpers::is_continuation( - this_handler->context_); -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(Function& function, - rewrapped_handler* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->context_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -template -inline asio_handler_invoke_is_deprecated -asio_handler_invoke(const Function& function, - rewrapped_handler* this_handler) -{ - asio_handler_invoke_helpers::invoke( - function, this_handler->context_); -#if defined(ASIO_NO_DEPRECATED) - return asio_handler_invoke_is_no_longer_used(); -#endif // defined(ASIO_NO_DEPRECATED) -} - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_DETAIL_WRAPPED_HANDLER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/dispatch.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/dispatch.hpp deleted file mode 100644 index 2e5d197f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/dispatch.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// -// dispatch.hpp -// ~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_DISPATCH_HPP -#define ASIO_DISPATCH_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/async_result.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution_context.hpp" -#include "asio/execution/executor.hpp" -#include "asio/is_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Submits a completion token or function object for execution. -/** - * This function submits an object for execution using the object's associated - * executor. The function object may be called from the current thread prior to - * returning from dispatch(). Otherwise, it is queued for execution. - * - * This function has the following effects: - * - * @li Constructs a function object handler of type @c Handler, initialized - * with handler(forward(token)). - * - * @li Constructs an object @c result of type async_result, - * initializing the object as result(handler). - * - * @li Obtains the handler's associated executor object @c ex by performing - * get_associated_executor(handler). - * - * @li Obtains the handler's associated allocator object @c alloc by performing - * get_associated_allocator(handler). - * - * @li Performs ex.dispatch(std::move(handler), alloc). - * - * @li Returns result.get(). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( - ASIO_MOVE_ARG(CompletionToken) token); - -/// Submits a completion token or function object for execution. -/** - * This function submits an object for execution using the specified executor. - * The function object may be called from the current thread prior to returning - * from dispatch(). Otherwise, it is queued for execution. - * - * This function has the following effects: - * - * @li Constructs a function object handler of type @c Handler, initialized - * with handler(forward(token)). - * - * @li Constructs an object @c result of type async_result, - * initializing the object as result(handler). - * - * @li Obtains the handler's associated executor object @c ex1 by performing - * get_associated_executor(handler). - * - * @li Creates a work object @c w by performing make_work(ex1). - * - * @li Obtains the handler's associated allocator object @c alloc by performing - * get_associated_allocator(handler). - * - * @li Constructs a function object @c f with a function call operator that - * performs ex1.dispatch(std::move(handler), alloc) followed by - * w.reset(). - * - * @li Performs Executor(ex).dispatch(std::move(f), alloc). - * - * @li Returns result.get(). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( - const Executor& ex, - ASIO_MOVE_ARG(CompletionToken) token - ASIO_DEFAULT_COMPLETION_TOKEN(Executor), - typename enable_if< - execution::is_executor::value || is_executor::value - >::type* = 0); - -/// Submits a completion token or function object for execution. -/** - * @returns dispatch(ctx.get_executor(), - * forward(token)). - */ -template -ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void()) dispatch( - ExecutionContext& ctx, - ASIO_MOVE_ARG(CompletionToken) token - ASIO_DEFAULT_COMPLETION_TOKEN( - typename ExecutionContext::executor_type), - typename enable_if::value>::type* = 0); - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#include "asio/impl/dispatch.hpp" - -#endif // ASIO_DISPATCH_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error.hpp deleted file mode 100644 index c685d4a2..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error.hpp +++ /dev/null @@ -1,356 +0,0 @@ -// -// error.hpp -// ~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ERROR_HPP -#define ASIO_ERROR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/error_code.hpp" -#include "asio/system_error.hpp" -#if defined(ASIO_WINDOWS) \ - || defined(__CYGWIN__) \ - || defined(ASIO_WINDOWS_RUNTIME) -# include -#else -# include -# include -#endif - -#if defined(GENERATING_DOCUMENTATION) -/// INTERNAL ONLY. -# define ASIO_NATIVE_ERROR(e) implementation_defined -/// INTERNAL ONLY. -# define ASIO_SOCKET_ERROR(e) implementation_defined -/// INTERNAL ONLY. -# define ASIO_NETDB_ERROR(e) implementation_defined -/// INTERNAL ONLY. -# define ASIO_GETADDRINFO_ERROR(e) implementation_defined -/// INTERNAL ONLY. -# define ASIO_WIN_OR_POSIX(e_win, e_posix) implementation_defined -#elif defined(ASIO_WINDOWS_RUNTIME) -# define ASIO_NATIVE_ERROR(e) __HRESULT_FROM_WIN32(e) -# define ASIO_SOCKET_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) -# define ASIO_NETDB_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) -# define ASIO_GETADDRINFO_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) -# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win -#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__) -# define ASIO_NATIVE_ERROR(e) e -# define ASIO_SOCKET_ERROR(e) WSA ## e -# define ASIO_NETDB_ERROR(e) WSA ## e -# define ASIO_GETADDRINFO_ERROR(e) WSA ## e -# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win -#else -# define ASIO_NATIVE_ERROR(e) e -# define ASIO_SOCKET_ERROR(e) e -# define ASIO_NETDB_ERROR(e) e -# define ASIO_GETADDRINFO_ERROR(e) e -# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_posix -#endif - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace error { - -enum basic_errors -{ - /// Permission denied. - access_denied = ASIO_SOCKET_ERROR(EACCES), - - /// Address family not supported by protocol. - address_family_not_supported = ASIO_SOCKET_ERROR(EAFNOSUPPORT), - - /// Address already in use. - address_in_use = ASIO_SOCKET_ERROR(EADDRINUSE), - - /// Transport endpoint is already connected. - already_connected = ASIO_SOCKET_ERROR(EISCONN), - - /// Operation already in progress. - already_started = ASIO_SOCKET_ERROR(EALREADY), - - /// Broken pipe. - broken_pipe = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE), - ASIO_NATIVE_ERROR(EPIPE)), - - /// A connection has been aborted. - connection_aborted = ASIO_SOCKET_ERROR(ECONNABORTED), - - /// Connection refused. - connection_refused = ASIO_SOCKET_ERROR(ECONNREFUSED), - - /// Connection reset by peer. - connection_reset = ASIO_SOCKET_ERROR(ECONNRESET), - - /// Bad file descriptor. - bad_descriptor = ASIO_SOCKET_ERROR(EBADF), - - /// Bad address. - fault = ASIO_SOCKET_ERROR(EFAULT), - - /// No route to host. - host_unreachable = ASIO_SOCKET_ERROR(EHOSTUNREACH), - - /// Operation now in progress. - in_progress = ASIO_SOCKET_ERROR(EINPROGRESS), - - /// Interrupted system call. - interrupted = ASIO_SOCKET_ERROR(EINTR), - - /// Invalid argument. - invalid_argument = ASIO_SOCKET_ERROR(EINVAL), - - /// Message too long. - message_size = ASIO_SOCKET_ERROR(EMSGSIZE), - - /// The name was too long. - name_too_long = ASIO_SOCKET_ERROR(ENAMETOOLONG), - - /// Network is down. - network_down = ASIO_SOCKET_ERROR(ENETDOWN), - - /// Network dropped connection on reset. - network_reset = ASIO_SOCKET_ERROR(ENETRESET), - - /// Network is unreachable. - network_unreachable = ASIO_SOCKET_ERROR(ENETUNREACH), - - /// Too many open files. - no_descriptors = ASIO_SOCKET_ERROR(EMFILE), - - /// No buffer space available. - no_buffer_space = ASIO_SOCKET_ERROR(ENOBUFS), - - /// Cannot allocate memory. - no_memory = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_OUTOFMEMORY), - ASIO_NATIVE_ERROR(ENOMEM)), - - /// Operation not permitted. - no_permission = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_ACCESS_DENIED), - ASIO_NATIVE_ERROR(EPERM)), - - /// Protocol not available. - no_protocol_option = ASIO_SOCKET_ERROR(ENOPROTOOPT), - - /// No such device. - no_such_device = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_BAD_UNIT), - ASIO_NATIVE_ERROR(ENODEV)), - - /// Transport endpoint is not connected. - not_connected = ASIO_SOCKET_ERROR(ENOTCONN), - - /// Socket operation on non-socket. - not_socket = ASIO_SOCKET_ERROR(ENOTSOCK), - - /// Operation cancelled. - operation_aborted = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_OPERATION_ABORTED), - ASIO_NATIVE_ERROR(ECANCELED)), - - /// Operation not supported. - operation_not_supported = ASIO_SOCKET_ERROR(EOPNOTSUPP), - - /// Cannot send after transport endpoint shutdown. - shut_down = ASIO_SOCKET_ERROR(ESHUTDOWN), - - /// Connection timed out. - timed_out = ASIO_SOCKET_ERROR(ETIMEDOUT), - - /// Resource temporarily unavailable. - try_again = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(ERROR_RETRY), - ASIO_NATIVE_ERROR(EAGAIN)), - - /// The socket is marked non-blocking and the requested operation would block. - would_block = ASIO_SOCKET_ERROR(EWOULDBLOCK) -}; - -enum netdb_errors -{ - /// Host not found (authoritative). - host_not_found = ASIO_NETDB_ERROR(HOST_NOT_FOUND), - - /// Host not found (non-authoritative). - host_not_found_try_again = ASIO_NETDB_ERROR(TRY_AGAIN), - - /// The query is valid but does not have associated address data. - no_data = ASIO_NETDB_ERROR(NO_DATA), - - /// A non-recoverable error occurred. - no_recovery = ASIO_NETDB_ERROR(NO_RECOVERY) -}; - -enum addrinfo_errors -{ - /// The service is not supported for the given socket type. - service_not_found = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(WSATYPE_NOT_FOUND), - ASIO_GETADDRINFO_ERROR(EAI_SERVICE)), - - /// The socket type is not supported. - socket_type_not_supported = ASIO_WIN_OR_POSIX( - ASIO_NATIVE_ERROR(WSAESOCKTNOSUPPORT), - ASIO_GETADDRINFO_ERROR(EAI_SOCKTYPE)) -}; - -enum misc_errors -{ - /// Already open. - already_open = 1, - - /// End of file or stream. - eof, - - /// Element not found. - not_found, - - /// The descriptor cannot fit into the select system call's fd_set. - fd_set_failure -}; - -inline const asio::error_category& get_system_category() -{ - return asio::system_category(); -} - -#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -extern ASIO_DECL -const asio::error_category& get_netdb_category(); - -extern ASIO_DECL -const asio::error_category& get_addrinfo_category(); - -#else // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -inline const asio::error_category& get_netdb_category() -{ - return get_system_category(); -} - -inline const asio::error_category& get_addrinfo_category() -{ - return get_system_category(); -} - -#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__) - -extern ASIO_DECL -const asio::error_category& get_misc_category(); - -static const asio::error_category& - system_category ASIO_UNUSED_VARIABLE - = asio::error::get_system_category(); -static const asio::error_category& - netdb_category ASIO_UNUSED_VARIABLE - = asio::error::get_netdb_category(); -static const asio::error_category& - addrinfo_category ASIO_UNUSED_VARIABLE - = asio::error::get_addrinfo_category(); -static const asio::error_category& - misc_category ASIO_UNUSED_VARIABLE - = asio::error::get_misc_category(); - -} // namespace error -} // namespace asio - -#if defined(ASIO_HAS_STD_SYSTEM_ERROR) -namespace std { - -template<> struct is_error_code_enum -{ - static const bool value = true; -}; - -template<> struct is_error_code_enum -{ - static const bool value = true; -}; - -template<> struct is_error_code_enum -{ - static const bool value = true; -}; - -template<> struct is_error_code_enum -{ - static const bool value = true; -}; - -} // namespace std -#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -namespace asio { -namespace error { - -inline asio::error_code make_error_code(basic_errors e) -{ - return asio::error_code( - static_cast(e), get_system_category()); -} - -inline asio::error_code make_error_code(netdb_errors e) -{ - return asio::error_code( - static_cast(e), get_netdb_category()); -} - -inline asio::error_code make_error_code(addrinfo_errors e) -{ - return asio::error_code( - static_cast(e), get_addrinfo_category()); -} - -inline asio::error_code make_error_code(misc_errors e) -{ - return asio::error_code( - static_cast(e), get_misc_category()); -} - -} // namespace error -namespace stream_errc { - // Simulates the proposed stream_errc scoped enum. - using error::eof; - using error::not_found; -} // namespace stream_errc -namespace socket_errc { - // Simulates the proposed socket_errc scoped enum. - using error::already_open; - using error::not_found; -} // namespace socket_errc -namespace resolver_errc { - // Simulates the proposed resolver_errc scoped enum. - using error::host_not_found; - const error::netdb_errors try_again = error::host_not_found_try_again; - using error::service_not_found; -} // namespace resolver_errc -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#undef ASIO_NATIVE_ERROR -#undef ASIO_SOCKET_ERROR -#undef ASIO_NETDB_ERROR -#undef ASIO_GETADDRINFO_ERROR -#undef ASIO_WIN_OR_POSIX - -#if defined(ASIO_HEADER_ONLY) -# include "asio/impl/error.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_ERROR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error_code.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error_code.hpp deleted file mode 100644 index 2ff68140..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/error_code.hpp +++ /dev/null @@ -1,202 +0,0 @@ -// -// error_code.hpp -// ~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ERROR_CODE_HPP -#define ASIO_ERROR_CODE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#if defined(ASIO_HAS_STD_SYSTEM_ERROR) -# include -#else // defined(ASIO_HAS_STD_SYSTEM_ERROR) -# include -# include "asio/detail/noncopyable.hpp" -# if !defined(ASIO_NO_IOSTREAM) -# include -# endif // !defined(ASIO_NO_IOSTREAM) -#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_HAS_STD_SYSTEM_ERROR) - -typedef std::error_category error_category; - -#else // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -/// Base class for all error categories. -class error_category : private noncopyable -{ -public: - /// Destructor. - virtual ~error_category() - { - } - - /// Returns a string naming the error gategory. - virtual const char* name() const = 0; - - /// Returns a string describing the error denoted by @c value. - virtual std::string message(int value) const = 0; - - /// Equality operator to compare two error categories. - bool operator==(const error_category& rhs) const - { - return this == &rhs; - } - - /// Inequality operator to compare two error categories. - bool operator!=(const error_category& rhs) const - { - return !(*this == rhs); - } -}; - -#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -/// Returns the error category used for the system errors produced by asio. -extern ASIO_DECL const error_category& system_category(); - -#if defined(ASIO_HAS_STD_SYSTEM_ERROR) - -typedef std::error_code error_code; - -#else // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -/// Class to represent an error code value. -class error_code -{ -public: - /// Default constructor. - error_code() - : value_(0), - category_(&system_category()) - { - } - - /// Construct with specific error code and category. - error_code(int v, const error_category& c) - : value_(v), - category_(&c) - { - } - - /// Construct from an error code enum. - template - error_code(ErrorEnum e) - { - *this = make_error_code(e); - } - - /// Clear the error value to the default. - void clear() - { - value_ = 0; - category_ = &system_category(); - } - - /// Assign a new error value. - void assign(int v, const error_category& c) - { - value_ = v; - category_ = &c; - } - - /// Get the error value. - int value() const - { - return value_; - } - - /// Get the error category. - const error_category& category() const - { - return *category_; - } - - /// Get the message associated with the error. - std::string message() const - { - return category_->message(value_); - } - - struct unspecified_bool_type_t - { - }; - - typedef void (*unspecified_bool_type)(unspecified_bool_type_t); - - static void unspecified_bool_true(unspecified_bool_type_t) {} - - /// Operator returns non-null if there is a non-success error code. - operator unspecified_bool_type() const - { - if (value_ == 0) - return 0; - else - return &error_code::unspecified_bool_true; - } - - /// Operator to test if the error represents success. - bool operator!() const - { - return value_ == 0; - } - - /// Equality operator to compare two error objects. - friend bool operator==(const error_code& e1, const error_code& e2) - { - return e1.value_ == e2.value_ && e1.category_ == e2.category_; - } - - /// Inequality operator to compare two error objects. - friend bool operator!=(const error_code& e1, const error_code& e2) - { - return e1.value_ != e2.value_ || e1.category_ != e2.category_; - } - -private: - // The value associated with the error code. - int value_; - - // The category associated with the error code. - const error_category* category_; -}; - -# if !defined(ASIO_NO_IOSTREAM) - -/// Output an error code. -template -std::basic_ostream& operator<<( - std::basic_ostream& os, const error_code& ec) -{ - os << ec.category().name() << ':' << ec.value(); - return os; -} - -# endif // !defined(ASIO_NO_IOSTREAM) - -#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/impl/error_code.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_ERROR_CODE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution.hpp deleted file mode 100644 index 828b46b4..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// -// execution.hpp -// ~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_HPP -#define ASIO_EXECUTION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/execution/allocator.hpp" -#include "asio/execution/any_executor.hpp" -#include "asio/execution/bad_executor.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/blocking_adaptation.hpp" -#include "asio/execution/bulk_execute.hpp" -#include "asio/execution/bulk_guarantee.hpp" -#include "asio/execution/connect.hpp" -#include "asio/execution/context.hpp" -#include "asio/execution/context_as.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/invocable_archetype.hpp" -#include "asio/execution/mapping.hpp" -#include "asio/execution/occupancy.hpp" -#include "asio/execution/operation_state.hpp" -#include "asio/execution/outstanding_work.hpp" -#include "asio/execution/prefer_only.hpp" -#include "asio/execution/receiver.hpp" -#include "asio/execution/receiver_invocation_error.hpp" -#include "asio/execution/relationship.hpp" -#include "asio/execution/schedule.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" -#include "asio/execution/start.hpp" -#include "asio/execution/submit.hpp" - -#endif // ASIO_EXECUTION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/allocator.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/allocator.hpp deleted file mode 100644 index e9f33444..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/allocator.hpp +++ /dev/null @@ -1,249 +0,0 @@ -// -// execution/allocator.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_ALLOCATOR_HPP -#define ASIO_EXECUTION_ALLOCATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe which allocator an executor will use to allocate the -/// memory required to store a submitted function object. -template -struct allocator_t -{ - /// The allocator_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The allocator_t property can be required. - static constexpr bool is_requirable = true; - - /// The allocator_t property can be preferred. - static constexpr bool is_preferable = true; - - /// Default constructor. - constexpr allocator_t(); - - /// Obtain the allocator stored in the allocator_t property object. - /** - * Present only if @c ProtoAllocator is non-void. - */ - constexpr ProtoAllocator value() const; - - /// Create an allocator_t object with a different allocator. - /** - * Present only if @c ProtoAllocator is void. - */ - template - allocator_t allocator; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { - -template -struct allocator_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = allocator_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - ASIO_CONSTEXPR ProtoAllocator value() const - { - return a_; - } - -private: - friend struct allocator_t; - - explicit ASIO_CONSTEXPR allocator_t(const ProtoAllocator& a) - : a_(a) - { - } - - ProtoAllocator a_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T allocator_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template <> -struct allocator_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - - ASIO_CONSTEXPR allocator_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = allocator_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - template - ASIO_CONSTEXPR allocator_t operator()( - const OtherProtoAllocator& a) const - { - return allocator_t(a); - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template -const T allocator_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr allocator_t allocator; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -template -struct allocator_instance -{ - static allocator_t instance; -}; - -template -allocator_t allocator_instance::instance; - -namespace { -static const allocator_t& allocator = allocator_instance::instance; -} // namespace -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property > - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query, - typename enable_if< - traits::query_static_constexpr_member >::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member >::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member >::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_ALLOCATOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/any_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/any_executor.hpp deleted file mode 100644 index 0889b464..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/any_executor.hpp +++ /dev/null @@ -1,2346 +0,0 @@ -// -// execution/any_executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_ANY_EXECUTOR_HPP -#define ASIO_EXECUTION_ANY_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include -#include "asio/detail/assert.hpp" -#include "asio/detail/cstddef.hpp" -#include "asio/detail/executor_function.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/non_const_lvalue.hpp" -#include "asio/detail/scoped_ptr.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/throw_exception.hpp" -#include "asio/detail/variadic_templates.hpp" -#include "asio/execution/bad_executor.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// Polymorphic executor wrapper. -template -class any_executor -{ -public: - /// Default constructor. - any_executor() noexcept; - - /// Construct in an empty state. Equivalent effects to default constructor. - any_executor(nullptr_t) noexcept; - - /// Copy constructor. - any_executor(const any_executor& e) noexcept; - - /// Move constructor. - any_executor(any_executor&& e) noexcept; - - /// Construct to point to the same target as another any_executor. - template - any_executor(any_executor e); - - /// Construct a polymorphic wrapper for the specified executor. - template - any_executor(Executor e); - - /// Assignment operator. - any_executor& operator=(const any_executor& e) noexcept; - - /// Move assignment operator. - any_executor& operator=(any_executor&& e) noexcept; - - /// Assignment operator that sets the polymorphic wrapper to the empty state. - any_executor& operator=(nullptr_t); - - /// Assignment operator to create a polymorphic wrapper for the specified - /// executor. - template - any_executor& operator=(Executor e); - - /// Destructor. - ~any_executor(); - - /// Swap targets with another polymorphic wrapper. - void swap(any_executor& other) noexcept; - - /// Obtain a polymorphic wrapper with the specified property. - /** - * Do not call this function directly. It is intended for use with the - * asio::require and asio::prefer customisation points. - * - * For example: - * @code execution::any_executor ex = ...; - * auto ex2 = asio::requre(ex, execution::blocking.possibly); @endcode - */ - template - any_executor require(Property) const; - - /// Obtain a polymorphic wrapper with the specified property. - /** - * Do not call this function directly. It is intended for use with the - * asio::prefer customisation point. - * - * For example: - * @code execution::any_executor ex = ...; - * auto ex2 = asio::prefer(ex, execution::blocking.possibly); @endcode - */ - template - any_executor prefer(Property) const; - - /// Obtain the value associated with the specified property. - /** - * Do not call this function directly. It is intended for use with the - * asio::query customisation point. - * - * For example: - * @code execution::any_executor ex = ...; - * size_t n = asio::query(ex, execution::occupancy); @endcode - */ - template - typename Property::polymorphic_query_result_type query(Property) const; - - /// Execute the function on the target executor. - /** - * Do not call this function directly. It is intended for use with the - * execution::execute customisation point. - * - * For example: - * @code execution::any_executor<> ex = ...; - * execution::execute(ex, my_function_object); @endcode - * - * Throws asio::bad_executor if the polymorphic wrapper has no target. - */ - template - void execute(Function&& f) const; - - /// Obtain the underlying execution context. - /** - * This function is provided for backward compatibility. It is automatically - * defined when the @c SupportableProperties... list includes a property of - * type execution::context_as, for some type U. - */ - automatically_determined context() const; - - /// Determine whether the wrapper has a target executor. - /** - * @returns @c true if the polymorphic wrapper has a target executor, - * otherwise false. - */ - explicit operator bool() const noexcept; - - /// Get the type of the target executor. - const type_info& target_type() const noexcept; - - /// Get a pointer to the target executor. - template Executor* target() noexcept; - - /// Get a pointer to the target executor. - template const Executor* target() const noexcept; -}; - -/// Equality operator. -/** - * @relates any_executor - */ -template -bool operator==(const any_executor& a, - const any_executor& b) noexcept; - -/// Equality operator. -/** - * @relates any_executor - */ -template -bool operator==(const any_executor& a, - nullptr_t) noexcept; - -/// Equality operator. -/** - * @relates any_executor - */ -template -bool operator==(nullptr_t, - const any_executor& b) noexcept; - -/// Inequality operator. -/** - * @relates any_executor - */ -template -bool operator!=(const any_executor& a, - const any_executor& b) noexcept; - -/// Inequality operator. -/** - * @relates any_executor - */ -template -bool operator!=(const any_executor& a, - nullptr_t) noexcept; - -/// Inequality operator. -/** - * @relates any_executor - */ -template -bool operator!=(nullptr_t, - const any_executor& b) noexcept; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { - -#if !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL) -#define ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -class any_executor; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -class any_executor; - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#endif // !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL) - -template -struct context_as_t; - -namespace detail { - -// Traits used to detect whether a property is requirable or preferable, taking -// into account that T::is_requirable or T::is_preferable may not not be well -// formed. - -template -struct is_requirable : false_type {}; - -template -struct is_requirable::type> : - true_type {}; - -template -struct is_preferable : false_type {}; - -template -struct is_preferable::type> : - true_type {}; - -// Trait used to detect context_as property, for backward compatibility. - -template -struct is_context_as : false_type {}; - -template -struct is_context_as > : true_type {}; - -// Helper template to: -// - Check if a target can supply the supportable properties. -// - Find the first convertible-from-T property in the list. - -template -struct supportable_properties; - -template -struct supportable_properties -{ - template - struct is_valid_target : integral_constant::value - ? can_require::value - : true - ) - && - ( - is_preferable::value - ? can_prefer::value - : true - ) - && - ( - !is_requirable::value && !is_preferable::value - ? can_query::value - : true - ) - > - { - }; - - struct found - { - ASIO_STATIC_CONSTEXPR(bool, value = true); - typedef Prop type; - typedef typename Prop::polymorphic_query_result_type query_result_type; - ASIO_STATIC_CONSTEXPR(std::size_t, index = I); - }; - - struct not_found - { - ASIO_STATIC_CONSTEXPR(bool, value = false); - }; - - template - struct find_convertible_property : - conditional< - is_same::value || is_convertible::value, - found, - not_found - >::type {}; - - template - struct find_convertible_requirable_property : - conditional< - is_requirable::value - && (is_same::value || is_convertible::value), - found, - not_found - >::type {}; - - template - struct find_convertible_preferable_property : - conditional< - is_preferable::value - && (is_same::value || is_convertible::value), - found, - not_found - >::type {}; - - struct find_context_as_property : - conditional< - is_context_as::value, - found, - not_found - >::type {}; -}; - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct supportable_properties -{ - template - struct is_valid_target : integral_constant::template is_valid_target::value - && - supportable_properties::template is_valid_target::value - ) - > - { - }; - - template - struct find_convertible_property : - conditional< - is_convertible::value, - typename supportable_properties::found, - typename supportable_properties::template find_convertible_property - >::type {}; - - template - struct find_convertible_requirable_property : - conditional< - is_requirable::value - && is_convertible::value, - typename supportable_properties::found, - typename supportable_properties::template find_convertible_requirable_property - >::type {}; - - template - struct find_convertible_preferable_property : - conditional< - is_preferable::value - && is_convertible::value, - typename supportable_properties::found, - typename supportable_properties::template find_convertible_preferable_property - >::type {}; - - struct find_context_as_property : - conditional< - is_context_as::value, - typename supportable_properties::found, - typename supportable_properties::find_context_as_property - >::type {}; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#define ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF(n) \ - template \ - struct supportable_properties \ - { \ - template \ - struct is_valid_target : integral_constant::template is_valid_target::value \ - && \ - supportable_properties::template \ - is_valid_target::value \ - ) \ - > \ - { \ - }; \ - \ - template \ - struct find_convertible_property : \ - conditional< \ - is_convertible::value, \ - typename supportable_properties::found, \ - typename supportable_properties::template \ - find_convertible_property \ - >::type {}; \ - \ - template \ - struct find_convertible_requirable_property : \ - conditional< \ - is_requirable::value \ - && is_convertible::value, \ - typename supportable_properties::found, \ - typename supportable_properties::template \ - find_convertible_requirable_property \ - >::type {}; \ - \ - template \ - struct find_convertible_preferable_property : \ - conditional< \ - is_preferable::value \ - && is_convertible::value, \ - typename supportable_properties::found, \ - typename supportable_properties::template \ - find_convertible_preferable_property \ - >::type {}; \ - \ - struct find_context_as_property : \ - conditional< \ - is_context_as::value, \ - typename supportable_properties::found, \ - typename supportable_properties::find_context_as_property \ - >::type {}; \ - }; \ - /**/ -ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct is_valid_target_executor : - conditional< - is_executor::value, - typename supportable_properties<0, Props>::template is_valid_target, - false_type - >::type -{ -}; - -class any_executor_base -{ -public: - any_executor_base() ASIO_NOEXCEPT - : object_fns_(object_fns_table()), - target_(0), - target_fns_(target_fns_table()) - { - } - - template - any_executor_base(Executor ex, false_type) - : target_fns_(target_fns_table( - any_executor_base::query_blocking(ex, - can_query()) - == execution::blocking.always)) - { - any_executor_base::construct_object(ex, - integral_constant::value <= alignment_of::value - >()); - } - - template - any_executor_base(Executor other, true_type) - : object_fns_(object_fns_table >()), - target_fns_(other.target_fns_) - { - asio::detail::shared_ptr p = - asio::detail::make_shared( - ASIO_MOVE_CAST(Executor)(other)); - target_ = p->template target(); - new (&object_) asio::detail::shared_ptr( - ASIO_MOVE_CAST(asio::detail::shared_ptr)(p)); - } - - any_executor_base(const any_executor_base& other) ASIO_NOEXCEPT - : object_fns_(other.object_fns_), - target_fns_(other.target_fns_) - { - object_fns_->copy(*this, other); - } - - ~any_executor_base() ASIO_NOEXCEPT - { - object_fns_->destroy(*this); - } - - any_executor_base& operator=( - const any_executor_base& other) ASIO_NOEXCEPT - { - if (this != &other) - { - object_fns_->destroy(*this); - object_fns_ = other.object_fns_; - target_fns_ = other.target_fns_; - object_fns_->copy(*this, other); - } - return *this; - } - - any_executor_base& operator=(nullptr_t) ASIO_NOEXCEPT - { - object_fns_->destroy(*this); - target_ = 0; - object_fns_ = object_fns_table(); - target_fns_ = target_fns_table(); - return *this; - } - -#if defined(ASIO_HAS_MOVE) - - any_executor_base(any_executor_base&& other) ASIO_NOEXCEPT - : object_fns_(other.object_fns_), - target_fns_(other.target_fns_) - { - other.object_fns_ = object_fns_table(); - other.target_fns_ = target_fns_table(); - object_fns_->move(*this, other); - other.target_ = 0; - } - - any_executor_base& operator=( - any_executor_base&& other) ASIO_NOEXCEPT - { - if (this != &other) - { - object_fns_->destroy(*this); - object_fns_ = other.object_fns_; - other.object_fns_ = object_fns_table(); - target_fns_ = other.target_fns_; - other.target_fns_ = target_fns_table(); - object_fns_->move(*this, other); - other.target_ = 0; - } - return *this; - } - -#endif // defined(ASIO_HAS_MOVE) - - void swap(any_executor_base& other) ASIO_NOEXCEPT - { - if (this != &other) - { - any_executor_base tmp(ASIO_MOVE_CAST(any_executor_base)(other)); - other = ASIO_MOVE_CAST(any_executor_base)(*this); - *this = ASIO_MOVE_CAST(any_executor_base)(tmp); - } - } - - template - void execute(ASIO_MOVE_ARG(F) f) const - { - if (target_fns_->blocking_execute != 0) - { - asio::detail::non_const_lvalue f2(f); - target_fns_->blocking_execute(*this, function_view(f2.value)); - } - else - { - target_fns_->execute(*this, - function(ASIO_MOVE_CAST(F)(f), std::allocator())); - } - } - - template - Executor* target() - { - return static_cast(target_); - } - - template - const Executor* target() const - { - return static_cast(target_); - } - -#if !defined(ASIO_NO_TYPEID) - const std::type_info& target_type() const -#else // !defined(ASIO_NO_TYPEID) - const void* target_type() const -#endif // !defined(ASIO_NO_TYPEID) - { - return target_fns_->target_type(); - } - - struct unspecified_bool_type_t {}; - typedef void (*unspecified_bool_type)(unspecified_bool_type_t); - static void unspecified_bool_true(unspecified_bool_type_t) {} - - operator unspecified_bool_type() const ASIO_NOEXCEPT - { - return target_ ? &any_executor_base::unspecified_bool_true : 0; - } - - bool operator!() const ASIO_NOEXCEPT - { - return target_ == 0; - } - -protected: - bool equality_helper(const any_executor_base& other) const ASIO_NOEXCEPT - { - if (target_ == other.target_) - return true; - if (target_ && !other.target_) - return false; - if (!target_ && other.target_) - return false; - if (target_fns_ != other.target_fns_) - return false; - return target_fns_->equal(*this, other); - } - - template - Ex& object() - { - return *static_cast(static_cast(&object_)); - } - - template - const Ex& object() const - { - return *static_cast(static_cast(&object_)); - } - - struct object_fns - { - void (*destroy)(any_executor_base&); - void (*copy)(any_executor_base&, const any_executor_base&); - void (*move)(any_executor_base&, any_executor_base&); - const void* (*target)(const any_executor_base&); - }; - - static void destroy_void(any_executor_base&) - { - } - - static void copy_void(any_executor_base& ex1, const any_executor_base&) - { - ex1.target_ = 0; - } - - static void move_void(any_executor_base& ex1, any_executor_base&) - { - ex1.target_ = 0; - } - - static const void* target_void(const any_executor_base&) - { - return 0; - } - - template - static const object_fns* object_fns_table( - typename enable_if< - is_same::value - >::type* = 0) - { - static const object_fns fns = - { - &any_executor_base::destroy_void, - &any_executor_base::copy_void, - &any_executor_base::move_void, - &any_executor_base::target_void - }; - return &fns; - } - - static void destroy_shared(any_executor_base& ex) - { - typedef asio::detail::shared_ptr type; - ex.object().~type(); - } - - static void copy_shared(any_executor_base& ex1, const any_executor_base& ex2) - { - typedef asio::detail::shared_ptr type; - new (&ex1.object_) type(ex2.object()); - ex1.target_ = ex2.target_; - } - - static void move_shared(any_executor_base& ex1, any_executor_base& ex2) - { - typedef asio::detail::shared_ptr type; - new (&ex1.object_) type(ASIO_MOVE_CAST(type)(ex2.object())); - ex1.target_ = ex2.target_; - ex2.object().~type(); - } - - static const void* target_shared(const any_executor_base& ex) - { - typedef asio::detail::shared_ptr type; - return ex.object().get(); - } - - template - static const object_fns* object_fns_table( - typename enable_if< - is_same >::value - >::type* = 0) - { - static const object_fns fns = - { - &any_executor_base::destroy_shared, - &any_executor_base::copy_shared, - &any_executor_base::move_shared, - &any_executor_base::target_shared - }; - return &fns; - } - - template - static void destroy_object(any_executor_base& ex) - { - ex.object().~Obj(); - } - - template - static void copy_object(any_executor_base& ex1, const any_executor_base& ex2) - { - new (&ex1.object_) Obj(ex2.object()); - ex1.target_ = &ex1.object(); - } - - template - static void move_object(any_executor_base& ex1, any_executor_base& ex2) - { - new (&ex1.object_) Obj(ASIO_MOVE_CAST(Obj)(ex2.object())); - ex1.target_ = &ex1.object(); - ex2.object().~Obj(); - } - - template - static const void* target_object(const any_executor_base& ex) - { - return &ex.object(); - } - - template - static const object_fns* object_fns_table( - typename enable_if< - !is_same::value - && !is_same >::value - >::type* = 0) - { - static const object_fns fns = - { - &any_executor_base::destroy_object, - &any_executor_base::copy_object, - &any_executor_base::move_object, - &any_executor_base::target_object - }; - return &fns; - } - - typedef asio::detail::executor_function function; - typedef asio::detail::executor_function_view function_view; - - struct target_fns - { -#if !defined(ASIO_NO_TYPEID) - const std::type_info& (*target_type)(); -#else // !defined(ASIO_NO_TYPEID) - const void* (*target_type)(); -#endif // !defined(ASIO_NO_TYPEID) - bool (*equal)(const any_executor_base&, const any_executor_base&); - void (*execute)(const any_executor_base&, ASIO_MOVE_ARG(function)); - void (*blocking_execute)(const any_executor_base&, function_view); - }; - -#if !defined(ASIO_NO_TYPEID) - static const std::type_info& target_type_void() - { - return typeid(void); - } -#else // !defined(ASIO_NO_TYPEID) - static const void* target_type_void() - { - return 0; - } -#endif // !defined(ASIO_NO_TYPEID) - - static bool equal_void(const any_executor_base&, const any_executor_base&) - { - return true; - } - - static void execute_void(const any_executor_base&, - ASIO_MOVE_ARG(function)) - { - bad_executor ex; - asio::detail::throw_exception(ex); - } - - static void blocking_execute_void(const any_executor_base&, function_view) - { - bad_executor ex; - asio::detail::throw_exception(ex); - } - - template - static const target_fns* target_fns_table( - typename enable_if< - is_same::value - >::type* = 0) - { - static const target_fns fns = - { - &any_executor_base::target_type_void, - &any_executor_base::equal_void, - &any_executor_base::execute_void, - &any_executor_base::blocking_execute_void - }; - return &fns; - } - -#if !defined(ASIO_NO_TYPEID) - template - static const std::type_info& target_type_ex() - { - return typeid(Ex); - } -#else // !defined(ASIO_NO_TYPEID) - template - static const void* target_type_ex() - { - static int unique_id; - return &unique_id; - } -#endif // !defined(ASIO_NO_TYPEID) - - template - static bool equal_ex(const any_executor_base& ex1, - const any_executor_base& ex2) - { - return *ex1.target() == *ex2.target(); - } - - template - static void execute_ex(const any_executor_base& ex, - ASIO_MOVE_ARG(function) f) - { - execution::execute(*ex.target(), ASIO_MOVE_CAST(function)(f)); - } - - template - static void blocking_execute_ex(const any_executor_base& ex, function_view f) - { - execution::execute(*ex.target(), f); - } - - template - static const target_fns* target_fns_table(bool is_always_blocking, - typename enable_if< - !is_same::value - >::type* = 0) - { - static const target_fns fns_with_execute = - { - &any_executor_base::target_type_ex, - &any_executor_base::equal_ex, - &any_executor_base::execute_ex, - 0 - }; - - static const target_fns fns_with_blocking_execute = - { - &any_executor_base::target_type_ex, - &any_executor_base::equal_ex, - 0, - &any_executor_base::blocking_execute_ex - }; - - return is_always_blocking ? &fns_with_blocking_execute : &fns_with_execute; - } - -#if defined(ASIO_MSVC) -# pragma warning (push) -# pragma warning (disable:4702) -#endif // defined(ASIO_MSVC) - - static void query_fn_void(void*, const void*, const void*) - { - bad_executor ex; - asio::detail::throw_exception(ex); - } - - template - static void query_fn_non_void(void*, const void* ex, const void* prop, - typename enable_if< - asio::can_query::value - && is_same::value - >::type*) - { - asio::query(*static_cast(ex), - *static_cast(prop)); - } - - template - static void query_fn_non_void(void*, const void*, const void*, - typename enable_if< - !asio::can_query::value - && is_same::value - >::type*) - { - } - - template - static void query_fn_non_void(void* result, const void* ex, const void* prop, - typename enable_if< - asio::can_query::value - && !is_same::value - && is_reference::value - >::type*) - { - *static_cast::type**>(result) - = &static_cast( - asio::query(*static_cast(ex), - *static_cast(prop))); - } - - template - static void query_fn_non_void(void*, const void*, const void*, - typename enable_if< - !asio::can_query::value - && !is_same::value - && is_reference::value - >::type*) - { - std::terminate(); // Combination should not be possible. - } - - template - static void query_fn_non_void(void* result, const void* ex, const void* prop, - typename enable_if< - asio::can_query::value - && !is_same::value - && is_scalar::value - >::type*) - { - *static_cast(result) - = static_cast( - asio::query(*static_cast(ex), - *static_cast(prop))); - } - - template - static void query_fn_non_void(void* result, const void*, const void*, - typename enable_if< - !asio::can_query::value - && !is_same::value - && is_scalar::value - >::type*) - { - *static_cast(result) - = typename Prop::polymorphic_query_result_type(); - } - - template - static void query_fn_non_void(void* result, const void* ex, const void* prop, - typename enable_if< - asio::can_query::value - && !is_same::value - && !is_reference::value - && !is_scalar::value - >::type*) - { - *static_cast(result) - = new typename Prop::polymorphic_query_result_type( - asio::query(*static_cast(ex), - *static_cast(prop))); - } - - template - static void query_fn_non_void(void* result, const void*, const void*, ...) - { - *static_cast(result) - = new typename Prop::polymorphic_query_result_type(); - } - - template - static void query_fn_impl(void* result, const void* ex, const void* prop, - typename enable_if< - is_same::value - >::type*) - { - query_fn_void(result, ex, prop); - } - - template - static void query_fn_impl(void* result, const void* ex, const void* prop, - typename enable_if< - !is_same::value - >::type*) - { - query_fn_non_void(result, ex, prop, 0); - } - - template - static void query_fn(void* result, const void* ex, const void* prop) - { - query_fn_impl(result, ex, prop, 0); - } - - template - static Poly require_fn_impl(const void*, const void*, - typename enable_if< - is_same::value - >::type*) - { - bad_executor ex; - asio::detail::throw_exception(ex); - return Poly(); - } - - template - static Poly require_fn_impl(const void* ex, const void* prop, - typename enable_if< - !is_same::value && Prop::is_requirable - >::type*) - { - return asio::require(*static_cast(ex), - *static_cast(prop)); - } - - template - static Poly require_fn_impl(const void*, const void*, ...) - { - return Poly(); - } - - template - static Poly require_fn(const void* ex, const void* prop) - { - return require_fn_impl(ex, prop, 0); - } - - template - static Poly prefer_fn_impl(const void*, const void*, - typename enable_if< - is_same::value - >::type*) - { - bad_executor ex; - asio::detail::throw_exception(ex); - return Poly(); - } - - template - static Poly prefer_fn_impl(const void* ex, const void* prop, - typename enable_if< - !is_same::value && Prop::is_preferable - >::type*) - { - return asio::prefer(*static_cast(ex), - *static_cast(prop)); - } - - template - static Poly prefer_fn_impl(const void*, const void*, ...) - { - return Poly(); - } - - template - static Poly prefer_fn(const void* ex, const void* prop) - { - return prefer_fn_impl(ex, prop, 0); - } - - template - struct prop_fns - { - void (*query)(void*, const void*, const void*); - Poly (*require)(const void*, const void*); - Poly (*prefer)(const void*, const void*); - }; - -#if defined(ASIO_MSVC) -# pragma warning (pop) -#endif // defined(ASIO_MSVC) - -private: - template - static execution::blocking_t query_blocking(const Executor& ex, true_type) - { - return asio::query(ex, execution::blocking); - } - - template - static execution::blocking_t query_blocking(const Executor&, false_type) - { - return execution::blocking_t(); - } - - template - void construct_object(Executor& ex, true_type) - { - object_fns_ = object_fns_table(); - target_ = new (&object_) Executor(ASIO_MOVE_CAST(Executor)(ex)); - } - - template - void construct_object(Executor& ex, false_type) - { - object_fns_ = object_fns_table >(); - asio::detail::shared_ptr p = - asio::detail::make_shared( - ASIO_MOVE_CAST(Executor)(ex)); - target_ = p.get(); - new (&object_) asio::detail::shared_ptr( - ASIO_MOVE_CAST(asio::detail::shared_ptr)(p)); - } - -/*private:*/public: -// template friend class any_executor; - - typedef aligned_storage< - sizeof(asio::detail::shared_ptr), - alignment_of >::value - >::type object_type; - - object_type object_; - const object_fns* object_fns_; - void* target_; - const target_fns* target_fns_; -}; - -template -struct any_executor_context -{ -}; - -#if !defined(ASIO_NO_TS_EXECUTORS) - -template -struct any_executor_context::type> -{ - typename Property::query_result_type context() const - { - return static_cast(this)->query(typename Property::type()); - } -}; - -#endif // !defined(ASIO_NO_TS_EXECUTORS) - -} // namespace detail - -template <> -class any_executor<> : public detail::any_executor_base -{ -public: - any_executor() ASIO_NOEXCEPT - : detail::any_executor_base() - { - } - - any_executor(nullptr_t) ASIO_NOEXCEPT - : detail::any_executor_base() - { - } - - template - any_executor(Executor ex, - typename enable_if< - conditional< - !is_same::value - && !is_base_of::value, - is_executor, - false_type - >::type::value - >::type* = 0) - : detail::any_executor_base( - ASIO_MOVE_CAST(Executor)(ex), false_type()) - { - } - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - any_executor(any_executor other) - : detail::any_executor_base( - static_cast(other)) - { - } - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - any_executor(any_executor other) - : detail::any_executor_base( - static_cast(other)) - { - } - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - - any_executor(const any_executor& other) ASIO_NOEXCEPT - : detail::any_executor_base( - static_cast(other)) - { - } - - any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT - { - if (this != &other) - { - detail::any_executor_base::operator=( - static_cast(other)); - } - return *this; - } - - any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT - { - detail::any_executor_base::operator=(p); - return *this; - } - -#if defined(ASIO_HAS_MOVE) - - any_executor(any_executor&& other) ASIO_NOEXCEPT - : detail::any_executor_base( - static_cast( - static_cast(other))) - { - } - - any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT - { - if (this != &other) - { - detail::any_executor_base::operator=( - static_cast( - static_cast(other))); - } - return *this; - } - -#endif // defined(ASIO_HAS_MOVE) - - void swap(any_executor& other) ASIO_NOEXCEPT - { - detail::any_executor_base::swap( - static_cast(other)); - } - - using detail::any_executor_base::execute; - using detail::any_executor_base::target; - using detail::any_executor_base::target_type; - using detail::any_executor_base::operator unspecified_bool_type; - using detail::any_executor_base::operator!; - - bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT - { - return any_executor_base::equality_helper(other); - } - - template - friend typename enable_if< - is_same::value - || is_same::value, - bool - >::type operator==(const AnyExecutor1& a, - const AnyExecutor2& b) ASIO_NOEXCEPT - { - return static_cast(a).equality_helper(b); - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator==(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT - { - return !a; - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator==(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT - { - return !b; - } - - template - friend typename enable_if< - is_same::value - || is_same::value, - bool - >::type operator!=(const AnyExecutor1& a, - const AnyExecutor2& b) ASIO_NOEXCEPT - { - return !static_cast(a).equality_helper(b); - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator!=(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT - { - return !!a; - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator!=(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT - { - return !!b; - } -}; - -inline void swap(any_executor<>& a, any_executor<>& b) ASIO_NOEXCEPT -{ - return a.swap(b); -} - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -class any_executor : - public detail::any_executor_base, - public detail::any_executor_context< - any_executor, - typename detail::supportable_properties< - 0, void(SupportableProperties...)>::find_context_as_property> -{ -public: - any_executor() ASIO_NOEXCEPT - : detail::any_executor_base(), - prop_fns_(prop_fns_table()) - { - } - - any_executor(nullptr_t) ASIO_NOEXCEPT - : detail::any_executor_base(), - prop_fns_(prop_fns_table()) - { - } - - template - any_executor(Executor ex, - typename enable_if< - conditional< - !is_same::value - && !is_base_of::value, - detail::is_valid_target_executor< - Executor, void(SupportableProperties...)>, - false_type - >::type::value - >::type* = 0) - : detail::any_executor_base( - ASIO_MOVE_CAST(Executor)(ex), false_type()), - prop_fns_(prop_fns_table()) - { - } - - template - any_executor(any_executor other, - typename enable_if< - conditional< - !is_same< - any_executor, - any_executor - >::value, - typename detail::supportable_properties< - 0, void(SupportableProperties...)>::template is_valid_target< - any_executor >, - false_type - >::type::value - >::type* = 0) - : detail::any_executor_base(ASIO_MOVE_CAST( - any_executor)(other), true_type()), - prop_fns_(prop_fns_table >()) - { - } - - any_executor(const any_executor& other) ASIO_NOEXCEPT - : detail::any_executor_base( - static_cast(other)), - prop_fns_(other.prop_fns_) - { - } - - any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT - { - if (this != &other) - { - prop_fns_ = other.prop_fns_; - detail::any_executor_base::operator=( - static_cast(other)); - } - return *this; - } - - any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT - { - prop_fns_ = prop_fns_table(); - detail::any_executor_base::operator=(p); - return *this; - } - -#if defined(ASIO_HAS_MOVE) - - any_executor(any_executor&& other) ASIO_NOEXCEPT - : detail::any_executor_base( - static_cast( - static_cast(other))), - prop_fns_(other.prop_fns_) - { - other.prop_fns_ = prop_fns_table(); - } - - any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT - { - if (this != &other) - { - prop_fns_ = other.prop_fns_; - detail::any_executor_base::operator=( - static_cast( - static_cast(other))); - } - return *this; - } - -#endif // defined(ASIO_HAS_MOVE) - - void swap(any_executor& other) ASIO_NOEXCEPT - { - if (this != &other) - { - detail::any_executor_base::swap( - static_cast(other)); - const prop_fns* tmp_prop_fns = other.prop_fns_; - other.prop_fns_ = prop_fns_; - prop_fns_ = tmp_prop_fns; - } - } - - using detail::any_executor_base::execute; - using detail::any_executor_base::target; - using detail::any_executor_base::target_type; - using detail::any_executor_base::operator unspecified_bool_type; - using detail::any_executor_base::operator!; - - bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT - { - return any_executor_base::equality_helper(other); - } - - template - friend typename enable_if< - is_same::value - || is_same::value, - bool - >::type operator==(const AnyExecutor1& a, - const AnyExecutor2& b) ASIO_NOEXCEPT - { - return static_cast(a).equality_helper(b); - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator==(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT - { - return !a; - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator==(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT - { - return !b; - } - - template - friend typename enable_if< - is_same::value - || is_same::value, - bool - >::type operator!=(const AnyExecutor1& a, - const AnyExecutor2& b) ASIO_NOEXCEPT - { - return !static_cast(a).equality_helper(b); - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator!=(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT - { - return !!a; - } - - template - friend typename enable_if< - is_same::value, - bool - >::type operator!=(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT - { - return !!b; - } - - template - struct find_convertible_property : - detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_property {}; - - template - void query(const Property& p, - typename enable_if< - is_same< - typename find_convertible_property::query_result_type, - void - >::value - >::type* = 0) const - { - typedef find_convertible_property found; - prop_fns_[found::index].query(0, object_fns_->target(*this), - &static_cast(p)); - } - - template - typename find_convertible_property::query_result_type - query(const Property& p, - typename enable_if< - !is_same< - typename find_convertible_property::query_result_type, - void - >::value - && - is_reference< - typename find_convertible_property::query_result_type - >::value - >::type* = 0) const - { - typedef find_convertible_property found; - typename remove_reference< - typename found::query_result_type>::type* result = 0; - prop_fns_[found::index].query(&result, object_fns_->target(*this), - &static_cast(p)); - return *result; - } - - template - typename find_convertible_property::query_result_type - query(const Property& p, - typename enable_if< - !is_same< - typename find_convertible_property::query_result_type, - void - >::value - && - is_scalar< - typename find_convertible_property::query_result_type - >::value - >::type* = 0) const - { - typedef find_convertible_property found; - typename found::query_result_type result; - prop_fns_[found::index].query(&result, object_fns_->target(*this), - &static_cast(p)); - return result; - } - - template - typename find_convertible_property::query_result_type - query(const Property& p, - typename enable_if< - !is_same< - typename find_convertible_property::query_result_type, - void - >::value - && - !is_reference< - typename find_convertible_property::query_result_type - >::value - && - !is_scalar< - typename find_convertible_property::query_result_type - >::value - >::type* = 0) const - { - typedef find_convertible_property found; - typename found::query_result_type* result; - prop_fns_[found::index].query(&result, object_fns_->target(*this), - &static_cast(p)); - return *asio::detail::scoped_ptr< - typename found::query_result_type>(result); - } - - template - struct find_convertible_requirable_property : - detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_requirable_property {}; - - template - any_executor require(const Property& p, - typename enable_if< - find_convertible_requirable_property::value - >::type* = 0) const - { - typedef find_convertible_requirable_property found; - return prop_fns_[found::index].require(object_fns_->target(*this), - &static_cast(p)); - } - - template - struct find_convertible_preferable_property : - detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_preferable_property {}; - - template - any_executor prefer(const Property& p, - typename enable_if< - find_convertible_preferable_property::value - >::type* = 0) const - { - typedef find_convertible_preferable_property found; - return prop_fns_[found::index].prefer(object_fns_->target(*this), - &static_cast(p)); - } - -//private: - template - static const prop_fns* prop_fns_table() - { - static const prop_fns fns[] = - { - { - &detail::any_executor_base::query_fn< - Ex, SupportableProperties>, - &detail::any_executor_base::require_fn< - any_executor, Ex, SupportableProperties>, - &detail::any_executor_base::prefer_fn< - any_executor, Ex, SupportableProperties> - }... - }; - return fns; - } - - const prop_fns* prop_fns_; -}; - -template -inline void swap(any_executor& a, - any_executor& b) ASIO_NOEXCEPT -{ - return a.swap(b); -} - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_##n - -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1 \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } -#define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8 \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7, \ - { \ - &detail::any_executor_base::query_fn, \ - &detail::any_executor_base::require_fn, \ - &detail::any_executor_base::prefer_fn \ - } - -#if defined(ASIO_HAS_MOVE) - -# define ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \ - any_executor(any_executor&& other) ASIO_NOEXCEPT \ - : detail::any_executor_base( \ - static_cast( \ - static_cast(other))), \ - prop_fns_(other.prop_fns_) \ - { \ - other.prop_fns_ = prop_fns_table(); \ - } \ - \ - any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT \ - { \ - if (this != &other) \ - { \ - prop_fns_ = other.prop_fns_; \ - detail::any_executor_base::operator=( \ - static_cast( \ - static_cast(other))); \ - } \ - return *this; \ - } \ - /**/ -#else // defined(ASIO_HAS_MOVE) - -# define ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS - -#endif // defined(ASIO_HAS_MOVE) - -#define ASIO_PRIVATE_ANY_EXECUTOR_DEF(n) \ - template \ - class any_executor : \ - public detail::any_executor_base, \ - public detail::any_executor_context< \ - any_executor, \ - typename detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::find_context_as_property> \ - { \ - public: \ - any_executor() ASIO_NOEXCEPT \ - : detail::any_executor_base(), \ - prop_fns_(prop_fns_table()) \ - { \ - } \ - \ - any_executor(nullptr_t) ASIO_NOEXCEPT \ - : detail::any_executor_base(), \ - prop_fns_(prop_fns_table()) \ - { \ - } \ - \ - template \ - any_executor(Executor ex, \ - typename enable_if< \ - conditional< \ - !is_same::value \ - && !is_base_of::value, \ - detail::is_valid_target_executor< \ - Executor, void(ASIO_VARIADIC_TARGS(n))>, \ - false_type \ - >::type::value \ - >::type* = 0) \ - : detail::any_executor_base(ASIO_MOVE_CAST( \ - Executor)(ex), false_type()), \ - prop_fns_(prop_fns_table()) \ - { \ - } \ - \ - any_executor(const any_executor& other) ASIO_NOEXCEPT \ - : detail::any_executor_base( \ - static_cast(other)), \ - prop_fns_(other.prop_fns_) \ - { \ - } \ - \ - any_executor(any_executor<> other) \ - : detail::any_executor_base(ASIO_MOVE_CAST( \ - any_executor<>)(other), true_type()), \ - prop_fns_(prop_fns_table >()) \ - { \ - } \ - \ - template \ - any_executor(OtherAnyExecutor other, \ - typename enable_if< \ - conditional< \ - !is_same::value \ - && is_base_of::value, \ - typename detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - is_valid_target, \ - false_type \ - >::type::value \ - >::type* = 0) \ - : detail::any_executor_base(ASIO_MOVE_CAST( \ - OtherAnyExecutor)(other), true_type()), \ - prop_fns_(prop_fns_table()) \ - { \ - } \ - \ - any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT \ - { \ - if (this != &other) \ - { \ - prop_fns_ = other.prop_fns_; \ - detail::any_executor_base::operator=( \ - static_cast(other)); \ - } \ - return *this; \ - } \ - \ - any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT \ - { \ - prop_fns_ = prop_fns_table(); \ - detail::any_executor_base::operator=(p); \ - return *this; \ - } \ - \ - ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \ - \ - void swap(any_executor& other) ASIO_NOEXCEPT \ - { \ - if (this != &other) \ - { \ - detail::any_executor_base::swap( \ - static_cast(other)); \ - const prop_fns* tmp_prop_fns = other.prop_fns_; \ - other.prop_fns_ = prop_fns_; \ - prop_fns_ = tmp_prop_fns; \ - } \ - } \ - \ - using detail::any_executor_base::execute; \ - using detail::any_executor_base::target; \ - using detail::any_executor_base::target_type; \ - using detail::any_executor_base::operator unspecified_bool_type; \ - using detail::any_executor_base::operator!; \ - \ - bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT \ - { \ - return any_executor_base::equality_helper(other); \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value \ - || is_same::value, \ - bool \ - >::type operator==(const AnyExecutor1& a, \ - const AnyExecutor2& b) ASIO_NOEXCEPT \ - { \ - return static_cast(a).equality_helper(b); \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value, \ - bool \ - >::type operator==(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT \ - { \ - return !a; \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value, \ - bool \ - >::type operator==(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT \ - { \ - return !b; \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value \ - || is_same::value, \ - bool \ - >::type operator!=(const AnyExecutor1& a, \ - const AnyExecutor2& b) ASIO_NOEXCEPT \ - { \ - return !static_cast(a).equality_helper(b); \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value, \ - bool \ - >::type operator!=(const AnyExecutor& a, nullptr_t) ASIO_NOEXCEPT \ - { \ - return !!a; \ - } \ - \ - template \ - friend typename enable_if< \ - is_same::value, \ - bool \ - >::type operator!=(nullptr_t, const AnyExecutor& b) ASIO_NOEXCEPT \ - { \ - return !!b; \ - } \ - \ - template \ - struct find_convertible_property : \ - detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_property {}; \ - \ - template \ - void query(const Property& p, \ - typename enable_if< \ - is_same< \ - typename find_convertible_property::query_result_type, \ - void \ - >::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_property found; \ - prop_fns_[found::index].query(0, object_fns_->target(*this), \ - &static_cast(p)); \ - } \ - \ - template \ - typename find_convertible_property::query_result_type \ - query(const Property& p, \ - typename enable_if< \ - !is_same< \ - typename find_convertible_property::query_result_type, \ - void \ - >::value \ - && \ - is_reference< \ - typename find_convertible_property::query_result_type \ - >::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_property found; \ - typename remove_reference< \ - typename found::query_result_type>::type* result; \ - prop_fns_[found::index].query(&result, object_fns_->target(*this), \ - &static_cast(p)); \ - return *result; \ - } \ - \ - template \ - typename find_convertible_property::query_result_type \ - query(const Property& p, \ - typename enable_if< \ - !is_same< \ - typename find_convertible_property::query_result_type, \ - void \ - >::value \ - && \ - is_scalar< \ - typename find_convertible_property::query_result_type \ - >::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_property found; \ - typename found::query_result_type result; \ - prop_fns_[found::index].query(&result, object_fns_->target(*this), \ - &static_cast(p)); \ - return result; \ - } \ - \ - template \ - typename find_convertible_property::query_result_type \ - query(const Property& p, \ - typename enable_if< \ - !is_same< \ - typename find_convertible_property::query_result_type, \ - void \ - >::value \ - && \ - !is_reference< \ - typename find_convertible_property::query_result_type \ - >::value \ - && \ - !is_scalar< \ - typename find_convertible_property::query_result_type \ - >::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_property found; \ - typename found::query_result_type* result; \ - prop_fns_[found::index].query(&result, object_fns_->target(*this), \ - &static_cast(p)); \ - return *asio::detail::scoped_ptr< \ - typename found::query_result_type>(result); \ - } \ - \ - template \ - struct find_convertible_requirable_property : \ - detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_requirable_property {}; \ - \ - template \ - any_executor require(const Property& p, \ - typename enable_if< \ - find_convertible_requirable_property::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_requirable_property found; \ - return prop_fns_[found::index].require(object_fns_->target(*this), \ - &static_cast(p)); \ - } \ - \ - template \ - struct find_convertible_preferable_property : \ - detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_preferable_property {}; \ - \ - template \ - any_executor prefer(const Property& p, \ - typename enable_if< \ - find_convertible_preferable_property::value \ - >::type* = 0) const \ - { \ - typedef find_convertible_preferable_property found; \ - return prop_fns_[found::index].prefer(object_fns_->target(*this), \ - &static_cast(p)); \ - } \ - \ - template \ - static const prop_fns* prop_fns_table() \ - { \ - static const prop_fns fns[] = \ - { \ - ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \ - }; \ - return fns; \ - } \ - \ - const prop_fns* prop_fns_; \ - typedef detail::supportable_properties<0, \ - void(ASIO_VARIADIC_TARGS(n))> supportable_properties_type; \ - }; \ - \ - template \ - inline void swap(any_executor& a, \ - any_executor& b) ASIO_NOEXCEPT \ - { \ - return a.swap(b); \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_DEF -#undef ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7 -#undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8 - -#endif // if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct equality_comparable > -{ - static const bool is_valid = true; - static const bool is_noexcept = true; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template <> -struct equality_comparable > -{ - static const bool is_valid = true; - static const bool is_noexcept = true; -}; - -#define ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF(n) \ - template \ - struct equality_comparable< \ - execution::any_executor > \ - { \ - static const bool is_valid = true; \ - static const bool is_noexcept = true; \ - }; \ - /**/ - ASIO_VARIADIC_GENERATE( - ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct execute_member, F> -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef void result_type; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct execute_member, F> -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef void result_type; -}; - -#define ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF(n) \ - template \ - struct execute_member< \ - execution::any_executor, F> \ - { \ - static const bool is_valid = true; \ - static const bool is_noexcept = false; \ - typedef void result_type; \ - }; \ - /**/ - ASIO_VARIADIC_GENERATE( - ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct query_member< - execution::any_executor, Prop, - typename enable_if< - execution::detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_property::value - >::type> -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef typename execution::detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_property::query_result_type result_type; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#define ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF(n) \ - template \ - struct query_member< \ - execution::any_executor, Prop, \ - typename enable_if< \ - execution::detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_property::value \ - >::type> \ - { \ - static const bool is_valid = true; \ - static const bool is_noexcept = false; \ - typedef typename execution::detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_property::query_result_type result_type; \ - }; \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct require_member< - execution::any_executor, Prop, - typename enable_if< - execution::detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_requirable_property::value - >::type> -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef execution::any_executor result_type; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#define ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF(n) \ - template \ - struct require_member< \ - execution::any_executor, Prop, \ - typename enable_if< \ - execution::detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_requirable_property::value \ - >::type> \ - { \ - static const bool is_valid = true; \ - static const bool is_noexcept = false; \ - typedef execution::any_executor result_type; \ - }; \ - /**/ - ASIO_VARIADIC_GENERATE( - ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct prefer_member< - execution::any_executor, Prop, - typename enable_if< - execution::detail::supportable_properties< - 0, void(SupportableProperties...)>::template - find_convertible_preferable_property::value - >::type> -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef execution::any_executor result_type; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#define ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF(n) \ - template \ - struct prefer_member< \ - execution::any_executor, Prop, \ - typename enable_if< \ - execution::detail::supportable_properties< \ - 0, void(ASIO_VARIADIC_TARGS(n))>::template \ - find_convertible_preferable_property::value \ - >::type> \ - { \ - static const bool is_valid = true; \ - static const bool is_noexcept = false; \ - typedef execution::any_executor result_type; \ - }; \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF) -#undef ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) -#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_ANY_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bad_executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bad_executor.hpp deleted file mode 100644 index 00695293..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bad_executor.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// execution/bad_executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_BAD_EXECUTOR_HPP -#define ASIO_EXECUTION_BAD_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { - -/// Exception thrown when trying to access an empty polymorphic executor. -class bad_executor - : public std::exception -{ -public: - /// Constructor. - ASIO_DECL bad_executor() ASIO_NOEXCEPT; - - /// Obtain message associated with exception. - ASIO_DECL virtual const char* what() const - ASIO_NOEXCEPT_OR_NOTHROW; -}; - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/execution/impl/bad_executor.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_EXECUTION_BAD_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking.hpp deleted file mode 100644 index 4d193496..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking.hpp +++ /dev/null @@ -1,1351 +0,0 @@ -// -// execution/blocking.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_BLOCKING_HPP -#define ASIO_EXECUTION_BLOCKING_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/require.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe what guarantees an executor makes about the blocking -/// behaviour of their execution functions. -struct blocking_t -{ - /// The blocking_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level blocking_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level blocking_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef blocking_t polymorphic_query_result_type; - - /// A sub-property that indicates that invocation of an executor's execution - /// function may block pending completion of one or more invocations of the - /// submitted function object. - struct possibly_t - { - /// The blocking_t::possibly_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The blocking_t::possibly_t property can be required. - static constexpr bool is_requirable = true; - - /// The blocking_t::possibly_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef blocking_t polymorphic_query_result_type; - - /// Default constructor. - constexpr possibly_t(); - - /// Get the value associated with a property object. - /** - * @returns possibly_t(); - */ - static constexpr blocking_t value(); - }; - - /// A sub-property that indicates that invocation of an executor's execution - /// function shall block until completion of all invocations of the submitted - /// function object. - struct always_t - { - /// The blocking_t::always_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The blocking_t::always_t property can be required. - static constexpr bool is_requirable = true; - - /// The blocking_t::always_t property can be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef blocking_t polymorphic_query_result_type; - - /// Default constructor. - constexpr always_t(); - - /// Get the value associated with a property object. - /** - * @returns always_t(); - */ - static constexpr blocking_t value(); - }; - - /// A sub-property that indicates that invocation of an executor's execution - /// function shall not block pending completion of the invocations of the - /// submitted function object. - struct never_t - { - /// The blocking_t::never_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The blocking_t::never_t property can be required. - static constexpr bool is_requirable = true; - - /// The blocking_t::never_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef blocking_t polymorphic_query_result_type; - - /// Default constructor. - constexpr never_t(); - - /// Get the value associated with a property object. - /** - * @returns never_t(); - */ - static constexpr blocking_t value(); - }; - - /// A special value used for accessing the blocking_t::possibly_t property. - static constexpr possibly_t possibly; - - /// A special value used for accessing the blocking_t::always_t property. - static constexpr always_t always; - - /// A special value used for accessing the blocking_t::never_t property. - static constexpr never_t never; - - /// Default constructor. - constexpr blocking_t(); - - /// Construct from a sub-property value. - constexpr blocking_t(possibly_t); - - /// Construct from a sub-property value. - constexpr blocking_t(always_t); - - /// Construct from a sub-property value. - constexpr blocking_t(never_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const blocking_t& a, const blocking_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const blocking_t& a, const blocking_t& b) noexcept; -}; - -/// A special value used for accessing the blocking_t property. -constexpr blocking_t blocking; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace blocking { - -template struct possibly_t; -template struct always_t; -template struct never_t; - -} // namespace blocking -namespace blocking_adaptation { - -template struct allowed_t; - -template -void blocking_execute( - ASIO_MOVE_ARG(Executor) ex, - ASIO_MOVE_ARG(Function) func); - -} // namespace blocking_adaptation - -template -struct blocking_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef blocking_t polymorphic_query_result_type; - - typedef detail::blocking::possibly_t possibly_t; - typedef detail::blocking::always_t always_t; - typedef detail::blocking::never_t never_t; - - ASIO_CONSTEXPR blocking_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR blocking_t(possibly_t) - : value_(0) - { - } - - ASIO_CONSTEXPR blocking_t(always_t) - : value_(1) - { - } - - ASIO_CONSTEXPR blocking_t(never_t) - : value_(2) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = blocking_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const blocking_t& a, const blocking_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const blocking_t& a, const blocking_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_blocking_t - { - ASIO_CONSTEXPR convertible_from_blocking_t(blocking_t) {} - }; - - template - friend ASIO_CONSTEXPR blocking_t query( - const Executor& ex, convertible_from_blocking_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::possibly_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, possibly_t()); - } - - template - friend ASIO_CONSTEXPR blocking_t query( - const Executor& ex, convertible_from_blocking_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::always_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, always_t()); - } - - template - friend ASIO_CONSTEXPR blocking_t query( - const Executor& ex, convertible_from_blocking_t, - typename enable_if< - !can_query::value - && !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::never_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, never_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(possibly_t, possibly); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(always_t, always); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(never_t, never); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const blocking_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T blocking_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const blocking_t blocking_t::instance; -#endif - -template -const typename blocking_t::possibly_t blocking_t::possibly; - -template -const typename blocking_t::always_t blocking_t::always; - -template -const typename blocking_t::never_t blocking_t::never; - -namespace blocking { - -template -struct possibly_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef blocking_t polymorphic_query_result_type; - - ASIO_CONSTEXPR possibly_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR possibly_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return possibly_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = possibly_t::static_query(); -#endif // defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR blocking_t value() - { - return possibly_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const possibly_t&, const possibly_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const possibly_t&, const possibly_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const possibly_t&, const always_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const possibly_t&, const always_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const possibly_t&, const never_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const possibly_t&, const never_t&) - { - return true; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T possibly_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -class adapter -{ -public: - adapter(int, const Executor& e) ASIO_NOEXCEPT - : executor_(e) - { - } - - adapter(const adapter& other) ASIO_NOEXCEPT - : executor_(other.executor_) - { - } - -#if defined(ASIO_HAS_MOVE) - adapter(adapter&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(Executor)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - template - static ASIO_CONSTEXPR always_t query( - blocking_t) ASIO_NOEXCEPT - { - return always_t(); - } - - template - static ASIO_CONSTEXPR always_t query( - possibly_t) ASIO_NOEXCEPT - { - return always_t(); - } - - template - static ASIO_CONSTEXPR always_t query( - always_t) ASIO_NOEXCEPT - { - return always_t(); - } - - template - static ASIO_CONSTEXPR always_t query( - never_t) ASIO_NOEXCEPT - { - return always_t(); - } - - template - typename enable_if< - can_query::value, - typename query_result::type - >::type query(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) - { - return asio::query(executor_, p); - } - - template - typename enable_if< - can_require >::value, - typename require_result >::type - >::type require(possibly_t) const ASIO_NOEXCEPT - { - return asio::require(executor_, possibly_t()); - } - - template - typename enable_if< - can_require >::value, - typename require_result >::type - >::type require(never_t) const ASIO_NOEXCEPT - { - return asio::require(executor_, never_t()); - } - - template - typename enable_if< - can_require::value, - adapter::type - >::type> - >::type require(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_require::value)) - { - return adapter::type - >::type>(0, asio::require(executor_, p)); - } - - template - typename enable_if< - can_prefer::value, - adapter::type - >::type> - >::type prefer(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_prefer::value)) - { - return adapter::type - >::type>(0, asio::prefer(executor_, p)); - } - - template - typename enable_if< - execution::can_execute::value - >::type execute(ASIO_MOVE_ARG(Function) f) const - { - blocking_adaptation::blocking_execute( - executor_, ASIO_MOVE_CAST(Function)(f)); - } - - friend bool operator==(const adapter& a, const adapter& b) ASIO_NOEXCEPT - { - return a.executor_ == b.executor_; - } - - friend bool operator!=(const adapter& a, const adapter& b) ASIO_NOEXCEPT - { - return a.executor_ != b.executor_; - } - -private: - Executor executor_; -}; - -template -struct always_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef blocking_t polymorphic_query_result_type; - - ASIO_CONSTEXPR always_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = always_t::static_query(); -#endif // defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR blocking_t value() - { - return always_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const always_t&, const always_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const always_t&, const always_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const always_t&, const possibly_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const always_t&, const possibly_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const always_t&, const never_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const always_t&, const never_t&) - { - return true; - } - - template - friend adapter require( - const Executor& e, const always_t&, - typename enable_if< - is_executor::value - && traits::static_require< - const Executor&, - blocking_adaptation::allowed_t<0> - >::is_valid - >::type* = 0) - { - return adapter(0, e); - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T always_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct never_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef blocking_t polymorphic_query_result_type; - - ASIO_CONSTEXPR never_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = never_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR blocking_t value() - { - return never_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const never_t&, const never_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const never_t&, const never_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const never_t&, const possibly_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const never_t&, const possibly_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const never_t&, const always_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const never_t&, const always_t&) - { - return true; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T never_t::static_query_v; -#endif // defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace blocking -} // namespace detail - -typedef detail::blocking_t<> blocking_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr blocking_t blocking; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const blocking_t& blocking = blocking_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::blocking_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::blocking_t result_type; -}; - -template -struct query_free_default::value - && !can_query::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::blocking_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::blocking_t::possibly_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::blocking_t::possibly_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::blocking_t::always_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::blocking_t::never_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) - -template -struct require_free_default::type>::value - && execution::is_executor::value - && traits::static_require< - const T&, - execution::detail::blocking_adaptation::allowed_t<0> - >::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef execution::detail::blocking::adapter result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -template -struct equality_comparable< - execution::detail::blocking::adapter > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -template -struct execute_member< - execution::detail::blocking::adapter, Function> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) - -template -struct query_static_constexpr_member< - execution::detail::blocking::adapter, - execution::detail::blocking_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_t::always_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -template -struct query_static_constexpr_member< - execution::detail::blocking::adapter, - execution::detail::blocking::always_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_t::always_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -template -struct query_static_constexpr_member< - execution::detail::blocking::adapter, - execution::detail::blocking::possibly_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_t::always_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -template -struct query_static_constexpr_member< - execution::detail::blocking::adapter, - execution::detail::blocking::never_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_t::always_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -template -struct query_member< - execution::detail::blocking::adapter, Property, - typename enable_if< - can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - typedef typename query_result::type result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -template -struct require_member< - execution::detail::blocking::adapter, - execution::detail::blocking::possibly_t, - typename enable_if< - can_require< - const Executor&, - execution::detail::blocking::possibly_t - >::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_require >::value)); - typedef typename require_result >::type result_type; -}; - -template -struct require_member< - execution::detail::blocking::adapter, - execution::detail::blocking::never_t, - typename enable_if< - can_require< - const Executor&, - execution::detail::blocking::never_t - >::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_require >::value)); - typedef typename require_result >::type result_type; -}; - -template -struct require_member< - execution::detail::blocking::adapter, Property, - typename enable_if< - can_require::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_require::value)); - typedef execution::detail::blocking::adapter::type - >::type> result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -template -struct prefer_member< - execution::detail::blocking::adapter, Property, - typename enable_if< - can_prefer::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_prefer::value)); - typedef execution::detail::blocking::adapter::type - >::type> result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_BLOCKING_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking_adaptation.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking_adaptation.hpp deleted file mode 100644 index 8f4bf81d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/blocking_adaptation.hpp +++ /dev/null @@ -1,1064 +0,0 @@ -// -// execution/blocking_adaptation.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_BLOCKING_ADAPTATION_HPP -#define ASIO_EXECUTION_BLOCKING_ADAPTATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/event.hpp" -#include "asio/detail/mutex.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/require.hpp" -#include "asio/traits/prefer_member.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/require_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe whether automatic adaptation of an executor is -/// allowed in order to apply the blocking_adaptation_t::allowed_t property. -struct blocking_adaptation_t -{ - /// The blocking_adaptation_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level blocking_adaptation_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level blocking_adaptation_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef blocking_adaptation_t polymorphic_query_result_type; - - /// A sub-property that indicates that automatic adaptation is not allowed. - struct disallowed_t - { - /// The blocking_adaptation_t::disallowed_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The blocking_adaptation_t::disallowed_t property can be required. - static constexpr bool is_requirable = true; - - /// The blocking_adaptation_t::disallowed_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef blocking_adaptation_t polymorphic_query_result_type; - - /// Default constructor. - constexpr disallowed_t(); - - /// Get the value associated with a property object. - /** - * @returns disallowed_t(); - */ - static constexpr blocking_adaptation_t value(); - }; - - /// A sub-property that indicates that automatic adaptation is allowed. - struct allowed_t - { - /// The blocking_adaptation_t::allowed_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The blocking_adaptation_t::allowed_t property can be required. - static constexpr bool is_requirable = true; - - /// The blocking_adaptation_t::allowed_t property can be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef blocking_adaptation_t polymorphic_query_result_type; - - /// Default constructor. - constexpr allowed_t(); - - /// Get the value associated with a property object. - /** - * @returns allowed_t(); - */ - static constexpr blocking_adaptation_t value(); - }; - - /// A special value used for accessing the blocking_adaptation_t::disallowed_t - /// property. - static constexpr disallowed_t disallowed; - - /// A special value used for accessing the blocking_adaptation_t::allowed_t - /// property. - static constexpr allowed_t allowed; - - /// Default constructor. - constexpr blocking_adaptation_t(); - - /// Construct from a sub-property value. - constexpr blocking_adaptation_t(disallowed_t); - - /// Construct from a sub-property value. - constexpr blocking_adaptation_t(allowed_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const blocking_adaptation_t& a, const blocking_adaptation_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const blocking_adaptation_t& a, const blocking_adaptation_t& b) noexcept; -}; - -/// A special value used for accessing the blocking_adaptation_t property. -constexpr blocking_adaptation_t blocking_adaptation; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace blocking_adaptation { - -template struct disallowed_t; -template struct allowed_t; - -} // namespace blocking_adaptation - -template -struct blocking_adaptation_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef blocking_adaptation_t polymorphic_query_result_type; - - typedef detail::blocking_adaptation::disallowed_t disallowed_t; - typedef detail::blocking_adaptation::allowed_t allowed_t; - - ASIO_CONSTEXPR blocking_adaptation_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR blocking_adaptation_t(disallowed_t) - : value_(0) - { - } - - ASIO_CONSTEXPR blocking_adaptation_t(allowed_t) - : value_(1) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, blocking_adaptation_t>::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, blocking_adaptation_t - >::is_noexcept)) - { - return traits::query_static_constexpr_member< - T, blocking_adaptation_t>::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, blocking_adaptation_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, blocking_adaptation_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = blocking_adaptation_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const blocking_adaptation_t& a, const blocking_adaptation_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const blocking_adaptation_t& a, const blocking_adaptation_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_blocking_adaptation_t - { - ASIO_CONSTEXPR convertible_from_blocking_adaptation_t( - blocking_adaptation_t) - { - } - }; - - template - friend ASIO_CONSTEXPR blocking_adaptation_t query( - const Executor& ex, convertible_from_blocking_adaptation_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::disallowed_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, disallowed_t()); - } - - template - friend ASIO_CONSTEXPR blocking_adaptation_t query( - const Executor& ex, convertible_from_blocking_adaptation_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::allowed_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, allowed_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(disallowed_t, disallowed); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(allowed_t, allowed); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const blocking_adaptation_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T blocking_adaptation_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const blocking_adaptation_t blocking_adaptation_t::instance; -#endif - -template -const typename blocking_adaptation_t::disallowed_t -blocking_adaptation_t::disallowed; - -template -const typename blocking_adaptation_t::allowed_t -blocking_adaptation_t::allowed; - -namespace blocking_adaptation { - -template -struct disallowed_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef blocking_adaptation_t polymorphic_query_result_type; - - ASIO_CONSTEXPR disallowed_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR disallowed_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return disallowed_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = disallowed_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR blocking_adaptation_t value() - { - return disallowed_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const disallowed_t&, const disallowed_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const disallowed_t&, const disallowed_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T disallowed_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -class adapter -{ -public: - adapter(int, const Executor& e) ASIO_NOEXCEPT - : executor_(e) - { - } - - adapter(const adapter& other) ASIO_NOEXCEPT - : executor_(other.executor_) - { - } - -#if defined(ASIO_HAS_MOVE) - adapter(adapter&& other) ASIO_NOEXCEPT - : executor_(ASIO_MOVE_CAST(Executor)(other.executor_)) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - template - static ASIO_CONSTEXPR allowed_t query( - blocking_adaptation_t) ASIO_NOEXCEPT - { - return allowed_t(); - } - - template - static ASIO_CONSTEXPR allowed_t query( - allowed_t) ASIO_NOEXCEPT - { - return allowed_t(); - } - - template - static ASIO_CONSTEXPR allowed_t query( - disallowed_t) ASIO_NOEXCEPT - { - return allowed_t(); - } - - template - typename enable_if< - can_query::value, - typename query_result::type - >::type query(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) - { - return asio::query(executor_, p); - } - - template - Executor require(disallowed_t) const ASIO_NOEXCEPT - { - return executor_; - } - - template - typename enable_if< - can_require::value, - adapter::type - >::type> - >::type require(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_require::value)) - { - return adapter::type - >::type>(0, asio::require(executor_, p)); - } - - template - typename enable_if< - can_prefer::value, - adapter::type - >::type> - >::type prefer(const Property& p) const - ASIO_NOEXCEPT_IF(( - is_nothrow_prefer::value)) - { - return adapter::type - >::type>(0, asio::prefer(executor_, p)); - } - - template - typename enable_if< - execution::can_execute::value - >::type execute(ASIO_MOVE_ARG(Function) f) const - { - execution::execute(executor_, ASIO_MOVE_CAST(Function)(f)); - } - - friend bool operator==(const adapter& a, const adapter& b) ASIO_NOEXCEPT - { - return a.executor_ == b.executor_; - } - - friend bool operator!=(const adapter& a, const adapter& b) ASIO_NOEXCEPT - { - return a.executor_ != b.executor_; - } - -private: - Executor executor_; -}; - -template -struct allowed_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef blocking_adaptation_t polymorphic_query_result_type; - - ASIO_CONSTEXPR allowed_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = allowed_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR blocking_adaptation_t value() - { - return allowed_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const allowed_t&, const allowed_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const allowed_t&, const allowed_t&) - { - return false; - } - - template - friend adapter require( - const Executor& e, const allowed_t&, - typename enable_if< - is_executor::value - >::type* = 0) - { - return adapter(0, e); - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T allowed_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -class blocking_execute_state -{ -public: - template - blocking_execute_state(ASIO_MOVE_ARG(F) f) - : func_(ASIO_MOVE_CAST(F)(f)), - is_complete_(false) - { - } - - template - void execute_and_wait(ASIO_MOVE_ARG(Executor) ex) - { - handler h = { this }; - execution::execute(ASIO_MOVE_CAST(Executor)(ex), h); - asio::detail::mutex::scoped_lock lock(mutex_); - while (!is_complete_) - event_.wait(lock); - } - - struct cleanup - { - ~cleanup() - { - asio::detail::mutex::scoped_lock lock(state_->mutex_); - state_->is_complete_ = true; - state_->event_.unlock_and_signal_one_for_destruction(lock); - } - - blocking_execute_state* state_; - }; - - struct handler - { - void operator()() - { - cleanup c = { state_ }; - state_->func_(); - } - - blocking_execute_state* state_; - }; - - Function func_; - asio::detail::mutex mutex_; - asio::detail::event event_; - bool is_complete_; -}; - -template -void blocking_execute( - ASIO_MOVE_ARG(Executor) ex, - ASIO_MOVE_ARG(Function) func) -{ - typedef typename decay::type func_t; - blocking_execute_state state(ASIO_MOVE_CAST(Function)(func)); - state.execute_and_wait(ex); -} - -} // namespace blocking_adaptation -} // namespace detail - -typedef detail::blocking_adaptation_t<> blocking_adaptation_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr blocking_adaptation_t blocking_adaptation; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const blocking_adaptation_t& - blocking_adaptation = blocking_adaptation_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = (is_nothrow_query::value)); - - typedef execution::blocking_adaptation_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::blocking_adaptation_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::blocking_adaptation_t::disallowed_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::blocking_adaptation_t::disallowed_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::blocking_adaptation_t::allowed_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) - -template -struct require_free_default::type>::value - && execution::is_executor::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef execution::detail::blocking_adaptation::adapter result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -template -struct equality_comparable< - execution::detail::blocking_adaptation::adapter > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -template -struct execute_member< - execution::detail::blocking_adaptation::adapter, Function> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) - -template -struct query_static_constexpr_member< - execution::detail::blocking_adaptation::adapter, - execution::detail::blocking_adaptation_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_adaptation_t::allowed_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -template -struct query_static_constexpr_member< - execution::detail::blocking_adaptation::adapter, - execution::detail::blocking_adaptation::allowed_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_adaptation_t::allowed_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -template -struct query_static_constexpr_member< - execution::detail::blocking_adaptation::adapter, - execution::detail::blocking_adaptation::disallowed_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef execution::blocking_adaptation_t::allowed_t result_type; - - static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT - { - return result_type(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -template -struct query_member< - execution::detail::blocking_adaptation::adapter, Property, - typename enable_if< - can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - typedef typename query_result::type result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -template -struct require_member< - execution::detail::blocking_adaptation::adapter, - execution::detail::blocking_adaptation::disallowed_t > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef Executor result_type; -}; - -template -struct require_member< - execution::detail::blocking_adaptation::adapter, Property, - typename enable_if< - can_require::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_require::value)); - typedef execution::detail::blocking_adaptation::adapter::type - >::type> result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -template -struct prefer_member< - execution::detail::blocking_adaptation::adapter, Property, - typename enable_if< - can_prefer::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_prefer::value)); - typedef execution::detail::blocking_adaptation::adapter::type - >::type> result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_BLOCKING_ADAPTATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_execute.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_execute.hpp deleted file mode 100644 index 001b6088..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_execute.hpp +++ /dev/null @@ -1,390 +0,0 @@ -// -// execution/bulk_execute.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_BULK_EXECUTE_HPP -#define ASIO_EXECUTION_BULK_EXECUTE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/bulk_guarantee.hpp" -#include "asio/execution/detail/bulk_sender.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/sender.hpp" -#include "asio/traits/bulk_execute_member.hpp" -#include "asio/traits/bulk_execute_free.hpp" - -#include "asio/detail/push_options.hpp" - -#if defined(GENERATING_DOCUMENTATION) - -namespace asio { -namespace execution { - -/// A customisation point that creates a bulk sender. -/** - * The name execution::bulk_execute denotes a customisation point - * object. If is_convertible_v is true, then the expression - * execution::bulk_execute(S, F, N) for some subexpressions - * S, F, and N is expression-equivalent to: - * - * @li S.bulk_execute(F, N), if that expression is valid. If the - * function selected does not execute N invocations of the function - * object F on the executor S in bulk with forward progress - * guarantee asio::query(S, execution::bulk_guarantee), and - * the result of that function does not model sender, the - * program is ill-formed with no diagnostic required. - * - * @li Otherwise, bulk_execute(S, F, N), if that expression is valid, - * with overload resolution performed in a context that includes the - * declaration void bulk_execute(); and that does not include a - * declaration of execution::bulk_execute. If the function selected - * by overload resolution does not execute N invocations of the - * function object F on the executor S in bulk with forward - * progress guarantee asio::query(E, - * execution::bulk_guarantee), and the result of that function does not - * model sender, the program is ill-formed with no diagnostic - * required. - * - * @li Otherwise, if the types F and - * executor_index_t> model invocable and - * if asio::query(S, execution::bulk_guarantee) equals - * execution::bulk_guarantee.unsequenced, then - * - * - Evaluates DECAY_COPY(std::forward(F)) on the - * calling thread to create a function object cf. [Note: - * Additional copies of cf may subsequently be created. --end - * note.] - * - * - For each value of i in N, cf(i) (or copy of - * cf)) will be invoked at most once by an execution agent that is - * unique for each value of i. - * - * - May block pending completion of one or more invocations of cf. - * - * - Synchronizes with (C++Std [intro.multithread]) the invocations of - * cf. - * - * @li Otherwise, execution::bulk_execute(S, F, N) is ill-formed. - */ -inline constexpr unspecified bulk_execute = unspecified; - -/// A type trait that determines whether a @c bulk_execute expression is -/// well-formed. -/** - * Class template @c can_bulk_execute is a trait that is derived from @c - * true_type if the expression execution::bulk_execute(std::declval(), - * std::declval(), std::declval) is well formed; otherwise @c - * false_type. - */ -template -struct can_bulk_execute : - integral_constant -{ -}; - -} // namespace execution -} // namespace asio - -#else // defined(GENERATING_DOCUMENTATION) - -namespace asio_execution_bulk_execute_fn { - -using asio::declval; -using asio::enable_if; -using asio::execution::bulk_guarantee_t; -using asio::execution::detail::bulk_sender; -using asio::execution::executor_index; -using asio::execution::is_sender; -using asio::is_convertible; -using asio::is_same; -using asio::remove_cvref; -using asio::result_of; -using asio::traits::bulk_execute_free; -using asio::traits::bulk_execute_member; -using asio::traits::static_require; - -void bulk_execute(); - -enum overload_type -{ - call_member, - call_free, - adapter, - ill_formed -}; - -template -struct call_traits -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -template -struct call_traits::value - && - bulk_execute_member::is_valid - && - is_sender< - typename bulk_execute_member::result_type - >::value - ) - >::type> : - bulk_execute_member -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); -}; - -template -struct call_traits::value - && - !bulk_execute_member::is_valid - && - bulk_execute_free::is_valid - && - is_sender< - typename bulk_execute_free::result_type - >::value - ) - >::type> : - bulk_execute_free -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); -}; - -template -struct call_traits::value - && - !bulk_execute_member::is_valid - && - !bulk_execute_free::is_valid - && - is_sender::value - && - is_same< - typename result_of< - F(typename executor_index::type>::type) - >::type, - typename result_of< - F(typename executor_index::type>::type) - >::type - >::value - && - static_require::is_valid - ) - >::type> -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef bulk_sender result_type; -}; - -struct impl -{ -#if defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S&& s, F&& f, N&& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return ASIO_MOVE_CAST(S)(s).bulk_execute( - ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S&& s, F&& f, N&& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return bulk_execute(ASIO_MOVE_CAST(S)(s), - ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(S&& s, F&& f, N&& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type( - ASIO_MOVE_CAST(S)(s), ASIO_MOVE_CAST(F)(f), - ASIO_MOVE_CAST(N)(n)); - } -#else // defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.bulk_execute(ASIO_MOVE_CAST(F)(f), - ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(const S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.bulk_execute(ASIO_MOVE_CAST(F)(f), - ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return bulk_execute(s, ASIO_MOVE_CAST(F)(f), - ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(const S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return bulk_execute(s, ASIO_MOVE_CAST(F)(f), - ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type( - s, ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(const S& s, const F& f, const N& n) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type( - s, ASIO_MOVE_CAST(F)(f), ASIO_MOVE_CAST(N)(n)); - } -#endif // defined(ASIO_HAS_MOVE) -}; - -template -struct static_instance -{ - static const T instance; -}; - -template -const T static_instance::instance = {}; - -} // namespace asio_execution_bulk_execute_fn -namespace asio { -namespace execution { -namespace { - -static ASIO_CONSTEXPR - const asio_execution_bulk_execute_fn::impl& bulk_execute = - asio_execution_bulk_execute_fn::static_instance<>::instance; - -} // namespace - -template -struct can_bulk_execute : - integral_constant::overload != - asio_execution_bulk_execute_fn::ill_formed> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool can_bulk_execute_v = can_bulk_execute::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_nothrow_bulk_execute : - integral_constant::is_noexcept> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool is_nothrow_bulk_execute_v - = is_nothrow_bulk_execute::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct bulk_execute_result -{ - typedef typename asio_execution_bulk_execute_fn::call_traits< - S, void(F, N)>::result_type type; -}; - -} // namespace execution -} // namespace asio - -#endif // defined(GENERATING_DOCUMENTATION) - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_BULK_EXECUTE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_guarantee.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_guarantee.hpp deleted file mode 100644 index 4a099f58..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/bulk_guarantee.hpp +++ /dev/null @@ -1,1018 +0,0 @@ -// -// execution/bulk_guarantee.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_BULK_GUARANTEE_HPP -#define ASIO_EXECUTION_BULK_GUARANTEE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/query.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to communicate the forward progress and ordering guarantees of -/// execution agents associated with the bulk execution. -struct bulk_guarantee_t -{ - /// The bulk_guarantee_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level bulk_guarantee_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level bulk_guarantee_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef bulk_guarantee_t polymorphic_query_result_type; - - /// A sub-property that indicates that execution agents within the same bulk - /// execution may be parallelised and vectorised. - struct unsequenced_t - { - /// The bulk_guarantee_t::unsequenced_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The bulk_guarantee_t::unsequenced_t property can be required. - static constexpr bool is_requirable = true; - - /// The bulk_guarantee_t::unsequenced_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef bulk_guarantee_t polymorphic_query_result_type; - - /// Default constructor. - constexpr unsequenced_t(); - - /// Get the value associated with a property object. - /** - * @returns unsequenced_t(); - */ - static constexpr bulk_guarantee_t value(); - }; - - /// A sub-property that indicates that execution agents within the same bulk - /// execution may not be parallelised and vectorised. - struct sequenced_t - { - /// The bulk_guarantee_t::sequenced_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The bulk_guarantee_t::sequenced_t property can be required. - static constexpr bool is_requirable = true; - - /// The bulk_guarantee_t::sequenced_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef bulk_guarantee_t polymorphic_query_result_type; - - /// Default constructor. - constexpr sequenced_t(); - - /// Get the value associated with a property object. - /** - * @returns sequenced_t(); - */ - static constexpr bulk_guarantee_t value(); - }; - - /// A sub-property that indicates that execution agents within the same bulk - /// execution may be parallelised. - struct parallel_t - { - /// The bulk_guarantee_t::parallel_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The bulk_guarantee_t::parallel_t property can be required. - static constexpr bool is_requirable = true; - - /// The bulk_guarantee_t::parallel_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef bulk_guarantee_t polymorphic_query_result_type; - - /// Default constructor. - constexpr parallel_t(); - - /// Get the value associated with a property object. - /** - * @returns parallel_t(); - */ - static constexpr bulk_guarantee_t value(); - }; - - /// A special value used for accessing the bulk_guarantee_t::unsequenced_t - /// property. - static constexpr unsequenced_t unsequenced; - - /// A special value used for accessing the bulk_guarantee_t::sequenced_t - /// property. - static constexpr sequenced_t sequenced; - - /// A special value used for accessing the bulk_guarantee_t::parallel_t - /// property. - static constexpr parallel_t parallel; - - /// Default constructor. - constexpr bulk_guarantee_t(); - - /// Construct from a sub-property value. - constexpr bulk_guarantee_t(unsequenced_t); - - /// Construct from a sub-property value. - constexpr bulk_guarantee_t(sequenced_t); - - /// Construct from a sub-property value. - constexpr bulk_guarantee_t(parallel_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const bulk_guarantee_t& a, const bulk_guarantee_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const bulk_guarantee_t& a, const bulk_guarantee_t& b) noexcept; -}; - -/// A special value used for accessing the bulk_guarantee_t property. -constexpr bulk_guarantee_t bulk_guarantee; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace bulk_guarantee { - -template struct unsequenced_t; -template struct sequenced_t; -template struct parallel_t; - -} // namespace bulk_guarantee - -template -struct bulk_guarantee_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef bulk_guarantee_t polymorphic_query_result_type; - - typedef detail::bulk_guarantee::unsequenced_t unsequenced_t; - typedef detail::bulk_guarantee::sequenced_t sequenced_t; - typedef detail::bulk_guarantee::parallel_t parallel_t; - - ASIO_CONSTEXPR bulk_guarantee_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR bulk_guarantee_t(unsequenced_t) - : value_(0) - { - } - - ASIO_CONSTEXPR bulk_guarantee_t(sequenced_t) - : value_(1) - { - } - - ASIO_CONSTEXPR bulk_guarantee_t(parallel_t) - : value_(2) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, bulk_guarantee_t>::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = bulk_guarantee_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const bulk_guarantee_t& a, const bulk_guarantee_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const bulk_guarantee_t& a, const bulk_guarantee_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_bulk_guarantee_t - { - ASIO_CONSTEXPR convertible_from_bulk_guarantee_t(bulk_guarantee_t) {} - }; - - template - friend ASIO_CONSTEXPR bulk_guarantee_t query( - const Executor& ex, convertible_from_bulk_guarantee_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::unsequenced_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, unsequenced_t()); - } - - template - friend ASIO_CONSTEXPR bulk_guarantee_t query( - const Executor& ex, convertible_from_bulk_guarantee_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::sequenced_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, sequenced_t()); - } - - template - friend ASIO_CONSTEXPR bulk_guarantee_t query( - const Executor& ex, convertible_from_bulk_guarantee_t, - typename enable_if< - !can_query::value - && !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::parallel_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, parallel_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(unsequenced_t, unsequenced); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(sequenced_t, sequenced); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(parallel_t, parallel); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const bulk_guarantee_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T bulk_guarantee_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const bulk_guarantee_t bulk_guarantee_t::instance; -#endif - -template -const typename bulk_guarantee_t::unsequenced_t -bulk_guarantee_t::unsequenced; - -template -const typename bulk_guarantee_t::sequenced_t -bulk_guarantee_t::sequenced; - -template -const typename bulk_guarantee_t::parallel_t -bulk_guarantee_t::parallel; - -namespace bulk_guarantee { - -template -struct unsequenced_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef bulk_guarantee_t polymorphic_query_result_type; - - ASIO_CONSTEXPR unsequenced_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR unsequenced_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return unsequenced_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = unsequenced_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR bulk_guarantee_t value() - { - return unsequenced_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const unsequenced_t&, const unsequenced_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const unsequenced_t&, const unsequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const unsequenced_t&, const sequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const unsequenced_t&, const sequenced_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const unsequenced_t&, const parallel_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const unsequenced_t&, const parallel_t&) - { - return true; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T unsequenced_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct sequenced_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef bulk_guarantee_t polymorphic_query_result_type; - - ASIO_CONSTEXPR sequenced_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = sequenced_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR bulk_guarantee_t value() - { - return sequenced_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const sequenced_t&, const sequenced_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const sequenced_t&, const sequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const sequenced_t&, const unsequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const sequenced_t&, const unsequenced_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const sequenced_t&, const parallel_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const sequenced_t&, const parallel_t&) - { - return true; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T sequenced_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct parallel_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef bulk_guarantee_t polymorphic_query_result_type; - - ASIO_CONSTEXPR parallel_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = parallel_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR bulk_guarantee_t value() - { - return parallel_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const parallel_t&, const parallel_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const parallel_t&, const parallel_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator==( - const parallel_t&, const unsequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const parallel_t&, const unsequenced_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator==( - const parallel_t&, const sequenced_t&) - { - return false; - } - - friend ASIO_CONSTEXPR bool operator!=( - const parallel_t&, const sequenced_t&) - { - return true; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T parallel_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace bulk_guarantee -} // namespace detail - -typedef detail::bulk_guarantee_t<> bulk_guarantee_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr bulk_guarantee_t bulk_guarantee; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const bulk_guarantee_t& - bulk_guarantee = bulk_guarantee_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::bulk_guarantee_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::bulk_guarantee_t result_type; -}; - -template -struct query_free_default::value - && !can_query::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::bulk_guarantee_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::bulk_guarantee_t::unsequenced_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::bulk_guarantee_t::unsequenced_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::bulk_guarantee_t::sequenced_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::bulk_guarantee_t::parallel_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_BULK_GUARANTEE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/connect.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/connect.hpp deleted file mode 100644 index 47dd58b6..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/connect.hpp +++ /dev/null @@ -1,486 +0,0 @@ -// -// execution/connect.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_CONNECT_HPP -#define ASIO_EXECUTION_CONNECT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/detail/as_invocable.hpp" -#include "asio/execution/detail/as_operation.hpp" -#include "asio/execution/detail/as_receiver.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/operation_state.hpp" -#include "asio/execution/receiver.hpp" -#include "asio/execution/sender.hpp" -#include "asio/traits/connect_member.hpp" -#include "asio/traits/connect_free.hpp" - -#include "asio/detail/push_options.hpp" - -#if defined(GENERATING_DOCUMENTATION) - -namespace asio { -namespace execution { - -/// A customisation point that connects a sender to a receiver. -/** - * The name execution::connect denotes a customisation point object. - * For some subexpressions s and r, let S be a type - * such that decltype((s)) is S and let R be a type - * such that decltype((r)) is R. The expression - * execution::connect(s, r) is expression-equivalent to: - * - * @li s.connect(r), if that expression is valid, if its type - * satisfies operation_state, and if S satisfies - * sender. - * - * @li Otherwise, connect(s, r), if that expression is valid, if its - * type satisfies operation_state, and if S satisfies - * sender, with overload resolution performed in a context that - * includes the declaration void connect(); and that does not include - * a declaration of execution::connect. - * - * @li Otherwise, as_operation{s, r}, if r is not an instance - * of as_receiver for some type F, and if - * receiver_of && executor_of, - * as_invocable, S>> is true, where - * as_operation is an implementation-defined class equivalent to - * @code template - * struct as_operation - * { - * remove_cvref_t e_; - * remove_cvref_t r_; - * void start() noexcept try { - * execution::execute(std::move(e_), - * as_invocable, S>{r_}); - * } catch(...) { - * execution::set_error(std::move(r_), current_exception()); - * } - * }; @endcode - * and as_invocable is a class template equivalent to the following: - * @code template - * struct as_invocable - * { - * R* r_; - * explicit as_invocable(R& r) noexcept - * : r_(std::addressof(r)) {} - * as_invocable(as_invocable && other) noexcept - * : r_(std::exchange(other.r_, nullptr)) {} - * ~as_invocable() { - * if(r_) - * execution::set_done(std::move(*r_)); - * } - * void operator()() & noexcept try { - * execution::set_value(std::move(*r_)); - * r_ = nullptr; - * } catch(...) { - * execution::set_error(std::move(*r_), current_exception()); - * r_ = nullptr; - * } - * }; - * @endcode - * - * @li Otherwise, execution::connect(s, r) is ill-formed. - */ -inline constexpr unspecified connect = unspecified; - -/// A type trait that determines whether a @c connect expression is -/// well-formed. -/** - * Class template @c can_connect is a trait that is derived from - * @c true_type if the expression execution::connect(std::declval(), - * std::declval()) is well formed; otherwise @c false_type. - */ -template -struct can_connect : - integral_constant -{ -}; - -/// A type trait to determine the result of a @c connect expression. -template -struct connect_result -{ - /// The type of the connect expression. - /** - * The type of the expression execution::connect(std::declval(), - * std::declval()). - */ - typedef automatically_determined type; -}; - -/// A type alis to determine the result of a @c connect expression. -template -using connect_result_t = typename connect_result::type; - -} // namespace execution -} // namespace asio - -#else // defined(GENERATING_DOCUMENTATION) - -namespace asio_execution_connect_fn { - -using asio::conditional; -using asio::declval; -using asio::enable_if; -using asio::execution::detail::as_invocable; -using asio::execution::detail::as_operation; -using asio::execution::detail::is_as_receiver; -using asio::execution::is_executor_of; -using asio::execution::is_operation_state; -using asio::execution::is_receiver; -using asio::execution::is_sender; -using asio::false_type; -using asio::remove_cvref; -using asio::traits::connect_free; -using asio::traits::connect_member; - -void connect(); - -enum overload_type -{ - call_member, - call_free, - adapter, - ill_formed -}; - -template -struct call_traits -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -template -struct call_traits::is_valid - && - is_operation_state::result_type>::value - && - is_sender::type>::value - ) - >::type> : - connect_member -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); -}; - -template -struct call_traits::is_valid - && - connect_free::is_valid - && - is_operation_state::result_type>::value - && - is_sender::type>::value - ) - >::type> : - connect_free -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); -}; - -template -struct call_traits::is_valid - && - !connect_free::is_valid - && - is_receiver::value - && - conditional< - !is_as_receiver< - typename remove_cvref::type - >::value, - is_executor_of< - typename remove_cvref::type, - as_invocable::type, S> - >, - false_type - >::type::value - ) - >::type> -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef as_operation result_type; -}; - -struct impl -{ -#if defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S&& s, R&& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return ASIO_MOVE_CAST(S)(s).connect(ASIO_MOVE_CAST(R)(r)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S&& s, R&& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return connect(ASIO_MOVE_CAST(S)(s), ASIO_MOVE_CAST(R)(r)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(S&& s, R&& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type( - ASIO_MOVE_CAST(S)(s), ASIO_MOVE_CAST(R)(r)); - } -#else // defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.connect(r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(const S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.connect(r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return connect(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(const S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return connect(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(const S& s, R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.connect(r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(const S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.connect(r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return connect(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(const S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return connect(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type(s, r); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()(const S& s, const R& r) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return typename call_traits::result_type(s, r); - } -#endif // defined(ASIO_HAS_MOVE) -}; - -template -struct static_instance -{ - static const T instance; -}; - -template -const T static_instance::instance = {}; - -} // namespace asio_execution_connect_fn -namespace asio { -namespace execution { -namespace { - -static ASIO_CONSTEXPR const asio_execution_connect_fn::impl& - connect = asio_execution_connect_fn::static_instance<>::instance; - -} // namespace - -template -struct can_connect : - integral_constant::overload != - asio_execution_connect_fn::ill_formed> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool can_connect_v = can_connect::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_nothrow_connect : - integral_constant::is_noexcept> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool is_nothrow_connect_v - = is_nothrow_connect::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct connect_result -{ - typedef typename asio_execution_connect_fn::call_traits< - S, void(R)>::result_type type; -}; - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using connect_result_t = typename connect_result::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -} // namespace execution -} // namespace asio - -#endif // defined(GENERATING_DOCUMENTATION) - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_CONNECT_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context.hpp deleted file mode 100644 index 4a535d6e..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context.hpp +++ /dev/null @@ -1,185 +0,0 @@ -// -// execution/context.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_CONTEXT2_HPP -#define ASIO_EXECUTION_CONTEXT2_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" - -#if defined(ASIO_HAS_STD_ANY) -# include -#endif // defined(ASIO_HAS_STD_ANY) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property that is used to obtain the execution context that is associated -/// with an executor. -struct context_t -{ - /// The context_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The context_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The context_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef std::any polymorphic_query_result_type; -}; - -/// A special value used for accessing the context_t property. -constexpr context_t context; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { - -template -struct context_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - -#if defined(ASIO_HAS_STD_ANY) - typedef std::any polymorphic_query_result_type; -#endif // defined(ASIO_HAS_STD_ANY) - - ASIO_CONSTEXPR context_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = context_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) - static const context_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T context_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const context_t context_t::instance; -#endif - -} // namespace detail - -typedef detail::context_t<> context_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr context_t context; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const context_t& context = context_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_CONTEXT2_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context_as.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context_as.hpp deleted file mode 100644 index 8acc945a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/context_as.hpp +++ /dev/null @@ -1,201 +0,0 @@ -// -// execution/context_as.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_CONTEXT_AS_HPP -#define ASIO_EXECUTION_CONTEXT_AS_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/context.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/query.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property that is used to obtain the execution context that is associated -/// with an executor. -template -struct context_as_t -{ - /// The context_as_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The context_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The context_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef T polymorphic_query_result_type; -}; - -/// A special value used for accessing the context_as_t property. -template -constexpr context_as_t context_as; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { - -template -struct context_as_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - - typedef T polymorphic_query_result_type; - - ASIO_CONSTEXPR context_as_t() - { - } - - ASIO_CONSTEXPR context_as_t(context_t) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const U static_query_v - = context_as_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - template - friend ASIO_CONSTEXPR U query( - const Executor& ex, const context_as_t&, - typename enable_if< - is_same::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, context); - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const U context_as_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if (defined(ASIO_HAS_VARIABLE_TEMPLATES) \ - && defined(ASIO_HAS_CONSTEXPR)) \ - || defined(GENERATING_DOCUMENTATION) -template -constexpr context_as_t context_as{}; -#endif // (defined(ASIO_HAS_VARIABLE_TEMPLATES) - // && defined(ASIO_HAS_CONSTEXPR)) - // || defined(GENERATING_DOCUMENTATION) - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property > - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query, - typename enable_if< - static_query::is_valid - >::type> : static_query -{ -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free, - typename enable_if< - can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef U result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_CONTEXT_AS_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_invocable.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_invocable.hpp deleted file mode 100644 index d91c700b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_invocable.hpp +++ /dev/null @@ -1,152 +0,0 @@ -// -// execution/detail/as_invocable.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_AS_INVOCABLE_HPP -#define ASIO_EXECUTION_DETAIL_AS_INVOCABLE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/atomic_count.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/receiver_invocation_error.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -#if defined(ASIO_HAS_MOVE) - -template -struct as_invocable -{ - Receiver* receiver_; - - explicit as_invocable(Receiver& r) ASIO_NOEXCEPT - : receiver_(asio::detail::addressof(r)) - { - } - - as_invocable(as_invocable&& other) ASIO_NOEXCEPT - : receiver_(other.receiver_) - { - other.receiver_ = 0; - } - - ~as_invocable() - { - if (receiver_) - execution::set_done(ASIO_MOVE_OR_LVALUE(Receiver)(*receiver_)); - } - - void operator()() ASIO_LVALUE_REF_QUAL ASIO_NOEXCEPT - { -#if !defined(ASIO_NO_EXCEPTIONS) - try - { -#endif // !defined(ASIO_NO_EXCEPTIONS) - execution::set_value(ASIO_MOVE_CAST(Receiver)(*receiver_)); - receiver_ = 0; -#if !defined(ASIO_NO_EXCEPTIONS) - } - catch (...) - { -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) - execution::set_error(ASIO_MOVE_CAST(Receiver)(*receiver_), - std::make_exception_ptr(receiver_invocation_error())); - receiver_ = 0; -#else // defined(ASIO_HAS_STD_EXCEPTION_PTR) - std::terminate(); -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - } -#endif // !defined(ASIO_NO_EXCEPTIONS) - } -}; - -#else // defined(ASIO_HAS_MOVE) - -template -struct as_invocable -{ - Receiver* receiver_; - asio::detail::shared_ptr ref_count_; - - explicit as_invocable(Receiver& r, - const asio::detail::shared_ptr< - asio::detail::atomic_count>& c) ASIO_NOEXCEPT - : receiver_(asio::detail::addressof(r)), - ref_count_(c) - { - } - - as_invocable(const as_invocable& other) ASIO_NOEXCEPT - : receiver_(other.receiver_), - ref_count_(other.ref_count_) - { - ++(*ref_count_); - } - - ~as_invocable() - { - if (--(*ref_count_) == 0) - execution::set_done(*receiver_); - } - - void operator()() ASIO_LVALUE_REF_QUAL ASIO_NOEXCEPT - { -#if !defined(ASIO_NO_EXCEPTIONS) - try - { -#endif // !defined(ASIO_NO_EXCEPTIONS) - execution::set_value(*receiver_); - ++(*ref_count_); - } -#if !defined(ASIO_NO_EXCEPTIONS) - catch (...) - { -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) - execution::set_error(*receiver_, - std::make_exception_ptr(receiver_invocation_error())); - ++(*ref_count_); -#else // defined(ASIO_HAS_STD_EXCEPTION_PTR) - std::terminate(); -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - } -#endif // !defined(ASIO_NO_EXCEPTIONS) - } -}; - -#endif // defined(ASIO_HAS_MOVE) - -template -struct is_as_invocable : false_type -{ -}; - -template -struct is_as_invocable > : true_type -{ -}; - -} // namespace detail -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_AS_INVOCABLE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_operation.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_operation.hpp deleted file mode 100644 index fcaf5c34..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_operation.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// -// execution/detail/as_operation.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_AS_OPERATION_HPP -#define ASIO_EXECUTION_DETAIL_AS_OPERATION_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/memory.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/detail/as_invocable.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/traits/start_member.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct as_operation -{ - typename remove_cvref::type ex_; - typename remove_cvref::type receiver_; -#if !defined(ASIO_HAS_MOVE) - asio::detail::shared_ptr ref_count_; -#endif // !defined(ASIO_HAS_MOVE) - - template - explicit as_operation(ASIO_MOVE_ARG(E) e, ASIO_MOVE_ARG(R) r) - : ex_(ASIO_MOVE_CAST(E)(e)), - receiver_(ASIO_MOVE_CAST(R)(r)) -#if !defined(ASIO_HAS_MOVE) - , ref_count_(new asio::detail::atomic_count(1)) -#endif // !defined(ASIO_HAS_MOVE) - { - } - - void start() ASIO_NOEXCEPT - { -#if !defined(ASIO_NO_EXCEPTIONS) - try - { -#endif // !defined(ASIO_NO_EXCEPTIONS) - execution::execute( - ASIO_MOVE_CAST(typename remove_cvref::type)(ex_), - as_invocable::type, - Executor>(receiver_ -#if !defined(ASIO_HAS_MOVE) - , ref_count_ -#endif // !defined(ASIO_HAS_MOVE) - )); -#if !defined(ASIO_NO_EXCEPTIONS) - } - catch (...) - { -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) - execution::set_error( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)( - receiver_), - std::current_exception()); -#else // defined(ASIO_HAS_STD_EXCEPTION_PTR) - std::terminate(); -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - } -#endif // !defined(ASIO_NO_EXCEPTIONS) - } -}; - -} // namespace detail -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT) - -template -struct start_member< - asio::execution::detail::as_operation > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT) - -} // namespace traits -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_AS_OPERATION_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_receiver.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_receiver.hpp deleted file mode 100644 index e4d74ed9..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/as_receiver.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// -// execution/detail/as_receiver.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_AS_RECEIVER_HPP -#define ASIO_EXECUTION_DETAIL_AS_RECEIVER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/traits/set_done_member.hpp" -#include "asio/traits/set_error_member.hpp" -#include "asio/traits/set_value_member.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct as_receiver -{ - Function f_; - - template - explicit as_receiver(ASIO_MOVE_ARG(F) f, int) - : f_(ASIO_MOVE_CAST(F)(f)) - { - } - -#if defined(ASIO_MSVC) && defined(ASIO_HAS_MOVE) - as_receiver(as_receiver&& other) - : f_(ASIO_MOVE_CAST(Function)(other.f_)) - { - } -#endif // defined(ASIO_MSVC) && defined(ASIO_HAS_MOVE) - - void set_value() - ASIO_NOEXCEPT_IF(noexcept(declval()())) - { - f_(); - } - - template - void set_error(E) ASIO_NOEXCEPT - { - std::terminate(); - } - - void set_done() ASIO_NOEXCEPT - { - } -}; - -template -struct is_as_receiver : false_type -{ -}; - -template -struct is_as_receiver > : true_type -{ -}; - -} // namespace detail -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -template -struct set_value_member< - asio::execution::detail::as_receiver, void()> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); -#if defined(ASIO_HAS_NOEXCEPT) - ASIO_STATIC_CONSTEXPR(bool, - is_noexcept = noexcept(declval()())); -#else // defined(ASIO_HAS_NOEXCEPT) - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); -#endif // defined(ASIO_HAS_NOEXCEPT) - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -template -struct set_error_member< - asio::execution::detail::as_receiver, E> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -template -struct set_done_member< - asio::execution::detail::as_receiver > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -} // namespace traits -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_AS_RECEIVER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/bulk_sender.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/bulk_sender.hpp deleted file mode 100644 index c1f6de4d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/bulk_sender.hpp +++ /dev/null @@ -1,261 +0,0 @@ -// -// execution/detail/bulk_sender.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_BULK_SENDER_HPP -#define ASIO_EXECUTION_DETAIL_BULK_SENDER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/connect.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/traits/connect_member.hpp" -#include "asio/traits/set_done_member.hpp" -#include "asio/traits/set_error_member.hpp" -#include "asio/traits/set_value_member.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct bulk_receiver -{ - typename remove_cvref::type receiver_; - typename decay::type f_; - typename decay::type n_; - - template - explicit bulk_receiver(ASIO_MOVE_ARG(R) r, - ASIO_MOVE_ARG(F) f, ASIO_MOVE_ARG(N) n) - : receiver_(ASIO_MOVE_CAST(R)(r)), - f_(ASIO_MOVE_CAST(F)(f)), - n_(ASIO_MOVE_CAST(N)(n)) - { - } - - void set_value() - { - for (Index i = 0; i < n_; ++i) - f_(i); - - execution::set_value( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(receiver_)); - } - - template - void set_error(ASIO_MOVE_ARG(Error) e) ASIO_NOEXCEPT - { - execution::set_error( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(receiver_), - ASIO_MOVE_CAST(Error)(e)); - } - - void set_done() ASIO_NOEXCEPT - { - execution::set_done( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(receiver_)); - } -}; - -template -struct bulk_receiver_traits -{ - typedef bulk_receiver< - Receiver, Function, Number, - typename execution::executor_index< - typename remove_cvref::type - >::type - > type; - -#if defined(ASIO_HAS_MOVE) - typedef type arg_type; -#else // defined(ASIO_HAS_MOVE) - typedef const type& arg_type; -#endif // defined(ASIO_HAS_MOVE) -}; - -template -struct bulk_sender : sender_base -{ - typename remove_cvref::type sender_; - typename decay::type f_; - typename decay::type n_; - - template - explicit bulk_sender(ASIO_MOVE_ARG(S) s, - ASIO_MOVE_ARG(F) f, ASIO_MOVE_ARG(N) n) - : sender_(ASIO_MOVE_CAST(S)(s)), - f_(ASIO_MOVE_CAST(F)(f)), - n_(ASIO_MOVE_CAST(N)(n)) - { - } - - template - typename connect_result< - ASIO_MOVE_OR_LVALUE_TYPE(typename remove_cvref::type), - typename bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::type connect(ASIO_MOVE_ARG(Receiver) r, - typename enable_if< - can_connect< - typename remove_cvref::type, - typename bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::value - >::type* = 0) ASIO_RVALUE_REF_QUAL ASIO_NOEXCEPT - { - return execution::connect( - ASIO_MOVE_OR_LVALUE(typename remove_cvref::type)(sender_), - typename bulk_receiver_traits::type( - ASIO_MOVE_CAST(Receiver)(r), - ASIO_MOVE_CAST(typename decay::type)(f_), - ASIO_MOVE_CAST(typename decay::type)(n_))); - } - - template - typename connect_result< - const typename remove_cvref::type&, - typename bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::type connect(ASIO_MOVE_ARG(Receiver) r, - typename enable_if< - can_connect< - const typename remove_cvref::type&, - typename bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::value - >::type* = 0) const ASIO_LVALUE_REF_QUAL ASIO_NOEXCEPT - { - return execution::connect(sender_, - typename bulk_receiver_traits::type( - ASIO_MOVE_CAST(Receiver)(r), f_, n_)); - } -}; - -} // namespace detail -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -template -struct set_value_member< - execution::detail::bulk_receiver, - void()> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -template -struct set_error_member< - execution::detail::bulk_receiver, - Error> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -template -struct set_done_member< - execution::detail::bulk_receiver > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT) - -template -struct connect_member< - execution::detail::bulk_sender, - Receiver, - typename enable_if< - execution::can_connect< - ASIO_MOVE_OR_LVALUE_TYPE(typename remove_cvref::type), - typename execution::detail::bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef typename execution::connect_result< - ASIO_MOVE_OR_LVALUE_TYPE(typename remove_cvref::type), - typename execution::detail::bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::type result_type; -}; - -template -struct connect_member< - const execution::detail::bulk_sender, - Receiver, - typename enable_if< - execution::can_connect< - const typename remove_cvref::type&, - typename execution::detail::bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef typename execution::connect_result< - const typename remove_cvref::type&, - typename execution::detail::bulk_receiver_traits< - Sender, Receiver, Function, Number - >::arg_type - >::type result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT) - -} // namespace traits -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_BULK_SENDER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/submit_receiver.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/submit_receiver.hpp deleted file mode 100644 index 5f78356a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/submit_receiver.hpp +++ /dev/null @@ -1,233 +0,0 @@ -// -// execution/detail/submit_receiver.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_SUBMIT_RECEIVER_HPP -#define ASIO_EXECUTION_DETAIL_SUBMIT_RECEIVER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/variadic_templates.hpp" -#include "asio/execution/connect.hpp" -#include "asio/execution/receiver.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" -#include "asio/traits/set_done_member.hpp" -#include "asio/traits/set_error_member.hpp" -#include "asio/traits/set_value_member.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct submit_receiver; - -template -struct submit_receiver_wrapper -{ - submit_receiver* p_; - - explicit submit_receiver_wrapper(submit_receiver* p) - : p_(p) - { - } - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - typename enable_if::value>::type - set_value(ASIO_MOVE_ARG(Args)... args) ASIO_RVALUE_REF_QUAL - ASIO_NOEXCEPT_IF((is_nothrow_receiver_of::value)) - { - execution::set_value( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(p_->r_), - ASIO_MOVE_CAST(Args)(args)...); - delete p_; - } - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - - void set_value() ASIO_RVALUE_REF_QUAL - ASIO_NOEXCEPT_IF((is_nothrow_receiver_of::value)) - { - execution::set_value( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(p_->r_)); - delete p_; - } - -#define ASIO_PRIVATE_SUBMIT_RECEIVER_SET_VALUE_DEF(n) \ - template \ - typename enable_if::value>::type \ - set_value(ASIO_VARIADIC_MOVE_PARAMS(n)) ASIO_RVALUE_REF_QUAL \ - ASIO_NOEXCEPT_IF((is_nothrow_receiver_of< \ - Receiver, ASIO_VARIADIC_TARGS(n)>::value)) \ - { \ - execution::set_value( \ - ASIO_MOVE_OR_LVALUE( \ - typename remove_cvref::type)(p_->r_), \ - ASIO_VARIADIC_MOVE_ARGS(n)); \ - delete p_; \ - } \ - /**/ -ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_SUBMIT_RECEIVER_SET_VALUE_DEF) -#undef ASIO_PRIVATE_SUBMIT_RECEIVER_SET_VALUE_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - - template - void set_error(ASIO_MOVE_ARG(E) e) - ASIO_RVALUE_REF_QUAL ASIO_NOEXCEPT - { - execution::set_error( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(p_->r_), - ASIO_MOVE_CAST(E)(e)); - delete p_; - } - - void set_done() ASIO_RVALUE_REF_QUAL ASIO_NOEXCEPT - { - execution::set_done( - ASIO_MOVE_OR_LVALUE( - typename remove_cvref::type)(p_->r_)); - delete p_; - } -}; - -template -struct submit_receiver -{ - typename remove_cvref::type r_; -#if defined(ASIO_HAS_MOVE) - typename connect_result >::type state_; -#else // defined(ASIO_HAS_MOVE) - typename connect_result& >::type state_; -#endif // defined(ASIO_HAS_MOVE) - -#if defined(ASIO_HAS_MOVE) - template - explicit submit_receiver(ASIO_MOVE_ARG(S) s, ASIO_MOVE_ARG(R) r) - : r_(ASIO_MOVE_CAST(R)(r)), - state_(execution::connect(ASIO_MOVE_CAST(S)(s), - submit_receiver_wrapper(this))) - { - } -#else // defined(ASIO_HAS_MOVE) - explicit submit_receiver(Sender s, Receiver r) - : r_(r), - state_(execution::connect(s, - submit_receiver_wrapper(this))) - { - } -#endif // defined(ASIO_HAS_MOVE) -}; - -} // namespace detail -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct set_value_member< - asio::execution::detail::submit_receiver_wrapper< - Sender, Receiver>, - void(Args...)> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (asio::execution::is_nothrow_receiver_of::value)); - typedef void result_type; -}; - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct set_value_member< - asio::execution::detail::submit_receiver_wrapper< - Sender, Receiver>, - void()> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - asio::execution::is_nothrow_receiver_of::value); - typedef void result_type; -}; - -#define ASIO_PRIVATE_SUBMIT_RECEIVER_TRAIT_DEF(n) \ - template \ - struct set_value_member< \ - asio::execution::detail::submit_receiver_wrapper< \ - Sender, Receiver>, \ - void(ASIO_VARIADIC_TARGS(n))> \ - { \ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); \ - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = \ - (asio::execution::is_nothrow_receiver_of::value)); \ - typedef void result_type; \ - }; \ - /**/ -ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_SUBMIT_RECEIVER_TRAIT_DEF) -#undef ASIO_PRIVATE_SUBMIT_RECEIVER_TRAIT_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - -#endif // !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -template -struct set_error_member< - asio::execution::detail::submit_receiver_wrapper< - Sender, Receiver>, E> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -template -struct set_done_member< - asio::execution::detail::submit_receiver_wrapper< - Sender, Receiver> > -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -} // namespace traits -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_SUBMIT_RECEIVER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/void_receiver.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/void_receiver.hpp deleted file mode 100644 index 87d45b8b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/detail/void_receiver.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// execution/detail/void_receiver.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_DETAIL_VOID_RECEIVER_HPP -#define ASIO_EXECUTION_DETAIL_VOID_RECEIVER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/traits/set_done_member.hpp" -#include "asio/traits/set_error_member.hpp" -#include "asio/traits/set_value_member.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -struct void_receiver -{ - void set_value() ASIO_NOEXCEPT - { - } - - template - void set_error(ASIO_MOVE_ARG(E)) ASIO_NOEXCEPT - { - } - - void set_done() ASIO_NOEXCEPT - { - } -}; - -} // namespace detail -} // namespace execution -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -template <> -struct set_value_member -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -template -struct set_error_member -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -template <> -struct set_done_member -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - -} // namespace traits -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_DETAIL_VOID_RECEIVER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/execute.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/execute.hpp deleted file mode 100644 index 277cd18a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/execute.hpp +++ /dev/null @@ -1,264 +0,0 @@ -// -// execution/execute.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_EXECUTE_HPP -#define ASIO_EXECUTION_EXECUTE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/detail/as_invocable.hpp" -#include "asio/execution/detail/as_receiver.hpp" -#include "asio/traits/execute_member.hpp" -#include "asio/traits/execute_free.hpp" - -#include "asio/detail/push_options.hpp" - -#if defined(GENERATING_DOCUMENTATION) - -namespace asio { -namespace execution { - -/// A customisation point that executes a function on an executor. -/** - * The name execution::execute denotes a customisation point object. - * - * For some subexpressions e and f, let E be a type - * such that decltype((e)) is E and let F be a type - * such that decltype((f)) is F. The expression - * execution::execute(e, f) is ill-formed if F does not model - * invocable, or if E does not model either executor - * or sender. Otherwise, it is expression-equivalent to: - * - * @li e.execute(f), if that expression is valid. If the function - * selected does not execute the function object f on the executor - * e, the program is ill-formed with no diagnostic required. - * - * @li Otherwise, execute(e, f), if that expression is valid, with - * overload resolution performed in a context that includes the declaration - * void execute(); and that does not include a declaration of - * execution::execute. If the function selected by overload - * resolution does not execute the function object f on the executor - * e, the program is ill-formed with no diagnostic required. - */ -inline constexpr unspecified execute = unspecified; - -/// A type trait that determines whether a @c execute expression is well-formed. -/** - * Class template @c can_execute is a trait that is derived from - * @c true_type if the expression execution::execute(std::declval(), - * std::declval()) is well formed; otherwise @c false_type. - */ -template -struct can_execute : - integral_constant -{ -}; - -} // namespace execution -} // namespace asio - -#else // defined(GENERATING_DOCUMENTATION) - -namespace asio { -namespace execution { - -template -struct is_sender_to; - -namespace detail { - -template -void submit_helper(ASIO_MOVE_ARG(S) s, ASIO_MOVE_ARG(R) r); - -} // namespace detail -} // namespace execution -} // namespace asio -namespace asio_execution_execute_fn { - -using asio::conditional; -using asio::decay; -using asio::declval; -using asio::enable_if; -using asio::execution::detail::as_receiver; -using asio::execution::detail::is_as_invocable; -using asio::execution::is_sender_to; -using asio::false_type; -using asio::result_of; -using asio::traits::execute_free; -using asio::traits::execute_member; -using asio::true_type; - -void execute(); - -enum overload_type -{ - call_member, - call_free, - adapter, - ill_formed -}; - -template -struct call_traits -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); -}; - -template -struct call_traits::is_valid - ) - >::type> : - execute_member -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); -}; - -template -struct call_traits::is_valid - && - execute_free::is_valid - ) - >::type> : - execute_free -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); -}; - -template -struct call_traits::is_valid - && - !execute_free::is_valid - && - conditional::type&()>::type - >::type::value - && - conditional< - !is_as_invocable< - typename decay::type - >::value, - is_sender_to< - T, - as_receiver::type, T> - >, - false_type - >::type::value - ) - >::type> -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = adapter); - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -struct impl -{ - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()( - ASIO_MOVE_ARG(T) t, - ASIO_MOVE_ARG(F) f) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return ASIO_MOVE_CAST(T)(t).execute(ASIO_MOVE_CAST(F)(f)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()( - ASIO_MOVE_ARG(T) t, - ASIO_MOVE_ARG(F) f) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return execute(ASIO_MOVE_CAST(T)(t), ASIO_MOVE_CAST(F)(f)); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == adapter, - typename call_traits::result_type - >::type - operator()( - ASIO_MOVE_ARG(T) t, - ASIO_MOVE_ARG(F) f) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return asio::execution::detail::submit_helper( - ASIO_MOVE_CAST(T)(t), - as_receiver::type, T>( - ASIO_MOVE_CAST(F)(f), 0)); - } -}; - -template -struct static_instance -{ - static const T instance; -}; - -template -const T static_instance::instance = {}; - -} // namespace asio_execution_execute_fn -namespace asio { -namespace execution { -namespace { - -static ASIO_CONSTEXPR const asio_execution_execute_fn::impl& - execute = asio_execution_execute_fn::static_instance<>::instance; - -} // namespace - -template -struct can_execute : - integral_constant::overload != - asio_execution_execute_fn::ill_formed> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool can_execute_v = can_execute::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -} // namespace execution -} // namespace asio - -#endif // defined(GENERATING_DOCUMENTATION) - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_EXECUTE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/executor.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/executor.hpp deleted file mode 100644 index fb64ebae..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/executor.hpp +++ /dev/null @@ -1,238 +0,0 @@ -// -// execution/executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_EXECUTOR_HPP -#define ASIO_EXECUTION_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/invocable_archetype.hpp" -#include "asio/traits/equality_comparable.hpp" - -#if defined(ASIO_HAS_DEDUCED_EXECUTE_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) -# define ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT 1 -#endif // defined(ASIO_HAS_DEDUCED_EXECUTE_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - // && defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct is_executor_of_impl_base : - integral_constant::type&()>::type - >::type::value - && is_constructible::type, F>::value - && is_move_constructible::type>::value -#if defined(ASIO_HAS_NOEXCEPT) - && is_nothrow_copy_constructible::value - && is_nothrow_destructible::value -#else // defined(ASIO_HAS_NOEXCEPT) - && is_copy_constructible::value - && is_destructible::value -#endif // defined(ASIO_HAS_NOEXCEPT) - && traits::equality_comparable::is_valid - && traits::equality_comparable::is_noexcept - > -{ -}; - -template -struct is_executor_of_impl : - conditional< - can_execute::type, F>::value, - is_executor_of_impl_base, - false_type - >::type -{ -}; - -template -struct executor_shape -{ - typedef std::size_t type; -}; - -template -struct executor_shape::type> -{ - typedef typename T::shape_type type; -}; - -template -struct executor_index -{ - typedef Default type; -}; - -template -struct executor_index::type> -{ - typedef typename T::index_type type; -}; - -} // namespace detail - -/// The is_executor trait detects whether a type T satisfies the -/// execution::executor concept. -/** - * Class template @c is_executor is a UnaryTypeTrait that is derived from @c - * true_type if the type @c T meets the concept definition for an executor, - * otherwise @c false_type. - */ -template -struct is_executor : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - detail::is_executor_of_impl -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_executor_v = is_executor::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT executor = is_executor::value; - -#define ASIO_EXECUTION_EXECUTOR ::asio::execution::executor - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_EXECUTOR typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -/// The is_executor_of trait detects whether a type T satisfies the -/// execution::executor_of concept for some set of value arguments. -/** - * Class template @c is_executor_of is a type trait that is derived from @c - * true_type if the type @c T meets the concept definition for an executor - * that is invocable with a function object of type @c F, otherwise @c - * false_type. - */ -template -struct is_executor_of : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - integral_constant::value && detail::is_executor_of_impl::value - > -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_executor_of_v = - is_executor_of::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT executor_of = is_executor_of::value; - -#define ASIO_EXECUTION_EXECUTOR_OF(f) \ - ::asio::execution::executor_of - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_EXECUTOR_OF typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -/// The executor_shape trait detects the type used by an executor to represent -/// the shape of a bulk operation. -/** - * Class template @c executor_shape is a type trait with a nested type alias - * @c type whose type is @c T::shape_type if @c T::shape_type is valid, - * otherwise @c std::size_t. - */ -template -struct executor_shape -#if !defined(GENERATING_DOCUMENTATION) - : detail::executor_shape -#endif // !defined(GENERATING_DOCUMENTATION) -{ -#if defined(GENERATING_DOCUMENTATION) - /// @c T::shape_type if @c T::shape_type is valid, otherwise @c std::size_t. - typedef automatically_determined type; -#endif // defined(GENERATING_DOCUMENTATION) -}; - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using executor_shape_t = typename executor_shape::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -/// The executor_index trait detects the type used by an executor to represent -/// an index within a bulk operation. -/** - * Class template @c executor_index is a type trait with a nested type alias - * @c type whose type is @c T::index_type if @c T::index_type is valid, - * otherwise @c executor_shape_t. - */ -template -struct executor_index -#if !defined(GENERATING_DOCUMENTATION) - : detail::executor_index::type> -#endif // !defined(GENERATING_DOCUMENTATION) -{ -#if defined(GENERATING_DOCUMENTATION) - /// @c T::index_type if @c T::index_type is valid, otherwise - /// @c executor_shape_t. - typedef automatically_determined type; -#endif // defined(GENERATING_DOCUMENTATION) -}; - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using executor_index_t = typename executor_index::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_EXECUTOR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/bad_executor.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/bad_executor.ipp deleted file mode 100644 index c36012b5..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/bad_executor.ipp +++ /dev/null @@ -1,40 +0,0 @@ -// -// exection/impl/bad_executor.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP -#define ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/execution/bad_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { - -bad_executor::bad_executor() ASIO_NOEXCEPT -{ -} - -const char* bad_executor::what() const ASIO_NOEXCEPT_OR_NOTHROW -{ - return "bad executor"; -} - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp deleted file mode 100644 index 1b020071..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +++ /dev/null @@ -1,36 +0,0 @@ -// -// exection/impl/receiver_invocation_error.ipp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP -#define ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/execution/receiver_invocation_error.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { - -receiver_invocation_error::receiver_invocation_error() - : std::runtime_error("receiver invocation error") -{ -} - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/invocable_archetype.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/invocable_archetype.hpp deleted file mode 100644 index 9ccbb8ce..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/invocable_archetype.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// execution/invocable_archetype.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP -#define ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/variadic_templates.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { - -/// An archetypal function object used for determining adherence to the -/// execution::executor concept. -struct invocable_archetype -{ -#if !defined(GENERATING_DOCUMENTATION) - // Necessary for compatibility with a C++03 implementation of result_of. - typedef void result_type; -#endif // !defined(GENERATING_DOCUMENTATION) - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - - /// Function call operator. - template - void operator()(ASIO_MOVE_ARG(Args)...) - { - } - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - - void operator()() - { - } - -#define ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF(n) \ - template \ - void operator()(ASIO_VARIADIC_UNNAMED_MOVE_PARAMS(n)) \ - { \ - } \ - /**/ - ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF) -#undef ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) -}; - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP - diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/mapping.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/mapping.hpp deleted file mode 100644 index acfee66f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/mapping.hpp +++ /dev/null @@ -1,917 +0,0 @@ -// -// execution/mapping.hpp -// ~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_MAPPING_HPP -#define ASIO_EXECUTION_MAPPING_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/query.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe what guarantees an executor makes about the mapping -/// of execution agents on to threads of execution. -struct mapping_t -{ - /// The mapping_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level mapping_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level mapping_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef mapping_t polymorphic_query_result_type; - - /// A sub-property that indicates that execution agents are mapped on to - /// threads of execution. - struct thread_t - { - /// The mapping_t::thread_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The mapping_t::thread_t property can be required. - static constexpr bool is_requirable = true; - - /// The mapping_t::thread_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef mapping_t polymorphic_query_result_type; - - /// Default constructor. - constexpr thread_t(); - - /// Get the value associated with a property object. - /** - * @returns thread_t(); - */ - static constexpr mapping_t value(); - }; - - /// A sub-property that indicates that execution agents are mapped on to - /// new threads of execution. - struct new_thread_t - { - /// The mapping_t::new_thread_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The mapping_t::new_thread_t property can be required. - static constexpr bool is_requirable = true; - - /// The mapping_t::new_thread_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef mapping_t polymorphic_query_result_type; - - /// Default constructor. - constexpr new_thread_t(); - - /// Get the value associated with a property object. - /** - * @returns new_thread_t(); - */ - static constexpr mapping_t value(); - }; - - /// A sub-property that indicates that the mapping of execution agents is - /// implementation-defined. - struct other_t - { - /// The mapping_t::other_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The mapping_t::other_t property can be required. - static constexpr bool is_requirable = true; - - /// The mapping_t::other_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef mapping_t polymorphic_query_result_type; - - /// Default constructor. - constexpr other_t(); - - /// Get the value associated with a property object. - /** - * @returns other_t(); - */ - static constexpr mapping_t value(); - }; - - /// A special value used for accessing the mapping_t::thread_t property. - static constexpr thread_t thread; - - /// A special value used for accessing the mapping_t::new_thread_t property. - static constexpr new_thread_t new_thread; - - /// A special value used for accessing the mapping_t::other_t property. - static constexpr other_t other; - - /// Default constructor. - constexpr mapping_t(); - - /// Construct from a sub-property value. - constexpr mapping_t(thread_t); - - /// Construct from a sub-property value. - constexpr mapping_t(new_thread_t); - - /// Construct from a sub-property value. - constexpr mapping_t(other_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const mapping_t& a, const mapping_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const mapping_t& a, const mapping_t& b) noexcept; -}; - -/// A special value used for accessing the mapping_t property. -constexpr mapping_t mapping; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace mapping { - -template struct thread_t; -template struct new_thread_t; -template struct other_t; - -} // namespace mapping - -template -struct mapping_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef mapping_t polymorphic_query_result_type; - - typedef detail::mapping::thread_t thread_t; - typedef detail::mapping::new_thread_t new_thread_t; - typedef detail::mapping::other_t other_t; - - ASIO_CONSTEXPR mapping_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR mapping_t(thread_t) - : value_(0) - { - } - - ASIO_CONSTEXPR mapping_t(new_thread_t) - : value_(1) - { - } - - ASIO_CONSTEXPR mapping_t(other_t) - : value_(2) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = mapping_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const mapping_t& a, const mapping_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const mapping_t& a, const mapping_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_mapping_t - { - ASIO_CONSTEXPR convertible_from_mapping_t(mapping_t) {} - }; - - template - friend ASIO_CONSTEXPR mapping_t query( - const Executor& ex, convertible_from_mapping_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::thread_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, thread_t()); - } - - template - friend ASIO_CONSTEXPR mapping_t query( - const Executor& ex, convertible_from_mapping_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::new_thread_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, new_thread_t()); - } - - template - friend ASIO_CONSTEXPR mapping_t query( - const Executor& ex, convertible_from_mapping_t, - typename enable_if< - !can_query::value - && !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::other_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, other_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(thread_t, thread); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(new_thread_t, new_thread); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(other_t, other); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const mapping_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T mapping_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const mapping_t mapping_t::instance; -#endif - -template -const typename mapping_t::thread_t mapping_t::thread; - -template -const typename mapping_t::new_thread_t mapping_t::new_thread; - -template -const typename mapping_t::other_t mapping_t::other; - -namespace mapping { - -template -struct thread_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef mapping_t polymorphic_query_result_type; - - ASIO_CONSTEXPR thread_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR thread_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return thread_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = thread_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR mapping_t value() - { - return thread_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const thread_t&, const thread_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const thread_t&, const thread_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T thread_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct new_thread_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef mapping_t polymorphic_query_result_type; - - ASIO_CONSTEXPR new_thread_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = new_thread_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR mapping_t value() - { - return new_thread_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const new_thread_t&, const new_thread_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const new_thread_t&, const new_thread_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T new_thread_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct other_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef mapping_t polymorphic_query_result_type; - - ASIO_CONSTEXPR other_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = other_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR mapping_t value() - { - return other_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const other_t&, const other_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const other_t&, const other_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T other_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace mapping -} // namespace detail - -typedef detail::mapping_t<> mapping_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr mapping_t mapping; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const mapping_t& mapping = mapping_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::mapping_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::mapping_t result_type; -}; - -template -struct query_free_default::value - && !can_query::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::mapping_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::mapping_t::thread_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::mapping_t::thread_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::mapping_t::new_thread_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::mapping_t::other_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_MAPPING_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/occupancy.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/occupancy.hpp deleted file mode 100644 index 00bf867b..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/occupancy.hpp +++ /dev/null @@ -1,178 +0,0 @@ -// -// execution/occupancy.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_OCCUPANCY_HPP -#define ASIO_EXECUTION_OCCUPANCY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property that gives an estimate of the number of execution agents that -/// should occupy the associated execution context. -struct occupancy_t -{ - /// The occupancy_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The occupancy_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The occupancy_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef std::size_t polymorphic_query_result_type; -}; - -/// A special value used for accessing the occupancy_t property. -constexpr occupancy_t occupancy; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { - -template -struct occupancy_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef std::size_t polymorphic_query_result_type; - - ASIO_CONSTEXPR occupancy_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = occupancy_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) - static const occupancy_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T occupancy_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const occupancy_t occupancy_t::instance; -#endif - -} // namespace detail - -typedef detail::occupancy_t<> occupancy_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr occupancy_t occupancy; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const occupancy_t& occupancy = occupancy_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_OCCUPANCY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/operation_state.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/operation_state.hpp deleted file mode 100644 index 7eeb532a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/operation_state.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// -// execution/operation_state.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_OPERATION_STATE_HPP -#define ASIO_EXECUTION_OPERATION_STATE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/start.hpp" - -#if defined(ASIO_HAS_DEDUCED_START_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT) -# define ASIO_HAS_DEDUCED_EXECUTION_IS_OPERATION_STATE_TRAIT 1 -#endif // defined(ASIO_HAS_DEDUCED_START_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct is_operation_state_base : - integral_constant::value - && is_object::value - > -{ -}; - -} // namespace detail - -/// The is_operation_state trait detects whether a type T satisfies the -/// execution::operation_state concept. -/** - * Class template @c is_operation_state is a type trait that is derived from - * @c true_type if the type @c T meets the concept definition for an - * @c operation_state, otherwise @c false_type. - */ -template -struct is_operation_state : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - conditional< - can_start::type>::value - && is_nothrow_start::type>::value, - detail::is_operation_state_base, - false_type - >::type -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_operation_state_v = - is_operation_state::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT operation_state = is_operation_state::value; - -#define ASIO_EXECUTION_OPERATION_STATE \ - ::asio::execution::operation_state - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_OPERATION_STATE typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_OPERATION_STATE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/outstanding_work.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/outstanding_work.hpp deleted file mode 100644 index 4ccc0d28..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/outstanding_work.hpp +++ /dev/null @@ -1,721 +0,0 @@ -// -// execution/outstanding_work.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_OUTSTANDING_WORK_HPP -#define ASIO_EXECUTION_OUTSTANDING_WORK_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/query.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe whether task submission is likely in the future. -struct outstanding_work_t -{ - /// The outstanding_work_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level outstanding_work_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level outstanding_work_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef outstanding_work_t polymorphic_query_result_type; - - /// A sub-property that indicates that the executor does not represent likely - /// future submission of a function object. - struct untracked_t - { - /// The outstanding_work_t::untracked_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The outstanding_work_t::untracked_t property can be required. - static constexpr bool is_requirable = true; - - /// The outstanding_work_t::untracked_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef outstanding_work_t polymorphic_query_result_type; - - /// Default constructor. - constexpr untracked_t(); - - /// Get the value associated with a property object. - /** - * @returns untracked_t(); - */ - static constexpr outstanding_work_t value(); - }; - - /// A sub-property that indicates that the executor represents likely - /// future submission of a function object. - struct tracked_t - { - /// The outstanding_work_t::untracked_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The outstanding_work_t::tracked_t property can be required. - static constexpr bool is_requirable = true; - - /// The outstanding_work_t::tracked_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef outstanding_work_t polymorphic_query_result_type; - - /// Default constructor. - constexpr tracked_t(); - - /// Get the value associated with a property object. - /** - * @returns tracked_t(); - */ - static constexpr outstanding_work_t value(); - }; - - /// A special value used for accessing the outstanding_work_t::untracked_t - /// property. - static constexpr untracked_t untracked; - - /// A special value used for accessing the outstanding_work_t::tracked_t - /// property. - static constexpr tracked_t tracked; - - /// Default constructor. - constexpr outstanding_work_t(); - - /// Construct from a sub-property value. - constexpr outstanding_work_t(untracked_t); - - /// Construct from a sub-property value. - constexpr outstanding_work_t(tracked_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const outstanding_work_t& a, const outstanding_work_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const outstanding_work_t& a, const outstanding_work_t& b) noexcept; -}; - -/// A special value used for accessing the outstanding_work_t property. -constexpr outstanding_work_t outstanding_work; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace outstanding_work { - -template struct untracked_t; -template struct tracked_t; - -} // namespace outstanding_work - -template -struct outstanding_work_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef outstanding_work_t polymorphic_query_result_type; - - typedef detail::outstanding_work::untracked_t untracked_t; - typedef detail::outstanding_work::tracked_t tracked_t; - - ASIO_CONSTEXPR outstanding_work_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR outstanding_work_t(untracked_t) - : value_(0) - { - } - - ASIO_CONSTEXPR outstanding_work_t(tracked_t) - : value_(1) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, outstanding_work_t>::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, outstanding_work_t - >::is_noexcept)) - { - return traits::query_static_constexpr_member< - T, outstanding_work_t>::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, outstanding_work_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, outstanding_work_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = outstanding_work_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const outstanding_work_t& a, const outstanding_work_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const outstanding_work_t& a, const outstanding_work_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_outstanding_work_t - { - ASIO_CONSTEXPR convertible_from_outstanding_work_t(outstanding_work_t) - { - } - }; - - template - friend ASIO_CONSTEXPR outstanding_work_t query( - const Executor& ex, convertible_from_outstanding_work_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::untracked_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, untracked_t()); - } - - template - friend ASIO_CONSTEXPR outstanding_work_t query( - const Executor& ex, convertible_from_outstanding_work_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::tracked_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, tracked_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(untracked_t, untracked); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(tracked_t, tracked); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const outstanding_work_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T outstanding_work_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const outstanding_work_t outstanding_work_t::instance; -#endif - -template -const typename outstanding_work_t::untracked_t -outstanding_work_t::untracked; - -template -const typename outstanding_work_t::tracked_t -outstanding_work_t::tracked; - -namespace outstanding_work { - -template -struct untracked_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef outstanding_work_t polymorphic_query_result_type; - - ASIO_CONSTEXPR untracked_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR untracked_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return untracked_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = untracked_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR outstanding_work_t value() - { - return untracked_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const untracked_t&, const untracked_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const untracked_t&, const untracked_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T untracked_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct tracked_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef outstanding_work_t polymorphic_query_result_type; - - ASIO_CONSTEXPR tracked_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = tracked_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR outstanding_work_t value() - { - return tracked_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const tracked_t&, const tracked_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const tracked_t&, const tracked_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T tracked_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace outstanding_work -} // namespace detail - -typedef detail::outstanding_work_t<> outstanding_work_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr outstanding_work_t outstanding_work; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const outstanding_work_t& - outstanding_work = outstanding_work_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::outstanding_work_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::outstanding_work_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::outstanding_work_t::untracked_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::outstanding_work_t::untracked_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::outstanding_work_t::tracked_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_OUTSTANDING_WORK_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/prefer_only.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/prefer_only.hpp deleted file mode 100644 index 9823dade..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/prefer_only.hpp +++ /dev/null @@ -1,327 +0,0 @@ -// -// execution/prefer_only.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_PREFER_ONLY_HPP -#define ASIO_EXECUTION_PREFER_ONLY_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/traits/static_query.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property adapter that is used with the polymorphic executor wrapper -/// to mark properties as preferable, but not requirable. -template -struct prefer_only -{ - /// The prefer_only adapter applies to the same types as the nested property. - template - static constexpr bool is_applicable_property_v = - is_applicable_property::value; - - /// The context_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The context_t property can be preferred, it the underlying property can - /// be preferred. - /** - * @c true if @c Property::is_preferable is @c true, otherwise @c false. - */ - static constexpr bool is_preferable = automatically_determined; - - /// The type returned by queries against an @c any_executor. - typedef typename Property::polymorphic_query_result_type - polymorphic_query_result_type; -}; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { - -template -struct prefer_only_is_preferable -{ - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); -}; - -template -struct prefer_only_is_preferable::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); -}; - -template -struct prefer_only_polymorphic_query_result_type -{ -}; - -template -struct prefer_only_polymorphic_query_result_type::type> -{ - typedef typename InnerProperty::polymorphic_query_result_type - polymorphic_query_result_type; -}; - -template -struct prefer_only_property -{ - InnerProperty property; - - prefer_only_property(const InnerProperty& p) - : property(p) - { - } -}; - -#if defined(ASIO_HAS_DECLTYPE) \ - && defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) - -template -struct prefer_only_property().value()) - >::type> -{ - InnerProperty property; - - prefer_only_property(const InnerProperty& p) - : property(p) - { - } - - ASIO_CONSTEXPR auto value() const - ASIO_NOEXCEPT_IF(( - noexcept(asio::declval().value()))) - -> decltype(asio::declval().value()) - { - return property.value(); - } -}; - -#else // defined(ASIO_HAS_DECLTYPE) - // && defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) - -struct prefer_only_memfns_base -{ - void value(); -}; - -template -struct prefer_only_memfns_derived - : T, prefer_only_memfns_base -{ -}; - -template -struct prefer_only_memfns_check -{ -}; - -template -char (&prefer_only_value_memfn_helper(...))[2]; - -template -char prefer_only_value_memfn_helper( - prefer_only_memfns_check< - void (prefer_only_memfns_base::*)(), - &prefer_only_memfns_derived::value>*); - -template -struct prefer_only_property(0)) != 1 - && !is_same::value - >::type> -{ - InnerProperty property; - - prefer_only_property(const InnerProperty& p) - : property(p) - { - } - - ASIO_CONSTEXPR typename InnerProperty::polymorphic_query_result_type - value() const - { - return property.value(); - } -}; - -#endif // defined(ASIO_HAS_DECLTYPE) - // && defined(ASIO_HAS_WORKING_EXPRESSION_SFINAE) - -} // namespace detail - -template -struct prefer_only : - detail::prefer_only_is_preferable, - detail::prefer_only_polymorphic_query_result_type, - detail::prefer_only_property -{ - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - - ASIO_CONSTEXPR prefer_only(const InnerProperty& p) - : detail::prefer_only_property(p) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::static_query::is_noexcept)) - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = prefer_only::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - template - friend ASIO_CONSTEXPR - typename prefer_result::type - prefer(const Executor& ex, const prefer_only& p, - typename enable_if< - is_same::value - && can_prefer::value - >::type* = 0) -#if !defined(ASIO_MSVC) \ - && !defined(__clang__) // Clang crashes if noexcept is used here. - ASIO_NOEXCEPT_IF(( - is_nothrow_prefer::value)) -#endif // !defined(ASIO_MSVC) - // && !defined(__clang__) - { - return asio::prefer(ex, p.property); - } - - template - friend ASIO_CONSTEXPR - typename query_result::type - query(const Executor& ex, const prefer_only& p, - typename enable_if< - is_same::value - && can_query::value - >::type* = 0) -#if !defined(ASIO_MSVC) \ - && !defined(__clang__) // Clang crashes if noexcept is used here. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // !defined(ASIO_MSVC) - // && !defined(__clang__) - { - return asio::query(ex, p.property); - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T prefer_only::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace execution - -template -struct is_applicable_property > - : is_applicable_property -{ -}; - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query > : - static_query -{ -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) - -template -struct prefer_free_default, - typename enable_if< - can_prefer::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_prefer::value)); - - typedef typename prefer_result::type result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free, - typename enable_if< - can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef typename query_result::type result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_PREFER_ONLY_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver.hpp deleted file mode 100644 index b63f788d..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver.hpp +++ /dev/null @@ -1,280 +0,0 @@ -// -// execution/receiver.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_RECEIVER_HPP -#define ASIO_EXECUTION_RECEIVER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/detail/variadic_templates.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" - -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) -# include -#else // defined(ASIO_HAS_STD_EXCEPTION_PTR) -# include "asio/error_code.hpp" -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - -#if defined(ASIO_HAS_DEDUCED_SET_DONE_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_SET_ERROR_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_SET_VALUE_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_RECEIVER_OF_FREE_TRAIT) \ - && defined(ASIO_HAS_DEDUCED_RECEIVER_OF_MEMBER_TRAIT) -# define ASIO_HAS_DEDUCED_EXECUTION_IS_RECEIVER_TRAIT 1 -#endif // defined(ASIO_HAS_DEDUCED_SET_DONE_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_SET_DONE_MEMBER_TRAIT) - // && defined(ASIO_HAS_DEDUCED_SET_ERROR_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT) - // && defined(ASIO_HAS_DEDUCED_SET_VALUE_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_SET_VALUE_MEMBER_TRAIT) - // && defined(ASIO_HAS_DEDUCED_RECEIVER_OF_FREE_TRAIT) - // && defined(ASIO_HAS_DEDUCED_RECEIVER_OF_MEMBER_TRAIT) - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct is_receiver_base : - integral_constant::type>::value - && is_constructible::type, T>::value - > -{ -}; - -} // namespace detail - -#if defined(ASIO_HAS_STD_EXCEPTION_PTR) -# define ASIO_EXECUTION_RECEIVER_ERROR_DEFAULT = std::exception_ptr -#else // defined(ASIO_HAS_STD_EXCEPTION_PTR) -# define ASIO_EXECUTION_RECEIVER_ERROR_DEFAULT \ - = ::asio::error_code -#endif // defined(ASIO_HAS_STD_EXCEPTION_PTR) - -/// The is_receiver trait detects whether a type T satisfies the -/// execution::receiver concept. -/** - * Class template @c is_receiver is a type trait that is derived from @c - * true_type if the type @c T meets the concept definition for a receiver for - * error type @c E, otherwise @c false_type. - */ -template -struct is_receiver : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - conditional< - can_set_done::type>::value - && is_nothrow_set_done::type>::value - && can_set_error::type, E>::value - && is_nothrow_set_error::type, E>::value, - detail::is_receiver_base, - false_type - >::type -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_receiver_v = is_receiver::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT receiver = is_receiver::value; - -#define ASIO_EXECUTION_RECEIVER ::asio::execution::receiver - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_RECEIVER typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - -/// The is_receiver_of trait detects whether a type T satisfies the -/// execution::receiver_of concept for some set of value arguments. -/** - * Class template @c is_receiver_of is a type trait that is derived from @c - * true_type if the type @c T meets the concept definition for a receiver for - * value arguments @c Vs, otherwise @c false_type. - */ -template -struct is_receiver_of : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - conditional< - is_receiver::value, - can_set_value::type, Vs...>, - false_type - >::type -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_receiver_of_v = - is_receiver_of::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT receiver_of = is_receiver_of::value; - -#define ASIO_EXECUTION_RECEIVER_OF_0 \ - ::asio::execution::receiver_of - -#define ASIO_EXECUTION_RECEIVER_OF_1(v) \ - ::asio::execution::receiver_of - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_RECEIVER_OF_0 typename -#define ASIO_EXECUTION_RECEIVER_OF_1(v) typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -template -struct is_receiver_of; - -template -struct is_receiver_of : - conditional< - is_receiver::value, - can_set_value::type>, - false_type - >::type -{ -}; - -#define ASIO_PRIVATE_RECEIVER_OF_TRAITS_DEF(n) \ - template \ - struct is_receiver_of : \ - conditional< \ - conditional, void>::type::value, \ - can_set_value< \ - typename remove_cvref::type, \ - ASIO_VARIADIC_TARGS(n)>, \ - false_type \ - >::type \ - { \ - }; \ - /**/ -ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_RECEIVER_OF_TRAITS_DEF) -#undef ASIO_PRIVATE_RECEIVER_OF_TRAITS_DEF - -#define ASIO_EXECUTION_RECEIVER_OF_0 typename -#define ASIO_EXECUTION_RECEIVER_OF_1(v) typename - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -#if defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - -/// The is_nothrow_receiver_of trait detects whether a type T satisfies the -/// execution::receiver_of concept for some set of value arguments, with a -/// noexcept @c set_value operation. -/** - * Class template @c is_nothrow_receiver_of is a type trait that is derived - * from @c true_type if the type @c T meets the concept definition for a - * receiver for value arguments @c Vs, and the expression - * execution::set_value(declval(), declval()...) is noexcept, - * otherwise @c false_type. - */ -template -struct is_nothrow_receiver_of : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - integral_constant::value - && is_nothrow_set_value::type, Vs...>::value - > -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_nothrow_receiver_of_v = - is_nothrow_receiver_of::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#else // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -template -struct is_nothrow_receiver_of; - -template -struct is_nothrow_receiver_of : - integral_constant::value - && is_nothrow_set_value::type>::value - > -{ -}; - -#define ASIO_PRIVATE_NOTHROW_RECEIVER_OF_TRAITS_DEF(n) \ - template \ - struct is_nothrow_receiver_of : \ - integral_constant::value \ - && is_nothrow_set_value::type, \ - ASIO_VARIADIC_TARGS(n)>::value \ - > \ - { \ - }; \ - /**/ -ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_NOTHROW_RECEIVER_OF_TRAITS_DEF) -#undef ASIO_PRIVATE_NOTHROW_RECEIVER_OF_TRAITS_DEF - -#endif // defined(ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_RECEIVER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver_invocation_error.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver_invocation_error.hpp deleted file mode 100644 index 5c4ee6df..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/receiver_invocation_error.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// -// execution/receiver_invocation_error.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_RECEIVER_INVOCATION_ERROR_HPP -#define ASIO_EXECUTION_RECEIVER_INVOCATION_ERROR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { - -/// Exception reported via @c set_error when an exception escapes from -/// @c set_value. -class receiver_invocation_error - : public std::runtime_error -#if defined(ASIO_HAS_STD_NESTED_EXCEPTION) - , public std::nested_exception -#endif // defined(ASIO_HAS_STD_NESTED_EXCEPTION) -{ -public: - /// Constructor. - ASIO_DECL receiver_invocation_error(); -}; - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#if defined(ASIO_HEADER_ONLY) -# include "asio/execution/impl/receiver_invocation_error.ipp" -#endif // defined(ASIO_HEADER_ONLY) - -#endif // ASIO_EXECUTION_RECEIVER_INVOCATION_ERROR_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/relationship.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/relationship.hpp deleted file mode 100644 index 720a3394..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/relationship.hpp +++ /dev/null @@ -1,720 +0,0 @@ -// -// execution/relationship.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_RELATIONSHIP_HPP -#define ASIO_EXECUTION_RELATIONSHIP_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/query.hpp" -#include "asio/traits/query_free.hpp" -#include "asio/traits/query_member.hpp" -#include "asio/traits/query_static_constexpr_member.hpp" -#include "asio/traits/static_query.hpp" -#include "asio/traits/static_require.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(GENERATING_DOCUMENTATION) - -namespace execution { - -/// A property to describe whether submitted tasks represent continuations of -/// the calling context. -struct relationship_t -{ - /// The relationship_t property applies to executors, senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The top-level relationship_t property cannot be required. - static constexpr bool is_requirable = false; - - /// The top-level relationship_t property cannot be preferred. - static constexpr bool is_preferable = false; - - /// The type returned by queries against an @c any_executor. - typedef relationship_t polymorphic_query_result_type; - - /// A sub-property that indicates that the executor does not represent a - /// continuation of the calling context. - struct fork_t - { - /// The relationship_t::fork_t property applies to executors, senders, and - /// schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The relationship_t::fork_t property can be required. - static constexpr bool is_requirable = true; - - /// The relationship_t::fork_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef relationship_t polymorphic_query_result_type; - - /// Default constructor. - constexpr fork_t(); - - /// Get the value associated with a property object. - /** - * @returns fork_t(); - */ - static constexpr relationship_t value(); - }; - - /// A sub-property that indicates that the executor represents a continuation - /// of the calling context. - struct continuation_t - { - /// The relationship_t::continuation_t property applies to executors, - /// senders, and schedulers. - template - static constexpr bool is_applicable_property_v = - is_executor_v || is_sender_v || is_scheduler_v; - - /// The relationship_t::continuation_t property can be required. - static constexpr bool is_requirable = true; - - /// The relationship_t::continuation_t property can be preferred. - static constexpr bool is_preferable = true; - - /// The type returned by queries against an @c any_executor. - typedef relationship_t polymorphic_query_result_type; - - /// Default constructor. - constexpr continuation_t(); - - /// Get the value associated with a property object. - /** - * @returns continuation_t(); - */ - static constexpr relationship_t value(); - }; - - /// A special value used for accessing the relationship_t::fork_t property. - static constexpr fork_t fork; - - /// A special value used for accessing the relationship_t::continuation_t - /// property. - static constexpr continuation_t continuation; - - /// Default constructor. - constexpr relationship_t(); - - /// Construct from a sub-property value. - constexpr relationship_t(fork_t); - - /// Construct from a sub-property value. - constexpr relationship_t(continuation_t); - - /// Compare property values for equality. - friend constexpr bool operator==( - const relationship_t& a, const relationship_t& b) noexcept; - - /// Compare property values for inequality. - friend constexpr bool operator!=( - const relationship_t& a, const relationship_t& b) noexcept; -}; - -/// A special value used for accessing the relationship_t property. -constexpr relationship_t relationship; - -} // namespace execution - -#else // defined(GENERATING_DOCUMENTATION) - -namespace execution { -namespace detail { -namespace relationship { - -template struct fork_t; -template struct continuation_t; - -} // namespace relationship - -template -struct relationship_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = false); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = false); - typedef relationship_t polymorphic_query_result_type; - - typedef detail::relationship::fork_t fork_t; - typedef detail::relationship::continuation_t continuation_t; - - ASIO_CONSTEXPR relationship_t() - : value_(-1) - { - } - - ASIO_CONSTEXPR relationship_t(fork_t) - : value_(0) - { - } - - ASIO_CONSTEXPR relationship_t(continuation_t) - : value_(1) - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member< - T, relationship_t>::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member< - T, relationship_t - >::is_noexcept)) - { - return traits::query_static_constexpr_member< - T, relationship_t>::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, relationship_t>::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template - static ASIO_CONSTEXPR - typename traits::static_query::result_type - static_query( - typename enable_if< - !traits::query_static_constexpr_member< - T, relationship_t>::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type* = 0) ASIO_NOEXCEPT - { - return traits::static_query::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = relationship_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - friend ASIO_CONSTEXPR bool operator==( - const relationship_t& a, const relationship_t& b) - { - return a.value_ == b.value_; - } - - friend ASIO_CONSTEXPR bool operator!=( - const relationship_t& a, const relationship_t& b) - { - return a.value_ != b.value_; - } - - struct convertible_from_relationship_t - { - ASIO_CONSTEXPR convertible_from_relationship_t(relationship_t) - { - } - }; - - template - friend ASIO_CONSTEXPR relationship_t query( - const Executor& ex, convertible_from_relationship_t, - typename enable_if< - can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::fork_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, fork_t()); - } - - template - friend ASIO_CONSTEXPR relationship_t query( - const Executor& ex, convertible_from_relationship_t, - typename enable_if< - !can_query::value - && can_query::value - >::type* = 0) -#if !defined(__clang__) // Clang crashes if noexcept is used here. -#if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified. - ASIO_NOEXCEPT_IF(( - is_nothrow_query::continuation_t>::value)) -#else // defined(ASIO_MSVC) - ASIO_NOEXCEPT_IF(( - is_nothrow_query::value)) -#endif // defined(ASIO_MSVC) -#endif // !defined(__clang__) - { - return asio::query(ex, continuation_t()); - } - - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(fork_t, fork); - ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(continuation_t, continuation); - -#if !defined(ASIO_HAS_CONSTEXPR) - static const relationship_t instance; -#endif // !defined(ASIO_HAS_CONSTEXPR) - -private: - int value_; -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T relationship_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_CONSTEXPR) -template -const relationship_t relationship_t::instance; -#endif - -template -const typename relationship_t::fork_t -relationship_t::fork; - -template -const typename relationship_t::continuation_t -relationship_t::continuation; - -namespace relationship { - -template -struct fork_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef relationship_t polymorphic_query_result_type; - - ASIO_CONSTEXPR fork_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template - static ASIO_CONSTEXPR fork_t static_query( - typename enable_if< - !traits::query_static_constexpr_member::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query >::value - >::type* = 0) ASIO_NOEXCEPT - { - return fork_t(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = fork_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR relationship_t value() - { - return fork_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const fork_t&, const fork_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const fork_t&, const fork_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T fork_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct continuation_t -{ -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - template - ASIO_STATIC_CONSTEXPR(bool, - is_applicable_property_v = is_executor::value - || is_sender::value || is_scheduler::value); -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - - ASIO_STATIC_CONSTEXPR(bool, is_requirable = true); - ASIO_STATIC_CONSTEXPR(bool, is_preferable = true); - typedef relationship_t polymorphic_query_result_type; - - ASIO_CONSTEXPR continuation_t() - { - } - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - template - static ASIO_CONSTEXPR - typename traits::query_static_constexpr_member::result_type - static_query() - ASIO_NOEXCEPT_IF(( - traits::query_static_constexpr_member::is_noexcept)) - { - return traits::query_static_constexpr_member::value(); - } - - template ())> - static ASIO_CONSTEXPR const T static_query_v - = continuation_t::static_query(); -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - - static ASIO_CONSTEXPR relationship_t value() - { - return continuation_t(); - } - - friend ASIO_CONSTEXPR bool operator==( - const continuation_t&, const continuation_t&) - { - return true; - } - - friend ASIO_CONSTEXPR bool operator!=( - const continuation_t&, const continuation_t&) - { - return false; - } -}; - -#if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) -template template -const T continuation_t::static_query_v; -#endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -} // namespace relationship -} // namespace detail - -typedef detail::relationship_t<> relationship_t; - -#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -constexpr relationship_t relationship; -#else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) -namespace { static const relationship_t& - relationship = relationship_t::instance; } -#endif - -} // namespace execution - -#if !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -template -struct is_applicable_property - : integral_constant::value - || execution::is_sender::value - || execution::is_scheduler::value> -{ -}; - -#endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -template -struct query_free_default::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::relationship_t result_type; -}; - -template -struct query_free_default::value - && can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = - (is_nothrow_query::value)); - - typedef execution::relationship_t result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \ - || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::static_query::is_valid - && traits::static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::static_query::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::static_query::value(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -template -struct static_query::is_valid - && !traits::query_member::is_valid - && !traits::query_free::is_valid - && !can_query::value - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef execution::relationship_t::fork_t result_type; - - static ASIO_CONSTEXPR result_type value() - { - return result_type(); - } -}; - -template -struct static_query::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = true); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - - typedef typename traits::query_static_constexpr_member::result_type result_type; - - static ASIO_CONSTEXPR result_type value() - { - return traits::query_static_constexpr_member::value(); - } -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) - // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES) - -#if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::relationship_t::fork_t>::value)); -}; - -template -struct static_require::is_valid - >::type> -{ - ASIO_STATIC_CONSTEXPR(bool, is_valid = - (is_same::result_type, - execution::relationship_t::continuation_t>::value)); -}; - -#endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT) - -} // namespace traits - -#endif // defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_RELATIONSHIP_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/schedule.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/schedule.hpp deleted file mode 100644 index 1262735f..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/schedule.hpp +++ /dev/null @@ -1,290 +0,0 @@ -// -// execution/schedule.hpp -// ~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_SCHEDULE_HPP -#define ASIO_EXECUTION_SCHEDULE_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/traits/schedule_member.hpp" -#include "asio/traits/schedule_free.hpp" - -#include "asio/detail/push_options.hpp" - -#if defined(GENERATING_DOCUMENTATION) - -namespace asio { -namespace execution { - -/// A customisation point that is used to obtain a sender from a scheduler. -/** - * The name execution::schedule denotes a customisation point object. - * For some subexpression s, let S be a type such that - * decltype((s)) is S. The expression - * execution::schedule(s) is expression-equivalent to: - * - * @li s.schedule(), if that expression is valid and its type models - * sender. - * - * @li Otherwise, schedule(s), if that expression is valid and its - * type models sender with overload resolution performed in a context - * that includes the declaration void schedule(); and that does not - * include a declaration of execution::schedule. - * - * @li Otherwise, S if S satisfies executor. - * - * @li Otherwise, execution::schedule(s) is ill-formed. - */ -inline constexpr unspecified schedule = unspecified; - -/// A type trait that determines whether a @c schedule expression is -/// well-formed. -/** - * Class template @c can_schedule is a trait that is derived from @c true_type - * if the expression execution::schedule(std::declval()) is well - * formed; otherwise @c false_type. - */ -template -struct can_schedule : - integral_constant -{ -}; - -} // namespace execution -} // namespace asio - -#else // defined(GENERATING_DOCUMENTATION) - -namespace asio_execution_schedule_fn { - -using asio::decay; -using asio::declval; -using asio::enable_if; -using asio::execution::is_executor; -using asio::traits::schedule_free; -using asio::traits::schedule_member; - -void schedule(); - -enum overload_type -{ - identity, - call_member, - call_free, - ill_formed -}; - -template -struct call_traits -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); - typedef void result_type; -}; - -template -struct call_traits::is_valid - ) - >::type> : - schedule_member -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member); -}; - -template -struct call_traits::is_valid - && - schedule_free::is_valid - ) - >::type> : - schedule_free -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free); -}; - -template -struct call_traits::is_valid - && - !schedule_free::is_valid - && - is_executor::type>::value - ) - >::type> -{ - ASIO_STATIC_CONSTEXPR(overload_type, overload = identity); - ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); - -#if defined(ASIO_HAS_MOVE) - typedef ASIO_MOVE_ARG(S) result_type; -#else // defined(ASIO_HAS_MOVE) - typedef ASIO_MOVE_ARG(typename decay::type) result_type; -#endif // defined(ASIO_HAS_MOVE) -}; - -struct impl -{ - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == identity, - typename call_traits::result_type - >::type - operator()(ASIO_MOVE_ARG(S) s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return ASIO_MOVE_CAST(S)(s); - } - -#if defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S&& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return ASIO_MOVE_CAST(S)(s).schedule(); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S&& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return schedule(ASIO_MOVE_CAST(S)(s)); - } -#else // defined(ASIO_HAS_MOVE) - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(S& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.schedule(); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_member, - typename call_traits::result_type - >::type - operator()(const S& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return s.schedule(); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(S& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return schedule(s); - } - - template - ASIO_CONSTEXPR typename enable_if< - call_traits::overload == call_free, - typename call_traits::result_type - >::type - operator()(const S& s) const - ASIO_NOEXCEPT_IF(( - call_traits::is_noexcept)) - { - return schedule(s); - } -#endif // defined(ASIO_HAS_MOVE) -}; - -template -struct static_instance -{ - static const T instance; -}; - -template -const T static_instance::instance = {}; - -} // namespace asio_execution_schedule_fn -namespace asio { -namespace execution { -namespace { - -static ASIO_CONSTEXPR const asio_execution_schedule_fn::impl& - schedule = asio_execution_schedule_fn::static_instance<>::instance; - -} // namespace - -template -struct can_schedule : - integral_constant::overload != - asio_execution_schedule_fn::ill_formed> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool can_schedule_v = can_schedule::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -struct is_nothrow_schedule : - integral_constant::is_noexcept> -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -constexpr bool is_nothrow_schedule_v - = is_nothrow_schedule::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -} // namespace execution -} // namespace asio - -#endif // defined(GENERATING_DOCUMENTATION) - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_SCHEDULE_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/scheduler.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/scheduler.hpp deleted file mode 100644 index c6c53ca1..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/scheduler.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// -// execution/scheduler.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_SCHEDULER_HPP -#define ASIO_EXECUTION_SCHEDULER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/schedule.hpp" -#include "asio/traits/equality_comparable.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { -namespace execution { -namespace detail { - -template -struct is_scheduler_base : - integral_constant::type>::value - && traits::equality_comparable::type>::is_valid - > -{ -}; - -} // namespace detail - -/// The is_scheduler trait detects whether a type T satisfies the -/// execution::scheduler concept. -/** - * Class template @c is_scheduler is a type trait that is derived from @c - * true_type if the type @c T meets the concept definition for a scheduler for - * error type @c E, otherwise @c false_type. - */ -template -struct is_scheduler : -#if defined(GENERATING_DOCUMENTATION) - integral_constant -#else // defined(GENERATING_DOCUMENTATION) - conditional< - can_schedule::value, - detail::is_scheduler_base, - false_type - >::type -#endif // defined(GENERATING_DOCUMENTATION) -{ -}; - -#if defined(ASIO_HAS_VARIABLE_TEMPLATES) - -template -ASIO_CONSTEXPR const bool is_scheduler_v = is_scheduler::value; - -#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) - -#if defined(ASIO_HAS_CONCEPTS) - -template -ASIO_CONCEPT scheduler = is_scheduler::value; - -#define ASIO_EXECUTION_SCHEDULER ::asio::execution::scheduler - -#else // defined(ASIO_HAS_CONCEPTS) - -#define ASIO_EXECUTION_SCHEDULER typename - -#endif // defined(ASIO_HAS_CONCEPTS) - -} // namespace execution -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_EXECUTION_SCHEDULER_HPP diff --git a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/sender.hpp b/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/sender.hpp deleted file mode 100644 index 747e673a..00000000 --- a/ui/external/fineftp-server/thirdparty/asio/asio/include/asio/execution/sender.hpp +++ /dev/null @@ -1,311 +0,0 @@ -// -// execution/sender.hpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_EXECUTION_SENDER_HPP -#define ASIO_EXECUTION_SENDER_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/detail/as_invocable.hpp" -#include "asio/execution/detail/void_receiver.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/receiver.hpp" - -#include "asio/detail/push_options.hpp" - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) \ - && defined(ASIO_HAS_VARIADIC_TEMPLATES) \ - && defined(ASIO_HAS_DECLTYPE) \ - && !defined(ASIO_MSVC) || (_MSC_VER >= 1910) -# define ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT 1 -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - // && defined(ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(ASIO_HAS_DECLTYPE) - // && !defined(ASIO_MSVC) || (_MSC_VER >= 1910) - -namespace asio { -namespace execution { -namespace detail { - -namespace sender_base_ns { struct sender_base {}; } - -template -struct sender_traits_base -{ - typedef void asio_execution_sender_traits_base_is_unspecialised; -}; - -template -struct sender_traits_base::value - >::type> -{ -}; - -template -struct has_sender_types : false_type -{ -}; - -#if defined(ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT) - -template < - template < - template class Tuple, - template class Variant - > class> -struct has_value_types -{ - typedef void type; -}; - -template < - template < - template class Variant - > class> -struct has_error_types -{ - typedef void type; -}; - -template -struct has_sender_types::type, - typename has_error_types::type, - typename conditional::type> : true_type -{ -}; - -template -struct sender_traits_base::value - >::type> -{ - template < - template class Tuple, - template class Variant> - using value_types = typename S::template value_types; - - template